【发布时间】:2012-08-03 10:49:06
【问题描述】:
有没有办法找出哪些作业正在使用某个存储过程?
【问题讨论】:
标签: sql-server tsql sql-server-2008-r2
有没有办法找出哪些作业正在使用某个存储过程?
【问题讨论】:
标签: sql-server tsql sql-server-2008-r2
这将捕获在作业步骤中明确引用过程的实例:
SELECT j.name
FROM msdb.dbo.sysjobs AS j
WHERE EXISTS
(
SELECT 1 FROM msdb.dbo.sysjobsteps AS s
WHERE s.job_id = j.job_id
AND s.command LIKE '%procedurename%'
);
如果它被作业中调用的其他东西调用,或者该命令是使用动态 SQL 构造的,则可能会更难追踪。另请注意,如果您的过程名称也可以自然地出现在其他代码、cmets 等中,则可能会产生误报。
【讨论】:
DECLARE @Search varchar(255) SET @Search='searchstring' SELECT j.name, s.step_id, s.step_name FROM msdb.dbo.sysjobsteps AS s, msdb.dbo.sysjobs as j WHERE s.job_id = j.job_id AND s.command LIKE '%'+@Search+'%'