Sql-Server-2008-R2

在另一個作業中呼叫 SQL Server 作業

  • December 31, 2018

是否可以呼叫 SQL Server 作業在另一個作業中執行?

我知道我們可以將 Job 1 的所有步驟添加到 Job 2,但我不想這樣做。首先,作業 2 已經很大,其次我找不到複製粘貼選項來在作業之間複製步驟,因此手動添加步驟會很耗時。

任何建議表示讚賞。

  • 右鍵點擊要添加其步驟的作業,然後選擇“腳本作業為->創建到新查詢視窗”,在生成的腳本中查找具有此格式的所有部分
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'<stepname>', 
  @step_id=1, 
  @cmdexec_success_code=0, 
  @on_success_action=3, 
  @on_success_step_id=0, 
  @on_fail_action=2, 
  @on_fail_step_id=0, 
  @retry_attempts=0, 
  @retry_interval=0, 
  @os_run_priority=0, @subsystem=N'TSQL', 
  @command=N'<code>', 
  @database_name=N'', 
  @flags=0
  • 打開一個新的查詢視窗並執行:
DECLARE @jobId BINARY(16)
    SET @jobId = (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = '<job name, to which you want to copy the steps>')

-- Followed by all the msdb.dbo.sp_add_jobstep from the script that scripted out in the earlier step

    EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'<stepname>', 
      @step_id=1, 
      @cmdexec_success_code=0, 
      @on_success_action=3, 
      @on_success_step_id=0, 
      @on_fail_action=2, 
      @on_fail_step_id=0, 
      @retry_attempts=0, 
      @retry_interval=0, 
      @os_run_priority=0, @subsystem=N'TSQL', 
      @command=N'<code>', 
      @database_name=N'', 
      @flags=0

引用自:https://dba.stackexchange.com/questions/31104