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)
但是这并没有返回什么列是FK或者PK。因为它,我做了这个查询顶部。 –
@FilipeCotrimMelo你跑过了吗?其中一个表返回的是约束(constraint_type,constraint_name等) –
因为我的错误,我没有看到最后一个表。谢谢!我想积极回答,但我没有足够的声望。 –