sp_stop_job (Transact-SQL)
指示 SQL Server Agent 停止執行作業。
語法
sp_stop_job
[@job_name =] 'job_name'
| [@job_id =] job_id
| [@originating_server =] 'master_server'
| [@server_name =] 'target_server'
引數
[ @job_name =] 'job_name'
這是要停止的作業名稱。job_name 是 sysname,預設值是 NULL。[ @job_id =] job_id
這是要停止的作業識別碼。job_id 是 uniqueidentifier,預設值是 NULL。[ @originating_server =] 'master_server'
主要伺服器的名稱。 如果指定的話,會停止所有多伺服器作業。master_server 是 nvarchar(128),預設值是 NULL。 當在目標伺服器呼叫 sp_stop_job 時,才指定這個參數。[!附註]
您只能指定前三個參數的其中一個。
[ @server_name =] 'target_server'
這是要在其中停止多伺服器作業之特定目標伺服器的名稱。target_server 是 nvarchar(128),預設值是 NULL。 當在多伺服器作業的主要伺服器呼叫 sp_stop_job 時,才指定這個參數。
傳回碼值
0 (成功) 或 1 (失敗)
結果集
無
備註
當 SQL Server Agent 收到停止通知時,它會等候目前正在執行的作業步驟完成,然後再處理取消要求。 某些長時間執行的 Transact-SQL 陳述式 (如 BACKUP、RESTORE) 和某些 DBCC 命令可能需要一段很長的時間才能完成。 在執行這些項目時,取消作業之前要花上一些時間。 停止作業會造成「作業取消」項目記錄在作業記錄中。
如果作業目前正在執行 CmdExec 或 PowerShell 類型的步驟,則會強制提前結束執行中的處理序 (如 MyProgram.exe)。 提前結束可能造成無法預期的行為,例如,有保留開啟狀態的處理序在使用檔案。 因此,只有在作業包含 CmdExec 或 PowerShell 類型的步驟時,才應該在極端情況下使用 sp_stop_job。
權限
依預設,只有系統管理員 (sysadmin) 固定伺服器角色的成員,才能夠執行這個預存程序。 其他使用者必須被授與 msdb 資料庫的下列其中一個 SQL Server Agent 固定資料庫角色。
SQLAgentUserRole
SQLAgentReaderRole
SQLAgentOperatorRole
如需有關這些角色權限的詳細資料,請參閱<SQL Server Agent 固定資料庫角色>。
SQLAgentUserRole 和 SQLAgentReaderRole 的成員只能停止他們自己的作業。 SQLAgentOperatorRole 的成員可以停止所有本機作業,包括其他使用者擁有的那些作業在內。 系統管理員 (sysadmin) 的成員可以停止所有本機作業和多伺服器作業。
範例
下列範例會停止名稱為 Weekly Sales Data Backup 的作業。
USE msdb ;
GO
EXEC dbo.sp_stop_job
N'Weekly Sales Data Backup' ;
GO