Microsoft SQL Server 2000 超級管理手冊(三一)

31. 管理作業自動化

SQL Server代理程式服務

作業

警示

SQL Server代理程式錯誤記錄檔

本章總結

在 第 30 章 中我們看了幾項自動化設定的選項,以及 SQL Server 2000 提供的資料庫選項,這些選項幫助 DBA 減少了的調整作業。在本章中將學會使用 SQL Server 提供的輔助工具,以透過 SQLServer 代理程式服務來自動執行其他的管理作業。SQLServer 代理程式服務包括自動定期執行資料庫的特定作業,以及伺服器發生問題或事件時,通知 DBA 或其他特定人員。這些功能的好處使得 DBA 不需要用手動或不斷監控資料庫系統來決定何時執行特定作業,因此有更多時間用在更難的資料庫問題上,如建立和調整索引、最佳化查詢、或者為未來的成長預作計畫。

自動化管理作業有三個主要工具:作業、警示、和操作員。在本章中,您將學會關於 SQLServer 代理程式服務,以及如何使用服務來建立及使用作業、警示、與操作員。您也可以找到關於 SQLServer 代理程式錯誤紀錄,這個紀錄可用來追蹤 SQLServer 代理程式執行的工作。

SQLServer 代理程式服務
 

SQLServer 代理程式執行從 SQL Server 獨立出來的服務,稱為 SQLServer 代理程式。這個服務包含在 SQL Server 2000 之中,但是必須單獨啟動,手動或自動均可。 第 8 章 有關於啟動 SQLServer 代理程式的方法說明。一旦啟動服務,就要準備好定義所需要的作業、警示、和操作員。


說明

SQLServer 代理程式服務在 Microsoft SQL Server 6.5 中被稱為 SQL Executive。它也可以用作複寫,如 第 26 、 27 、 28 章 的說明。


作業
 

 作業 (Jobs)是管理任務,只要定義一次就可以執行好幾次。您可以手動執行作業,或者用 SQL Server 安排在特定時間執行,也可以定期執行或是警示發生時執行( < 警示 > 稍後會作說明)。作業可以由 SQL Server 陳述式、Windows NT 或 Windows 2000 指令、可執行程式、ActiveX 指令碼組成。作業也可以在您使用複寫或建立資料庫維護計劃時自動幫您建立。一個作業可由單一步驟或很多步驟組成,而每個步驟可以是一個更複雜的呼叫組合步驟─例如呼叫預存程序。SQL Server 自動監控作業的成敗﹔兩種情況都可以設定警示。

作業可以在本地端伺服器執行,或者您在網路上有多重伺服器,可以指定一台作為主要伺服器,其他的作為目標伺服器。主要伺服器替全部的伺服器儲存作業定義,並且作為作業清理處,協調一切作業活動。每個目標伺服器定期與主要伺服器相連,若有作業變更就更新作業清單,從主要伺服器下載新作業,然後切斷連線來執行新作業。當目標伺服器完成作業時,它會再與主要伺服器連接並報告它的結束狀況。

我們來看看建立作業的一個假設情況。假設您有個資料庫資料表,保存了每筆銀行的交易紀錄,例如存提款和轉帳。每筆記錄有一個 timestamp 資料行說明交易何時發生。這個資料表將不斷增長並且需要定期刪除資料。要從資料表中刪除一列,您可以用 DELETE 陳述式寫一個小的預存程序來刪除兩個月之前的舊資料(假設銀行只要保留兩個月的資料)。接著您可以建立一個作業來執行這個預存程序,例如每週日晚上執行一次。這樣一來,您可以確保資料表不會無限制地增長。這不但可以保留磁碟空間,而且還能提昇效能。執行查詢時表格中的資料越少,SQL Server 就能越快完成查詢。現在讓我們來看看建立作業的細節。


說明

SQLServer 代理程式服務必須依序執行才能使您的作業正常運作。


建立作業
 

您可以用 Enterprise Manager、T-SQL 指令檔、建立作業精靈、或 SQL-Distributed Management Objects (SQL-DMO)來定義作業。因為 SQL-DMO 方法與電腦的程序編制有關,不在本書的範圍之內。本章節您將學會其他三種有關建立作業的方法。


相關資訊

關於使用 SQL-DMO 來建立作業,請參閱< 線上叢書 >並索引< SQL-DMO >。


使用 Enterprise Manager
 

