在 Azure VM 上還原 SQL Server 資料庫

本文說明如何還原 Azure 備份 服務已備份至 Azure 備份 復原服務保存庫之 Azure 虛擬機 (VM) 上執行的 SQL Server 資料庫。

本文說明如何還原 SQL Server 資料庫。 如需詳細資訊,請參閱 備份 Azure VM 上的 SQL Server 資料庫。

還原至時間或恢復點

Azure 備份 可以還原在 Azure VM 上執行的 SQL Server 資料庫,如下所示:

  • 使用事務歷史記錄備份還原至特定日期或時間(至第二個)。 Azure 備份 會自動判斷適當的完整差異備份,以及根據所選時間還原所需的記錄備份鏈結。
  • 還原特定的完整或差異備份,以還原至特定恢復點。

還原必要條件

在還原資料庫之前,請注意下列事項:

  • 您可以將資料庫還原至相同 Azure 區域中的 SQL Server 執行個體。
  • 目的地伺服器必須註冊到和來源相同的保存庫。 如果您想要將備份還原至不同的保存庫, 請啟用跨訂用帳戶還原
  • 如果您的伺服器上有多個正在執行的執行個體,則所有執行個體都應該啟動並執行。 否則,伺服器將不會出現在要將資料庫還原到其中的目的地伺服器清單中。 如需詳細資訊,請參閱 疑難解答步驟
  • 若要將 TDE 加密的資料庫還原至另一個 SQL Server,您必須先 將憑證還原至目的地伺服器
  • 應使用 [還原為檔案] 選項來還原已啟用 CDC 的資料庫。
  • 強烈建議使用 [還原為檔案] 選項還原 「master」 資料庫,然後使用 T-SQL 命令還原
  • 針對所有系統資料庫 (model, msdb),在您觸發還原之前,請先停止 SQL Server Agent 服務。
  • 關閉任何可能嘗試連線到這些資料庫的應用程式。

還原資料庫

若要還原,您需要下列許可權:

  • 您執行還原所在之保存庫的備份操作員權限。
  • 針對已備份來源 VM 的參與者 (寫入) 存取權。
  • 目標 VM 的參與者(寫入) 存取權:
    • 若要還原至相同的 VM,便是來源 VM。
    • 若要還原至其他位置,便為新的目標 VM。

還原,如下所示:

  1. 在 Azure 入口網站 中,移至 [備份中心],然後按兩下 [還原]。

    Screenshot showing the start the restore process.

  2. 選取 [Azure VM 中的 SQL] 作為數據源類型、選取要還原的資料庫,然後按兩下 [ 繼續]。

    Screenshot showing to select the datasource type.

  3. 在 [ 還原組態] 中,指定還原數據的位置(或如何):

    • 其他位置:將資料庫還原至其他位置,並保留原始的來源資料庫。

    • 覆寫 DB:將數據還原至與原始來源相同的 SQL Server 實例。 此選項會覆寫原始資料庫。

      重要

      如果選取的資料庫屬於 Always On 可用性群組,SQL Server 不允許覆寫資料庫。 只有 替代位置 可用。

    • 還原為檔案:與其還原為資料庫,不如還原為資料庫,而是在稍後使用 SQL Server Management Studio 的任何計算機上,將可復原的備份檔還原為資料庫。

還原至替代位置

  1. 在 [還原組態] 功能表的 [要還原的位置] 下,選取 [替代位置]。

  2. 選取您要還原資料庫的 SQL Server 名稱和實例。

  3. 在 [ 還原的資料庫名稱] 方塊中,輸入目標資料庫的名稱。

  4. 如果適用,請選取 [覆寫],如果選取的 SQL 實例上已有相同名稱的資料庫存在,請選取 [覆寫]。

  5. 選取 [還原點],然後選取要 還原至特定時間 點或 還原至特定恢復點

    Screenshot showing to select Restore Point.

    Screenshot showing restore to point in time.

  6. 在 [ 進階設定] 選單上:

    • 如果您想要在還原之後保留資料庫非操作,請使用NORECOVERY 啟用還原。

    • 如果您想要變更目的地伺服器上的還原位置,請輸入新的目標路徑。

      Enter target paths

  7. 選取 [ 確定 ] 以觸發還原。 追蹤 [通知] 區域中的還原進度,或在保存庫中的 [備份作業] 檢視底下追蹤它。

    注意

    時間點還原僅適用於處於完整和大容量日誌復原模式之資料庫的記錄備份。

