你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于:Azure SQL 托管实例
本文介绍如何将数据库备份 从 Azure SQL 托管实例还原 到 SQL Server 2022 或 SQL Server 2025。
概述
使用 更新策略配置 SQL 托管实例时,请将内部数据库格式与特定版本的 SQL Server 保持一致。 通过对齐 SQL 托管实例和 SQL Server 之间的数据库格式,您可以轻松地将数据库从 SQL 托管实例复制或移动到本地托管的企业版、开发人员版或标准版 SQL Server,或在 Azure 中的虚拟机和其他云中托管的 SQL Server。
将数据库从 SQL 托管实例还原到 SQL Server 2022 或 SQL Server 2025,可解锁以下方案:
- 确保 SQL 托管实例和基于 SQL Server 的产品之间的数据库移动性。
- 向客户和其他符合条件的参与方提供数据库副本。
- 刷新 SQL 托管实例之外的环境。
请考虑以下事项:
- 默认情况下,所有现有和新部署的实例默认都可使用仅复制的完整备份数据库从 SQL 托管实例还原到 SQL Server 2022。 此功能在 SQL Server 2022 主流支持结束之前可用。 将实例的更新策略更改为 SQL Server 2025 或 Always-up-to-date 后,将无法再将数据库还原到 SQL Server 2022。
- 将数据库仅复制完整备份从 SQL 托管实例还原到 SQL Server 2025 的功能仅适用于使用 SQL Server 2025 更新策略配置的实例。 此功能在 SQL Server 2025 主流支持结束之前可用。 将实例的更新策略更改为 Always-up-to-date 后,将无法再将数据库还原到 SQL Server 2025。
在 SQL 托管实例上进行备份
首先,创建用于从实例访问存储帐户的凭据,对数据库进行仅复制备份,然后存储备份。
可以使用托管标识或共享访问签名 (SAS) 令牌来创建凭据。
托管标识是 Microsoft Entra ID(以前称为 Azure Active Directory)的一项功能,它在 Microsoft Entra ID 中为 Azure 服务实例(如 Azure SQL 托管实例)提供自动托管标识(系统分配的托管标识)。
可以使用此标识授权对其他 Azure 资源(包括存储帐户)的数据访问请求。 Azure SQL 托管实例等服务具有系统分配的托管标识,还可以具有一个或多个用户分配的托管标识。 可以使用系统分配的托管标识或用户分配的托管标识来授权请求。
在 Azure 存储管理员将备份文件写入存储帐户之前,必须授予托管标识写入数据的权限。 向实例的托管标识授予权限的方式与向任何其他 Microsoft Entra 用户授予权限的方式相同。 例如:
在 Azure 门户中,在存储帐户的“访问控制(IAM)”窗格上,选择“添加角色分配”。
选择“存储 Blob 数据参与者”内置 Azure 基于角色的访问控制 (RBAC) 角色。 这将为必要的 Azure Blob 存储容器提供对托管标识的读/写访问权限。
可以授予更精细的权限,而不是向托管标识授予“存储 Blob 数据参与者”Azure RBAC 角色。 要了解详细信息,请参阅在 Azure Data Lake Storage Gen2 中设置 ACL。
在下一页上,为“将访问权限分配到”选择“托管标识”。
选择“选择成员”,然后在“托管标识”下拉列表中选择相应的托管标识。 有关详细信息,请参阅使用 Azure 门户分配 Azure 角色。
现在,创建用于托管标识身份验证的数据库范围的凭据非常简单。
请注意,在以下示例中,Managed Identity 是一个硬编码字符串,你需要将泛型存储帐户名称替换为实际存储帐户的名称:
CREATE CREDENTIAL [https://<mystorageaccountname>.blob.core.windows.net/<containername>]
WITH IDENTITY = 'MANAGED IDENTITY';
接下来,通过运行以下示例 T-SQL 命令,对数据库进行 COPY_ONLY 备份:
BACKUP DATABASE [SampleDB]
TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<containername>/SampleDB.bak'
WITH COPY_ONLY;
还原到 SQL Server
使用 RESTORE DATABASE T-SQL 命令的 WITH MOVE 选项将数据库还原到 SQL Server,并为目标服务器上的文件提供显式文件路径。
若要将数据库还原到 SQL Server,请使用适合环境的文件路径运行以下示例 T-SQL 命令:
RESTORE DATABASE [SampleDB]
FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<containername>/SampleDB.bak'
WITH
MOVE 'data_0' TO 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\SampleDB_data_0.mdf',
MOVE 'log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\SampleDBlog.ldf',
MOVE 'XTP' TO 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\SampleDB_xtp.xtp';
备注
若要使用 透明数据加密(TDE)还原静态加密的数据库,SQL Server 的目标实例必须有权访问用于通过 Azure Key Vault 的 SQL Server 连接器保护源数据库的同一密钥。 有关详细信息,请查看 使用 Azure Key Vault 设置 SQL Server TDE 可扩展密钥管理。
注意事项
将数据库还原到 SQL Server 时,请考虑以下事项:
必须使用
WITH MOVE限定符,并为数据文件提供显式路径。使用服务托管的 TDE 密钥加密的数据库无法还原到 SQL Server。 只有在数据库是使用客户管理的密钥加密的,并且目标服务器可以访问用于加密该数据库的相同密钥时,才能将加密的数据库还原到 SQL Server。 有关详细信息,请参阅 使用 Azure Key Vault设置 SQL Server TDE 可扩展密钥管理。
SQL 托管实例的更新策略必须匹配或更高版本的 SQL Server 实例。 还原到 SQL Server 2022 的数据库必须来自具有 SQL Server 2022 更新策略的实例。 同样,还原到 SQL Server 2025 的数据库必须来自具有 SQL Server 2025 更新策略的实例。 还可以使用 SQL Server 2022 更新策略将数据库从具有 SQL Server 2022 更新策略的实例还原到具有 SQL Server 2025 更新策略的实例。 将数据库还原到具有更高版本更新策略的实例后,该数据库将无法再还原到具有较低版本更新策略的实例。 不支持从具有较低版本更新策略的实例中恢复数据库。
将 Azure SQL 托管实例数据库还原到 SQL Server 并删除索引或具有索引的表后,运行命令时可能会看到
DBCC CHECKDB。谨慎
如果按照本方案的描述,在删除索引后对表创建分区索引,该表将变得不可访问。
相关内容
- 若要了解如何创建第一个 SQL 托管实例,请参阅 快速入门指南。
- 有关功能和比较列表,请参阅 SQL 常用功能。
- 有关虚拟网络配置的详细信息,请参阅 SQL 托管实例虚拟网络配置。
- 有关创建 SQL 托管实例并从备份文件还原数据库的快速入门,请参阅 “创建 SQL 托管实例”。
- 有关使用 Azure 数据库迁移服务进行迁移的教程,请参阅使用数据库迁移服务进行 SQL 托管实例迁移。
- 有关 SQL 托管实例的高级监视,请参阅数据库观察程序。
- 有关定价信息,请参阅 SQL 数据库定价。