先用 Enterprise Manager 建立作業。最常用的方法之一是執行資料庫備份(這也可以如 第 30 章 所提的利用 維護計劃精靈 來完成)。下面的例子是建立作業備份 MyDB 資料庫。它安排備份在每晚 11:00 執行,並在 Windows NT 或 Windows 2000 應用事件紀錄和輸出檔案中紀錄備份作業的成敗。跟著下面步驟建立名為 MyDB_backup_job 的作業:

    • 在 Enterprise Manager 左邊的窗格中,展開一個伺服器資料夾,展開 管理 資料夾,然後展開 SQL Server代理程式 資料夾。在 作業 上點選右鍵並在快顯功能表上選擇 新增作業 。顯示 新增作業屬性 視窗,如圖31-1所示。
       

      圖31-1 新增作業屬性 視窗的 一般 頁籤
    •  一般 頁籤中設定下列選項:
      •  名稱 鍵入作業名稱─這裡是在文字方塊中鍵入『MyDB_backup_job』。作業名稱最多可以有 128 個字元。伺服器上的每個作業都必須是唯一的名稱,並要確定使用描述性的名字。
         
      •  啟用 該核取方塊指定作業應該啟動還是停用。您可能想要先停用作業以手動測試來確保運作正常。測試後得知運作正常,就可以用這個核取方塊啟動作業,這樣作業就能如期執行。
         
      •  作業類別 為這個作業選擇類別-在這個例子中,我們使用預設類別 未分類(本機) 。您可以從已建立的作業類別中選擇,這些作業類別是安裝 SQL Server 時建立的,或者也可以建立您自己的類別(想學習如何建立新類別,請參閱本章後面 < 建立新類別 > 一節)。安裝的類別有 Uncategorized (Local)、資料庫維護計劃、全文檢索、Web 輔助程式,還有複寫的 10 個類別。類別是用來歸類相關作業的。例如,您可以將用來執行資料庫維護的作業歸於同一個類別中,或是依部門分類,如會計、銷售、和市場行銷。類別讓您能夠追蹤多重作業-您就不須為了一小部份的作業而花時間搜尋所有作業清單。
         
      •  擁有者 建立作業的使用者。只有 sysadmin 角色可以更改誰擁有作業或是變更其他使用者擁有的作業(SQL Server 角色將在 第 34 章 中說明)。所有 sysadmin 角色與作業擁有者都可以改變作業的定義,也可以啟動或停止作業。在 擁有者 下拉式選單中,選擇將執行作業的使用者。本例中,作業擁有者和建立作業者是同一人,所以擁有者會自動選擇正確的設定,而您可以讓這個設定自行運作。
         
      •  描述 在該文字方塊中,必須確認一個作業要執行什麼任務以及作業的目的。您應該提供描述,描述讓其他使用者很快決定作業的功能。描述最多可有512個位元。
         
      •  目標為本機伺服器 如果點選這個選項,作業將只在本機伺服器上執行。如果有遠端伺服器連接到這個伺服器上的話,就可以使用 目標為多重伺服器 的選項。點選這個選項來指定遠端伺服器上也要執行這個作業。
         

      完整的樣本作業 一般 頁籤顯示如圖31-2所示。


       

      圖31-2 填入一般頁籤
    • 點選 步驟 頁籤,再點選 新增 ,就會顯示 新增作業步驟 對話方塊,如圖31-3所示。 作業步驟(Job steps) 是定義作業任務的指令或陳述式。每個作業必須至少有一個作業步驟,也可以有多重步驟。在 新增作業步驟 中的 一般 頁籤對話方塊中輸入下列資訊:
      •  步驟名稱 字方塊中鍵入步驟名稱-在這個例子中是輸入『MyDB_backup』。
         
      •  型別 下拉式選單中,選取一種步驟類型來執行。在這個例子中, 因為要用 T-SQL 指令來執行作業,所以選取 Transact-SQL 指令碼(TSQL) 。其他選項為 ActiveX Script、作業系統命令、複寫散發者、複寫交易記錄讀取程式、複寫合併、複寫佇列讀取器、和複寫快照。
         
      •  資料庫 下拉式選單中選擇要執行作業的資料庫名稱。在這個例子中,選擇 MyDB 資料庫。
         
      •  命令 文字方塊中鍵入將作為一部份作業步驟的指令,在這個例子中,指令是 T-SQL 指令,用來將 MyDB 資料庫備份到一個叫做 MyDB_backup1 的備份裝置上。(這個備份裝置必須事先建立好, 第 32 章 中有建立備份裝置的詳細說明。還有,這個簡單的例子中,資料庫備份每晚會被寫入同一個檔案中。實際上,您應該如 第 30 章 所言使用資料庫維護計劃來執行備份,就像它會讓您每天建立新的備份裝置一樣。)如果有一個準備好的指令檔,您想要用它作為作業,也可以點選 開啟舊檔 來開啟檔案。
         
    • 點選 剖析 ,檢查 T-SQL 步驟的語法,然後點選 進階 頁籤並設定選項,如圖31-4所示。在這個頁籤中,您可以選擇作業成功或失敗後執行的動作:結束作業回報成功、結束作業回報失敗、或是跳到下一個步驟。您也可以指定作業沒有成功時應該重試的次數,以及兩次重試的間隔時間。 如果這個作業包含 T-SQL 指令或是指令碼,您可以選擇一個輸出檔,裡面將有 T-SQL 的輸出報告。您也可以在每次作業執行時,將輸出附加在這個檔案後,或是每次都覆寫輸出檔案。點選 檢視 來檢視輸出檔案的內容。選取 將輸出附加至步驟歷程記錄中 核取方塊讓作業輸出附加在作業歷程記錄表項目中。您也可以指定執行 T-SQL 的使用者。
       

      圖31-3 填寫後的「新增作業步驟」對話方塊「一般」頁籤


       

      圖31-4 「新增作業步驟」對話方塊中填寫後的「進階」頁籤
    • 在已有的步驟前插入一個需要執行的新步驟,選取需要插入新步驟的現有步驟,然後點選 插入 顯示 新增作業步驟 對話方塊,輸入您要插入的步驟資訊。要刪除步驟,選取步驟後點選 刪除 ;要編輯步驟,選取步驟後點選 編輯 。您也可以移動清單中的步驟,選取步驟後點選 移動步驟 右邊的上下箭頭。 起始步驟 下拉式選單允許您選擇作業中哪個步驟要先執行。要先執行的步驟 ID 號碼旁會出現一個綠色的標記。點選 套用 將步驟應用在作業中。如果在多重步驟之間有任何流程邏輯會導致一個步驟無法執行的話,SQL Serve 會在您點選 套用 時顯示警示訊息,並且允許您修改流程邏輯。
    • 要為一個作業建立排程,點選 排程 頁籤。要找出伺服器的目前時間,就要在 注意:目標伺服器目前日期時間 下拉式選單中選取伺服器名稱。現在點選 新的排程 來顯示 新增作業排程 對話方塊,如圖31-5所示。排程將指定何時何日該執行作業,可在某一時刻執行也可以定期執行。如果您想在任意時刻用手動執行作業,那就不需要作業排程-您可以在想要執行作業時執行。填入排程名稱 MyDB_backup_schedule,並在 排程類型 區域中設定選項(在這裡要選擇 重複執行 ),然後選取 啟用 核取方塊,如圖31-5所示。 啟用 核取方塊在這裡的功能和它在 新增作業屬性 視窗中的功能一樣。
    • 由於我們選擇重複排程類型,您必須設定作業要在何時何日執行。要這樣做的話,就點選 變更 顯示 編輯重複執行作業排程 對話方塊。鍵入新時間和日期,點選 確定 回到 新的排程 對話方塊。(記住我們要在每晚 11 點設定一個每日備份。)
    •  新的排程 對話方塊中點選 確定 以接受您的排程,並回到 新作業屬性 視窗。要刪除排程,就選取排程名稱並點選 刪除 ;要編輯排程, 就選取排程名稱並點選 編輯 
       

      圖31-5 新的排程對話方塊

      說明

      您也可以替這個作業建立新警示。本章稍後將提到警示的更多細節。


    • 點選 告知訊息 頁籤,如圖31-6所示。在這個頁籤上,您可以設定一個通知程序,那麼操作員(或指定使用者)在作業成功、失敗、或完成時會收到通知。通知可以透過電子郵件、呼叫器、或用 NET SEND 指令當成訊息透過網路傳送。您可以將作業狀態寫入 Windows NT 或 Windows 2000 事件紀錄中,甚至可以在作業成功、失敗或完成後自動刪除作業。若要設定操作員通知,就依需要選擇 電子郵件操作員  傳呼操作員 、和 網路傳送操作員 核取方塊,然後在右邊下拉式選單上選取操作員名稱。(見本章後面 < 操作員 > 一節來學會如何建立操作員。)在最左邊的下拉式選單中選取執行通知的條件。作業完成要將結果寫入事件紀錄或自動刪除作業的時候,請選擇適當的核取方塊,然後在相關的下拉式選單上選取執行動作的條件。在這個例子中, 要選取 寫入Windows應用程式事件記錄檔 核取方塊。
       

      圖31-6 新作業屬性視窗的告知訊息頁籤
    • 完成設定選項後,點選 套用 來建立您的作業。然後點選 確定 退出 新作業屬性 視窗回到 Enterprise Manager。
    • 在 Enterprise Manager 左邊窗格中點選 作業 ,您將在右邊窗格中看到含有 MyDB_backup_job 的清單。

       建立新類別 要建立新類別,請在 Enterprise Manager 左邊窗格中開啟一個伺服器,展開 管理 資料夾,在 作業 上點選右鍵,在快顯功能表上點選 所有工作 , 接著選擇 管理作業類別  作業類別 對話方塊出現,如圖31-7所示。您可以在這裡加入一個類別,檢視現有類別和在類別中的作業,並可刪除類別。

