建立作業步驟

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

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

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

  • PowerShell 指令碼。

  • Microsoft ActiveX Script。

  • 複寫工作。

  • 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"

    [!附註]

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

若要以可執行程式建立作業步驟

若要重設 SQL Server Agent 權限

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 命令。

若要建立 Transact-SQL 作業步驟

若要定義 Transact-SQL 作業步驟選項

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 作業步驟

重要事項重要事項

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

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

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

  • 撰寫 ActiveX Script。

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

當作業步驟指令是一個 ActiveX Script 時,您可以使用 SQLActiveScriptHost 物件將輸出列印到作業步驟記錄,或者是建立 COM 物件。SQLActiveScriptHost 是由 SQL Server Agent 主控系統導入指令碼命名空間內的全域物件。此物件具有兩個方法 (PrintCreateObject)。下列範例顯示 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

下列範例顯示 JScript 中的相同工作:

// JScript example for ActiveX Scripting job step
// Create a Dmo.Server object. The object connects to the
// server on which the script is running.

var oServer = CreateObject("SQLDmo.SqlServer");
oServer.LoginSecure = true;
oServer.Connect("(local)");

//Disconnect and destroy the server object
oServer.DisConnect();
oServer.Close(); 

若要建立 ActiveX Script 作業步驟

複寫作業步驟

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

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

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

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

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

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

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

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

SQL Server Analysis Services 作業步驟

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

SQL Server Analysis Services 命令作業步驟

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

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

  • 輸入要執行的陳述式。Analysis ServicesExecute 方法的陳述式必須是 XML。陳述式可能不含完整的 SOAP Envelope 或 XML for Analysis ServicesDiscover 方法。請注意,雖然 SQL Server Management Studio 支援完整的 SOAP Envelope 與 Discover 方法,但是 SQL Server Agent 作業步驟則不支援。

如需有關 Analysis Services 之 XML 的詳細資訊,請參閱<XML for Analysis 概觀 (XMLA)>。

SQL Server Analysis Services 查詢作業步驟

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

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

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

如需 MDX 的詳細資訊,請參閱<MDX 查詢基礎觀念 (MDX)>。

Integration Services 封裝

當您建立 Integration Services 封裝作業步驟時,必須執行以下動作:

  • 識別封裝的來源。

  • 識別封裝的位置。

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

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

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

  • 識別封裝的資料來源。

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

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

  • 識別執行選項。

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

如需有關建立用於執行 Integration Services 封裝之作業步驟的詳細資訊,請參閱<如何:執行封裝>。