查看SSMS中外键引用的所有表

View all tables referenced by foreign keys in SSMS

我有一个包含很多 table 的数据库,table 有很多外键。有没有一种简单的方法可以查看给定 table 中外键引用的其他 table?

我试过 "view dependencies" 但这并没有列出所有参考资料。我也试过 "script table as > create to",它对一些 table 有效,但我没有足够的权限给其他人。

另一个障碍是给定 table 中的外键与被引用的 table 中的主键同名,因此即使我想进行手动搜索(展开每个 table 的列)我不能 100% 确定我找到了正确的 table.

我认为以下 Whosebug link 有您正在寻找的答案。它有多个查询,我使用“Gustavo Rubio”指定的查询,请在下面找到相同的查询

SELECT  obj.name AS FK_NAME,
sch.name AS [schema_name],
tab1.name AS [table],
col1.name AS [column],
tab2.name AS [referenced_table],
col2.name AS [referenced_column]
FROM 
  sys.foreign_key_columns fkc
INNER JOIN 
  sys.objects obj ON obj.object_id = fkc.constraint_object_id
INNER JOIN 
  sys.tables tab1 ON tab1.object_id = fkc.parent_object_id
INNER JOIN 
  sys.schemas sch ON tab1.schema_id = sch.schema_id
INNER JOIN 
  sys.columns col1 ON col1.column_id = parent_column_id AND col1.object_id = tab1.object_id
INNER JOIN 
  sys.tables tab2 ON tab2.object_id = fkc.referenced_object_id
INNER JOIN 
  sys.columns col2 ON col2.column_id = referenced_column_id AND col2.object_id = tab2.object_id
ORDER BY
  [table] ASC