如何使用查询从sql server获取表的详细信息?表详情

时间:2014-06-04 21:34:28

标签: sql sql-server sql-server-2008

经过几次调查后,我注意到我需要一个查询来获取表格的所有细节,包括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)

2 个答案:

答案 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'

使用哪种适合您的需求!!!