销售电话: 1-800-867-1380

迁移到 Azure 虚拟机中的 SQL Server

更新时间: 2014年3月

本主题介绍如何将基于 Windows Server 平台构建的现有本地 SQL Server 数据库迁移到 Azure 虚拟机 (VM) 中的 SQL Server。本主题还提供何时选择在云上虚拟机中运行 SQL Server 应用程序的决策工作流,或何时将现有 SQL Server 数据库迁移到 Azure SQL Database (SQL Database) 的决策工作流。

借助于虚拟机中的 SQL Server,你能够轻松地将企业范围的应用程序迁移到 Azure,从而降低部署、管理和维护这些应用程序的总拥有成本。要将现有 SQL Server 应用程序迁移到 Azure 虚拟机,只需对代码进行极少的更改或根本不需要更改代码。通过使用虚拟机中的 SQL Server,管理员和开发人员仍可使用可在本地使用的相同开发和管理工具。

作者:Selcin Turkarslan
审校:Evgeny Krivosheev、Paolo Salvatori、Lindsey Allen、Steve Howard

本文内容

使用 Azure 虚拟机中的 SQL Server 可在云中支持许多本地方案:

  • 快速应用程序开发和测试:开发要求在生产类环境中进行某些验证的数据库应用程序。此时不是购买新硬件来执行验证或测试新的应用程序,而是使用虚拟机中的 SQL Server。简单地说,就是通过使用包含 SQL Server 的平台映像来创建虚拟机,或将你自己的映像上载到 Azure。然后,连接到新计算机,移动你的数据并安装应用程序,测试并执行修补程序。

  • 虚拟化平台总拥有成本:将现有的本地虚拟化平台移到 Azure。你不需要购置新硬件以便在你自己的本地虚拟化平台中运行更多的企业范围应用程序,你可以通过在 Azure 虚拟机中利用 SQL Server 基础结构,将这些应用程序转移到 Azure 中。

  • 快速的按需扩展:获得额外的计算机、存储和网络资源,以应对季节性应用程序使用高峰。此时不是购买仅在特定时段才需要的额外硬件,而是在 Azure 虚拟机中使用 SQL Server 基础结构。

  • 数据可用性和移动性:在 Azure 虚拟机中托管 SQL Server 数据库将使数据库同时可用于本地和云应用程序。

以下决策工作流说明何时选择虚拟机中的 SQL Server 和 Azure SQL Database:

  • 对于新的数据库应用程序,使用 Azure SQL Database (SQL Database) 或 Azure 虚拟机中的 SQL Server:

    • 如果 SQL Database 支持所有所需的功能,则在 Azure 中设置一个新的 SQL Database 实例。通过将 Azure SDK 和插件用于 Visual Studio、Java、PHP 或 Node.js,开发新的数据库应用程序。将应用程序部署到 Azure 并在 SQL Database 中创建表。

    • 如果 SQL Database 并非支持所需的所有功能,并且你不希望投资于应用程序数据库的重新设计更改,则在管理门户中使用提供的 SQL Server 平台映像设置新的虚拟机。通过使用 SQL Server Data Tools 创建数据库部署包。将此数据库包部署到虚拟机中的 SQL Server。你可以通过使用传统的管理工具(如 SQL Server Management Studio)管理、升级和监视你的数据库。

  • 对于现有的数据库应用程序,确定首先要将哪些数据库迁移到 Azure 虚拟机中的 SQL Server。然后,选择以下两个选项之一:

    • 通过使用 System Center 2012 Virtual Machine Manager 中的物理机至虚拟机 (P2V) 或虚拟机至虚拟机 (V2V) 向导,将物理机或虚拟机转换为 Hyper-V VHD。通过使用 Add-AzureVHD cmdlet,将 VHD 文件上载到 Azure 存储中。然后可以通过使用上载的 VHD 部署新的虚拟机。你可以通过使用传统的管理工具(如 SQL Server Management Studio)管理、升级和监视你的数据库。

    • 在 Azure 管理门户中,使用 SQL Server 平台映像以及应用程序层云计算资源,设置新的虚拟机。通过使用 SQL Server Data Tools 和 SQL Server Management Studio 创建数据库部署包。通过将 Azure SDK 和插件用于 Visual Studio、Java、PHP 或 Node.js,将现有应用程序层迁移到 Azure 项目。将应用程序层部署到 Azure,并访问你在云中的数据。

在将数据库和数据迁移到 Azure 虚拟机中的 SQL Server 时,请按指定的顺序执行以下步骤:

  1. 使用 DAC、备份或分离准备数据库架构和数据文件。有关详细信息,请参阅下面的如何准备本地架构和数据,并将其上载到虚拟机中的 SQL Server 实例

  2. (可选)压缩和加密你的文件,然后将其传输到 Azure。

  3. 将数据库架构、数据和日志文件传输到 Azure。如果你使用 Add-AzureVHD cmdlet,请先将你的文件放在虚拟硬盘驱动器 (VHD) 上,然后再将 VHD 上载到 Azure。有关详细信息,请参阅下面的如何将数据库架构和数据文件移到 Azure 虚拟机

  4. 将数据库架构和数据文件加载到虚拟机中的 SQL Server。有关详细信息,请参阅下面的如何准备本地架构和数据,并将其上载到虚拟机中的 SQL Server 实例

  5. 重新创建迁移工具无法在 Azure 虚拟机上的 SQL Server 中创建的任何元数据。

