症状
如果对 Azure 存储运行备份或还原数据库操作,或将可扩展密钥管理 (EKM) 与 Azure 密钥保管库 (AKV 配合使用,) 使用具有托管标识的服务器级凭据,则 SQL Server 实例可能会停止响应。 尽管 SQL Server 2022 不支持此操作,但当前的 T-SQL 语法允许它。
解决方法
此问题已在以下 Azure 虚拟机 (VM 上的 SQL Server 累积更新中修复) :
在 SQL Server 2022 CU17 及更高版本中,仅 Azure Windows VM 上 SQL Server 的 Microsoft Entra 托管标识身份验证支持服务器级凭据,用于对 Azure 存储执行数据库备份和还原操作,以及使用 AKV 进行 EKM。
若要为 Azure Windows VM 上的 SQL Server 的备份或还原数据库操作启用托管标识支持,需要执行以下步骤:
- 为 Azure Windows VM 上的 SQL Server 分配主托管标识。
- 创建或将 Azure 存储与 blob 容器配合使用。
- 为主托管标识分配基于角色 (访问控制 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 上使用 AKV for SQL Server 启用 EKM 的托管身份支持,需要执行以下步骤:
- 为 Azure Windows VM 上的 SQL Server 分配主托管标识。
- 创建或使用密钥保管库。
- 为主要托管标识分配基于角色的访问控制 (RBAC) 角色以访问 AKV。
- ) 下载 1.0.5.0 (2024 年 11 月) 或更高版本 (最新用于 Microsoft Azure 密钥保管库 的 SQL Server 连接器。 需要最新版本的 SQL Server 连接器来支持托管标识。
- 通过子句运行
WITH IDENTITY = 'Managed Identity'T-SQL 命令CREATE CREDENTIAL,使用 AKV 路径作为凭据名称。
-- 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 上的服务器级凭据不支持托管标识。 意外地通过 AKV 备份或还原到 Azure 存储或 EKM 时,会看到错误消息“未为服务器设置主托管标识...”并将参考公共文档。
关于 SQL Server 的累积更新
SQL Server 的每个新累积更新都包含先前内部版本中的所有修补程序和安全修补程序。 我们建议您安装 SQL Server 的最新版本:
状态
Microsoft 已确认在 "适用于" 部分中所列的 Microsoft 产品中存在问题。