Availability-Groups

如何在故障轉移期間啟用/禁用 SQL 代理作業 (AlwaysOn)

  • March 11, 2016

注意:這不是重複的問題。

我已經設置了 AlwaysOn。我已經在兩個節點上手動創建了 SQL 代理作業。如果節點是 PRIMARY,現在所有活動的作業都在執行。

挑戰

我的 DBA 將根據業務需求僅在一個節點中手動禁用幾個 SQL 代理作業。現在它如何同步到節點 2?DBA 是否必須在所有輔助節點中手動禁用這些相關作業?

我正在考慮創建一個表(該表將是可用性組的一部分),我在其中維護作業的狀態。在故障轉移期間,我計劃執行腳本以從該表中讀取數據並設置其他節點上的作業狀態。這是正確的方式嗎?或者我們有什麼推薦的步驟嗎?

請建議

有幾種方法可以自動執行此操作,並且您正朝著正確的方向前進……您可以依靠 DBA 手動禁用和啟用(不是很好;),您可以在表中跟踪作業狀態並啟用和禁用使用定期執行的作業,或者您可以對作業進行分類並響應角色更改警報……這就是我所做的。

一個粗略的大綱是:

  1. 為您希望僅在目前主副本上執行的所有作業選擇一個類別,我使用 ag 名稱
  2. 為錯誤號 1480(AG 角色更改)設置 SQL 代理警報,該警報將通過傳入類別名稱的作業呼叫 master 中的儲存過程
  3. 建構 sp 以檢查它是否是主要的,是否啟用所有使用該參數分類的作業。如果它不是主要的,則禁用所有使用參數分類的作業
  4. 建構一些函式來幫助辨識 AG 是 Primary 還是 Secondary

Michael K. Campbell撰寫了一個非常詳細的SQL 雜誌系列文章,其中提供瞭如何建構任一解決方案的程式碼範例,我從那篇文章開始,只需要進行少量修改。

引用自:https://dba.stackexchange.com/questions/131953