共用方式為


sp_stop_job (Transact-SQL)

指示 SQL Server Agent 停止執行作業。

主題連結圖示Transact-SQL 語法慣例

語法

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 命令可能需要一段很長的時間才能完成。 在執行這些項目時,取消作業之前要花上一些時間。 停止作業會造成「作業取消」項目記錄在作業記錄中。

如果作業目前正在執行 CmdExecPowerShell 類型的步驟,則會強制提前結束執行中的處理序 (如 MyProgram.exe)。 提前結束可能造成無法預期的行為,例如,有保留開啟狀態的處理序在使用檔案。 因此,只有在作業包含 CmdExecPowerShell 類型的步驟時,才應該在極端情況下使用 sp_stop_job

權限

依預設,只有系統管理員 (sysadmin) 固定伺服器角色的成員,才能夠執行這個預存程序。 其他使用者必須被授與 msdb 資料庫的下列其中一個 SQL Server Agent 固定資料庫角色。

  • SQLAgentUserRole

  • SQLAgentReaderRole

  • SQLAgentOperatorRole

如需有關這些角色權限的詳細資料,請參閱<SQL Server Agent 固定資料庫角色>。

SQLAgentUserRoleSQLAgentReaderRole 的成員只能停止他們自己的作業。 SQLAgentOperatorRole 的成員可以停止所有本機作業,包括其他使用者擁有的那些作業在內。 系統管理員 (sysadmin) 的成員可以停止所有本機作業和多伺服器作業。

範例

下列範例會停止名稱為 Weekly Sales Data Backup 的作業。

USE msdb ;
GO

EXEC dbo.sp_stop_job
    N'Weekly Sales Data Backup' ;
GO