改进:Microsoft Azure VM 上的 SQL Server 中使用 AKV 的备份和还原数据库操作以及 EKM 的 Entra 托管标识支持
现象
如果运行备份或还原数据库操作以Azure 存储或使用可扩展密钥管理(EKM)和 Azure 密钥库(AKV),则 SQL Server 实例可能会停止响应。 尽管 SQL Server 2022 不支持此操作,但当前的 T-SQL 语法允许此操作。
解决方法
此问题已在 Azure 虚拟机上的 SQL Server 的以下累积更新中修复::
在 SQL Server 2022 CU17 及更高版本中,Microsoft仅 Azure Windows 上的 SQL Server 的 Entra 托管标识身份验证支持用于数据库备份和还原操作的服务器级凭据,以Azure 存储和具有 AKV 的 EKM。
若要为 Azure Windows VM 上的 SQL Server 启用备份或还原数据库操作的托管标识支持,需要执行以下步骤:
- 为 Azure Windows VM 上的 SQL Server 分配主托管标识。
- 在 blob 容器中创建或使用Azure 存储。
- 为主要托管标识分配基于角色的访问控制(RBAC)角色以访问Azure 存储。
- 使用 Azure 存储 URL 作为凭据名称,使用
WITH IDENTITY = 'Managed Identity'
子句运行 T-SQL 命令CREATE CREDENTIAL
。 - 运行 T-SQL 命令
BACKUP DATABASE
或使用RESTORE DATABASE
Azure 存储 URL。
-- Create credential with managed identity and credential name set to
-- URL= https://<storageaccountname>.blob.core.windows.net/<container>
CREATE CREDENTIAL [https://<storageaccountname>.blob.core.windows.net/<container>]
WITH IDENTITY = 'Managed Identity'
-- Backup the database mydb to URL
BACKUP DATABASE mydb
TO URL = 'https://<storageaccount>.blob.core.windows.net/<container>/mydb.bak'
-- Restore the database mydb1 from URL
RESTORE DATABASE mydb1
FROM URL ='https://<storageaccount>.blob.core.windows.net/<container>/mydb.bak'
有关详细信息,请参阅 使用托管标识备份和还原到 URL。
若要为 Azure Windows VM 上的 SQL Server 启用 EKM 的托管标识支持,需要执行以下步骤:
- 为 Azure Windows VM 上的 SQL Server 分配主托管标识。
- 创建或使用密钥保管库。
- 为主要托管标识分配基于角色的访问控制(RBAC)角色以访问 AKV。
- 下载最新的用于 Microsoft Azure Key Vault 的 SQL Server 连接器(1.0.5.0(2024 年 11 月)或更高版本)。 需要最新版本的 SQL Server 连接器才能支持托管标识。
- 使用 AKV 路径作为凭据名称运行包含子句的 T-SQL 命令
CREATE CREDENTIAL
WITH IDENTITY = 'Managed Identity'
。
-- Create credential with managed identity and the credential name for the AKV called 'contoso'
-- with the AKV path = 'contoso.vault.azure.net'
CREATE CREDENTIAL [contoso.vault.azure.net]
WITH IDENTITY = 'Managed Identity'
FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov
- 使用 AKV 运行 EKM 的 T-SQL 设置的其余部分。
有关详细信息,请参阅使用 Azure 密钥库 管理可扩展密钥管理的托管标识支持。
备注
- 默认情况下禁用跟踪标志 4675 允许对服务器级凭据进行故障排除,并可用于确认分配给 SQL Server 实例的主托管标识。
- 托管标识支持不会引入任何 T-SQL 语法或系统视图更改,因为此功能已存在用于Azure SQL 托管实例。
- 本地 SQL Server 上的服务器级凭据不支持托管标识。 当意外用于备份或还原到 Azure 存储 或带有 AKV 的 EKM 时,会看到错误消息“未为服务器设置主托管标识...”并引用公共文档。
关于 SQL Server 的累积更新
SQL Server 的每个新的累积更新都包含上一个版本中的所有修补程序和安全修补程序。 建议为 SQL Server 版本安装最新版本:
Status
Microsoft 已经确认这是一个列于“适用范围”部分的 Microsoft 产品问题。