迁移概述:将 SQL Server 迁移到 Azure VM 上的 SQL Server

适用于: Azure 虚拟机上的 SQL Server

了解将 SQL Server 迁移到 Azure 虚拟机 (VM) 上的 SQL Server 的不同迁移策略。

你可以迁移在本地或以下位置运行的 SQL Server:

  • 虚拟机上的 SQL Server
  • Amazon Elastic Compute Cloud (Amazon EC2)
  • Amazon 关系数据库服务 (Amazon RDS)
  • Google Compute Engine

有关其他迁移指南,请参阅数据库迁移

概述

当想要使用熟悉的 SQL Server 环境以及 OS 控件,并想要利用云提供的功能(例如内置的 VM 高可用性、自动备份自动修补)时,可迁移到 Azure 虚拟机 (VM) 上的 SQL Server

通过使用 Azure 混合权益许可模型提供自己的许可证,或通过获取免费安全更新程序扩展对 SQL Server 2012 的支持,从而节省成本。

选择适当的目标

Azure 虚拟机在 Azure 的许多不同区域运行,还提供各种计算机大小Azure 托管磁盘类型。 在确定 SQL Server 工作负载 VM 和存储的适当大小时,请参阅 Azure 虚拟机上 SQL Server 的性能准则

可以使用适用于 Azure Data Studio 的 Azure SQL 迁移扩展来获取 Azure 虚拟机上适当大小的 SQL Server 建议。 该扩展从源 SQL Server 实例收集性能数据,旨在提供适当大小的 Azure 建议,以最低成本满足工作负载的性能需求。 要了解详细信息,请参阅获取迁移 SQL Server 数据库的 Azure 建议

若要确定数据资产中所有工作负载的 VM 大小和存储要求,应通过基于性能的 Azure Migrate 评估来调整它们的大小。 如果无法使用该选项,请参阅以下文章,了解如何创建自己的性能基准

另请注意 VM 上 SQL Server 的正确安装和配置方式。 应使用 Azure SQL 虚拟机映像库,因为通过它可以创建版本、编辑和操作系统都正确的 SQL Server VM。 此外,这样还会自动向 SQL Server 资源提供程序注册 Azure VM,从而启用自动备份和自动修补等功能。

迁移策略

将用户数据库迁移到 Azure VM 上的 SQL Server 实例有两种迁移策略:迁移和直接迁移 。

哪种方法适合你的业务通常取决于以下因素:

  • 迁移的大小和规模
  • 迁移速度
  • 应用程序对更改代码的支持情况
  • 需要更改 SQL Server 版本、操作系统还是同时更改两者。
  • 现有产品的可支持生命周期
  • 迁移过程中应用程序的故障时间窗口

下表描述了两种迁移策略的不同之处:

迁移策略 说明 使用时机
直接迁移 使用“直接迁移”迁移策略,是将整个物理或虚拟 SQL Server 从其当前位置都移动到 Azure VM 上的 SQL Server 实例,而不对操作系统或 SQL Server 版本进行任何更改。 要使用直接迁移完成迁移,请参阅 Azure Migrate

源服务器保持联机并保留服务请求,同时源服务器和目标服务器同步数据,从而实现几乎无缝的迁移。
可用于单个迁移乃至大规模的迁移,适用于数据中心退出等场景。

只需对用户 SQL 数据库或应用程序代码进行少许更改,甚至不需要更改,从而更快实现整体迁移。

迁移商业智能服务(如 SSISSSRSSSAS)无需执行额外的步骤。
迁移 在想要升级目标 SQL Server 和/或操作系统版本时,可使用迁移策略。

从 Azure 市场中选择一个 Azure VM,或从与源 SQL Server 版本匹配的已准备 SQL Server 映像中选择一个。

使用适用于 Azure Data Studio 的 Azure SQL 迁移扩展可进行评估、获取适当大小的 Azure 配置建议(VM 系列、计算和存储)以及将 SQL Server 数据库迁移到 Azure 虚拟机上的 SQL Server,此过程的故障时间最短。
在需要或想要迁移到 Azure 虚拟机上的 SQL Server 时,或者需要升级不再支持的旧 SQL Server 和/或操作系统版本时使用。

可能需要对应用程序或用户数据库进行一些更改,才能支持 SQL Server 升级。

如果在迁移范围内迁移商业智能服务,则可能需要考虑一些其他事项。

直接迁移

下表详细介绍了“直接迁移”迁移策略中将 SQL Server 迁移到 Azure VM 上 SQL Server 的可用方法:

方法 最低源版本 最低目标版本 源备份大小约束 备注
Azure Migrate SQL Server 2008 SP4 SQL Server 2012 SP4 Azure VM 存储限制 将现有 SQL Server 按原样移动到 Azure VM 上 SQL Server 的实例。 可大规模迁移多达 35000 个 VM 的工作负载。

源服务器在同步服务器数据期间将保持联机并处理请求,从而最大程度地缩短故障时间。

