如何确定表的依存关系?

时间:2019-08-16 14:53:03

标签: sql-server

我需要在环境之间迁移一些数据。数据结构将完全相同,但是某些数据的ID依赖于现有数据,而现有数据则必须进行修改,或更确切地说,是要修改的userId(例如所有权,最后修改等)。 我已经确立了一个要求,即两个环境中的用户名都必须始终引用同一用户,因此,我需要做的是确定哪些列引用了用户表,并将我的数据从一个环境转换到另一个环境。

我尝试检查用户表上SQL Server Management Studio的对象依赖关系,并获得了哪些对象引用ID列的详细列表。但是,我知道至少有一张表确实引用了未出现在列表中的ID列。

Constraint Options on Table

Dependants on the user table

尝试使用不存在的ID更新投标表中的行会显示预期的异常:

Msg 547, Level 16, State 0, Line 1
The UPDATE statement conflicted with the FOREIGN KEY constraint "OSFRK_OSUSR_tpt_PROPOSAL_OSUSR_A7L_USER_MASTER_CREATEDBY". The conflict occurred in database "databasename", table "dbo.OSUSR_A7L_USER_MASTER", column 'ID'.

此表是否有任何理由不依赖于用户表而出现?有没有办法确定是否还有更多未显示的表?

3 个答案:

答案 0 :(得分:0)

您可以按照以下过程操作,在对象资源管理器中,展开数据库,展开数据库,然后展开表< / strong>。

右键单击一个表,然后单击查看依赖项

在“对象依赖关系”对话框中,选择“依赖于”的对象或依赖于“依赖”的对象。

在“依赖关系”网格中选择一个对象。对象的类型(例如“触发器”或“存储过程”)出现在“类型”框中。

此外,此链接非常有用:https://docs.microsoft.com/en-us/sql/relational-databases/tables/view-the-dependencies-of-a-table?view=sql-server-2017

答案 1 :(得分:0)

您还可以使用以下命令:

USE [databasename]
GO
EXEC sp_depends @objname = 'objectname';

答案 2 :(得分:0)

尝试一下可能对您有帮助。

EXEC sp_fkeys 'TableName'