程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 自動通知服務器故障轉移和SQL Server服務重啟

自動通知服務器故障轉移和SQL Server服務重啟

編輯:關於SqlServer


  問題:目前,我們的群集微軟SQL Server環境在所有節點中擁有的數據庫超過200個。而雖然群集技術已經出現了一段時間,很多應用程序仍然不是群集感知的。一個“群集感知”應用程序是什麼意思呢?簡單來說,它意味著,該應用程序在一個群集實例的某個數據庫故障轉移之際,將嘗試重新連接到該數據庫並在數據庫故障轉移之前重新建立實例化的客戶連接。我們的問題是,有了由外面公司提供和檢測的一個單獨的應用程序,就可以追蹤我們的加熱和冷卻系統的性能來識別溫度差異。該應用程序不是群集感知的,可能會在故障轉移發生時失敗。由於這個解決方法很重要,但又不是從早五點到晚九點都是關鍵的,因此我們只需要在故障轉移時通知供應商。雖然我們可以在這個事件發生時聘請微軟系統中心或者微軟運營經理來警報,但是我不得不爭取多個團隊的資源來完成此計劃。

  我使用的解決方法只是在群集SQL Server實例上創建一個工作,該實例將通過數據庫郵件把一封郵件發送到供應商支持的郵件地址,以便在郵件中復制數據庫管理員和分析員的訪問記錄。接著,當服務啟動時,我將把關掉的時間表分配給該工作。通過這種方式,每次SQL代理服務啟動時,一封郵件都將會被發送,以此來通知我們該服務的重新啟動發生了。

  對於那些像你一樣不熟悉微軟SQL Server故障轉移的人們來說,該服務與位於一個共享服務器量(SAN/NAS)的資源組有關。該資源組在任何給定的時間內都由一個單獨的物理服務器所擁有,在群集術語中被當作一個節點來參考。如果一個節點經歷一次關掉請求,那麼該資源組的屬主將從失敗的節點轉移到該群集中另一個可用的節點。這個過程涉及到SQL Server實例的循環,因此當該服務被重啟時將觸發SQL Server代理工作的執行。如果除了一個計劃或者金基德故障轉移過程發生或者其它原因而導致服務被重啟時,它也將發生,但是在本例中這對於我們的需要也是適用的。

  下面的屏幕截圖將引導你痛毆微軟SSMS完成設置的過程。你可能選擇通過T-SQL代碼來執行,但是我發現如果你希望稍後在另外的SQL Server實例上運行這個過程,那麼用SQL Server Management Studio GUI來完成工作創建過程最好,接著可以從腳本按鈕中編寫該工作。在這篇文章的結尾,我將列出要在你的環境中成功完成該過程的所要遵循的一些要求。現在,你們大多數都創建了一個SQL Server地理工作;本技巧的目的是展示如何解決一個群集環境中的SQL Server實例故障轉移的遠程通知,工作創建僅僅是對我來說最好的也是最易於執行的一個過程。在本技巧中不會有過分繁重的執行-我保證。

  SQL Server Management Studio過程

  從SQL Server Management Studio內部連接到你想要配置的群集實例,打開到SQL Server代理/工作,右鍵單擊並從如下顯示的可用彈出菜單中選擇New Job...。

圖一


  在工作名,屬主,類別和描述參數中輸入值。

圖二

  打開到SQL代理工作向導的步驟頁並創建一個新的步驟。像下面一樣輸入參數值(或者符合你的環境的值)。在這一步,你尤其需要輸入命令參數的正確代碼。我的建議是在從一個SQL Server工作內執行它之前,往往要測試一個SSMS查詢的上下文環境內的命令文本。你需要為@profile_name,@recipients,@copy_recipIEnts,@subject 和用於訪問 工作命令中的dbo.sp_send_dbmail的@body in the job command輸入正確的命令參數值(從你的環境) 。與SQL Server數據庫郵件有關的信息和它相關的存儲過程可以在2008 tip on MSSQLTips.com中找到。

將本文收藏到: | 收藏到本地 | 復制本文地址

圖三



  著手於工作步驟的高級頁並輸入下面的值,根據你的需要代以合適的輸出文件位置。這可能不是一個你經常使用的函數(默認情況是一個空值),但是我依賴於這個輸出文件,因為它相比於通過SQL Server代理的默認記錄過程所提供的顯得更為詳細。

圖四



  點擊OK來保存。並關掉工作步驟表。這讓你返回到SQL Server代理的主要工作創建表。打開到工作時間表的表單並輸入與下面顯示相同的值。這些值看起來似乎與時間表類型和總結、描述不一致,但是描述的值是只讀的並且也不能修改。在這個案例中忽視這一點。這是最重要的屏幕截圖。這是該過程打到當前目的的主要原因。在確保你的命令代碼沒有問題之後,確保該工作在服務秋冬之際關掉是關鍵的。

圖五

  一旦這張表單是完整的,請保存該工作創建和你應該完成的事情。我建議首先在一個開發或者測試群集中設置此功能並且測試故障轉移,確定在你在生產中執行之前該工作行為是否和期望地一樣運行。

  現在,在該過程進行之前,有一些先決條件需要滿足。包括以下幾點:

  l 使數據庫郵件可用

  l 創建一個有效的數據庫郵件配置文件

  l SQL Server必須被當作一個服務來正確配置和執行

  在SQL Server工作內的命令文本所引用的Emal賬戶必須是有效的。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved