管理作業步驟

適用於:SQL ServerAzure SQL 受控執行個體

重要

Azure SQL 受控執行個體目前支援多數 (但非全部) 的 SQL Server Agent 功能。 如需詳細資料,請參閱 Azure SQL 受控執行個體與 SQL Server 之間的 T-SQL 差異

作業步驟是指作業對資料庫或伺服器所採取的動作, 每一個作業必須至少有一個作業步驟。 作業步驟可以是:

  • 可執行檔程式與作業系統命令。

  • Transact-SQL 陳述式,包括預存程序和擴充預存程序。

  • PowerShell 指令碼。

  • Microsoft ActiveX 指令碼。

  • 複寫工作。

  • Analysis Services 工作。

  • Integration Services 套件。

每個作業步驟都是在特定的安全性內容中執行。 如果作業步驟指定 Proxy,則作業步驟會在該 Proxy 認證的安全性內容中執行。 如果作業步驟未指定 Proxy,則作業步驟會在 SQL Server Agent 服務帳戶的內容中執行。 只有系統管理員 (sysadmin) 固定伺服器角色的成員,才可以建立未明確指定 Proxy 的作業。

因為工作步驟是在特定 Microsoft Windows 使用者環境中執行,所以該使用者必須具有執行工作步驟所需的權限和設定。 例如,如果您建立了一個作業,它需要磁碟機代號或通用命名慣例 (UNC) 路徑,則在測試工作時,其作業步驟可能會在您的 Windows 使用者帳戶下執行。 不過,作業步驟的 Windows 使用者也必須具備必要的權限、磁碟機代號組態或必要磁碟機的存取權, 否則,作業步驟會失敗。 若要防止此問題發生,請確定每一個作業步驟的 Proxy,對於作業步驟所執行的工作都具有必要權限。 如需詳細資訊,請參閱 安全性與保護 (Database Engine)

作業步驟記錄

SQL Server Agent 可以將某些工作步驟的輸出寫入作業系統檔案,或寫入 msdb 資料庫中的 sysjobstepslogs 資料表。 以下作業步驟類型可以寫入輸出至兩個目的地:

  • 可執行檔程式與作業系統命令。

  • Transact-SQL 陳述式。

  • Analysis Services 工作。

當執行作業步驟的使用者是系統管理員 (sysadmin) 固定伺服器角色的成員時,這些作業步驟才可以將作業步驟輸出寫入作業系統檔案。 如果執行作業步驟的使用者是 msdb 資料庫中的 SQLAgentUserRole、SQLAgentReaderRole 或 SQLAgentOperatorRole 固定資料庫角色的成員,則這些作業步驟的輸出只能寫入 sysjobstepslogs 資料表中。

當作業或作業步驟遭到刪除時,作業步驟記錄也會跟著自動刪除。

注意

複寫工作和 Integration Services 套件工作步驟記錄是由其個別的子系統所處理。 您不能使用 SQL Server Agent 來設定這些工作步驟類型的工作步驟記錄。

可執行程式和作業系統命令類型的作業步驟

可執行程式和作業系統命令可以做為作業步驟, 這些檔案的副檔名為 .bat、.cmd、.com 或 .exe。

當您使用可執行程式或作業系統命令做為作業步驟時,必須指定:

  • 指令成功時傳回的處理序結束代碼。

  • 要執行的命令。 若要執行作業系統命令,此處是指命令本身; 若為外部程式,則是指程式名稱和程式的引數,例如: C:\Program Files\Microsoft SQL Server\100\Tools\Binn\sqlcmd.exe -e -q "sp_who"

    注意

    如果可執行檔不在系統路徑或執行作業步驟的使用者路徑中,您必須提供可執行檔的完整路徑。

Transact-SQL 作業步驟

當您建立 Transact-SQL 工作步驟時,必須:

  • 識別用來執行作業的資料庫。

  • 輸入要執行的 Transact-SQL 陳述式。 陳述式可以呼叫預存程序或擴充預存程序。

您可以選擇開啟現有 Transact-SQL 檔案作為工作步驟的命令。

Transact-SQL 工作步驟不會使用 SQL Server Agent Proxy。 相反地,如果工作步驟的擁有者是 sysadmin 固定伺服器角色的成員,則工作步驟會以工作步驟的擁有者或 SQL Server Agent 服務帳戶的身分來執行。 sysadmin 固定伺服器角色的成員也可以指定 Transact-SQL 工作步驟在另一個使用者的環境下執行,方法是使用 sp_add_jobstep 預存程序的 database_user_name 參數。 如需詳細資訊,請參閱 sp_add_jobstep (Transact-SQL)

注意

單一 Transact-SQL 工作步驟可以包含多個批次。 Transact-SQL 工作步驟可以包含內嵌 GO 命令。

PowerShell 指令碼作業步驟

當您建立 PowerShell 指令碼作業步驟時,必須指定其中一個設定當做此步驟的命令:

  • PowerShell 指令碼的文字。

  • 要開啟之現有的 PowerShell 指令碼檔案。

SQL Server Agent PowerShell 子系統會開啟一個 PowerShell 工作階段,並載入 SQL Server PowerShell 嵌入式管理單元。用作工作步驟命令的 PowerShell 指令碼可以參考 SQL Server PowerShell 提供者和 Cmdlet。 如需使用 SQL Server PowerShell 嵌入式管理單元撰寫 PowerShell 指令碼的詳細資訊,請參閱 SQL Server PowerShell

ActiveX Scripting 作業步驟

重要

