获取有关sql server中特定表的列的详细信息

时间:2012-04-09 09:00:09

标签: sql-server-2008 foreign-keys

我需要查找有关特定表的列详细信息。这包括有关当前使用的表的外键的详细信息,如引用的表名和引用的列名。 目前我使用这样的查询,因为它返回表是否包含外键 但没有显示任何有关引用的表名称的信息等。我尝试了很多方法,但没有得到确切的数据。我试过参考的查询: 我试图使用 sys.foreign_key_columns sys.foreign_keys ,但我得到了错误。可能我没有正确放置它。

SELECT  sys.columns.column_id AS ColumnId,sys.columns.name AS ColumnName,
sys.types.name AS Datatype,(SELECT COUNT(column_name) FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE
 WHERE TABLE_NAME = sys.tables.name AND CONSTRAINT_NAME =(   SELECT  constraint_name FROM 
 INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_NAME = sys.tables.name AND constraint_type = 
 'PRIMARY KEY' AND COLUMN_NAME = sys.columns.name ) ) AS IsPrimaryKey, ( SELECT COUNT(column_name)
   FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE  WHERE TABLE_NAME = sys.tables.name AND CONSTRAINT_NAME 
  = ( SELECT  constraint_name  FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS  WHERE  TABLE_NAME = sys.tables.name 
  AND constraint_type = 'Foreign key' AND COLUMN_NAME = sys.columns.name  )  )   AS IsForeignkey,
    sys.columns.max_length  AS Lenght /*BUG*/
     FROM  sys.columns, sys.types, sys.tables WHERE  
    sys.tables.object_id = sys.columns.object_id AND sys.types.system_type_id = sys.columns.system_type_id 
    AND sys.types.user_type_id = sys.columns.user_type_id AND sys.tables.name ='tablename' ORDER BY columnid 

我尝试使用 sys.foreign_key_columns sys.foreign_keys ,但我收到了错误。可能我没有正确放置它。

1 个答案:

答案 0 :(得分:0)

我认为this正是您所寻找的。