Sql-Server-2008-R2

在鏡像中,如何使 SQL Server 代理保持離線狀態,但在主體發生故障轉移時讓它自動啟動?

  • May 13, 2021

在這種情況下,有三個 MS SQL 伺服器。ServerA 有一系列將數據寫入 ServerB 上的數據庫的作業。我想將 ServerC 設置為 ServerA 的鏡像,並提供所有相同的作業。我想在 ServerC 上保持 SQL Server 代理關閉,直到 ServerA 發生故障轉移,此時我希望 ServerC 上的 SQL Server 代理自動啟動並繼續為寫入 ServerB 的相同作業提供服務,直到我們獲得 ServerA重新上線。

這可以實現嗎?最好的方法是什麼?

您可以保持代理啟用但禁用****ServerB上的各個作業,並在ServerB上創建一個連續執行的專用作業(或安排它每隔 X 時間執行一次)並檢查目前伺服器是否是主伺服器。如果是,則使用sp_update_job啟用其他作業。

您還可以使用msdb.dbo.sysjobs檢查啟用了哪些作業,以便您的專用作業僅嘗試啟用一次。

使用相同的方法,您可以讓專用作業自行禁用,並在目前伺服器成為輔助副本時進行輔助作業檢查,以便它可以重新啟用專用作業,或者您可以讓專用作業不斷檢查但不噹噹前伺服器是主伺服器並且它已經第一次啟用所有作業時,什麼都沒有。

您可以讓代理在兩台伺服器中都處於活動狀態,並且可以通過這種方式向它們添加第一步:

  1. 檢查數據庫狀態(活動或恢復)
  2. 如果數據庫未處於活動狀態,則作業自行停止
  3. 如果數據庫處於活動狀態,則作業可以繼續執行後續步驟

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