有没有办法找出哪些作业正在使用某个存储过程?
最佳答案
这将捕获在作业步骤中显式引用该过程的实例:
DECLARE @s nvarchar(255) = N'procedure_name';
SET @s = QUOTENAME(@s, nchar(37));
SELECT job_name = j.name,
s.step_id,
s.step_name,
j.date_created,
j.date_modified
FROM msdb.dbo.sysjobs AS j
INNER JOIN msdb.dbo.sysjobsteps AS s
ON j.job_id = s.job_id
WHERE s.command LIKE @s
OR j.name LIKE @s
OR s.step_name LIKE @s;
如果它是由作业中调用的其他内容调用的,或者该命令是使用动态 SQL 构建的,则可能会更难以追踪。另请注意,如果您的过程名称也可以自然地出现在其他代码、注释等中,则可能会产生误报。
我去年更新了一个更加复杂和灵活的搜索程序:
更好的是 AMtwo 中的这个模块的DBA Database :
关于sql-server - SQL Server 查找正在运行过程的作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11828733/