使用SQL查询查找外键关系

使用SQL查询查找外键关系,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,是否可以使用SQL查询查找外键关系 数据库是我的外部数据库,我无法通过Server Management Studio直接访问它以查看链接。不,您不能 但是您可以手动检查它,在需要查询每个表以及检查每个不同表中存在哪些列[id]的情况下,这很麻烦。看看它的关系 关于< P>查找外键,考虑使用这些系统视图: sys.sysconstraints sys.columns sys.tables 您可以在colid、column\u id、object\u id上连接这三个视图,以获得有关外键约束的完

是否可以使用SQL查询查找外键关系

数据库是我的外部数据库,我无法通过Server Management Studio直接访问它以查看链接。

不,您不能

但是您可以手动检查它,在需要查询每个表以及检查每个不同表中存在哪些列[id]的情况下,这很麻烦。看看它的关系


关于

< P>查找外键,考虑使用这些系统视图:

sys.sysconstraints
sys.columns
sys.tables
您可以在colid、column\u id、object\u id上连接这三个视图,以获得有关外键约束的完整信息


这些视图应位于SQL Server 2005+

中要检索外键列表,可以运行以下查询:

SELECT t.name AS FKTableName
   , fk.name AS NameOfForeignKey
   , pc.name AS FKColumn
   , rt.name AS ReferencedTable
   , c.name AS ReferencedColumn
FROM sys.foreign_key_columns AS fkc
INNER JOIN sys.foreign_keys AS fk ON fkc.constraint_object_id = fk.object_id
INNER JOIN sys.tables AS t ON fkc.parent_object_id = t.object_id
INNER JOIN sys.tables AS rt ON fkc.referenced_object_id = rt.object_id
INNER JOIN sys.columns AS pc ON fkc.parent_object_id = pc.object_id
   AND fkc.parent_column_id = pc.column_id
INNER JOIN sys.columns AS c ON fkc.referenced_object_id = c.object_id
   AND fkc.referenced_column_id = c.column_id

如果您需要有关设置的其他信息,此查询也会变得更加复杂。

查找元数据对于您的RDBMS来说非常具体。您使用的是什么数据库引擎?我不确定,但我认为如果helpsTry在表上运行名为
sp\u help
的存储过程,您希望探究其中的关系,例如:
sp\u help my\u table
,那么它就是SQL Server 2008。您应该返回描述该表的七个结果集。最后一个表应该有关于表外键的信息。实际上,使用查询可以很容易地找到外键和主键。您可以运行查询查看关系,看看我的答案。感谢您让我知道,数据库由560个表组成,所以我可能会错过它!如果您可以在sql management studio中访问服务器,并且可以使用视图查看正在访问的数据库中所有表的关系,则效果会更好。