所有這些技術都能夠作為維護一個待命伺服器的手段,同時這個資料庫可以在你原先的主要資料庫出問題時上線並作為新的主伺服器。然而,你必須記住的是將待命伺服器替換上線只是完成了一半的損毀修復工作。
要保證你的應用正常工作,在資料庫外部還有許多注意事項。這其中包括登入資訊、資料庫使用者、調度任務、DTS 和 SSIS 包、可執行檔、系統資料庫中的對象、同名資料庫、連結的伺服器等等。
有時這些細小的依賴只有在你進行一個資料庫故障恢複時才會發現,這樣你又不得不花費大量時間進行調試和評估導致這個問題的根源。此外,你還必須讓第二台伺服器和應用儘可能快地上線以減少停機時間。因此,提前做設定是非常重要的。
當涉及到高可用性和SQL Server 的災難恢複規劃時,你應該謹記我本人所喜歡的一個拉丁諺語 ——Si vis pacem, para bellum,它的意思翻譯過來就是“如果你想要得到和平,那就得先作好戰爭準備。”記住這一點後,讓我們來看看一些可能會遇到的問題。我也將建議幾個預先可以完成的任務,以確保資料庫故障恢複過程快速有效地完成。
SQL Server 登入資訊與資料庫使用者
你的故障恢複伺服器應該備份所有的登入資訊和資料庫使用者,包括密碼。登入資訊可以在任何時候建立,但是如果你使用日誌傳輸或資料庫鏡像,你的資料庫將處理恢複狀態,這樣你只有在它們重新上線後才能完成恢複過程。
使用 Windows 認證,可以很容易地將登入資訊映射到資料庫使用者。然而,如果你使用的是 SQL 認證,那麼你需要手動地在你從另一個伺服器獲得的資料庫上重建立立登入資訊與資料庫使用者的串連。因此,你在遷移資料庫時會丟失登入資訊和資料庫使用者之間的串連。
當你在第二台伺服器上恢複資料庫後,運行這些代碼:
USE YourDatabaseName
EXEC sp_change_Users_Login 'UPDATE_ONE', YourDBUserName, YourLogin
保持登入資訊同步的另一個方法是遵循 Microsoft Knowledge Base 上關於 在 SQL Server 執行個體之間傳輸登入資訊和密碼 的文章的步驟。這篇文章闡述了如何使用原始的 SID 指令碼化登入資訊。當在故障恢複資料庫伺服器上建立這些登入資訊時,登入資訊與資料庫使用者之間的串連會被儲存,這樣你就不必運行上面的指令碼修複孤立的使用者。