【问题标题】:How to trace row level dependency?如何跟踪行级依赖关系?
【发布时间】:2010-09-11 05:46:52
【问题描述】:

例如,如果我需要将单行的 PK 从 1 更改为 10,是否有任何方法可以跟踪可能引用旧值的每个 proc、视图和函数?

我的意思是,像 select * from table where FK = 1 这样的 proc 中的简单选择会中断,我必须在每个 proc 中查找每个引用并查看并将它们更改为 10 以使系统正常工作。

有没有自动的方法来做到这一点?我使用 SQL SERVER。

【问题讨论】:

    标签: sql dependencies trace


    【解决方案1】:

    我怀疑正确执行此操作的唯一方法是查询数据库元数据 - 以识别将您的 PK 用作 FK、在 proc 或视图中的所有位置。这可能很复杂;脆弱的;并且容易出错。

    这是避免将 PK 作为系统派生的、无意义的值以外的任何东西的(许多)原​​因之一,(甚至)创建者/管理员也无法操作。此外,在什么情况下,您会在 proc 或函数中硬编码 PK - 这也是您系统中潜在的脆弱性来源。

    如果创建的 PK 不正确(根据任何标准)或需要更改,请创建新记录并将现有值复制到其中。虽然这不能回答您的查询,但您删除或修改表中值的例程需要知道如何以及在何处使用它;因此复制行的例程应该能够访问此信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-01
      • 2016-06-14
      • 1970-01-01
      • 2010-09-22
      • 2021-02-21
      • 2011-04-21
      • 1970-01-01
      • 2013-01-09
      相关资源
      最近更新 更多