我们在SQL Server中有系统表,例如sysjobs
,syscomments
,sysobjects
。
我需要使用特定的存储过程找到在SQL Server代理中运行的SQL Server作业列表。
如此......
select *
from sysobjects
where name = 'sp_mystoredprocedure'
我需要找到哪些SQL Server作业正在使用我作为输入参数传递的存储过程。
答案 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%'
答案 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%'
);