使用 T-SQL
 

T-SQL 命令可用來建立作業、增加步驟、並建立作業排程,這些命令分別是系統預存程序 sp_add_job、sp_add_jobstep 和 sp_add_jobschedule。這些預存程序有多個選擇性參數,如下面的程式碼所示。SQL Server 對每個未指定的參數會分配一個預設值。用 Enterprise Manager 建立作業比較簡單,因為它的圖形化使用者介面會引導您設定作業選項,避免您漏掉一些參數。使用 T-SQL 您必須包含所有選擇性參數的值,或確定任何您忽略的預設參數值能夠滿足作業需要。您應該用 Enterprise Manager 代替用手動來執行預存程序。您可以產生 T-SQL 指令檔,讓 Enterprise Manager 用指令檔建立作業,在作業名稱上點選右鍵,在快顯功能表中選取 所有工作 ,接著選擇 產生SQL指令碼 。如果需要的話,這個技術允許您用指令檔重新建立作業。


 

圖31-7 作業類別對話方塊

要執行剛才所提的預存程序,您必須使用 msdb 資料庫,因為這是儲存程序的地方。如果要使用這些程序,要先看看預存程序中哪些參數是可用的。本章中所有的預存程序都使用同樣的一般語法。預存程序 sp_add_job 的語法如下:

