sp_stop_job (Transact-SQL)

SQL Server エージェントにジョブの実行を停止するように指示します。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

sp_stop_job 
      [@job_name =] 'job_name'
    | [@job_id =] job_id 
    | [@originating_server =] 'master_server'
    | [@server_name =] 'target_server'

引数

  • [ @job_name =] 'job_name'
    停止するジョブの名前を指定します。job_name のデータ型は sysname で、既定値は NULL です。

  • [ @job_id = ] job_id
    停止するジョブの識別番号を指定します。job_id のデータ型は uniqueidentifier で、既定値は NULL です。

  • [ @originating_server =] 'master_server'
    マスタ サーバーの名前を指定します。指定した場合、すべてのマルチサーバー ジョブが停止します。master_server のデータ型は nvarchar(128) で、既定値は NULL です。このパラメータは、対象サーバーで sp_stop_job を呼び出すときにのみ指定してください。

    注意

    最初の 3 つのパラメータは、いずれか 1 つだけを指定できます。

  • [ @server_name = ] 'target_server'
    マルチサーバー ジョブを停止する特定の対象サーバーの名前を指定します。target_server のデータ型は nvarchar(128) で、既定値は NULL です。このパラメータは、マルチサーバー ジョブのマスタ サーバーで sp_stop_job を呼び出すときにのみ指定してください。

リターン コードの値

0 (成功) または 1 (失敗)

結果セット

なし

説明

SQL Server エージェントは、停止通知を受信すると、現在実行中のジョブ ステップが終了するまで待機してから、キャンセル要求を処理します。BACKUP、RESTORE などの実行時間の長い Transact-SQL ステートメントや、一部の DBCC コマンドは、終了するまでに時間がかかることがあります。これらが実行されている場合、ジョブのキャンセルに時間がかかることがあります。ジョブを停止すると、ジョブがキャンセルされたことを示すエントリがジョブ履歴に記録されます。

ジョブで CmdExec または PowerShell 型のステップが現在実行されている場合、実行中のプロセス (MyProgram.exe など) は途中で強制終了されます。途中で終了した場合、そのプロセスによって使用されていたファイルが開いたままになるなど、予期しない結果が発生する可能性があります。このため、ジョブに CmdExec または PowerShell 型のステップが含まれる場合、sp_stop_job の使用はやむを得ない状況のみに限定してください。

権限

既定では、このストアド プロシージャを実行できるのは、sysadmin 固定サーバー ロールのメンバです。他のユーザーには、msdb データベースの次のいずれかの SQL Server エージェント固定データベース ロールが許可されている必要があります。

  • SQLAgentUserRole

  • SQLAgentReaderRole

  • SQLAgentOperatorRole

これらのロールの権限の詳細については、「SQL Server エージェントの固定データベース ロール」を参照してください。

SQLAgentUserRole および SQLAgentReaderRole のメンバは、自分が所有しているジョブだけを停止できます。SQLAgentOperatorRole のメンバは、他のユーザーのジョブを含めたすべてのローカル ジョブを停止できます。sysadmin のメンバは、すべてのローカル ジョブおよびマルチサーバー ジョブを停止できます。

次の例では、Weekly Sales Data Backup というジョブを停止します。

USE msdb ;
GO

EXEC dbo.sp_stop_job
    N'Weekly Sales Data Backup' ;
GO