次の方法で共有


sp_stop_job (Transact-SQL)

適用対象: SQL Server Azure 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_namesysname で、既定値は NULL です。

[ @job_id = ] 'job_id'

停止するジョブの識別番号を指定します。 @job_iduniqueidentifier で、既定値は NULL です。

[ @originating_server = ] N'originating_server'

元のサーバーの名前。 指定すると、すべてのマルチサーバー ジョブが停止します。 @originating_serversysname で、既定値は NULL です。 このパラメーターは、ターゲット サーバーで sp_stop_job を呼び出す場合にのみ指定します。

Multi Server Administration (MSX/TSX) 機能は、Azure SQL Managed Instance ではサポートされていません

Note

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

[ @server_name = ] N'server_name'

マルチサーバー ジョブを停止する特定のターゲット サーバーの名前。 @server_namesysname で、既定値は NULL です。 このパラメーターは、マルチサーバー ジョブの送信元サーバーで sp_stop_job を呼び出す場合にのみ指定します。

リターン コードの値

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

結果セット

ありません。

解説

sp_stop_job は、停止シグナルをデータベースに送信します。 一部のプロセスはすぐに停止でき、一部のプロセスは停止する前に安定したポイント (またはコード パスへのエントリ ポイント) に到達する必要があります。 BACKUPRESTORE、一部の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