自动化和脚本Azure Site Recovery 脚本Azure 规模迁移和计划示例

注意

现在,可以使用 Azure Migrate 将故障转移群集实例可用性组解决方案直接迁移到 Azure VM 上的 SQL Server。

Migrate

由于设置简单,因此建议采用在本地执行本机 SQL Server 备份,然后再将该文件复制到 Azure 的迁移方法。 对于自 2008 年开始的所有版本的 SQL Server,这种方法都支持使用更大的数据库 (>1 TB),以及更大的数据库备份 (>1 TB)。 从 SQL Server 2014 开始,对于小于 1 TB 并能与 Azure 建立良好连接的数据库,更好的方法是将 SQL Server 备份到 URL

将 SQL Server 数据库迁移到 Azure VM 上的 SQL Server 实例时,务必选择一种适合需要切换到目标服务器时情况的方法,因为这会影响应用程序的故障时间窗口。

下表详细说明了将 SQL Server 数据库迁移到 Azure VM 上 SQL Server 的所有可用方法:

方法 最低源版本 最低目标版本 源备份大小约束 备注
适用于 Azure Data Studio 的 Azure SQL 迁移扩展 SQL Server 2008 SQL Server 2012 Azure VM 存储限制 这是适用于 Azure Data Studio 的 Azure SQL 迁移扩展中的一个易于使用的向导式扩展,用于将 SQL Server 数据库迁移到 Azure 虚拟机上的 SQL Server。 使用压缩来最大程度地减小传输的备份大小。

适用于 Azure Data Studio 的 Azure SQL 迁移扩展在一个简单的用户界面中提供了评估、Azure 建议和迁移功能,并支持故障时间最短的迁移。
分布式可用性组 SQL Server 2016 SQL Server 2016 Azure VM 存储限制 分布式可用性组是一种特殊类型的可用性组,横跨两个独立的可用性组。 加入分布式可用性组的可用性组无需位于同一位置并包括跨域支持。

此方法可最大程度地减少故障时间。 用于你已在本地配置可用性组时。

自动化和脚本T-SQL
备份到文件 SQL Server 2008 SP4 SQL Server 2012 SP4 Azure VM 存储限制 这是一项简单且经过严格测试的技术,适用于跨计算机移动数据库。 使用压缩来最大程度地减小传输的备份大小。

自动化和脚本Transact-SQL (T-SQL)从 AzCopy 迁移到 Blob 存储
将备份迁移到 URL SQL Server 2012 SP1 CU2 SQL Server 2012 SP1 CU2 对于 SQL Server 2016 为 12.8 TB;其他情况下为 1 TB 另一种方法是使用 Azure 存储将备份文件移至 VM。 使用压缩来最大程度地减小传输的备份大小。

自动化和脚本T-SQL 或维护计划
数据迁移助手 (DMA) SQL Server 2005 SQL Server 2012 SP4 Azure VM 存储限制 DMA 会评估本地 SQL Server,然后再无缝升级到 SQL Server 的更高版本,或者迁移到 Azure VM 上的 SQL Server、Azure SQL 数据库或 Azure SQL 托管实例。

不应在启用文件流的用户数据库上使用。

DMA 还包括迁移 SQL 和 Windows 登录名以及评估 SSIS 包的功能。

自动化和脚本命令行接口
拆离和附加 SQL Server 2008 SP4 SQL Server 2014 Azure VM 存储限制 这种方法适用于以下情况:计划使用 Azure Blob 存储来存储这些文件,并将这些文件附加到 Azure VM 上的 SQL Server 实例时,特别是对于非常大的数据库或备份和还原时间很长的情况非常有用。

自动化和脚本T-SQL从 AzCopy 迁移到 Blob 存储
日志传送 SQL Server 2012 SP4(仅限 Windows) SQL Server 2012 SP4(仅限 Windows) Azure VM 存储限制 日志传送会将事务日志文件从本地复制到 Azure VM 上的 SQL Server 实例中。

这样可在故障转移期间最大程度地缩短故障时间,并且配置开销低于设置 Always On 可用性组。

自动化和脚本T-SQL
将本地计算机转换为 Hyper-V VHD,上传到 Azure Blob 存储,并使用上传的 VHD 部署一个新虚拟机 SQL Server 2012 或更高版本 SQL Server 2012 或更高版本 Azure VM 存储限制 在以下场合使用:使用自己的 SQL Server 许可证时;迁移的数据库在较旧版本的 SQL Server 上运行时;或者将系统数据库和用户数据库一起作为依赖于其他用户数据库和/或系统数据库的数据库的一部分进行迁移时。
使用 Windows 导入/导出服务运送硬盘驱动器 SQL Server 2012 或更高版本 SQL Server 2012 或更高版本 Azure VM 存储限制 当手动复制方法速度太慢时使用 Windows 导入/导出服务,比如复制非常大的数据库

对于限制为无网络选项的大型数据传输,请参阅低或无网络带宽的大型数据集的数据传输

提示

你可以使用 Azure Migrate 将故障转移群集实例可用性组解决方案直接迁移到 Azure VM 上的 SQL Server。

注意事项

下表提供了查看迁移方法时要考虑的要点:

  • 为获得最佳数据传输性能,请使用压缩的备份文件将数据库和文件迁移到 Azure VM 上的 SQL Server 实例。 对于较大的数据库,除压缩之外,还可将备份文件拆分为较小的文件,以便在备份和传输过程中提高性能。
  • 如果要从 SQL Server 2014 或更高版本迁移,请考虑在网络传输过程中加密备份,以保护数据。
  • 若要最大程度地缩短数据库迁移期间的停机时间,请使用 Azure Data Studio 中的 Azure SQL 迁移扩展或 Always On 可用性组选项。
  • 对于网络受限或无网络选项,请使用 Azure 中提供的脱机迁移方法,例如备份和还原或磁盘传输服务
  • 此外,要在 Azure VM 上的 SQL Server 中更改 SQL Server 版本,请参阅更改 SQL Server 版本

商业智能

在迁移数据库迁移范围之外的 SQL Server 商业智能服务时,可能会有其他注意事项。

SQL Server Integration Services

可以使用以下两种方法之一将 SSISDB 中的 SQL Server Integration Services (SSIS) 包和项目迁移到 Azure VM 上的 SQL Server。

如果将 SSIS 包部署为包部署模型,则可以在迁移之前转换它们。 有关详细信息,请参阅项目转换教程

SQL Server Reporting Services

若要将 SQL Server Reporting Services (SSRS) 报表迁移到 Azure VM 上的目标 SQL Server,请参阅迁移 Reporting Services 安装(本机模式)

或者,也可以将 SSRS 报表迁移到 Power BI 中的分页报表。 使用 RDL 迁移工具来帮助准备和迁移报表。 Microsoft 开发了此工具来帮助客户将报表定义语言 (RDL) 报表从 SSRS 服务器迁移到 Power BI。 它在 GitHub 上提供,并记录了迁移方案的端到端演练。

SQL Server Analysis Services

可以使用以下选项之一将 SQL Server Analysis Services 数据库(多维或表格模型)从源 SQL Server 迁移到 Azure VM 上的 SQL Server:

  • 使用 SSMS 以交互方式
  • 以编程方式使用分析管理对象 (AMO)
  • 使用 XMLA (XML for Analysis) 借助于脚本

有关详细信息,请参阅移动 Analysis Services 数据库

另外,可以考虑使用新的 XMLA 读/写终结点将本地 Analysis Services 表格模型迁移到 Azure Analysis ServicesPower BI Premium

服务器对象

根据源 SQL Server 中的设置,可能还有其他 SQL Server 功能需要手动干预才能将其迁移到 Azure VM 上的 SQL Server,方法是使用 SQL Server Management Studio 在 Transact-SQL (T-SQL) 中生成脚本,然后在 Azure VM 上的目标 SQL Server 上运行脚本。 一些常用功能包括:

  • 登录名和角色
  • 链接服务器
  • 外部数据源
  • 代理作业
  • 警报
  • 数据库邮件
  • 复制

有关需要移动的元数据和服务器对象的完整列表,请参阅使数据库在另一台服务器上可用时管理元数据

支持的版本

在准备将 SQL Server 数据库迁移到 Azure VM 上的 SQL Server 时,请务必考虑支持的 SQL Server 版本。 有关 Azure VM 上当前支持的 SQL Server 版本列表,请参阅 Azure VM 上的 SQL Server

迁移资产

如需更多帮助,请参阅以下资源,这些资源是为支持实际迁移项目而开发的。

资产 说明
数据工作负荷评估模型和工具 此工具为给定的工作负荷提供了建议的“最佳匹配”目标平台、云就绪和应用程序/数据库修正级别。 它提供简单的、单一选择的计算和报表生成功能,通过提供统一的自动化目标平台决策过程,帮助加速大规模评估。
使用 Logman 自动执行 Perfmon 数据收集 用于收集 Perfmon 数据以了解基线性能的工具,该工具可帮助建议迁移目标。 该工具使用 logman.exe 创建命令,该命令可创建、启动、停止和删除远程 SQL Server 上设置的性能计数器。
Multiple-SQL-VM-VNet-ILB 此白皮书概述在 SQL Server Always On 可用性组配置中设置多个 Azure 虚拟机的步骤。
每个区域支持超级 SSD 的 Azure 虚拟机 这些 PowerShell 脚本提供一个编程选项,可用于检索支持超级 SSD 的 Azure 虚拟机的区域列表。

数据 SQL 工程团队开发了这些资源。 此团队的核心章程是解锁和加速到 Microsoft 的 Azure 数据平台的数据平台迁移项目的复杂现代化进程。