通过


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

适用于:SQL Server on Azure Virtual Machines

了解将SQL Server迁移到 SQL Server on Azure Virtual Machines(VM)的不同迁移策略。

可以迁移在本地或其他平台上运行的SQL Server:

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

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

概述

如果要将熟悉的SQL Server环境与 OS 控件配合使用,请迁移到 SQL Server on Azure Virtual Machines (VM), 并且想要利用云提供的功能,例如内置的 VM 高可用性、自动备份自动修补

通过使用 Azure Hybrid Benefit 许可模型,或者通过获取 免费安全更新 的支持。

选择适当的目标

Azure Virtual Machines在Azure的许多不同区域中运行,还提供各种机器大小Azure托管磁盘类型

在为 SQL Server 工作负载确定 VM 和存储的正确大小时,请参阅 Azure 虚拟机上的 SQL Server 性能指南。

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

还应考虑在 VM 上正确安装和配置SQL Server。 应使用 Azure SQL 虚拟机映像库,因为这样就可以使用正确的版本、版本号和操作系统创建 SQL Server VM。 此选项还将Azure VM 注册到 SQL Server 资源提供程序,从而启用自动备份和自动修补等功能。

迁移策略

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

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

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

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

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

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

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

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

从 Azure Marketplace 中选择一个 Azure VM,或选择一个与源 SQL Server 版本匹配的已准备好的 SQL Server 映像。
如果需要或希望迁移到SQL Server on Azure Virtual Machines,或者需要升级不再受支持的旧版SQL Server和/或 OS 版本,请使用。

可能需要一些应用程序或用户数据库更改来支持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。

迁移

建议的迁移方法是在本地使用本地 SQL Server backup,然后将该文件复制到 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的所有可用方法:

方法 最低源版本 最低目标版本 源备份大小约束 备注
分布式可用性组 SQL Server 2016 SQL Server 2016 Azure VM 存储限制 分布式可用性组是一种特殊类型的可用性组,横跨两个独立的可用性组。 加入分布式可用性组的可用性组无需位于同一位置并包括跨域支持。

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

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

自动化和脚本编写T-SQLAzCopy到Blob存储
将备份迁移到 URL SQL Server 2012 SP1 CU2 SQL Server 2012 SP1 CU2 SQL Server 2016 的 12.8 TB,否则为 1 TB 使用Azure存储将备份文件移动到 VM 的替代方法。 使用压缩来最大程度地减小传输的备份大小。

自动化和脚本T-SQL 或维护计划
SQL Server Management Studio 中的 SQL Server 迁移组件 SQL Server 2005 SQL Server 2012 SP4 Azure VM 存储限制 SQL Server迁移组件会评估本地SQL Server,然后无缝升级到更高版本的SQL Server或迁移到 Azure VM 上的SQL Server。

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

包括迁移 SQL 和Windows登录名的功能。
拆离和附加 SQL Server 2008 SP4 SQL Server 2014 Azure VM 存储限制 使用此方法当您计划使用 Azure Blob Storage存储这些文件,并且将其附加到Azure VM上的SQL Server实例时,这对于非常大的数据库非常有用,或者当备份和还原的时间过长时。

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

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

自动化和脚本T-SQL
将本地计算机转换为 Hyper-V VHDs,上传到 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 或更高版本迁移,请考虑加密备份在网络传输期间保护数据。

  • 若要最大程度地减少数据库迁移期间的停机时间,请使用 AlwaysOn 可用性组。

  • 对于网络选项限制或无网络的情况,请使用脱机迁移方法(例如备份和还原),或者使用 Azure 中可用的磁盘传输服务。

  • 若要在 Azure VM 上更改 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特性需要手动干预。通过使用SQL Server Management Studio在Transact-SQL(T-SQL)中生成脚本,将其迁移到Azure VM上的SQL Server,然后在Azure VM上的目标SQL Server上运行这些脚本。 一些常用功能包括:

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

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

支持的版本

准备将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 AlwaysOn 可用性组配置中设置多个Azure虚拟机的步骤。
Azure支持每个区域的超级磁盘的虚拟机 这些 PowerShell 脚本提供了一个编程选项,用于检索支持Azure支持超级磁盘的虚拟机的区域列表。

数据 SQL 工程团队开发了这些资源。 此团队的核心任务是消除障碍并加速复杂数据平台迁移项目的现代化,迁移至Microsoft Azure数据平台。