如何查找哪个SQL Server作业正在使用存储过程?

时间:2016-07-24 17:48:14

标签: sql-server sql-server-2008

我们在SQL Server中有系统表,例如sysjobssyscommentssysobjects

我需要使用特定的存储过程找到在SQL Server代理中运行的SQL Server作业列表。

如此......

select * 
from sysobjects 
where name = 'sp_mystoredprocedure'

我需要找到哪些SQL Server作业正在使用我作为输入参数传递的存储过程。

2 个答案:

答案 0 :(得分:1)

你需要查询sysjobsteps,虽然没有什么比这更能为你提供准确的存储过程,但你可以用关键字搜索..

SELECT  j.job_id,
    s.srvname,
    j.name,
    js.step_id,
    js.command,
    j.enabled 
FROM    dbo.sysjobs j
JOIN    dbo.sysjobsteps js
    ON  js.job_id = j.job_id 
JOIN    master.dbo.sysservers s
    ON  s.srvid = j.originating_server_id
WHERE   js.command LIKE N'%KEYWORD_SEARCH%'

<强>参考文献:
http://sqltidbits.com/scripts/search-sql-server-agent-job-steps-specific-keyword-text-or-stored-procedure

答案 1 :(得分:0)

来源:https://stackoverflow.com/a/11828818/3585278

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%'
);