sp_add_job [ @job_name = ] 'job_name'
[ , [ @enabled = ] enabled ]
[ , [ @description = ] 'description' ]
[ , [ @start_step_id = ] step_id ]
[ , [ @category_name = ] 'category' ]
[ , [ @category_id = ] category_id ]
[ , [ @owner_login_name = ] 'login' ]
[ , [ @notify_level_eventlog = ] eventlog_level ]
[ , [ @notify_level_email = ] email_level ]
[ , [ @notify_level_netsend = ] netsend_level ]
[ , [ @notify_level_page = ] page_level ]
[ , [ @notify_email_operator_name = ] 'email_name' ]
[ , [ @notify_netsend_operator_name = ] 'netsend_name' ]
[ , [ @notify_page_operator_name = ] 'page_name' ]
[ , [ @delete_level = ] delete_level ]
[ , [ @originating_server = ] 'server_name' ]
[ , [ @job_id = ] job_id OUTPUT ]

sp_add_jobstep 的語法如下:

sp_add_jobstep [ @job_id = ] job_id | [ @job_name = ] 'job_name'
[ , [ @step_id = ] step_id ]
{ , [ @step_name = ] 'step_name' }
[ , [ @subsystem = ] 'subsystem' ]
[ , [ @command = ] 'command' ]
[ , [ @additional_parameters = ] 'parameters' ]
[ , [ @cmdexec_success_code = ] code ]
[ , [ @on_success_action = ] success_action ]
[ , [ @on_success_step_id = ] success_step_id ]
[ , [ @on_fail_action = ] fail_action ]
[ , [ @on_fail_step_id = ] fail_step_id ]
[ , [ @server = ] 'server' ]
[ , [ @database_name = ] 'database' ]
[ , [ @database_user_name = ] 'user' ]
[ , [ @retry_attempts = ] retry_attempts ]
[ , [ @retry_interval = ] retry_interval ]
[ , [ @os_run_priority = ] run_priority ]
[ , [ @output_file_name = ] 'file_name' ]
[ , [ @flags = ] flags ]

sp_add_jobschedule 的語法如下:

