我想为SQL Server 2008数据库生成一个数据字典,每个字段都有一行,以及以下列:
TABLE_NAME
FIELD_NAME
DATA_TYPE
link_table(当有问题的字段是外键时)
link_field(当有问题的字段是外键时)
我可以使用下面的SQL脚本获得前3列...... 但我不知道如何获取最后两列外键信息。 INFORMATION_SCHEMA.TABLE_CONSTRAINTS接近,但没有我正在寻找的数据。有人能帮到这一点吗?
SELECT TABLE_NAME,COLUMN_NAME,DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS
其次,如果有人对其他字段有任何建议,请发帖。
答案 0 :(得分:1)
如果列涉及多个关系,则以下查询将复制该列。
Select C.TABLE_SCHEMA, C.TABLE_NAME, C.COLUMN_NAME, C.DATA_TYPE
, PKCol.TABLE_SCHEMA, PKCol.TABLE_NAME, PKCol.COLUMN_NAME
From INFORMATION_SCHEMA.COLUMNS As C
Left Join (INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE As FKCol
Join INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS As FK
On FK.CONSTRAINT_NAME = FKCol.CONSTRAINT_NAME
Join INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE As PKCol
On PKCol.CONSTRAINT_NAME = FK.UNIQUE_CONSTRAINT_NAME)
On FKCol.TABLE_SCHEMA = C.TABLE_SCHEMA
And FKCol.TABLE_NAME = C.TABLE_NAME
ANd FKCol.COLUMN_NAME = C.COLUMN_NAME