我想获取有关表格的所有信息。 像表名,列名,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