从 SQL Server 2014 发行版开始,还可以在 SQL Server Management Studio 中使用“将 SQL Server 数据库部署到 Azure VM 向导”将数据库引擎实例中的数据库部署到 Azure 虚拟机中的 SQL Server。有关详细信息,请参阅将 SQL Server 数据库部署到 Azure 虚拟机

本节介绍如何准备你的本地数据库架构和数据文件。你可以根据需要选择以下几个选项:

你可以使用数据层应用程序 (DAC) 准备要从本地传输到 Azure 中的数据库架构和数据文件:

  • .DACPAC 文件:.dacpac 文件包含与用户的数据库关联的所有 SQL Server 对象(如表、视图和实例对象)的定义。DACPAC 侧重于捕获和部署数据库架构,包括升级现有数据库。有关从现有 SQL Server 数据库提取数据层应用程序 (DAC) 包的详细信息,请参阅从数据库提取 DAC

  • .BACPAC 文件:.bacpac 文件包括数据库架构以及数据库中存储的数据。BACPAC 侧重于捕获架构和数据。它是数据库备份的逻辑等效项,但不能用来升级现有数据库。有关如何创建 .bacpac 文件的详细信息,请参阅导出数据层应用程序

你可以将数据库的架构和数据导出到 BACPAC 文件。然后,你可以将架构和数据导入到主机服务器上的新数据库中。数据库管理工具支持这两种功能:Server Management Studio 和 DACFx API。有关详细信息,请参阅 MSDN 库中的导入 BACPAC 文件以创建新的用户数据库Microsoft.SqlServer.Dac 命名空间

注意:

  • DAC 操作不会自动加密 BACPAC 或 DACPAC 文件。应确保本地与 Azure 之间的通信是安全的。当 bacpac 或 dacfile 文件在 Azure Blob 存储或本地磁盘存储中处于静止状态时,你还可以分别对它们进行加密以获得额外的保护。

  • DAC 不支持全文目录。

  • 为了提高安全性,SQL Server 身份验证登录名存储在 DAC 包中且没有密码。在部署或升级该包时,登录名将作为含有生成的密码的已禁用登录名创建。若要启用这些登录名,请使用具有 ALTER ANY LOGIN 权限的登录名登录,并且使用 ALTER LOGIN 来启用该登录名并且分配可以传达给用户的新密码。对于 Windows 身份验证登录名则无需执行此操作,因为其密码不是由 SQL Server 管理的。

若要将数据库移到另一个 SQL Server 实例或另一台服务器上,可以使用备份和还原操作。如果本地 SQL Server 与虚拟机中的 SQL Server 具有相同版本,则可以将数据库备份文件复制到虚拟机,然后还原数据库。有关详细信息,请参阅备份和还原 SQL Server 数据库

注意:

  • 备份和恢复的速度比 DAC 更快。

  • 你可以创建数据的压缩备份。有关详细信息,请参阅备份压缩

  • 你可以使用熟悉的现有工具,如 SQL Server Management Studio 备份向导以及第三方工具。

  • 将数据库移到其他服务器实例时,必须在目标服务器实例的 master 和 msdb 中重新创建依赖实体和依赖对象的所有元数据。有关详细信息,请参阅当数据库在其他服务器实例上可用时管理元数据

若要将数据库移到另一个 SQL Server 实例或另一台服务器上,可以使用分离和附加操作。将数据(.mdf、.ndf)和日志 (.ldf) 文件复制到虚拟机的本地文件夹中,然后附加数据库。有关详细信息,请参阅使用分离和附加移动数据库

注意:

  • 分离数据库会将数据库从 SQL Server 实例中删除,但使数据库在其数据文件和事务日志文件中保持不变。它需要使源数据库脱机。这种方法最适合升级数据库或移动非常大的数据库。

  • 如果存在下列任何情况,则不能分离数据库:

    • 已复制并发布数据库。

    • 数据库中存在数据库快照。

    • 该数据库正在某个数据库镜像会话中进行镜像。

    • 数据库处于可疑状态。

    • 数据库为系统数据库。

  • 建议你在分离之前,执行新的完整备份并重新启动差异备份。

  • 当执行数据库分离和附加操作时,可使用数据压缩功能压缩数据库中的数据,减小数据库的大小。此外还可对分离的文件使用单独压缩和解压缩工具。

  • 将数据库附加到其他服务器实例时,为了给用户和应用程序提供一致的体验,你最好在其他服务器实例上为数据库重新创建部分或全部元数据(例如登录名和作业)。有关详细信息,请参阅当数据库在其他服务器实例上可用时管理元数据

