经过几次调查后,我注意到我需要一个查询来获取表格的所有细节,包括SQL Server上的pks和fks,有谁知道任何sp或任何简单的方法?
我在下面进行了查询,但我认为这些信息应该是某些存储过程或类似内容。
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)
答案 0 :(得分:1)
我相信你在谈论SP_HELP。 E.g。
exec sp_help 'TABLE_NAME'
答案 1 :(得分:0)
尝试使用information_schema。您可以按以下方式构建查询:
Select * from information_schema.columns where table_name = 'City'
因此,您也可以使用sp_help:
exec sp_help 'table_name'
使用哪种适合您的需求!!!