【问题标题】:How to know if a stored procedure is executed from other stored procedures?如何知道一个存储过程是否是从其他存储过程执行的?
【发布时间】:2019-10-23 09:32:28
【问题描述】:

我在存储过程中做了一些更改(比如 A),在我的项目中有超过 500 个存储过程。

可能有存储过程在其中执行我的存储过程A

现在我需要知道,我的更改会影响哪些其他存储过程?

我的意思是:如何知道存储过程A是从哪些其他存储过程中调用的?有可能吗?

【问题讨论】:

  • 您需要查看其他 SP 的定义。您可以使用 SQL Search 之类的东西来执行此操作,或者您可以将 sys.sql_modulessys.procedures 对象与 LIKE 语句一起用于 definition 列。
  • 您通常可以查看系统表。 但是存储过程可以执行动态 SQL ——并且这些调用不会在元数据中捕获。出于这个原因,我喜欢对实际发生的事情进行审计跟踪。

标签: sql sql-server stored-procedures


【解决方案1】:

您可以使用以下方式找到它们:

SELECT  P.name
,       SM.definition
FROM    sys.procedures AS P
INNER JOIN sys.sql_modules AS SM
        ON SM.object_id = P.object_id
WHERE   SM.definition LIKE '%ProcedureA%'

【讨论】:

    【解决方案2】:

    有几种方法可以找到依赖项。所以,客栈的优先顺序...

    数据库项目

    如果您还没有使用这些;你真的应该这样做。

    这里是您开始冒险的地方,年轻的学徒:https://docs.microsoft.com/en-us/visualstudio/data-tools/creating-and-managing-databases-and-data-tier-applications-in-visual-studio?view=vs-2019

    SSMS 中的依赖检查器

    简而言之;在 SQL Server Management Studio 的“对象资源管理器”窗格中右键单击对象,然后选择“显示依赖项...”

    这个答案的例子,在这里:Microsoft SQL Server foreign key dependencies show up using sp_MSdependencies but are not listed in sys.foreign_keys

    一些 SQL!

    例如sys.sql_expression_dependencies

    https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-sql-expression-dependencies-transact-sql?view=sql-server-ver15

    【讨论】:

      【解决方案3】:

      您可以使用以下查询来搜索调用您的程序。

      select
          p.name
          , m.definition
      from sys.procedures p
          inner join sys.sql_modules m
              on p.object_id = m.object_id
      where n.[name] <> 'procedure_name'
          and m.definition like '%procedure_name%'
      

      本质上,您正在查看存储过程定义并查找存储过程的名称/文本。

      【讨论】:

      • 感谢您的反对,但为什么呢?我的回答有什么问题?
      • 嘿@Radu,我没有否决你的答案,是其他人否决了。我给了你+1。我发现所有三个答案都有帮助,我给了他们+1。谢谢。
      猜你喜欢
      • 2019-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-15
      相关资源
      最近更新 更多