编写sql server查询以查看有多少表链接到一个表

编写sql server查询以查看有多少表链接到一个表,sql,sql-server,Sql,Sql Server,如果有申请表、人员表、状态表等 状态和人员有一个指向应用程序的链接 是否可以编写一个简单的sql查询,该查询将给出链接到应用程序表的所有表的列表(与使用数据库关系图不同) 应用程序预期结果: 地位 人 请建议可行的解决方案(如有)。使用SP\u取决于具体情况。还有其他的方式,就像DMV一样 sp_depends 'TableName' 假设您使用的是MSSQL服务器,则可以运行 EXEC sp_fkeys 'YourTableName' 否则,您可以使用 SELECT * FROM in

如果有申请表、人员表、状态表等

状态和人员有一个指向应用程序的链接

是否可以编写一个简单的sql查询,该查询将给出链接到应用程序表的所有表的列表(与使用数据库关系图不同)

应用程序预期结果:

  • 地位

请建议可行的解决方案(如有)。

使用SP\u取决于具体情况。还有其他的方式,就像DMV一样

sp_depends 'TableName'

假设您使用的是MSSQL服务器,则可以运行

EXEC sp_fkeys 'YourTableName'
否则,您可以使用

SELECT *
FROM information_schema.referential_constraints
WHERE table_name = <tablename>
选择*
来自信息\u模式。参考\u约束
其中,表名称=

要建立外键关系,检查引用到其他表的每个表名的另一种方法是:

SELECT DISTINCT OBJECT_NAME(f.parent_object_id) AS TableName,
                OBJECT_NAME (f.referenced_object_id) AS ReferenceTableName
FROM sys.foreign_keys AS f
                INNER JOIN sys.foreign_key_columns AS fc 
                    ON f.OBJECT_ID = fc.constraint_object_id
                INNER JOIN sys.objects AS o 
                    ON o.OBJECT_ID = fc.referenced_object_id
当然,您可以添加更多条件来检查单个表,例如:

WHERE OBJECT_NAME(f.referenced_object_id) = 'Application'   
这会给您带来如下结果:

TableName  ReferenceTableName
---------- ------------------
Status     Application
Person     Application

如果需要外键,可以运行以下命令:EXEC sp_fkeys'TableName'@Kieran:Solution-ideal!可能重复的