sp_stop_job (Transact-SQL)
適用対象: SQL Server Azure SQL Managed Instance
ジョブの実行を停止するようにSQL Server エージェントに指示します。
構文
sp_stop_job
[ [ @job_name = ] N'job_name' ]
[ , [ @job_id = ] 'job_id' ]
[ , [ @originating_server = ] N'originating_server' ]
[ , [ @server_name = ] N'server_name' ]
[ ; ]
引数
[ @job_name = ] N'job_name'
停止するジョブの名前を指定します。 @job_name は sysname で、既定値は NULL
です。
[ @job_id = ] 'job_id'
停止するジョブの識別番号を指定します。 @job_id は uniqueidentifier で、既定値は NULL
です。
[ @originating_server = ] N'originating_server'
元のサーバーの名前。 指定すると、すべてのマルチサーバー ジョブが停止します。 @originating_server は sysname で、既定値は NULL
です。 このパラメーターは、ターゲット サーバーで sp_stop_job
を呼び出す場合にのみ指定します。
Multi Server Administration (MSX/TSX) 機能は、Azure SQL Managed Instance ではサポートされていません。
Note
最初の 3 つのパラメーターは、いずれか 1 つだけを指定できます。
[ @server_name = ] N'server_name'
マルチサーバー ジョブを停止する特定のターゲット サーバーの名前。 @server_name は sysname で、既定値は NULL
です。 このパラメーターは、マルチサーバー ジョブの送信元サーバーで sp_stop_job
を呼び出す場合にのみ指定します。
リターン コードの値
0
(成功) または 1
(失敗)。
結果セット
ありません。
解説
sp_stop_job
は、停止シグナルをデータベースに送信します。 一部のプロセスはすぐに停止でき、一部のプロセスは停止する前に安定したポイント (またはコード パスへのエントリ ポイント) に到達する必要があります。 BACKUP
、RESTORE
、一部のDBCC
コマンドなど、実行時間の長い Transact-SQL ステートメントによっては、完了に時間がかかる場合があります。 これらのコマンドが実行されている場合、ジョブが取り消されるまでに時間がかかる場合があります。 ジョブを停止すると、ジョブが取り消されたことを示すエントリがジョブ履歴に記録されます。
ジョブが現在、 CmdExec または PowerShell のステップを実行している場合、実行中のプロセス (MyProgram.exe など) は途中で終了する必要があります。 途中で終了した場合、そのプロセスによって使用されていたファイルが開いたままになるなど、予期しない結果が発生する可能性があります。 したがって、 sp_stop_job
は、ジョブに CmdExec または PowerShell のステップが含まれている場合にのみ使用する必要があります。
このストアド プロシージャは、azure SQL Database 用の Azure Elastic Jobs サービスの同様のオブジェクトとsp_stop_job
の名前を共有。 エラスティック ジョブのバージョンについては、「 jobs.sp_stop_job (Azure エラスティック ジョブ)」を参照してください。
アクセス許可
この手順では EXECUTE
アクセス許可を付与できますが、これらのアクセス許可は SQL Server のアップグレード中にオーバーライドされる可能性があります。
他のユーザーには、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