【发布时间】:2023-04-06 12:52:01
【问题描述】:
我使用的是 SQL Server 2014。我有一些用户定义的表,例如 Customer、PurchaseOrder、User 等。我在许多存储过程中使用这些表。在某些情况下,这些存储过程几乎有 1000/1500 行长。
现在我想找出这些表在每个存储过程中执行的操作(插入/更新/删除)。
我是手动做的。但这是地狱般的努力。此外,在手动操作中,我可能会错过任何东西。
我们能否编写一个 SQL 查询,通过该查询无需打开存储过程,我就可以知道某个表在其中执行什么操作(插入/更新/删除)。
提前致谢。
【问题讨论】:
-
“现在我想找出这些表在每个存储过程中执行的操作(插入/更新/删除)。” 你的意思是什么 DML 操作正在针对您的存储过程中的哪些表执行?表不针对过程执行 DML 操作;这些表是受 DML 操作影响的表。
-
然而,这充其量是过于宽泛了。要真正实现这一点,您需要定义过程和可以解析 SQL 并识别关键字和批处理正在执行的过程的工具。这与一项微不足道的任务远。说实话,这就是好的文档发挥作用的地方。
-
插入、更新、删除等 DML 操作。如果我们可以找出单个表,比如 Customer,在存储过程中对其执行什么类型的操作(插入/更新/删除),那对我来说也很好。
-
从查找依赖项开始 - 这是一个常见的主题,并且发布了许多讨论和解决方案。除此之外,没有简单的方法可以确定存储过程对给定表执行哪些操作。不要忘记视图和触发器也可以“有助于”您寻求的信息。在这种情况下,良好的文档、代码编写一致性和良好的命名约定可以提供帮助。不幸的是,这些都不是开发团队的重点。需要吸取的教训。
-
您希望查看哪些内容以及如何查看有关您的程序的信息?解释你的手动过程。您无法在系统目录视图中找到您需要的内容吗?
标签: sql sql-server stored-procedures sql-function system-stored-procedures