還原並覆寫資料庫

  1. 在 [還原組態] 功能表中的 [還原位置] 底下,選取 [覆寫 DB>確定]。

    Select Overwrite DB

  2. [選取還原點] 中,選取 [ 記錄][時間點]還原至特定時間點。 或選取 [完整和差異 ] 以還原至 特定恢復點

    注意

    時間點還原僅適用於處於完整和大容量日誌復原模式之資料庫的記錄備份。

還原為檔案

若要將備份數據還原為.bak檔案,而不是資料庫,請選擇 [ 還原為檔案]。 將檔案傾印到指定的路徑之後,您可以將這些檔案帶至您想要將檔案還原為資料庫的任何計算機。 由於您可以將這些檔案移至任何計算機,因此您現在可以跨訂用帳戶和區域還原數據。

  1. 在 [位置及如何還原] 底下,選取 [還原為檔案]。

  2. 選取您要還原備份檔的 SQL Server 名稱。

  3. 在伺服器的 [目的地路徑] 中,輸入步驟 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
  4. 選取 [確定]。

    Select Restore As Files

  5. 選取 [還原點],然後選取要 還原至特定時間 點或 還原至特定恢復點

  6. 使用 還原作為檔案執行 SQL 資料庫時間點還原時,會將所有恢復點從 完整備份 儲存到 選取的時間點。 然後,您可以使用這些檔案作為使用 SQL Server Management Studio 的任何電腦上的資料庫進行還原。

    Restored Backup Files in Destination Path

還原至特定時間點

如果您已選取 [記錄](時間點) 作為還原類型,請執行下列動作:

  1. 在 [還原日期/時間]下,開啟行事曆。 在行事曆上,具有恢復點的日期會以粗體類型顯示,並醒目提示目前的日期。

  2. 選取具有恢復點的日期。 您無法選擇沒有恢復點的日期。

    Open the calendar

  3. 選取日期之後,時間軸圖表會顯示連續範圍的可用恢復點。

  4. 指定時間軸圖形上的復原時間,或選取時間。 然後選取確定

部分還原為檔案

Azure 備份 服務會決定在還原期間下載為檔案的檔案鏈結。 但在某些情況下,您可能不想再次下載整個內容。

例如,當您有每周完整備份原則、每日差異和記錄,且您已下載特定差異的檔案時。 您發現這不是正確的恢復點,並決定下載第二天的差異。 現在,您只需要差異檔案,因為您已經擁有完整檔案。 透過 Azure 備份 所提供的部分還原作為檔案功能,您現在可以從下載鏈結中排除完整,並只下載差異。

排除備份文件類型

Extension 設定Overrides.json 是 JSON (JavaScript 物件表示法) 檔案,其中包含 SQL Azure 備份 服務之多個設定的覆寫。 針對「部分還原為檔案」作業,必須新增新的 JSON 欄位 RecoveryPointTypesToBeExcludedForRestoreAsFiles 。 此欄位會保留字串值,表示下一次還原時應排除哪些恢復點類型做為檔案作業。

  1. 在要下載檔案的目標機器中,移至 「C:\Program Files\Azure Workload Backup\bin」 資料夾

  2. 如果 「Extension 設定Overrides.JSON」 尚未存在,請建立名為 「Extension 設定Overrides.JSON」 的新 JSON 檔案。

  3. 新增下列 JSON 索引鍵值組

    {
    "RecoveryPointTypesToBeExcludedForRestoreAsFiles": "ExcludeFull"
    }
    
  4. 不需要重新啟動任何服務。 Azure 備份 服務會嘗試排除還原鏈結中的備份類型,如此檔案中所述。

RecoveryPointTypesToBeExcludedForRestoreAsFiles只會接受特定值,表示還原期間要排除的恢復點。 針對 SQL,這些值為:

  • ExcludeFull (如果還原點鏈結中有差異和記錄等其他備份類型,則會下載這些備份類型)
  • ExcludeFullAndDifferential (如果記錄存在於還原點鏈結中,則會下載其他備份類型,例如記錄檔)
  • ExcludeFullAndIncremental (如果記錄存在於還原點鏈結中,則會下載其他備份類型,例如記錄檔)
  • ExcludeFullAndDifferentialAndIncremental (如果記錄存在於還原點鏈結中,則會下載其他備份類型,例如記錄檔)

還原至特定還原點

