2014-06-04 103 views
1

几个resaerches后,我注意到我需要一个查询来获得包括在SQL Server中的pks和fks的表的所有细节,任何人都知道任何sp或任何简单的方法?如何使用查询从sql server中获取表的详细信息?表详细信息

我做了下面的查询,但我认为这个信息应该在某些存储过程或类似的东西。

select 
    sys.tables.name TableName, 
    sys.tables.object_id TableId, 
    sys.columns.name ColumnName, 
    sys.types.name TypeName, 
    coalesce(
    (
     select top 1 
     sys.indexes.is_unique 
     from 
     sys.index_columns 
     inner join sys.indexes on (sys.indexes.index_id = sys.index_columns.index_id) 
     where 
     sys.columns.object_id = sys.index_columns.object_id 
     and sys.columns.column_id = sys.index_columns.column_id 
     and sys.indexes.is_unique = 1 
    ), 0 
) IsUnique, 
    coalesce(
    (
     select top 1 
     sys.indexes.is_primary_key 
     from 
     sys.index_columns 
     inner join sys.indexes on (sys.indexes.index_id = sys.index_columns.index_id) 
     where 
     sys.columns.object_id = sys.index_columns.object_id 
     and sys.columns.column_id = sys.index_columns.column_id 
     and sys.indexes.is_primary_key = 1 
    ), 0 
) IsPrimaryKey, 
    coalesce(
    (
     select top 1 
     1 
     from 
     sys.foreign_key_columns 
     inner join sys.foreign_keys on (sys.foreign_key_columns.constraint_object_id = sys.foreign_keys.object_id) 
     where 
     sys.foreign_key_columns.parent_object_id = sys.tables.object_id and parent_column_id=sys.columns.column_id 
    ), 0 
) IsForeignKey, 
    sys.columns.max_length MaxLength, 
    sys.columns.precision Precision, 
    sys.columns.scale Scale, 
    sys.columns.is_nullable IsNull, 
    sys.columns.is_identity IsIdentity 
from 
    sys.tables 
    inner join sys.columns on (sys.tables.object_id = sys.columns.object_id) 
    inner join sys.types on (sys.columns.system_type_id = sys.types.system_type_id) 

回答

1

我相信你在说的是SP_HELP。例如。

exec sp_help 'TABLE_NAME' 
+0

但是这并没有返回什么列是FK或者PK。因为它,我做了这个查询顶部。 –

+0

@FilipeCotrimMelo你跑过了吗?其中一个表返回的是约束(constraint_type,constraint_name等) –

+0

因为我的错误,我没有看到最后一个表。谢谢!我想积极回答,但我没有足够的声望。 –

0

请尝试使用information_schema。您可以框架您的查询这样:

Select * from information_schema.columns where table_name = 'City' 

因此,您还可以使用sp_help将作为这样的:

exec sp_help 'table_name' 

使用其不断满足您的需求!