sp_stop_job (Transact-SQL)
SQL Server エージェントにジョブの実行を停止するように指示します。
構文
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