如何在数据库中找到表的依赖关系?
通常sp_depends
会为特定对象上的所有依赖对象提供信息,或者通过GUI工具以更加结构化的方式查看它.现在,这些方法显示的依赖关系仅限于一个数据库 - 如果我们在其他数据库中有依赖项,该怎么办?
有没有查询呢?
我将把查找跨数据库依赖项的任务留给其他人来写,因为我今天早上就要出门,但想在 sp_depends 上留下一个简短的注释。它已经坏了,不要使用它。这是出了名的不可靠。根据 Microsoft“改用 sys.dm_sql_referencing_entities 和 sys.dm_sql_referenced_entities”,它即将被淘汰。这就是 sp_depends 被破坏的原因,它依赖于创建顺序。假设您有两个存储过程:ProcA 和 ProcB。ProcB 依赖于 ProcA。如果您创建 ProcA THEN create ProcB sp_depends 将报告依赖性,但由于支持后期绑定,如果您创建 ProcB,则 create ProcA sp_depends 将不会报告依赖性。
就其价值而言,我使用过一些工具,可以很好地正确报告依赖关系,但迄今为止我最喜欢的工具是 Visual Studio for Database Professionals,如果您有权访问它,它可以处理跨数据库依赖关系。它相当昂贵,但如果您有权访问它,它有一个出色的依赖项工具并支持轻量重构,假设您更改列的名称,它可以找到所有视图和过程,甚至在多个数据库中,并为您更新列名称你的依赖。
对于廉价的单数据库 GUI 替代品 ApexSql 是一个不错的工具。在免费方面,您可以找到或创建一个存储过程来为您进行依赖性检查,但我现在没有任何链接可以帮助您解决此问题。
归档时间: |
|
查看次数: |
3034 次 |
最近记录: |