【问题标题】:How to check if the stored procedure is scheduled to run at specific time如何检查存储过程是否计划在特定时间运行
【发布时间】:2015-07-28 21:26:51
【问题描述】:

在我的 SQL Server 2008 中,存储过程 P_ABC 计划在每天凌晨 2 点运行。

但是我如何验证此过程 P_ABC 是否计划在每天凌晨 2 点运行并且它始终在凌晨 2 点运行?是否有任何查询来获取计划在特定时间运行的程序列表?

【问题讨论】:

  • @marc_s 对此表示感谢
  • 在谈工作吗?
  • @GiorgiNakeuri 不确定我该如何实现。
  • 这些程序是否在 sql server 作业下运行?或者可能有一些 Windows 服务或其他什么?
  • 致版主:请求将问题迁移到 dba.stackexchange.com

标签: sql sql-server sql-server-2008 stored-procedures scheduled-tasks


【解决方案1】:

我不知道有任何选项可以简单地查询 SQL 以找出存储过程何时运行。我有一系列审计表来存储这些信息。设置需要一点时间,但它会为您提供所需的一切。

总体而言,您需要在每个存储过程中执行以下操作:

  1. 调用将为特定作业分配新(递增)ID 的存储过程。此过程还将存储正在运行的过程的名称(作为参数传递)以及它在表中启动的时间。

  2. 在过程结束时,使用原始 ID 调用另一个存储过程,并使用结束时间更新审计记录。

这很有效,因为您知道运行什么、何时运行以及需要多长时间。

【讨论】:

    【解决方案2】:

    不确定这是否正是您需要的,但您可以查看下面的这段代码。

    你也可以在那里找到它: SQL Server Find What Jobs Are Running a Procedure

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

    使用这种方法,您可以列出所有存储过程(按名称),然后找到包含这些存储过程的所有作业(或更具体的步骤)。

    请参阅此问题/答案以列出存储过程:Query to list all stored procedures

    谢谢

    【讨论】:

      【解决方案3】:

      这个问题太老了,但我仍然在发布这个问题。你可以试试-

      CREATE PROCEDURE MyTask
       AS
      BEGIN  
          SET NOCOUNT ON;
          --  For executing the stored procedure at 11:00 P.M
          declare @delayTime nvarchar(50)
          set @delayTime = '23:00'
      
          while 1 = 1
          begin
              waitfor time @delayTime 
              begin
                  --Name for the stored proceduce you want to call on regular bases
                  execute [DatabaseName].[dbo].[StoredProcedureName];
              end
          end
      END
      

      那么,

      -- Sets stored procedure for automatic execution.
      sp_procoption    @ProcName = 'MyTask',
                      @OptionName = 'startup',
                      @OptionValue = 'on'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-09
        • 2021-11-15
        • 2020-11-21
        • 2011-08-08
        • 2018-12-19
        • 2012-10-01
        • 1970-01-01
        • 2017-10-14
        相关资源
        最近更新 更多