我想獲取有關表格的所有信息。 像表名,列名,InPrimaryKey,是唯一鍵,是一種身份,數據類型,MAXLENGTH,是ForiegnKey獲取SQL Server中表格的所有信息
通過使用SQL Server像INFORMATION_SCHEMA.COLUMNS
我想獲取有關表格的所有信息。 像表名,列名,InPrimaryKey,是唯一鍵,是一種身份,數據類型,MAXLENGTH,是ForiegnKey獲取SQL Server中表格的所有信息
通過使用SQL Server像INFORMATION_SCHEMA.COLUMNS
使用SQL Server管理對象(SMO)的內置API。這是一個方便且完全託管的API,用於獲取和操作SQL Server數據庫的模式。
你可以這樣開始:
EXEC sp_help 'dbo.tablename';
然後你可以看一下直接列:
SELECT
c.name,
[type] = t.name,
c.max_length,
c.[precision],
c.[scale],
c.is_nullable,
c.is_identity
FROM sys.columns AS c
INNER JOIN sys.types AS t
ON c.system_type_id = t.system_type_id
AND c.user_type_id = t.user_type_id
WHERE c.[object_id] = OBJECT_ID('dbo.tablename');
指標和參與PK &唯一約束,外鍵等都是有點複雜,因爲多列可以參與任何這些實體。這裏有指標和PK/UQ約束:
SELECT
[index] = i.name,
i.type_desc,
i.is_unique,
i.is_primary_key,
i.is_unique_constraint,
c.name,
ic.is_included_column
FROM sys.indexes AS i
INNER JOIN sys.index_columns AS ic
ON i.[object_id] = ic.[object_id]
INNER JOIN sys.columns AS c
ON ic.[object_id] = c.[object_id]
AND ic.index_id = i.index_id
AND ic.column_id = c.column_id
WHERE i.[object_id] = OBJECT_ID('dbo.tablename');
然後你可以通過查看sys.foreign_keys
和sys.foreign_key_columns
移動到外鍵。這比上面更加複雜 - 你是在尋找當前表中指向其他表的所有外鍵,其他表中指向這個表的所有外鍵還是兩者?
你可以做一個
select * from table where 0 = 1
到數據表。列將被複制並準備好進行檢查。
不幸的是,不會告訴你任何有關主鍵,唯一約束,索引,外鍵等的信息。一些屬性被保留(如果你的意思是'SELECT INTO'),但不是全部。不過,新桌子如何比舊桌子更「準備被檢查」呢? – 2012-02-07 20:26:35
如果您想要一個工作項目,我的存儲過程生成器/類對象創建器讀取數據庫中所有表和視圖的數據庫模式。
的代碼可以在http://radstudio.codeplex.com
稱爲DataClassBuilder.Net.dll該文件包含一個名爲LoadDatabaseSchema()和LoadDataFieldsSchema()方法應該給你你需要關於數據的所有信息。
你想獲取數據,還是想獲取有關數據(元數據)的數據? – 2012-02-07 19:21:29
你的問題是什麼?你說你想使用information_schema.columns ..那麼:'select * from information_schema.columns'然後? – Blorgbeard 2012-02-07 19:22:53
對於某些針對* INFORMATION_SCHEMA視圖的參數,請參閱http://sqlblog.com/blogs/aaron_bertrand/archive/2011/11/03/the-case-against-information-schema-views.aspx – 2012-02-07 19:26:39