可以使用以下其他技术在服务器之间复制或移动数据库:

  • 可以使用 SQL Server Management Studio 中的“复制数据库向导”在服务器之间复制或移动数据库,或者将 SQL Server 数据库升级到更高版本。有关详细信息,请参阅使用复制数据库向导。如果你要使用此工具将数据库从本地复制到 Azure,则需要为混合连接设置 Azure 虚拟网络

  • SQL Server 导入和导出向导为在数据源之间复制数据和构造基本包提供了一种方法。有关此向导的详细信息,请参阅 SQL Server 导入和导出向导。SQL Server 导入和导出向导的作用是将数据从源复制到目标。该向导还可以为你创建目标数据库和目标表。但是,如果必须复制多个数据库或表,或者必须复制其他类型的数据库对象,则应改用复制数据库向导。如果你要使用 SQL Server 导入和导出向导将数据库从本地复制到 Azure,则需要为混合连接设置 Azure 虚拟网络

  • 你可以使用“生成和发布脚本向导”创建脚本,以在 SQL Server 数据库引擎的实例之间传输数据库。生成的脚本可以在数据库引擎的另一个实例上运行。你还可以使用该向导将数据库的内容直接发布到使用 Database Publishing Services 创建的 Web 服务。你可以为整个数据库创建脚本,或将其限制为特定的对象。有关详细信息,请参阅生成和发布脚本向导

  • 你可以使用 SQL Server 管理对象 (SMO) 库的 Transfer 类。有关详细信息,请参阅传输数据。SMO 允许源数据库和目标数据库保持在线,并且不要求在一个单独步骤中将数据库移入/移出 Azure blob 存储。SMO 的缺点是它要在使用 TDS 的任何一端对数据库使用客户端连接,这对于大型数据集而言效率非常低。

  • 传输数据库任务可以在 SQL Server 的两个实例之间复制或移动 SQL Server 数据库。可以使用联机模式或脱机模式传输数据库。在使用联机模式时,数据库保持连接的情况下,通过使用 SQL 管理对象 (SMO) 复制数据库对象来传输数据库。在使用脱机模式时,数据库断开连接,然后复制或移动数据库文件,在传输成功完成后,数据库连接到目标服务器。

当使用远程桌面进行连接时,你可以使用复制/粘贴操作将小文件(数据库备份、BACPAC 或 DACPAC 文件)复制到虚拟机。

若要传输较大的文件,请选择下列选项之一:

  • 使用 Add-AzureVhd cmdlet 将 VHD 文件上载到 Azure。一个 VHD 文件可以包括一个数据库。有关详细信息,请参阅创建和上载包含 Windows Server 操作系统的虚拟硬盘

  • 将文件上载到与虚拟机相同的数据中心内的 BLOB 存储中,然后通过远程桌面连接到虚拟机,并从 BLOB 存储下载此文件。有关详细信息,请参阅了解云存储

  • 直接将架构和数据文件复制到虚拟机中的共享文件夹。

  • 使用 Web 浏览器从 Internet 下载一个数据库。例如,你可以从 codeplex 下载 AdventureWorks 数据库

下表描述了当你想要将文件移到 Azure 虚拟机时可以使用的一些常见传输方法。该表还说明每种方法的优缺点。

 

传输方法 优点 缺点

使用 add-AzureVhd cmdlet 将 VHD 复制到 Azure Blob 存储

  • 速度快,已针对 Azure 进行优化

  • 工具可以处理不可靠的连接

  • 安全传输

  • Microsoft 提供了 Add-AzureVhd cmdlet。如果需要图形用户界面,你目前可以使用第三方工具。

  • 在使用 Add-AzureVhd cmdlet 将 VHD 上载到 Azure 之前,你必须准备好 VHD,并在门户中创建和上载管理证书。

  • 需要将上载的 VHD 作为数据磁盘附加到 Azure 虚拟机。

文件复制到虚拟机共享

  • 易于使用

  • 提供了多个客户端工具

  • 文件直接放到虚拟机

  • 它需要 VPN 连接。

  • 只有少量文件复制工具支持重新启动和恢复。

有关如何在虚拟机中安装、配置和部署 SQL Server 的信息,请参阅教程:在 Azure 中设置 SQL Server 虚拟机。本教程介绍如何使用 Azure 管理门户从库中选择并安装虚拟机。此外,它说明了如何使用远程桌面连接到虚拟机,还介绍了如何使用 SQL Server Management Studio 连接到虚拟机中的 SQL Server。

有关更全面的信息,请参阅准备迁移到 Azure 虚拟机中的 SQL ServerAzure 虚拟机中的 SQL Server 部署

另请参阅

本文是否对您有所帮助?
(1500 个剩余字符)
感谢您的反馈
显示:
© 2014 Microsoft