準備鏡像資料庫以進行鏡像 (SQL Server)
資料庫擁有者或系統管理員必須確認鏡像資料庫已經建立且做好鏡像的準備,才能啟動資料庫鏡像工作階段。 建立新的鏡像資料庫時,最少需要建立主體資料庫的完整備份,以及一個後續記錄備份,並使用 WITH NORECOVERY 將這兩者同時還原到鏡像伺服器執行個體。
此主題描述如何使用 SQL Server Management Studio 或 Transact-SQL,在 SQL Server 2012 中準備鏡像資料庫。
開始之前:
需求
限制事項
建議
安全性
若要準備現有的鏡像資料庫以重新啟動鏡像
若要準備新的鏡像資料庫
**後續操作:**準備鏡像資料庫之後
相關工作
開始之前
需求
主體和鏡像伺服器執行個體必須在相同的 SQL Server 版本上執行。 雖然鏡像伺服器可能擁有較高的 SQL Server 版本,但是只有在謹慎規劃的升級程序中才建議採用這個組態設定。 在這類組態中,您會遇到自動容錯移轉的風險,此時資料移動會被自動暫停,因為資料無法移到較低版本的 SQL Server。 如需詳細資訊,請參閱<在升級伺服器執行個體時將鏡像資料庫的停機時間減至最少>。
主體和鏡像伺服器執行個體必須在相同的 SQL Server 版本上執行。 如需有關 SQL Server 2012 中資料庫鏡像支援的詳細資訊,請參閱<SQL Server 2012 版本支援的功能>。
資料庫必須使用完整復原模式。
如需詳細資訊,請參閱<檢視或變更資料庫的復原模式 (SQL Server)>或<sys.databases (Transact-SQL)>和<ALTER DATABASE (Transact-SQL)>。
鏡像資料庫的名稱必須和主體資料庫的名稱相同。
鏡像資料庫必須處於 RESTORING 狀態,鏡像作業才能正常運作。 當準備鏡像資料庫時,您必須使用 RESTORE WITH NORECOVERY 來進行每一項還原作業。 至少需要使用 RESTORE WITH NORECOVERY 還原主體資料庫的完整備份,接著還原所有後續記錄備份。
您打算建立鏡像資料庫的系統必須配備具有足夠空間可以保存鏡像資料庫的磁碟機。
限制事項
您無法鏡像 master、msdb、temp 或 model 系統資料庫。
您無法針對屬於 AlwaysOn 可用性群組的資料庫進行鏡像處理。
建議
使用主體資料庫的最近完整資料庫備份或最近差異資料庫備份。
如果主體資料庫上排程執行記錄備份作業的頻率很高,您可能必須停用備份作業,直到鏡像啟動為止。
如果可行的話,鏡像資料庫的路徑 (包括磁碟機代號) 應該要和主體資料庫的路徑完全相同。
如果檔案路徑必須不同,例如,如果主體資料庫在磁碟機 'F:',但鏡像系統沒有 F: 磁碟機,您就必須在 RESTORE 陳述式中包含 MOVE 選項。
重要事項 在鏡像工作階段期間,若要加入檔案但又不影響工作階段,則檔案路徑必須同時存在兩個伺服器上。 因此,如果您在建立鏡像資料庫時移動資料庫檔案,之後在鏡像資料庫上加入檔案的作業可能會失敗,而且導致鏡像暫停。 如需有關處理失敗之建立檔案作業的詳細資訊,請參閱<疑難排解資料庫鏡像組態 (SQL Server)>。
如果主體資料庫有任何全文檢索目錄,我們建議您參閱<資料庫鏡像和全文檢索目錄 (SQL Server)>。
對於實際執行的資料庫,您一定要備份至其他裝置。
安全性
備份資料庫時,TRUSTWORTHY 設為 OFF。 因此,新鏡像資料庫上的 TRUSTWORTHY 一律為 OFF。 您必須採取額外的設定步驟,以確保資料庫在容錯移轉之後的可信度。 如需詳細資訊,請參閱<設定鏡像資料庫可使用 Trustworthy 屬性 (Transact-SQL)>。
如需有關啟用鏡像資料庫之資料庫主要金鑰自動解密的詳細資訊,請參閱<設定加密鏡像資料庫>。
權限
資料庫擁有者或系統管理員。
[回到頁首]
若要準備現有的鏡像資料庫以重新啟動鏡像
如果鏡像已經移除,而且鏡像資料庫仍處於 RECOVERING 狀態,您就可以重新啟動鏡像。
至少取得主體資料庫上的一個記錄備份。 如需詳細資訊,請參閱<備份交易記錄 (SQL Server)>。
在鏡像資料庫上,使用 RESTORE WITH NORECOVERY 來還原自從移除鏡像之後對主體資料庫進行的所有記錄備份。 如需詳細資訊,請參閱<還原交易記錄備份 (SQL Server)>。
若要準備新的鏡像資料庫
準備鏡像資料庫
[!附註]
如需這個程序的 Transact-SQL 範例,請參閱本節稍後的範例 (Transact-SQL)。
連接到主體伺服器執行個體。
建立主體資料庫的完整資料庫備份或差異資料庫備份。
一般來說,您必須至少取得主體資料庫上的一個記錄備份。 不過,如果資料庫剛剛建立,而且尚未建立任何記錄備份,或是如果復原模式剛剛從 SIMPLE 變更為 FULL,可能就不需要有記錄備份。
除非備份位於可從兩個系統存取的網路磁碟機上,否則請將資料庫備份和記錄備份複製到將裝載鏡像伺服器執行個體的系統。
連接到鏡像伺服器執行個體。
使用 RESTORE WITH NORECOVERY,藉由還原完整資料庫備份來建立鏡像資料庫,然後可選擇將最近的差異資料庫備份還原到鏡像伺服器執行個體。
[!附註]
如果您是按檔案群組逐一還原資料庫,請務必還原整個資料庫。
使用 RESTORE WITH NORECOVERY,將任何未完成的記錄備份套用到鏡像資料庫。
範例 (Transact-SQL)
開始進行資料鏡像工作階段之前,您必須先建立鏡像資料庫。 您應該在開始鏡像工作階段之前完成此動作。
此範例使用 AdventureWorks2012 範例資料庫,依預設採用簡單復原模式。
若要以 AdventureWorks2012 資料庫來使用資料庫鏡像,請將它修改為使用完整復原模式:
USE master; GO ALTER DATABASE AdventureWorks SET RECOVERY FULL; GO
將資料庫的復原模式從 SIMPLE 修改為 FULL 之後,請建立完整備份,以便用於建立鏡像資料庫。 因為剛剛才變更復原模式,會指定 WITH FORMAT 選項以建立新的媒體集。 要區分在完整復原模式與簡單復原模式建立的備份時,此方式非常有幫助。 為了完成此範例的目的,會在資料庫所在的相同磁碟機上建立備份檔 (C:\AdventureWorks.bak)。
[!附註]
對於實際執行的資料庫,您必須備份至其他裝置。
在主體伺服器執行個體 (於 PARTNERHOST1) 上,為主體資料庫建立完整備份,陳述式如下:
BACKUP DATABASE AdventureWorks TO DISK = 'C:\AdventureWorks.bak' WITH FORMAT GO
將完整備份複製到鏡像伺服器。
使用 RESTORE WITH NORECOVERY,將完整備份還原到鏡像伺服器執行個體上。 還原命令需視主體與鏡像資料庫的路徑是否相同而定。
若路徑相同:
在鏡像伺服器執行個體 (於 PARTNERHOST5) 上,還原完整備份,陳述式如下:
RESTORE DATABASE AdventureWorks FROM DISK = 'C:\AdventureWorks.bak' WITH NORECOVERY GO
若路徑不同:
若鏡像資料庫的路徑與主體資料庫的路徑不同 (例如,磁碟機代號不同),則建立鏡像資料庫時,還原作業中必須包含 MOVE 子句。
重要事項 若主體與鏡像資料庫的路徑名稱不同,您將無法新增檔案。 這是因為接收新增檔案的記錄檔時,鏡像伺服器執行個體會嘗試將新檔案放在主體資料庫所使用的位置。
例如,下列命令會將位於 C:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\ 之主體資料庫的備份還原到鏡像資料庫所在的不同位置 D:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\。
RESTORE DATABASE AdventureWorks FROM DISK='C:\AdventureWorks.bak' WITH NORECOVERY, MOVE 'AdventureWorks_Data' TO 'D:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\AdventureWorks_Data.mdf', MOVE 'AdventureWorks_Log' TO 'D:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\AdventureWorks_Log.ldf'; GO
建立完整備份之後,您必須在主體資料庫上建立記錄備份。 例如,下列 Transact-SQL 陳述式會將記錄備份至前一次完整備份所使用的相同檔案:
BACKUP LOG AdventureWorks TO DISK = 'C:\AdventureWorks.bak' GO
您必須先套用必要的記錄備份 (以及任何後續記錄備份),才能啟動鏡像。
例如,下列 Transact-SQL 陳述式會從 C:\AdventureWorks.bak 還原第一筆記錄:
RESTORE LOG AdventureWorks FROM DISK = 'C:\AdventureWorks.bak' WITH FILE=1, NORECOVERY GO
如果啟動鏡像之前執行了任何額外的記錄備份,您也必須使用 WITH NORECOVERY,依序將這些記錄備份全部還原到鏡像伺服器。
例如,下列 Transact-SQL 陳述式會從 C:\AdventureWorks.bak 還原兩個額外的記錄:
RESTORE LOG AdventureWorks FROM DISK = 'C:\AdventureWorks.bak' WITH FILE=2, NORECOVERY GO RESTORE LOG AdventureWorks FROM DISK = 'C:\AdventureWorks.bak' WITH FILE=3, NORECOVERY GO
如需設定資料庫鏡像、顯示安全性設定、準備鏡像資料庫、設定夥伴以及新增見證的範例,請參閱<設定資料庫鏡像 (SQL Server)>。
[回到頁首]
後續操作:準備鏡像資料庫之後
如果您在最近的 RESTORE LOG 作業之後已經建立任何額外的記錄備份,則必須使用 RESTORE WITH NORECOVERY 手動套用每一份額外的記錄備份。
啟動鏡像工作階段。 如需詳細資訊,請參閱<使用 Windows 驗證建立資料庫鏡像工作階段 (SQL Server Management Studio)>或<使用 Windows 驗證建立資料庫鏡像工作階段 (Transact-SQL)>。
如果已停用主體資料庫上的備份作業,請重新啟用這項作業。
您必須在鏡像開始之後執行額外的設定步驟,以確保資料庫在容錯移轉之後的可信度。 如需詳細資訊,請參閱<設定鏡像資料庫可使用 Trustworthy 屬性 (Transact-SQL)>。
[回到頁首]