1. 程式人生 > >SQL Server代理的階梯 - 第2級:作業步驟和子系列

SQL Server代理的階梯 - 第2級:作業步驟和子系列

backup 叫我 標記 指定 jobs microsoft 有效 soft 開發

作者:Richard Waymire,2017/10/11(第一版:2011/02/17)

原文鏈接:http://www.sqlservercentral.com/articles/SQL+Agent/Job+Steps+and+Subsystems/72268/

該系列

本文是“Stairway系列:SQL Server代理的階梯”的一部分。

SQL Server Agent是任何實時數據庫系統的核心。代理有許多用途並不總是顯而易見的,因此對於開發人員和DBA來說,系統知識總是有用的。理查德Waymire提供了一個簡單的解釋,它的許多用途。 SQL Server代理作業由一系列一個或多個作業步驟組成。作業步驟被分配給特定的作業子系統,該作業子系統標識作業步驟要執行的作業種類。每個作業步驟都在單獨的安全上下文中運行,盡管每個作業也都有一個擁有者來決定誰可以修改作業。本文將重點介紹組成SQL Server代理作業的作業步驟和子系統。 快速審查工作

思考SQL Server代理作業的最佳方法是將一組其他組件關聯起來,這些組件是執行給定任務所需的。工作的主要組成部分是工作步驟,時間表,警報和通知。

創建作業時,將所有者分配給作業。如第1級中所述,默認情況下,所有者將是創建作業的用戶(在Transact-SQL中,通過sp_add_job系統存儲過程或使用SQL Server Management Studio)。 SQL Server代理的大部分功能假定您是系統管理員角色成員。如果您是,那麽您或任何其他系統管理員角色成員可以在創建作業後對其進行修改。如果您希望非系統管理員角色成員能夠修改作業,則應該將作業所有者更改為該用戶的登錄名。請註意,系統管理員成員可以更改任何作業,而不考慮作業所有權。 工作步驟

如第1級中所述,SQL Server代理作業至少由一個作業步驟組成。當大多數人想到從事某項工作的工作時,他們對於SQL Server的真正意義是一個工作步驟。作業步驟由您希望執行的操作類型定義,每個作業步驟將由以下作業子系統之一執行: ?ActiveX ?操作系統(CMDExec) ? 電源外殼 ?各種復制任務 ?SQL Server分析服務(SSAS)命令(即XML / A) ?SQL Server Analysis Services(SSAS)查詢(MDX) ?SQL Server集成服務(SSIS)包(SQL Server 2000中的DTS包) ?Transact-SQL腳本(T-SQL) 讓我們創建一個作業和必要的作業步驟,備份主數據庫。創建一個新的工作,我叫我的

“備份主”,如圖1所示。

技術分享圖片

1 - 創建一個新的工作

現在點擊Steps選項卡查看作業步驟,然後點擊New ...打開New Job Step對話框(圖2)。

技術分享圖片

2 - 創建一個新的工作步驟

我已經完成了這個工作中的步驟,在開始備份之前對master數據庫進行完整性檢查。我可以一步完成所有工作,但是要在步驟之間向您展示工作流程。我已經給出了“檢查主數據庫完整性”的名稱,並將類型設置為Transact-SQL。數據庫上下文是主。我在文本框中輸入一個簡單的命令: DBCC CHECKDB 有幾個解釋是為了這個對話。 “類型”下拉列表是選擇SQL Server代理子系統的位置。下面將描述可能的子系統。 Transact-SQL作業步驟沒有安全代理帳戶,所以作業步驟將在作業所有者的上下文中運行。安全代理帳戶使作業步驟能夠與不同用戶的安全上下文一起運行,並且通常用於不屬於sysadmin角色成員的作業。 您選擇的作業子系統將更改對話框其余部分的內容。對於Transact-SQL作業步驟,提供了一個簡單的文本框供您鍵入Transact-SQL,如我在此處所做的那樣。每個工作步驟可能都有一個與之相關的不同子系統。 接下來,點擊新的作業步驟的高級選項卡。您將看到如圖3所示的屏幕。“成功”操作定義了作業步驟成功完成後發生的情況。默認選項是轉到下一步,這意味著如果作業中有多個步驟,並且這個步驟有效,則執行下一步。如果您點擊下拉菜單,您將看到其他選項 - 包括退出作業(通過成功或失敗通知)或跳轉到另一個步驟。請註意,最後一個選項,跳到另一個步驟,直到你至少在工作中的第二步,才會顯示出來。