在未來的 Microsoft SQL Server 版本中,將會從 SQL Server Agent 中移除 ActiveX 指令碼工作步驟。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。

建立 ActiveX Scripting 作業步驟時,您必須:

  • 確認撰寫作業步驟所用的指令碼語言。

  • 撰寫 ActiveX Script。

您也可以開啟一個現存的 ActiveX Script 檔做為該作業步驟的指令。 另外,ActiveX Script 命令也可以在外部編譯 (例如,使用 Microsoft Visual Basic),然後再當成可執行程式來執行。

當作業步驟指令是一個 ActiveX Script 時,您可以使用 SQLActiveScriptHost 物件將輸出列印到作業步驟記錄,或者是建立 COM 物件。 SQLActiveScriptHost 是由 SQL Server Agent 裝載系統導入指令碼命名空間內的全域物件。 此物件具有兩個方法 (Print 和 CreateObject)。 下列範例顯示 ActiveX Scripting 在 Visual Basic Scripting Edition (VBScript) 中如何運作。

' VBScript example for ActiveX Scripting job step  
' Create a Dmo.Server object. The object connects to the  
' server on which the script is running.  
  
Set oServer = CreateObject("SQLDmo.SqlServer")  
oServer.LoginSecure = True  
oServer.Connect "(local)"  
'Disconnect and destroy the server object  
oServer.DisConnect  
Set oServer = nothing  

複寫作業步驟

當您利用複寫建立發行集和訂閱時,依預設會建立複寫作業。 建立的作業類型取決於複寫類型 (快照式、交易式或合併式) 和所使用的選項。

複寫作業步驟會啟動以下複寫代理程式的其中之一:

  • 快照集代理程式 (快照集作業)

  • 記錄讀取器代理程式 (LogReader 作業)

  • 散發代理程式 (散發作業)

  • 合併代理程式 (合併作業)

  • 佇列讀取器代理程式 (QueueReader 作業)

設定複寫時,您可以指定以三種方式的其中一種來執行複寫代理程式:在 SQL Server Agent 啟動之後持續執行、視需要執行或根據排程執行。 如需複寫代理程式的詳細資訊,請參閱 複寫代理程式概觀

SQL Server Analysis Services 作業步驟

SQL Server Agent 支援兩個不同類型的 Analysis Services 工作步驟,即命令工作步驟和查詢工作步驟。

SQL Server Analysis Services 命令作業步驟

當您建立 Analysis Services 命令工作步驟時,必須:

  • 識別要執行作業步驟的資料庫 OLAP 伺服器。

  • 輸入要執行的陳述式。 此陳述式必須是 XML for Analysis Services Execute 方法。 此陳述式可能未包含完整的 SOAP Envelope 或 XML for Analysis Services Discover 方法。 請注意,雖然 SQL Server Management Studio 支援完整 SOAP 信封和 Discover 方法,但是 SQL Server Agent 工作步驟則不予支援。

SQL Server Analysis Services 查詢作業步驟

當您建立 Analysis Services 查詢工作步驟時,必須:

  • 識別要執行作業步驟的資料庫 OLAP 伺服器。

  • 輸入要執行的陳述式。 陳述式必須為多維度運算式 (MDX) 查詢。

如需 MDX 的詳細資訊,請參閱 MDX 陳述式基礎觀念 (MDX)

Integration Services 封裝

當您建立 Integration Services 套件工作步驟時,必須執行下列動作:

  • 識別封裝的來源。

  • 識別封裝的位置。

  • 如果組態檔是封裝所必要的,請識別組態檔。

  • 如果命令檔是封裝所必要的,請識別命令檔。

  • 識別要用於封裝的驗證。 例如,您可以指定封裝必須加以簽署,或封裝必須有特定的封裝識別碼。

  • 識別封裝的資料來源。

  • 識別封裝的記錄提供者。

  • 指定在執行封裝之前要設定的變數和值。

  • 識別執行選項。

  • 新增或修改命令列選項。

請注意,如果您將套件部署至 SSIS 目錄並將 [SSIS 目錄] 指定為套件來源,此組態資訊的大部分會從套件中自動取得。 在 [組態] 索引標籤下,您可以指定環境、參數值、連接管理員值、屬性覆寫、以及套件是否會在 32 位元執行階段環境中執行。

如需建立可執行 Integration Services 套件之工作步驟的詳細資訊,請參閱套件的 SQL Server Agent 工作

描述 主題
描述如何建立包含可執行程式的作業步驟。 建立 CmdExec 作業步驟
描述如何重設 SQL Server Agent 權限。 設定使用者可建立及管理 SQL Server Agent 作業
描述如何建立 Transact-SQL 工作步驟。 Create a Transact-SQL Job Step
描述如何定義 Microsoft SQL Server Agent Transact-SQL 工作步驟的選項。 Define Transact-SQL Job Step Options
描述如何建立 ActiveX 指令碼作業步驟。 Create an ActiveX Script Job Step
描述如何建立和定義執行 SQL Server Analysis Services 命令與查詢的 SQL Server Agent 工作步驟。 Create an Analysis Services Job Step
描述在工作執行期間失敗時,SQL Server 應該採取的動作。 Set Job Step Success or Failure Flow
描述如何檢視 [作業步驟屬性] 對話方塊中的作業步驟詳細資料。 View Job Step Information
描述如何刪除 SQL Server Agent 工作步驟記錄。 Delete a Job Step Log

另請參閱

sysjobstepslogs (Transact-SQL)
建立作業
sp_add_job (Transact-SQL)