SQL Server 2005和2008有幾個關於高可用性的選項,如日志傳輸、副本和數據庫鏡像。所有這些技術都能夠作為維護一個備用服務器的手段,同時這個數據庫可以在你原先的主數據庫出問題時上線並作為新的主服務器。然而,你必須記住的是將備用服務器替換上線只是完成了一半的故障修復工作。
要保證你的應用正常工作,在數據庫外部還有許多注意事項。這其中包括登錄信息、數據庫用戶、調度任務、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腳本化登錄信息。當在故障恢復數據庫服務器上創建這些登錄信息時,登錄信息與數據庫用戶之間的連接會被保存,這樣你就不必運行上面的腳本修復孤立的用戶。