sql-server - SQL Server 查找正在运行过程的作业

标签 sql-server tsql sql-server-2008-r2

有没有办法找出哪些作业正在使用某个存储过程?

最佳答案

这将捕获在作业步骤中显式引用该过程的实例:

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/

相关文章:

sql - 使用 where 子句插入值

sql - 通过增量删除列冗余

sql - 计算距离时,我的查询收到以下错误

SQL 输出 Y/N 比较不同表中的日期列

sql - 消息 2760,级别 16,状态 1,第 5 行指定的架构名称 "items"不存在或您无权使用它

sql - 从 sql 查询返回默认记录

sql查询不打印

sql - 在 self 加入问题上需要一些认真的帮助

java - 有可能当关闭一个打开的连接时java真的没有被关闭吗?

sql-server - 我想在 SQL Server 中执行 group_concat