使用受管理的身份備份和還原到指定的 URL
適用於:Azure VM 上的 SQL Server(僅限 Windows)
本文會教導您如何使用 Microsoft Entra 管理識別,從 URL 對 Azure 虛擬機 (VM) 上的 SQL Server 資料庫進行備份和還原。
概述
從 SQL Server 2022 累積更新 17(CU17)開始,您可以使用受管理的身分識別和 SQL Server 認證,將 Azure VM 資料庫中的 SQL Server 備份至 Azure Blob 儲存體並從中還原。 受控識別 提供身分識別,讓應用程式在連線到支援Microsoft Entra 驗證的資源時使用。
只有在 Azure VM 上的 SQL Server 才支援在 BACKUP TO URL
和 RESTORE FROM URL
T-SQL 作業的認證中使用受控識別。 不支援在內部部署 SQL Server 上使用受控識別來 BACKUP TO URL
和 RESTORE FROM URL
。
先決條件
- 具有 SQL Server 2022 CU17 或更新版本的 SQL Server 部署於 Azure VM 平台上,使用 Microsoft Entra 驗證進行設定。
- Azure Blob 儲存帳戶。
- 主機上 Azure Blob 記憶體和 Windows 防火牆許可權的有效網路存取,以允許輸出連線,以及有效的記憶體帳戶服務端點。
- Azure VM 上 SQL Server 的主要受控識別需要:
- 使用使用者指派的受控識別或系統指派的受控識別來指派。 如需詳細資訊,請參閱 在 Azure 虛擬機上設定受控識別。
- 若要為儲存體帳戶擁有主要管理的識別所指派的
Storage Blob Data Contributor
角色。
使用受控識別建立伺服器認證
若要搭配受控識別使用 T-SQL 命令 BACKUP DATABASE <database name> TO URL
和 RESTORE <database name> FROM URL
,您必須建立使用受控識別的伺服器認證。 認證名稱代表 Azure 記憶體 URL,並指出將儲存資料庫備份的位置。
下列範例示範如何建立受控識別的認證:
CREATE CREDENTIAL [https://<storage-account-name>.blob.core.windows.net/<container-name>]
WITH IDENTITY = 'Managed Identity'
WITH IDENTITY = 'Managed Identity'
子句要求在 Azure VM 上的 SQL Server 必須被指派一個主要管理識別。
未指派主要受控身份或未給予適當許可權時,可能出現的錯誤訊息詳細資訊,請參閱 錯誤訊息 一節。
使用受控身份將 BACKUP
連結至 URL
建立認證之後,您可以使用認證將資料庫備份和還原至 Azure Blob 記憶體。 請確定 Azure VM 上 SQL Server 的主要受控識別具有指派給記憶體帳戶的 Storage Blob Data Contributor
角色。
下列範例示範如何使用受控識別認證將資料庫備份至 Azure Blob 記憶體:
BACKUP DATABASE [AdventureWorks]
TO URL = 'https://<storage-account-name>.blob.core.windows.net/<container-name>/AdventureWorks.bak'
從 URL 使用受控身分識別 RESTORE
下列範例示範如何使用受控識別認證,從 Azure Blob 記憶體還原資料庫:
RESTORE DATABASE [AdventureWorks]
FROM URL = 'https://<storage-account-name>.blob.core.windows.net/<container-name>/AdventureWorks.bak'
錯誤訊息
追蹤旗標 4675 可用於檢查使用受控識別碼建立的憑證。 如果在未啟用追蹤旗標 4675 的情況下執行 CREATE CREDENTIAL
語句,如果未為伺服器設定主要受控識別,則不會發出任何錯誤訊息。 若要排除此情境的問題,一旦啟用追蹤旗標,就必須刪除並重新建立憑證。
未指派管理識別作為主要識別
如果未將主要受控識別指派給 Azure VM 上的 SQL Server,備份和還原作業將會失敗,並出現錯誤訊息,指出未選取受控識別。
Msg 37563, Level 16, State 2, Line 14
The primary managed identity is not selected for this server. Enable the primary managed identity for Microsoft Entra authentication for this server. For more information see (https://aka.ms/sql-server-managed-identity-doc).`
未指派 Storage Blob Data Contributor
角色
如果 Azure VM 上 SQL Server 的主要受控識別未被授予儲存體帳戶的 Storage Blob Data Contributor
角色,則 BACKUP 作業將會失敗,並顯示一則錯誤訊息,指出拒絕存取。
Msg 3201, Level 16, State 1, Line 31
Cannot open backup device 'https://<storage-account-name>.blob.core.windows.net/<container-name>/AdventureWorks.bak'. Operating system error 5(Access is denied.).
Msg 3013, Level 16, State 1, Line 31
BACKUP DATABASE is terminating abnormally.
如果 Azure VM 上的 SQL Server 受控識別未將 Storage Blob Data Contributor
角色提供給記憶體帳戶,RESTORE 作業將會失敗,並出現錯誤訊息,指出存取遭到拒絕。
Msg 3201, Level 16, State 1, Line 31
Cannot open backup device 'https://<storage-account-name>.blob.core.windows.net/<container-name>/AdventureWorks.bak'. Operating system error 5(Access is denied.).
Msg 3013, Level 16, State 1, Line 31
RESTORE DATABASE is terminating abnormally.
重複的資料庫名稱
當具有相同名稱的原始資料庫存在於記憶體中時,將新資料庫的備份至相同的記憶體路徑將會失敗,並出現下列錯誤:
Msg 1834, Level 16, State 1, Line 35
RESTORE DATABASE AdventureWorks
from URL = 'https://<storage-account-name>.blob.core.windows.net/<container-name>/AdventureWorks.bak'
Msg 1834, Level 16, State 1, Line 35
The file 'C:\Server\sqlservr\data\AdventureWorks.mdf' cannot be overwritten. It is being used by the database 'AdventureWorks'.
Msg 3156, Level 16, State 4, Line 35
File 'AdventureWorks' cannot be restored to 'C:\Server\sqlservr\data\AdventureWorks.mdf'. Use WITH MOVE to identify a valid location for the file.
若要解決此問題,請先卸除原始資料庫,或在還原資料庫之前,將已使用過的檔案移至不同的位置。 如需詳細資訊,請參閱 將資料庫還原至新位置 (SQL Server)。
局限性
伺服器層級的受控身分識別僅支援 Azure VM 上的 SQL Server,而不是內部部署環境中的 SQL Server。 Linux 不支援伺服器層級受控識別。
只有 Azure VM 上的 SQL Server 才支援具有受控識別的
BACKUP TO URL
或RESTORE FROM URL
。 SQL Server 內部部署不支援BACKUP TO URL
或RESTORE FROM URL
。故障轉移叢集實例 (FCI) 不支援受控識別。
BACKUP TO URL
只能與 Azure VM 上 SQL Server 所使用的相同受控識別來執行,不論伺服器在 VM 上是否有一或多個 SQL Server 實例。