我对存储过程进行了一些更改(说A),在我的项目中,有500多个存储过程。
其中可以存在执行我的存储过程 A 的存储过程。
现在我需要知道,哪些其他存储过程会因更改而受到影响?
我的意思是:如何知道从哪个其他存储过程中调用存储过程 A ?有可能吗?
答案 0 :(得分: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%'
答案 1 :(得分:1)
有几种方法可以找到依赖关系。所以,客栈的优先顺序...
如果您尚未使用它们;你真的应该是。
年轻的Padawan,这里是开始冒险的地方:https://docs.microsoft.com/en-us/visualstudio/data-tools/creating-and-managing-databases-and-data-tier-applications-in-visual-studio?view=vs-2019
简而言之;在SQL Server Management Studio的“对象资源管理器”窗格中右键单击该对象,然后选择“显示依赖项...”
例如sys.sql_expression_dependencies
答案 2 :(得分:0)
您可以使用以下查询来搜索调用您的过程。
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%'
本质上,您正在浏览存储过程的定义,并寻找存储过程的名称/文本。