我想获得有关表格的所有信息。 像tableName,columnName,InPrimaryKey,Is UniqueKey,Is Identity,Datatype,Maxlength,Is ForiegnKey
使用SQL SERVER的内置api,如information_schema.columns
答案 0 :(得分:2)
你可以从:
开始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
转到外键。这比上面更复杂 - 你是在寻找当前表中指向其他表的所有外键,其他表中指向此表的所有外键,还是两者都是?
答案 1 :(得分:1)
使用SQL Server管理对象(SMO)。这是一个方便且完全托管的API,用于获取和操作SQL Server数据库的模式。
答案 2 :(得分:0)
你可以做一个
select * from table where 0 = 1
进入数据表。这些列将被复制并准备好进行检查。
答案 3 :(得分:0)
如果你想要一个工作项目,我的存储过程生成器/类对象创建者会读取数据库中所有表和视图的数据库模式。
该代码位于http://radstudio.codeplex.com
名为DataClassBuilder.Net.dll的文件包含一个名为LoadDatabaseSchema()的方法,而LoadDataFieldsSchema()应该为您提供有关数据的所有信息。