sp_stop_job (Transact-SQL)

適用対象: SQL ServerAzure SQL Managed Instance

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

Transact-SQL 構文表記規則

構文

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 場合にのみ指定します。

マルチサーバー 管理istration (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 は、停止シグナルをデータベースに送信します。 一部のプロセスはすぐに停止でき、一部のプロセスは停止する前に安定したポイント (またはコード パスへのエントリ ポイント) に到達する必要があります。 など、実行時間の長い Transact-SQL ステートメントBACKUPRESTOREや、一部DBCCのコマンドの完了に時間がかかる場合があります。 これらのコマンドが実行されている場合、ジョブが取り消されるまでに時間がかかる場合があります。 ジョブを停止すると、ジョブが取り消されたことを示すエントリがジョブ履歴に記録されます。

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

このストアド プロシージャは、Azure SQL Database の sp_stop_job Azure Elastic Jobs サービスの同様の オブジェクトと名前を共有します。 エラスティック ジョブのバージョンについては、「jobs.sp_stop_job (Azure エラスティック ジョブ) (Transact-SQL)」を参照してください

アクセス許可

このストアド プロシージャは、db_owner ロールによって所有されています。 任意のユーザーにアクセス許可を付与 EXECUTE できますが、SQL Server のアップグレード中にこれらのアクセス許可がオーバーライドされる可能性があります。

他のユーザーには、データベース内の固定データベース ロールSQL Server エージェント次のいずれかを付与するmsdb必要があります。

  • 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