iT邦幫忙

DAY 12
14

SQL Server 無敵手冊系列 第 12

SQL Server 無敵手冊第十二篇-設定SQL Server的自動化管理工作 (SQL Server Agent)

身為DBA每天可能都有很多routine的工作要作,如果樣樣都手動那可能每天上班時間24小時也會作不完,這時候我們就要來學習一下如何讓SQL Server自動化管理工作,在這篇文章將會幫大家介紹SQL Server Agent,並跟大家說明如何定義作業,讓SQL Server自動化管理工作。
SQL Server的自動化管理工作是借由SQL Server Agent來完成,SQL Server Agent 是一個 Microsoft Windows 服務,如下圖您可以在服務的管理視窗中查詢管理SQL Server Agent的狀態。
PS:SQL Server 2008安裝時,預設會將SQL Server Agent 服務停用,如果您有需要用到SQL Server建議您可以將該服務設定為[自動],並啟動該服務。

SQL Server Agent可以利用排程執行管理工作 (管理工作在SQL Server中稱為「作業」)。它將排程警示、作業設定與執行歷程等資訊都紀錄在 SQL Server 的msdb這個系統資料庫。SQL Server Agent的[作業]包含了一或多個[作業步驟]。每一個步驟包含它自己的工作 (例如備份資料庫、傳送紀錄等等...)。SQL Server Agent 可以按照排程、為了回應特定事件或視需要來執行作業。例如,假設您要在每個工作日結束後備份公司的所有伺服器,您可以讓這項工作自動執行。將備份排程在星期一至星期五 晚上10點時執行,如果備份發生問題,SQL Server Agent 可以記錄事件並通知您(如何使用Database Mail會在SQL Server 無敵手冊後面的文章來介紹)。
除了利用服務的管理視窗之外,您也可以透過SQL Server 組態管理員來管理查詢SQL Server Agent的組態與狀態,如下圖所示,執行SQL Server 組態管理員後,在左邊視窗選擇[SQL SEerver服務]節點,即可在右邊視窗看到SQL Server Agent。

[定義SQL Server的作業]
作業指的是將一到多項的作業步驟,排定在排程時間中執行,並在 SQL Server Agent 循序執行。在SQL Server Agent中的作業可執行活動,包括下列項目:
*執行 Transact-SQL 指令碼
*命令列應用程式
*Microsoft ActiveX Script
*Microsoft PowerShell
*Integration Services 封裝
*Analysis Services 命令和查詢
*複寫工作
利用作業來執行重複性工作或可排程的工作,在將作業狀態自動通知使用者(通常我們會希望失敗時才來通知),藉此大幅簡化 SQL Server 的管理工作。
新增作業的步驟如下:
1.在SQL Server Management Studio中物件總管中展開SQL Server Agent,在[作業]的節點上,按一下滑鼠左鍵,並選擇[新增作業]。

2.在[新增作業]視窗中的[一般]頁面,設定該作業的名稱、擁有者以及所屬的目錄,如果有需要可以再加上對於該作業的描述文字,預設會將[已啟用]勾選,如果沒有勾選將不會被SQL Server Agent執行。

3.設定要執行的步驟,在[步驟]頁面中點選[新增],此頁面中您也可以調整步驟的順序以及編輯已新增的步驟。

4.在新增作業步驟的對話視窗中,選擇[一般]頁面,設定步驟名稱,選擇類型後,下方視窗會依照您所選擇的類型變換設定細節,此範例我們選擇Transact-SQL 指令碼,並在命令視窗中輸入下列指令。

BACKUP DATABASE [AdventureWorksDW] TO  DISK = N'D:\AdventureWorksDW.bak' WITH NOFORMAT, NOINIT,  NAME = N'AdventureWorksDW-完整 資料庫 備份', SKIP, NOREWIND, NOUNLOAD,  STATS = 10
GO


5.在[進階]的頁面中,指定此步驟執行成功或失敗時進行什麼動作,特別要提到的是,如果該步驟是此項作業的最後一步時,應該將該步驟[成功時]的動作設定為[結束回報成功的作業],如此範例中第一步驟也是最後一步驟。

6.接著回到[新增作業]視窗中,設定[排程]的頁面,與[步驟]類似在頁面中點選[新增],此頁面中您也可以新增多項排程來執行該作業中的步驟。
相同的排程上可執行多個作業(不過一般我們都會建議錯開時間,避免硬碟體資源不足的情況發生),而且多個排程可以套用到相同的作業(這個行況就比較會用到,當單一排程無法滿足實際作業行況時就會新增多個排程)。排程可以為作業執行時間定義下列條件:

* 每當 SQL Server Agent 啟動時。
* 每當電腦的 CPU 使用率達到您定義為閒置的等級時。
* 某個特定的日期和時間。
* 執行循環排程時。

7.在[新增作業排程]的視窗中,設定名稱,並指定排程,記得要勾選啟用該排程才會作用。

8.完成上列步驟後,基本上已經可以在預定的排程執行設定的作業,由於篇幅的關係,我們把通知設定的部分放到說明Database Mail篇,接著我們就按下[確定],您就可以看到[作業]多了剛剛設定的作業。

[驗證SQL Server的作業]
由於設定作業後,通常我們會需要確認該作業可以正常被執行,此時您可以透過手動執行作業,來驗證作業步驟是否可正常完成。要手動執行作業請依照下列步驟:
1.展開[作業]節點後,在該作業按下滑鼠右鍵,並點選[從以下步驟啟動作業]。

2.如果該作業有多步驟會跳出步驟挑選視窗讓您挑選,挑選後按下[啟動]就由該步驟往下執行,由於此範例只有單一步驟,所以SQL Server Agent會直接進入執行,如下列畫面可以判斷我們作業是否可成功執行。

現在您已經學會如何利用SQL Server Agent作業來排程完成自動化管理工作。


上一篇
SQL Server 無敵手冊第十一篇- 如何復原master資料庫
下一篇
SQL Server 無敵手冊第十三篇-設定SQL Server的Database Mail
系列文
SQL Server 無敵手冊30

2 則留言

0
funkent
iT邦高手 1 級 ‧ 2009-10-14 09:54:01

補充說明:您可以使用排程來指定作業的執行時間。相同的排程上可執行多個作業,而且多個排程可以套用到相同的作業。排程可以為作業執行時間定義下列條件:

* 每當 SQL Server Agent 啟動時。
* 每當電腦的 CPU 使用率達到您定義為閒置的等級時。
* 某個特定的日期和時間。
* 執行循環排程時。

0
funkent
iT邦高手 1 級 ‧ 2009-11-10 21:31:33

補上SQL Server 無敵手冊全系列的連結
SQL Server 無敵手冊

我要留言

立即登入留言