导出 (0) 打印
全部展开
此主题尚未评级 - 评价此主题

迁移到 Windows Azure 虚拟机中的 SQL Server

更新时间: 2014年3月

注:本页面内容可能不完全适用中国大陆地区运营的 Windows Azure服务。如要了解不同地区 Windows Azure 服务的差异, 请参考本网站.

从 Windows Azure 2012 开始,您可以轻松地将在 Windows Server 平台上构建的现有 SQL Server 应用程序迁移到 Windows Azure 虚拟机。本主题提供如何将您的本地 SQL Server 数据库通过 Windows Azure 虚拟机 (VM) 中的 SQL Server 迁移到云的概述。本主题还提供何时选择在云上虚拟机中运行 SQL Server 应用程序的决策工作流或何时将现有 SQL Server 数据库迁移到 Windows Azure SQL Database (SQL Database) 的决策工作流。

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

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

本文内容

何时使用 Windows Azure 虚拟机中的 SQL Server

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

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

  • 虚拟化平台总拥有成本:将现有的本地虚拟化平台移到 Windows Azure。此时不是购买新硬件来在您自己的虚拟化平台本地运行越来越多的企业范围的应用程序,而是通过在 Windows Azure 虚拟机中利用 SQL Server 基础结构,将它们移到 Windows Azure 中。

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

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

在 Windows Azure 虚拟机中的 SQL Server 与 Windows Azure SQL Database 之间进行选择

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

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

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

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

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

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

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

将数据库架构和数据迁移到 Windows Azure 虚拟机中的 SQL Server

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

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

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

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

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

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

如何准备本地架构和数据,并将其上载到虚拟机中的 SQL Server 实例

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

选项 1:数据层应用程序 .BACPAC 或 .DACPAC 文件

您可以使用数据层应用程序 (DAC) 准备要从本地传输到 Windows 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 文件。应确保本地与 Windows Azure 之间的通信是安全的。当 bacpac 或 dacfile 文件在 Windows Azure Blob 存储或本地磁盘存储中处于静止状态时,您还可以分别对它们进行加密以获得额外的保护。

  • DAC 不支持全文目录。

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

选项 2: 备份和还原

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

注意:

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

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

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

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

选项 3: 分离和附加

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

注意:

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

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

    • 已复制并发布数据库。

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

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

    • 数据库处于可疑状态。

    • 数据库为系统数据库。

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

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

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

选项 4: 其他 SQL Server 技术

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

  • 可以使用 SQL Server Management Studio 中的“复制数据库向导”在服务器之间复制或移动数据库,或者将 SQL Server 数据库升级到更高版本。有关详细信息,请参阅使用复制数据库向导

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

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

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

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

如何将数据库架构和数据文件移到 Windows Azure 虚拟机

当使用远程桌面进行连接时,您可以使用复制/粘贴操作将小文件(数据库备份、BACPAC 或 DACPAC 文件)复制到虚拟机。要传输较大的文件,请选择下列选项之一:

  • 使用 CSUpload 命令行工具 (CSUpload.exe) 将 VHD 文件上载到 Windows Azure。一个 VHD 文件可以包括一个数据库。有关详细信息,请参阅创建和上载包含 Windows Server 操作系统的虚拟硬盘

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

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

  • 通过使用 FTP 传输文件。有关 FTP 的详细信息,请参阅 FTP 发布服务

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

下表介绍一些常见的传输方法,当您要将文件移动到 Windows Azure 虚拟机时,可以使用这些方法。该表还说明每种方法的优缺点。

 

传输方法 优点 缺点

使用 CsUpload 工具将 VHD 复制到 Windows Azure Blob 存储

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

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

  • 安全传输

  • Microsoft 提供了 CSUpload 工具。如果需要图形用户界面,您目前可以使用第三方工具。

  • 在使用 CSUpload 工具将 VHD 上载到 Windows Azure 之前,您必须准备好 VHD;并在门户中创建和上载管理证书。

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

文件复制到虚拟机共享

  • 易于使用

  • 提供了多个客户端工具

  • 文件直接放到虚拟机

  • 它需要 VPN 连接。

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

FTP 文件传输

  • 易于使用

  • 提供了多个客户端工具

  • 文件直接放到虚拟机

可能很难实现安全传输。

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

有关更全面的信息,请参阅Getting Ready to Migrate to SQL Server in Windows Azure Virtual MachinesSQL Server Deployment in Windows Azure Virtual Machines

使用 Windows Azure 虚拟机中的 SQL Server 时的高可用性和灾难恢复

另请参见

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

社区附加资源

添加
显示:
© 2014 Microsoft. 版权所有。