sp_add_jobschedule [ @job_id = ] job_id,| [ @job_name = ] 'job_name',
[ @name = ] 'name' 
[ , [ @enabled = ] enabled ]
[ , [ @freq_type = ] freq_type ]
[ , [ @freq_interval = ] freq_interval ]
[ , [ @freq_subday_type = ] freq_subday_type ]
[ , [ @freq_subday_interval = ] freq_subday_interval ]
[ , [ @freq_relative_interval = ] freq_relative_interval ]
[ , [ @freq_recurrence_factor = ] freq_recurrence_factor ]
[ , [ @active_start_date = ] active_start_date ]
[ , [ @active_end_date = ] active_end_date ]
[ , [ @active_start_time = ] active_start_time ]
[ , [ @active_end_time = ] active_end_time ]

相關資訊

有關每個參數和它的預設值說明,請參閱< 線上叢書 >索引中相關的預存程序名稱。



說明

這裡所提的預存程序,就像其他與建立和管理作業相關的預存程序一樣,操作員、通知和警示都存在 msdb 資料庫中。您必須使用這個資料庫來執行預存程序。


使用建立作業精靈
 

Enterprise Manager 提供了一個精靈,這個精靈會一步一步引導您進行作業建立過程,唯一的限制是它限制您只能建立單一步驟的作業。然而,它允許您提供一個作業排程,並指定被通知作業狀態的操作員。建立作業後,您可以用 Enterprise Manager 修改作業,增加更多作業步驟。

依下列步驟,用 建立作業精靈 來建立作業:

    • 從 Enterprise Manager 的 工具 下拉式選單中選擇 精靈 ,在 選擇精靈 對話方塊中打開 管理 資料夾,並選取 建立作業精靈 ,顯示 建立作業精靈 歡迎畫面,如圖31-8所示。
    • 點選 下一步 顯示 選擇作業命令類型 畫面,如圖31-9所示。這個畫面可以指定您要建立作業的步驟類型。在這個例子中,要選取 Transact-SQL 命令 
       

      圖31-8 「建立作業精靈」歡迎畫面


       

      圖31-9 「選擇作業命令類型」畫面
    • 點選 下一步 ,顯示 輸入Transact-SQL陳述式 畫面(圖31-10)。您必須選擇執行指令的資料庫,然後為作業鍵入陳述式,或者按一下 開啟舊檔 來尋找或開啟含有 T-SQL 命令的檔案。按一下 剖析 ,檢查您輸入的 T-SQl 陳述式的語法。如果您已經選擇 作業系統Shell命令 或者 Active Script 作為指令類型,您就必須為這些類型輸入指令。例如,鍵入 T-SQL 指令備份 master 資料庫到事先建立的 backup_master_dev 裝置,如圖31-10所示。
       

      圖31-10  輸入 Transact-SQL 陳述式畫面
    • 按一下 下一步 ,顯示 指定作業排程 畫面,如圖31-11所示。您可以在這裡指定何時執行作業。

       現在 選項指定作業將在精靈完成作業時執行。其他的選項一看便知。在這個例子中,選取 重複執行 ,然後選擇 排程 來設定排程。出現 編輯重複執行作業排程 對話方塊,如圖31-12所示。使用這些選項建立需要的資料庫,並按一下 確定 接受設定,回到 指定作業排程 畫面。


       

      圖31-11 指定作業排程畫面


       

      圖31-12 「編輯重複執行作業排程」對話方塊

管理作業
 

您可以透過 Enterprise Manager 或使用 T-SQL 來管理或編輯作業。對您來說Enterprise Manager 可能比較容易使用,因為您不必擔心 T-SQL 預存程序的語法和預設值,而且 Enterprise Manager 的 GUI 會引導您設定作業屬性。

使用 Enterprise Manager
 

您可以用 Enterprise Manager 以手動方式為作業啟動、停止、停用、啟用、編輯、以及建立T-SQL程式碼。這些任務的每個用法說明如下:

  • 要開始作業,在Enterprise Manager右邊窗格的作業名稱上按一下右鍵,並在快顯功能表中選擇 啟動作業 
     
  • 要停止正在執行的作業,並刪除設定好的重試步驟,在作業名稱上按一下右鍵,並在快顯功能表中選擇 停止作業 
     
  • 停用作業,讓作業在不允許執行的排程時間內可以測試。在作業名稱上按一下右鍵,並從快顯功能表中選取 停用作業 。選擇 啟用作業 可以再度啟用作業。
     
  • 要編輯作業、排程、或其他的作業屬性,在作業名稱上按一下右鍵,並從快顯功能表中選取 內容 ,顯示作業的 屬性 視窗,視窗中包含了用來建立作業的4個相同頁籤。做好修改之後,按一下 套用 ,然後按 確定 
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值