2012-04-09 67 views
0

我需要找到有关特定表的列详细信息。这包括有关外键的详细信息,该表目前使用像引用的表名称和引用的列名称。 目前我用这样的查询,因为它是返回表是否包含外键或不 但不显示任何有关被引用的表名等信息。我尝试了很多方式从我身边,但没有得到确切data.here查询我试过参考: 我试图使用sys.foreign_key_columnssys.foreign_keys但我得到的错误。可能是我没有妥善安置它。获取有关coloumn在sql服务器特别表中的详细信息

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_columnssys.foreign_keys,但我得到了bugs.may是我没有把它放在正确。

回答

0

我认为this是你在找什么。