本文說明如何還原 Azure 備份服務已備份至 Azure 備份 復原服務保存庫之 Azure 虛擬機(VM)上執行的 SQL Server 資料庫。
本文將說明如何還原 SQL Server 資料庫。 如需詳細資訊,請參閱 備份 Azure VM 上的 SQL Server 資料庫。
注意
若要深入瞭解支援的組態和案例,請參閱 SQL 備份支援矩陣 。
還原至某個時間或復原點
Azure 備份可還原在 Azure VM 上執行的 SQL Server 資料庫,如下所示:
- 使用交易記錄備份還原至特定日期或時間 (精確至秒)。 Azure 備份會根據選取的時間,自動決定還原所需的適當完整差異備份和記錄備份鏈結。
- 還原特定的完整或差異備份,以還原至特定復原點。
還原必要條件
還原資料庫之前,請注意下列事項:
- 您可以將資料庫還原至相同 Azure 區域中的 SQL Server 執行個體。
- 目的地伺服器必須註冊到和來源相同的保存庫。 如果您想要將備份還原至不同的保存庫, 請啟用跨訂用帳戶還原。
- 如果您的伺服器上有多個正在執行的執行個體,則所有執行個體都應該啟動並執行。 否則,伺服器將不會出現在要將資料庫還原到其中的目的地伺服器清單中。 如需詳細資訊,請參閱 疑難解答步驟。
- 若要將 TDE 加密的資料庫還原至另一個 SQL Server,您必須先 將憑證還原至目的地伺服器。
- 應使用 [還原為檔案] 選項來還原已啟用 CDC 的資料庫。
- 強烈建議使用 [ 還原為檔案 ] 選項還原 「master」 資料庫,然後使用 T-SQL 命令還原。
- 針對所有系統資料庫 (model、msdb),請在觸發還原之前停止 SQL Server Agent 服務。
- 關閉可能會嘗試連線到這些資料庫的任何應用程式。
- 對於 master 資料庫,不支援還原的 [替代位置] 選項。 我們建議您使用 [還原為檔案] 選項來還原 master 資料庫,然後使用
T-SQL命令進行還原。 - 針對
msdb和model,只有在還原的資料庫名稱與目標資料庫名稱不同時,才支援還原的 [替代位置] 選項。 如果您想要復原相同名稱的 目標資料庫,我們建議您先使用 還原為檔案 選項,然後用命令T-SQL還原。
還原資料庫
若要進行還原,您需要下列權限:
- 正在執行還原之保存庫中的備份作員許可權。
- 已備份來源 VM 的參與者(寫入)存取權。
- 目標 VM 的貢獻者(寫入)存取權:
- 若要還原至相同的 VM,便是來源 VM。
- 若要還原至其他位置,便為新的目標 VM。
以下列方式進行還原:
在 Azure 入口網站,進入 韌性 ,然後選擇 恢復。
在 Recover 面板中,將 資料來源類型 選擇為 SQL 在 Azure VM 中,然後在 受保護項目 中按一下 Select。
在 「選擇受保護項目 」面板中,從列表中選擇一個受保護的 SQL 資料庫,然後點擊 「選擇」。
在 [ 復原] 窗格中,選取 [ 繼續]。
在 還原 面板中,於 「還原地點與方式」下,選擇以下任一位置來還原資料庫:
其他位置:將資料庫還原至其他位置,並保留原始的來源資料庫。
原始位置:將資料還原到與原始來源相同的 SQL Server 實例。 此選項會覆寫原始資料庫。
重要
如果選取的資料庫屬於 AlwaysOn 可用性群組,SQL Server 不允許覆寫資料庫。 只有 [替代位置] 可用。
還原為檔案:將備份檔案還原為可復原的檔案,而不是直接還原為資料庫。稍後可在任何安裝有 SQL Server Management Studio 的電腦上,將這些檔案復原為資料庫。
還原至替代位置
在 還原 面板中,在 還原地點下,選擇 替代位置。
選取您要在其中還原資料庫的目的地 SQL Server 名稱和執行個體。
在 還原資料庫名稱中,輸入目標資料庫名稱。
如果適用的話,請選取 [Overwrite if the DB with the same name already exists on selected SQL instance] \(若選取的 SQL 執行個體上已存在相同名稱的 DB 則覆寫\)。
在 還原點下,點選 選擇。
在 還原 面板的 進階設定中,選擇 配置。
在 進階設定 面板中,先完成所需設定,然後選擇 確定
在 還原 面板中,選擇 確定 以觸發還原。 在 [通知] 區域中追蹤還原進度,或在保存庫的 [備份工作] 檢視下追蹤。
注意
時間點還原僅適用於採用完整復原模式和大量記錄復原模式的資料庫記錄備份。
還原並覆寫資料庫
在 [還原設定] 功能表中的 [還原目的地] 底下,選取 [覆寫 DB]>[確定]。
在 [選取還原點] 中,選取 [ 記錄][時間點] 以 還原至特定時間點。 或選取 [完整備份與差異備份] 以還原至 特定恢復點。
注意
時間點還原僅適用於採用完整復原模式和大量記錄復原模式的資料庫記錄備份。
還原為檔案
若要將備份資料還原為 .bak 檔案而非資料庫,請選擇 [還原為檔案]。 一旦檔案備份到指定的路徑,您就可以將這些檔案放到任何機器上,並在其中將檔案還原為資料庫。 由於您可以將這些檔案移動到任何機器,所以現在可以在訂閱項目和區域之間還原資料。
在 [要在何處及如何還原] 下,選取 [還原為檔案]。
選取您要還原備份檔案的目的地 SQL Server 名稱。
在 [伺服器上的目的地路徑] 中,輸入在步驟 2 中選取的伺服器資料夾路徑。 這是該服務將用來備份到所有必要備份檔案的位置。 一般而言,網路共用路徑 (或是指定為目的地路徑的掛接 Azure 檔案路徑) 可讓相同網路中或掛接相同 Azure 檔案共用的其他機器,更輕鬆地存取這些檔案。
注意
若要在裝載於目標已註冊 VM 上的 Azure 檔案共用上還原資料庫備份檔案,請確定 NT AUTHORITY\SYSTEM 具有檔案共用的存取權。 您可以執行下列步驟,將讀取/寫入權限授與 VM 上裝載的 AFS:
- 執行
PsExec -s cmd以進入 NT AUTHORITY\SYSTEM 殼層- 執行
cmdkey /add:<storageacct>.file.core.windows.net /user:AZURE\<storageacct> /pass:<storagekey> - 透過
dir \\<storageacct>.file.core.windows.net\<filesharename>驗證存取權
- 執行
- 從備份保存庫以檔案形式啟動還原至
\\<storageacct>.file.core.windows.net\<filesharename>作為路徑
您可以從 Sysinternals 頁面下載 PsExec。
- 執行
選取 [確定]。
使用 [還原為檔案] 執行 SQL 資料庫時間點還原時,會將所有復原點從「完整備份」儲存到「選取的時間點」。 然後,您可以使用 SQL Server Management Studio,將這些檔案還原為其所在機器上的資料庫。
還原至特定時間點
如果您已選取 [記錄 (時間點)] 作為還原類型,請執行下列動作:
在 [還原日期/時間] 下,開啟行事曆。 在行事曆上,具有復原點的日期會以粗體顯示,而目前的日期會醒目顯示。
選取具有復原點的日期。 您無法選取沒有復原點的日期。
選取日期之後,時間軸圖表會顯示連續範圍中可用的復原點。
請使用時間軸圖表指定復原時間,或選取時間。 然後選取 [ 確定]。
部分還原為檔案
Azure 備份服務決定在還原為檔案期間要下載的一連串檔案。 但在某些情況下,您可能不想再次下載整個內容。
例如,您有每週完整、每日差異和記錄的備份原則,而且已下載特定差異的檔案。 您發現這不是正確的復原點,並決定下載隔天的差異。 現在,您只需要差異檔案,因為您已有開頭完整。 透過 Azure 備份提供的部分還原為檔案功能,您現在可以從下載鏈結中排除完整,而只下載差異。
排除備份檔案類型
ExtensionSettingsOverrides.json 是 JSON(JavaScript 物件表示法)檔案,其中包含適用於 SQL 的 Azure 備份服務多個設定的覆寫。 針對「部分還原為檔案」作業,必須加入新的 JSON 欄位 RecoveryPointTypesToBeExcludedForRestoreAsFiles。 此欄位保存字串值,表示下一個還原為檔案作業中應該排除的復原點類型。
在要下載檔案的目標機器中,移至 "C:\Program Files\Azure Workload Backup\bin" 資料夾
建立名為 "ExtensionSettingsOverrides.JSON" 的新 JSON 檔案 (如果尚未存在)。
新增下列 JSON 索引鍵值組
{ "RecoveryPointTypesToBeExcludedForRestoreAsFiles": "ExcludeFull" }不需要重新啟動任何服務。 Azure 備份服務會嘗試在還原鏈結中排除此檔案所述的備份類型。
RecoveryPointTypesToBeExcludedForRestoreAsFiles 只接受特定值,這些值表示還原期間要排除的復原點。 針對 SQL,這些值為:
- ExcludeFull (將會下載出現在還原點鏈結中的其他備份類型,例如差異和記錄)
- ExcludeFullAndDifferential (將會下載出現在還原點鏈結中的其他備份類型,例如記錄)
- ExcludeFullAndIncremental (將會下載出現在還原點鏈結中的其他備份類型,例如記錄)
- ExcludeFullAndDifferentialAndIncremental (將會下載出現在還原點鏈結中的其他備份類型,例如記錄)
還原至特定還原點
如果您已選取 [完整和差異] 作為還原類型,請執行下列動作:
從清單中選取復原點,然後選取 [確定] 以完成還原點程序。
注意
依預設,將會顯示過去 30 天的復原點。 您可以選取 [篩選] 並選取自訂範圍,以顯示 30 天之前的復原點。
還原具有大量檔案的資料庫
如果資料庫中檔案的總字串大小大於 特定限制,Azure 備份會將資料庫檔案清單儲存在不同的 pit 元件中,因此您無法在還原作業期間設定目標還原路徑。 這些檔案會改為還原至 SQL 預設路徑。
使用 SSMS 從 .bak 檔案復原資料庫
當從 Azure 入口網站還原時,您可以使用 [還原為檔案] 作業,以 .bak 格式還原資料庫檔案。
深入瞭解。
當檔案還原 .bak 至 Azure 虛擬機完成時,您可以透過 SSMS 使用 TSQL 命令 來觸發還原。
若要將資料庫檔案還原至「來源伺服器上的原始路徑」,請從 TSQL 還原查詢中移除 MOVE 子句。
例
USE [master]
RESTORE DATABASE [<DBName>] FROM DISK = N'<.bak file path>'
注意
您不應該在目標伺服器上有相同的資料庫檔案 (使用取代還原)。 此外,您可以在 目標伺服器上啟用立即檔案初始化,以減少檔案初始化時間的額外負荷。
若要從目標還原伺服器重新放置資料庫檔案,您可以使用 MOVE 子句來架構 TSQL 命令。
USE [master]
RESTORE DATABASE [<DBName>] FROM DISK = N'<.bak file path>' MOVE N'<LogicalName1>' TO N'<TargetFilePath1OnDisk>', MOVE N'<LogicalName2>' TO N'<TargetFilePath2OnDisk>' GO
例
USE [master]
RESTORE DATABASE [test] FROM DISK = N'J:\dbBackupFiles\test.bak' WITH FILE = 1, MOVE N'test' TO N'F:\data\test.mdf', MOVE N'test_log' TO N'G:\log\test_log.ldf', NOUNLOAD, STATS = 5
GO
如果資料庫有超過兩個檔案,您可以將其他 MOVE 子句新增至還原查詢。 您也可以使用 SSMS 以使用 .bak 檔案進行資料庫復原。
深入瞭解。
注意
針對大型資料庫復原,建議您使用 TSQL 陳述式。 如果您想要重新放置特定的資料庫檔案,請參閱 [還原為檔案] 作業期間所建立 JSON 格式的資料庫檔案清單。
跨區域還原
作為其中一個還原選項,跨區域還原 (CRR) 可讓您在次要區域 (也就是 Azure 配對的區域) 中還原在 Azure VM 上裝載的 SQL 資料庫。
若要開始使用此功能,請閱讀開始之前部分。
若要查看是否啟用CRR,請遵循設定跨區域還原中的指示
檢視次要區域中的備份項目
如果已啟用 CRR,您可以在次要區域中檢視備份項目。
- 從入口網站移至 [復原服務保存庫]>[備份項目]。
- 選取 [次要區域] 以檢視次要區域中的項目。
注意
清單中只會顯示支援 CRR 功能的備份管理類型。 目前,僅支援將次要區域資料還原至次要區域。
在次要區域中還原
次要區域還原使用者的體驗和主要區域還原使用者的體驗類似。 當您在 [還原設定] 窗格中設定詳細資料以設定還原時,系統會提示您只提供次要區域參數。 次要區域中應該有保存庫,而 SQL 伺服器應註冊至次要區域中的保存庫。
注意
- 在還原觸發且處於資料傳輸階段後,還原工作無法被取消。
- 跨區域執行還原作業所需的角色/存取層級為訂閱項目的「備份操作員」角色,以及來源和目標虛擬機器的「參與者 (寫入)」存取權。 若要檢視備份作業,訂用帳戶中至少需要「備份讀取者」權限。
- 次要區域中可供使用的備份資料 RPO 為 12 個小時。 因此,當您開啟 CRR 時,次要區域的 RPO 是 12 小時 + 記錄頻率持續時間 (可設定為至少 15 分鐘)。
瞭解 跨區域還原的最低角色需求。
監視次要區域還原工作
要查看次要區域恢復工作,請依照以下步驟操作:
跨訂用帳戶還原
Azure 備份現在可讓您從還原點將 SQL 資料路還原至任何訂用帳戶 (根據下列 Azure RBAC 需求)。 根據預設,Azure 備份會還原至可用的還原點所在的相同訂用帳戶。
透過 [跨訂用帳戶還原] (CSR),如果可使用還原權限,則您可以彈性地還原至租用戶下的任何訂用帳戶和任何保存庫。 根據預設,所有復原服務保存庫 (現有和新建立的保存庫) 都會啟用 CSR。
注意
- 您可以從復原服務保存庫觸發 [跨訂用帳戶還原]。
- 只有串流型備份才支援 CSR,快照型備份不支援 CSR。
- 不支援搭配使用 [跨區域還原 (CRR)] 與 CSR。
Azure RBAC 需求
| 作業類型 | 備份操作員 | 復原服務保存庫 | 替代運算子 |
|---|---|---|---|
| 還原資料庫或還原為檔案 | Virtual Machine Contributor |
備份的來源 VM | 您可以考量具有下列權限的自訂角色,而不使用內建角色: - Microsoft.Compute/virtualMachines/write - Microsoft.Compute/virtualMachines/read |
Virtual Machine Contributor |
將在其中還原資料庫或建立檔案的目標 VM。 | 您可以考量具有下列權限的自訂角色,而不使用內建角色: - Microsoft.Compute/virtualMachines/write - Microsoft.Compute/virtualMachines/read |
|
Backup Operator |
目標復原服務保存庫 |
根據預設,復原服務保存庫上會啟用 CSR。 若要更新 [復原服務保存庫還原] 設定,請移至 [內容]>[跨訂用帳戶還原],並進行必要的變更。
下一步
管理和監視 Azure 備份所備份的 SQL Server 資料庫。
相關內容
- 透過 REST API 使用 Azure 備份在 Azure VM 中備份 SQL Server 資料庫。
- 使用 REST API 在 Azure VM 中還原 SQL Server 資料庫。
- 使用 Azure 入口網站、 Azure CLI、 REST API 管理 Azure VM 中的 SQL Server 資料庫。