如果您已選取 [完整和差異 ] 作為還原類型,請執行下列動作:

  1. 從清單中選取恢復點,然後選取 [ 確定 ] 來完成還原點程式。

    Choose a full recovery point

    注意

    根據預設,會顯示過去 30 天的恢復點。 您可以選取 [ 篩選 ] 並選取自訂範圍,以顯示超過 30 天的恢復點。

還原具有大量檔案的資料庫

如果資料庫中檔案的字串大小總計大於特定限制,Azure 備份 會將資料庫檔案清單儲存在不同的 pit 元件中,因此您無法在還原作業期間設定目標還原路徑。 檔案會改為還原至 SQL 預設路徑。

Restore Database with large file

使用 SSMS 從.bak檔案復原資料庫

您可以使用 [還原為檔案] 作業,在從 Azure 入口網站 還原時,以.bak格式還原資料庫檔案。 深入了解

當檔案還原 .bak 至 Azure 虛擬機完成時,您可以透過 SSMS 使用 TSQL 命令 來觸發還原。   若要將資料庫檔案還原至 來源伺服器上的原始路徑,請從 TSQL 還原查詢中移除 MOVE 子句。   範例

  USE [master] 
  RESTORE DATABASE [<DBName>] FROM  DISK = N'<.bak file path>'

注意

目標伺服器上不應該有相同的資料庫檔案(以取代還原)。  此外,您可以在 目標伺服器上啟用立即檔案初始化,以減少檔案初始化時間的額外負荷

若要從目標還原伺服器重新放置資料庫檔案,您可以使用 子句來框架 TSQL 命令 MOVE

  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 VM 上的 SQL 資料庫,這是 Azure 配對的區域。

若要上線功能,請閱讀 開始之前一節

若要查看是否啟用CRR,請遵循設定跨區域還原中的 指示

檢視次要區域中的備份專案

如果已啟用CRR,您可以檢視次要區域中的備份專案。

  1. 從入口網站,移至 復原服務保存庫>備份專案
  2. 選取 [次要區域 ] 以檢視次要區域中的專案。

注意

清單中只會顯示支援CRR功能的備份管理類型。 目前只支援將次要區域數據還原至次要區域。

Backup items in secondary region

Databases in secondary region

在次要區域中還原

次要區域還原使用者的體驗和主要區域還原使用者的體驗類似。 在 [還原組態] 窗格中設定詳細數據以設定還原時,系統會提示您只提供次要區域參數。 保存庫應該存在於次要區域中,而且 SQL Server 應該註冊至次要區域中的保存庫。

Where and how to restore

Trigger restore in progress notification

注意

  • 在觸發還原並在數據傳輸階段之後,就無法取消還原作業。
  • 跨區域執行還原作業所需的角色/存取層級,是 來源和目標虛擬機上訂用帳戶中的備份操作員 角色和 參與者(寫入) 存取權。 若要檢視備份作業, 備份讀取器 是訂用帳戶中所需的最低許可權。
  • 次要區域中可供使用之備份數據的 RPO 為 12 小時。 因此,當您開啟CRR時,次要區域的 RPO 是 12 小時 + 記錄頻率持續時間(可設定為至少 15 分鐘)。

瞭解 跨區域還原的最低角色需求。

監視次要區域還原作業

  1. 在 Azure 入口網站 中,移至備份中心>備份作業。

  2. CrossRegionRestore篩選作業,以檢視次要區域中的作業。

    Screenshot showing the filtered Backup jobs.

跨訂用帳戶還原

Azure 備份 現在可讓您從還原點將 SQL 資料庫還原至任何訂用帳戶(根據下列 Azure RBAC 需求)。 根據預設,Azure 備份 還原點可用的相同訂用帳戶。

使用跨訂用帳戶還原 (CSR),您可以彈性地在有還原許可權時還原至租使用者下的任何訂用帳戶和任何保存庫。 根據預設,所有復原服務保存庫都會啟用 CSR(現有和新建立的保存庫)。

注意

  • 您可以從復原服務保存庫觸發跨訂用帳戶還原。
  • 只有串流式備份才支援 CSR,而且不支援快照式備份。
  • 不支援具有 CSR 的跨區域還原(CRR)。

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。 若要更新復原服務保存庫還原設定,請移至 [屬性>跨訂用帳戶還原],並進行必要的變更。

Screenshot shows how to modify the Cross Subscription Restore settings on a Recovery Services vault for SQL database.

下一步

管理及監視由 Azure 備份 備份的 SQL Server 資料庫。