3 - 新的作業步驟高級選項

如果由於某種原因某個步驟失敗,則可以選擇可以嘗試重試該作業步驟的次數。 您也可以在每次嘗試成功完成作業步驟之間指定延遲(以分鐘為單位)。 下面是失敗操作(即作業步驟無法完成或以錯誤代碼結束)。 選項與成功相同,使用不同的默認值(如您所期望的)。 由於這是Transact-SQL作業步驟類型,因此可以將Transact-SQL命令的任何輸出記錄到輸出文件(就像sqlcmd中的-o選項一樣)。 您也可以將結果記錄到一個表(MSDB中的sysjobstepslogs表)。 單擊確定,然後單擊新建以向作業添加第二步。 假定步驟1沒有產生錯誤,則下一步作業將備份主數據庫。 這裏是我的系統的命令(如圖4所示):

BACKUP DATABASE [master] TO DISK =

N‘C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\master.bak‘

WITH INIT

技術分享圖片

技術分享圖片

4 - 備份主數據庫的第二個作業步驟

由於這是作業的結束,請單擊“高級”選項卡,然後選擇“成功”操作為“退出作業報告成功”。就是這樣 - 您應該能夠單擊“確定”並查看已完成的作業步驟,如圖所示5。

技術分享圖片

5 - 完成的工作

現在單擊確定完成定義作業,並運行作業。 當您點擊運行作業時,請註意,因為您現在被問到多個步驟,您想要從哪個步驟開始作業。 從第一步開始執行作業(如圖6所示),並在第一步成功運行時觀察作業流程,然後轉到作業的第二步和最後一步

技術分享圖片

6 - 在步驟開始作業(選擇步驟1)

一旦成功完成,作業被標記為成功並退出(如圖7所示)。

技術分享圖片

7 - 作業已成功運行

作業子系統 有七個主要的工作子系統,你會使用。此數字不包括復制子系統,因為它們是特殊情況,通常這些作業步驟和作業是由復制組件創建的,而不是由DBA創建的。我們將推遲討論三個分析服務子系統,因為它們有幾個獨特的考慮因素。 Transact-SQL腳本(T-SQL) Transact-SQL子系統非常簡單,可能是您創建的最常見的作業類型。它允許您針對SQL Server代理所附屬的SQL Server本地實例運行Transact-SQL(但不包括對Transact-SQL的sqlcmd擴展)。請註意,與Analysis Services子系統不同,您只能連接到本地SQL Server實例。另請註意,Transact-SQL沒有代理功能,因此T-SQL的作業步驟始終在作業所有者的安全上下文中運行。 ActiveX腳本 ActiveX子系統允許您運行VBScript,Jscript或其他自定義腳本語言(理論上)。腳本將默認在SQL Server代理服務帳戶的安全上下文中運行。如果你精通VBScript,這可能是一個方便的子系統,但是從SQL Server 2008開始,這個子系統已經被棄用,你應該使用PowerShell子系統。 操作系統(CmdExec) CmdExec子系統允許您運行操作系統命令(就像打開了命令提示符一樣)。這些命令將在SQL Server代理服務帳戶的安全上下文中運行。在這裏(以及在ActiveX子系統中)要記住的關鍵是沒有用戶能夠點擊或接受任何提示,因此請確保腳本在沒有用戶幹預的情況下運行。 電源外殼 PowerShell子系統允許您運行兼容Windows PowerShell 1.0或2.0的腳本。與其他腳本子系統一樣,該腳本將默認在SQL Server代理服務帳戶的安全上下文中運行。 PowerShell非常強大,您應該認真研究增長PowerShell的知識。 PowerShell將允許您連接到遠程系統,所以這是解決Transact-SQL子系統連接到SQL Server遠程實例的一個方法。 下次 正如您所看到的,SQL Server Agent作業步驟是作業內容的核心。許多不同的子系統是可用的,每個子系統都有不同的功能。在這個階段的下一個步驟中,我將研究代理功能以增強作業步驟的安全性,以及Analysis Services的其他SQL代理子系統。

SQL Server代理的階梯 - 第2級:作業步驟和子系列