本主題描述如何使用 SQL Server Management Studio、Transact-SQL 或 PowerShell,為 SQL Server 2014 中的 AlwaysOn 可用性群組準備輔助資料庫。 準備輔助資料庫需要兩個步驟:(1)使用 RESTORE WITH NORECOVERY 將還原主資料庫的最新資料庫備份和後續記錄備份還原至裝載次要複本的每個伺服器實例,以及將還原的資料庫聯結至可用性群組。
提示
如果您有現有的記錄傳送組態,您可以將記錄傳送主資料庫及其一或多個輔助資料庫轉換成 AlwaysOn 主資料庫和一或多個 AlwaysOn 輔助資料庫。 如需詳細資訊,請參閱從記錄傳送移轉至 AlwaysOn 可用性群組的必要條件(SQL Server)。
開始之前:
若要使用下列項目準備輔助資料庫:
後續操作:準備輔助資料庫之後
開始之前
必要條件和限制
請確定您規劃放置資料庫的系統已配備具有足夠空間來保存次要資料庫的磁碟機。
次要資料庫的名稱必須與主要資料庫的名稱相同。
針對每個還原作業使用 RESTORE WITH NORECOVERY。
如果次要資料庫與主要資料庫必須位於不同的檔案路徑 (包括磁碟機代號),還原命令也必須針對每個資料庫檔案使用 WITH MOVE 選項,以便將它們指定為次要資料庫的路徑。
如果您是按檔案群組逐一還原資料庫,請務必還原整個資料庫。
還原資料庫之後,您必須還原 (WITH NORECOVERY) 自從上次還原資料備份以來所建立的每個記錄備份。
建議
在 SQL Server 的獨立執行個體上,建議您可能的話,將指定次要資料庫的檔案路徑 (包含磁碟機代號) 與相對應的主要資料庫路徑保持完全一致。 這是因為,如果您在建立次要資料庫時移動資料庫檔案,之後在次要資料庫上加入檔案的作業可能會失敗,而且導致次要資料庫暫停。
準備次要資料庫之前,我們強烈建議您針對可用性群組中的資料庫暫停排程的記錄備份,直到次要複本的初始化完成為止。
安全性
備份資料庫時, TRUSTWORTHY 資料庫屬性 將設為 OFF。 因此,新還原資料庫上的 TRUSTWORTHY 一律為 OFF。
權限
BACKUP DATABASE 和 BACKUP LOG 權限預設為 sysadmin 固定伺服器角色以及 db_owner 和 db_backupoperator 固定資料庫角色的成員。 如需詳細資訊,請參閱 BACKUP (Transact-SQL)。
當還原的資料庫不存在伺服器執行個體上時,RESTORE 陳述式就需要 CREATE DATABASE 權限。 如需詳細資訊,請參閱 RESTORE (Transact-SQL)。
使用 SQL Server Management Studio
注意
如果主控主要複本的伺服器實例與裝載次要複本的每個實例之間的備份和還原檔案路徑相同,您應該能夠使用 [新增可用性群組精靈]、[將複本新增至可用性群組精靈] 或 [將資料庫新增至可用性群組精靈] 來建立輔助資料庫。
若要準備次要資料庫
除非您已經擁有主要資料庫的最新資料庫備份,否則請建立新的完整或差異資料庫備份。 最佳作法是將這個備份和任何後續記錄備份放置於建議的網路共用。
至少建立主要資料庫的一個新記錄備份。
在裝載次要複本的伺服器執行個體上,還原主要資料庫的完整資料庫備份 (並選擇性地還原差異備份),接著還原任何後續記錄備份。
在 [RESTORE DATABASEOptions] 頁面上,選取 [讓資料庫無法運作,而且不會回復未認可的交易]。可以還原其他事務歷史記錄。(還原與諾科弗伊)
如果主要資料庫與次要資料庫的檔案路徑不同 (例如,主要資料庫位於磁碟機 'F:' 而裝載次要複本的伺服器執行個體缺少 F: 磁碟機),請在您的 WITH 子句中加入 MOVE 選項。
若要完成次要資料庫的組態設定,您必須將次要資料庫聯結至可用性群組。 如需詳細資訊,請參閱將次要資料庫聯結至可用性群組 (SQL Server)。
注意
如需有關如何執行這些備份和還原作業的詳細資訊,請參閱本節稍後的< 相關備份和還原工作>。
相關備份和還原工作
若要建立資料庫備份
若要建立記錄備份
若要還原備份
使用 TRANSACT-SQL
若要準備次要資料庫
注意
如需這個程序的範例,請參閱本主題前面的 範例 (Transact-SQL)。
除非您擁有主要資料庫的最新完整備份,否則請連接到裝載主要複本的伺服器執行個體,並且建立完整資料庫備份。 最佳作法是將這個備份和任何後續記錄備份放置於建議的網路共用。
在裝載次要複本的伺服器執行個體上,還原主要資料庫的完整資料庫備份 (並選擇性地還原差異備份),接著還原所有後續記錄備份。 針對每個還原作業使用 WITH NORECOVERY。
如果主要資料庫與次要資料庫的檔案路徑不同 (例如,主要資料庫位於磁碟機 'F:' 而裝載次要複本的伺服器執行個體缺少 F: 磁碟機),請在您的 WITH 子句中加入 MOVE 選項。
如果自從必要的記錄備份以來,在主要資料庫上建立過任何記錄備份,您也必須將這些備份複製到裝載次要複本的伺服器執行個體,並且一律使用 RESTORE WITH NORECOVERY,從最早的記錄開始,將每個記錄備份套用至次要資料庫。
注意
如果主要資料庫剛剛建立,而且尚未建立任何記錄備份,或者復原模式剛剛從簡單變更為完整,記錄備份就不存在。
若要完成次要資料庫的組態設定,您必須將次要資料庫聯結至可用性群組。 如需詳細資訊,請參閱將次要資料庫聯結至可用性群組 (SQL Server)。
注意
如需有關如何執行這些備份和還原作業的詳細資訊,請參閱本主題稍後的< 相關備份和還原工作>。
Transact-SQL 範例
下列範例會準備次要資料庫。 此範例使用 AdventureWorks2012 範例資料庫,預設會使用簡單恢復模式。
若要使用 AdventureWorks2012 資料庫,請將其修改為使用完整恢復模式:
USE master; GO ALTER DATABASE MyDB1 SET RECOVERY FULL; GO將資料庫的復原模式從 SIMPLE 修改為 FULL 之後,請建立完整備份,以便用於建立次要資料庫。 因為剛剛才變更復原模式,所以指定了 WITH FORMAT 選項以建立新的媒體集。 要區分在完整復原模式與簡單復原模式建立的備份時,此方式非常有協助。 基於此範例的目的,備份檔 (C:\AdventureWorks2012.bak) 會建立在與資料庫相同的磁碟驅動器上。
注意
對於實際執行的資料庫,您必須備份至其他裝置。
在裝載主要複本的伺服器執行個體 (
INSTANCE01) 上,依照下列方式建立主要資料庫的完整備份:BACKUP DATABASE MyDB1 TO DISK = 'C:\MyDB1.bak' WITH FORMAT GO將完整備份複製到裝載次要複本的伺服器執行個體。
使用 RESTORE WITH NORECOVERY,將完整備份還原至裝載次要複本的伺服器執行個體。 還原命令需視主要與次要資料庫的路徑是否相同而定。
若路徑相同:
在裝載次要複本的電腦上,依照下列方式還原完整備份:
RESTORE DATABASE MyDB1 FROM DISK = 'C:\MyDB1.bak' WITH NORECOVERY GO若路徑不同:
如果次要資料庫的路徑與主要資料庫的路徑不同 (例如,磁碟機代號不同),則建立次要資料庫時,還原作業中必須包含 MOVE 子句。
重要
如果主要與次要資料庫的路徑名稱不同,您將無法加入檔案。 這是因為接收加入檔案作業的記錄時,次要複本的伺服器執行個體會嘗試將新檔案放在主要資料庫所使用的相同路徑中。
例如,下列命令會還原位於 SQL Server 2014 預設實例之資料目錄中的主資料庫備份 C:\Program Files\Microsoft SQL Server\MSSQL12。MSSQLSERVER\MSSQL\DATA。 還原資料庫作業必須將資料庫移至名為 #AlwaysOn1 之 SQL Server 2014 遠端實例的數據目錄,該實例裝載另一個叢集節點上的次要複本。 在那裡,數據和記錄檔會還原至 C:\Program Files\Microsoft SQL Server\MSSQL12。ALWAYSON1\MSSQL\DATA 目錄 。 此還原作業會使用 WITH NORECOVERY,將次要資料庫保留在還原資料庫中。
RESTORE DATABASE MyDB1 FROM DISK='C:\MyDB1.bak' WITH NORECOVERY, MOVE 'MyDB1_Data' TO 'C:\Program Files\Microsoft SQL Server\MSSQL12.ALWAYSON1\MSSQL\DATA\MyDB1_Data.mdf', MOVE 'MyDB1_Log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL12.ALWAYSON1\MSSQL\DATA\MyDB1_Data.ldf'; GO
還原完整備份之後,您必須在主要資料庫上建立記錄備份。 例如,下列 Transact-SQL 語句會將記錄備份至名為 E:\MyDB1_log.bak的備份檔:
BACKUP LOG MyDB1 TO DISK = 'E:\MyDB1_log.bak' GO您必須先套用必要的記錄備份 (以及任何後續記錄備份),然後才能將資料庫聯結至次要複本。
例如,下列 Transact-SQL 語句會從 C:\MyDB1.bak還原第一個記錄:
RESTORE LOG MyDB1 FROM DISK = 'E:\MyDB1_log.bak' WITH FILE=1, NORECOVERY GO如果資料庫聯結次要複本之前執行了任何額外的記錄備份,您也必須使用 RESTORE WITH NORECOVERY,依序將這些記錄備份全部還原至裝載次要複本的伺服器執行個體。
例如,下列 Transact-SQL 語句會從 E:\MyDB1_log.bak還原兩個額外的記錄:
RESTORE LOG MyDB1 FROM DISK = 'E:\MyDB1_log.bak' WITH FILE=2, NORECOVERY GO RESTORE LOG MyDB1 FROM DISK = 'E:\MyDB1_log.bak' WITH FILE=3, NORECOVERY GO
使用 PowerShell
若要準備次要資料庫
如果您需要建立主資料庫的最新備份,請將目錄 (
cd) 變更為裝載主要複本的伺服器實例。Backup-SqlDatabase使用 Cmdlet 來建立每個備份。將目錄 (
cd) 變更為裝載次要複本的伺服器實例。若要還原每個主資料庫的資料庫和記錄備份,請使用
restore-SqlDatabaseCmdlet,並NoRecovery指定 restore 參數。 如果主控主要複本的計算機與目標次要複本之間的檔案路徑不同,也請使用RelocateFilerestore 參數。注意
若要檢視 Cmdlet 的語法,請使用
Get-HelpSQL Server PowerShell 環境中的 Cmdlet。 如需詳細資訊,請參閱 Get Help SQL Server PowerShell。若要完成次要資料庫的組態設定,您必須將它聯結至可用性群組。 如需詳細資訊,請參閱將次要資料庫聯結至可用性群組 (SQL Server)。
若要設定和使用 SQL Server PowerShell 提供者
備份和還原腳本和命令範例
下列 PowerShell 命令會將完整資料庫備份和交易記錄備份至網路共用,並且從該共用還原這些備份。 此範例會假設還原資料庫的目標檔案路徑與備份資料庫的檔案路徑相同。
# Create database backup
Backup-SqlDatabase -Database "MyDB1" -BackupFile "\\share\backups\MyDB1.bak" -ServerInstance "SourceMachine\Instance"
# Create log backup
Backup-SqlDatabase -Database "MyDB1" -BackupAction "Log" -BackupFile "\\share\backups\MyDB1.trn" -ServerInstance "SourceMachine\Instance"
# Restore database backup
Restore-SqlDatabase -Database "MyDB1" -BackupFile "\\share\backups\MyDB1.bak" -NoRecovery -ServerInstance "DestinationMachine\Instance"
# Restore log backup
Restore-SqlDatabase -Database "MyDB1" -BackupFile "\\share\backups\MyDB1.trn" -RestoreAction "Log" -NoRecovery -ServerInstance "DestinationMachine\Instance"
後續操作:準備輔助資料庫之後
若要完成次要資料庫的組態設定,您必須將新還原的資料庫聯結至可用性群組。 如需詳細資訊,請參閱將次要資料庫聯結至可用性群組 (SQL Server)。
另請參閱
AlwaysOn 可用性群組概觀 (SQL Server)
BACKUP (Transact-SQL)
RESTORE 引數 (Transact-SQL)
RESTORE (Transact-SQL)
針對失敗的載入檔作業進行疑難解答 (AlwaysOn 可用性群組)