【问题标题】:How to find which SQL Server job is using the stored procedure?如何查找正在使用存储过程的 SQL Server 作业?
【发布时间】:2020-05-01 06:02:03
【问题描述】:

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

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

比如..

select * 
from sysobjects 
where name = 'sp_mystoredprocedure'

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

【问题讨论】:

    标签: sql-server sql-server-2008


    【解决方案1】:

    您需要查询在 msdb 数据库中找到的表 sysjobsteps。虽然没有什么可以为您提供确切的存储过程,但您可以使用关键字进行搜索。

    SELECT  j.job_id,
            s.srvname,
            j.name,
            js.step_id,
            js.command,
            j.enabled 
    FROM    msdb.dbo.sysjobs j
    JOIN    msdb.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%'
    

    参考资料:
    https://gist.github.com/fcmendoza/1878088

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2012-08-03
        • 2013-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多