sp_stop_job (Transact-SQL)
適用於:SQL Server Azure SQL 受控執行個體
指示 SQL Server Agent 停止執行作業。
語法
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
時,才指定此參數。
Azure SQL 受控執行個體 不支援多伺服器管理 (MSX/TSX) 功能。
注意
只能指定前三個參數中的一個。
[ @server_name = ] N'server_name'
要停止多伺服器作業的特定目標伺服器名稱。 @server_name為 sysname,預設值為 NULL
。 只有在針對多伺服器作業在源伺服器呼叫 sp_stop_job
時,才指定此參數。
傳回碼值
0
(成功) 或 1
(失敗)。
結果集
無。
備註
sp_stop_job
將停止訊號傳送至資料庫。 有些進程可以立即停止,有些進程必須到達穩定點(或程式代碼路徑的進入點),才能停止。 某些長時間執行的 Transact-SQL 語句,例如 BACKUP
、 RESTORE
和 某些 DBCC
命令可能需要很長的時間才能完成。 當這些命令執行時,可能需要一段時間才能取消作業。 停止作業會導致在作業歷程記錄中記錄「作業已取消」專案。
如果作業目前正在執行 CmdExec 或 PowerShell 類型的步驟,則執行中的進程(例如,MyProgram.exe)會強制過早結束。 過早結束可能會導致無法預期的行為,例如開啟的處理程式正在使用的檔案。 因此,sp_stop_job
只有在作業包含 CmdExec 或 PowerShell 類型的步驟時,才應該在極端情況下使用。
此預存程式會與 Azure SQL 資料庫 的 Azure 彈性作業服務類似物件共享 的名稱sp_stop_job
。 如需彈性作業版本的相關信息,請參閱 jobs.sp_stop_job (Azure Elastic Jobs) 。
權限
此預存程式是由 db_owner 角色所擁有。 您可以授與 EXECUTE
任何用戶的許可權,但這些許可權可能會在 SQL Server 升級期間覆寫。
其他用戶必須在資料庫中獲得下列其中一個 SQL Server Agent 固定資料庫角色 msdb
:
- SQLAgentUserRole
- SQLAgentReaderRole
- SQLAgentOperatorRole
如需這些角色權限的詳細資訊,請參閱 SQL Server Agent 固定資料庫角色。
SQLAgentUserRole 和 SQLAgentReaderRole 的成員只能停止他們所擁有的作業。 SQLAgentOperatorRole 的成員可以停止所有本機作業,包括其他使用者所擁有的作業。 系統管理員的成員可以停止所有本機和多伺服器作業。
範例
下列範例會停止名為 Weekly Sales Data Backup
的作業。
USE msdb;
GO
EXEC dbo.sp_stop_job N'Weekly Sales Data Backup';
GO