sp_stop_job (Transact-sql)sp_stop_job (Transact-SQL)

適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) 適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions)

SQL ServerSQL Serverエージェントにジョブの実行を停止するよう指示します。Instructs SQL ServerSQL Server Agent to stop the execution of a job.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions


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


[ @job_name = ] 'job_name' 停止するジョブの名前を指定します。[ @job_name = ] 'job_name' The name of the job to stop. job_namesysname,、既定値は NULL です。job_name is sysname, with a default of NULL.

[ @job_id = ] job_id 停止するジョブの識別番号を指定します。[ @job_id = ] job_id The identification number of the job to stop. job_iduniqueidentifier,、既定値は NULL です。job_id is uniqueidentifier, with a default of NULL.

[ @originating_server = ] 'master_server' マスターサーバーの名前。[ @originating_server = ] 'master_server' The name of the master server. 指定した場合、すべてのマルチサーバージョブが停止します。If specified, all multiserver jobs are stopped. master_servernvarchar (128),、既定値は NULL です。master_server is nvarchar(128), with a default of NULL. このパラメーターは、対象サーバーで sp_stop_job を呼び出すときにのみ指定します。Specify this parameter only when calling sp_stop_job at a target server.


最初の 3 つのパラメーターは、いずれか 1 つだけを指定できます。Only one of the first three parameters can be specified.

[ @server_name = ] 'target_server' マルチサーバージョブを停止する特定の対象サーバーの名前。[ @server_name = ] 'target_server' The name of the specific target server on which to stop a multiserver job. target_servernvarchar (128),、既定値は NULL です。target_server is nvarchar(128), with a default of NULL. このパラメーターは、マルチサーバージョブのマスターサーバーで sp_stop_job を呼び出すときにのみ指定します。Specify this parameter only when calling sp_stop_job at a master server for a multiserver job.

リターン コードの値Return Code Values

0 (成功) または 1 (失敗)0 (success) or 1 (failure)

結果セットResult Sets



sp_stop_job は、データベースに停止シグナルを送信します。sp_stop_job sends a stop signal to the database. 一部のプロセスはすぐに停止することができ、一部のプロセスは安定したポイント (またはコードパスへのエントリポイント) に到着しないと停止できません。Some processes can be stopped immediately and some must reach a stable point (or an entry point to the code path) before they can stop. Transact-SQLTransact-SQLバックアップ、復元、一部の DBCC コマンドなど、長時間実行されるステートメントの完了には時間がかかることがあります。Some long-running Transact-SQLTransact-SQL statements such as BACKUP, RESTORE, and some DBCC commands can take a long time to finish. これらが実行されている場合、ジョブが取り消されるまでにしばらく時間がかかることがあります。When these are running, it may take a while before the job is canceled. ジョブを停止すると、ジョブが取り消されたことを示すエントリがジョブ履歴に記録されます。Stopping a job causes a "Job Canceled" entry to be recorded in the job history.

ジョブが CmdExec または PowerShellタイプのステップを現在実行している場合は、実行中のプロセス (MyProgram.exe など) が途中で強制的に終了されます。If a job is currently executing a step of type CmdExec or PowerShell, the process being run (for example, MyProgram.exe) is forced to end prematurely. 途中で終了した場合、そのプロセスによって使用されていたファイルが開いたままになるなど、予期しない結果が発生する可能性があります。Premature ending can result in unpredictable behavior such as files in use by the process being held open. そのため、ジョブにCmdExecまたはPowerShell型のステップが含まれている場合は、極端な状況でのみsp_stop_jobを使用する必要があります。Consequently, sp_stop_job should be used only in extreme circumstances if the job contains steps of type CmdExec or PowerShell.


既定では、 sysadmin 固定サーバーロールのメンバーは、このストアドプロシージャを実行できます。By default, members of the sysadmin fixed server role can execute this stored procedure. 他のユーザーには、 SQL ServerSQL Server msdb データベースの次のいずれかの エージェント固定データベース ロールが許可されている必要があります。Other users must be granted one of the following SQL ServerSQL Server Agent fixed database roles in the msdb database:

  • SQLAgentUserRoleSQLAgentUserRole

  • SQLAgentReaderRoleSQLAgentReaderRole

  • SQLAgentOperatorRoleSQLAgentOperatorRole

これらのロールの権限の詳細については、「 SQL Server エージェントの固定データベース ロール」を参照してください。For details about the permissions of these roles, see SQL Server Agent Fixed Database Roles.

SQLAgentUserRoleSQLAgentReaderRoleのメンバーは、自分が所有するジョブのみを停止できます。Members of SQLAgentUserRole and SQLAgentReaderRole can only stop jobs that they own. Sqlagentoperatorroleのメンバーは、他のユーザーによって所有されているものも含め、すべてのローカルジョブを停止できます。Members of SQLAgentOperatorRole can stop all local jobs including those that are owned by other users. Sysadminのメンバーは、すべてのローカルジョブとマルチサーバージョブを停止できます。Members of sysadmin can stop all local and multiserver jobs.


次の例では、という名前のジョブを停止 Weekly Sales Data Backup します。The following example stops a job named Weekly Sales Data Backup.

USE msdb ;  
EXEC dbo.sp_stop_job  
    N'Weekly Sales Data Backup' ;  

参照See Also

sp_delete_job (Transact-sql) sp_delete_job (Transact-SQL)
sp_help_job (Transact-sql) sp_help_job (Transact-SQL)
sp_start_job (Transact-sql) sp_start_job (Transact-SQL)
sp_update_job (Transact-sql) sp_update_job (Transact-SQL)
システム ストアド プロシージャ (Transact-SQL)System Stored Procedures (Transact-SQL)