导出 (0) 打印
全部展开

将数据迁移到 Azure SQL Database:工具和技术

更新时间: 2014年5月

本文档介绍如何将数据定义(架构)和数据迁移到 Microsoft Azure SQL Database。本文档主要针对从 SQL Server 到 Azure SQL Database 的一次性迁移。

Microsoft Azure 为数据存储提供了若干选项。你可以在你的项目中使用其中一个或多个选项。

Microsoft Azure SQL Database 是在 Azure 平台上以服务形式提供的一种 SQL Server 技术。基于云的 Azure SQL Database 解决方案可提供许多好处,包括快速设置、经济高效的可伸缩性、高可用性和降低管理开销。Azure SQL Database 支持用于本地 SQL Server 应用程序的相同工具和开发实践。因此,对于大多数开发人员来说,这种体验应该是很熟悉的。

从长远来看,SQL Server 和 Azure SQL Database 在功能和能力上是趋于一致的。但是,在将数据库迁移到 Azure SQL Database 和开发 Azure SQL Database 解决方案时,在体系结构和实现上存在一些当前需要解决的差异。

在将数据库迁移到 Azure SQL Database 之前,理解何时迁移以及 Azure SQL Database 和 SQL Server 之间的差异十分重要。

在 Azure 平台上有三个主要的存储产品。Azure 存储包含表、Blob 和队列。在设计 Azure 解决方案时,应该对不同的选项进行评估,并针对解决方案的不同部分使用合适的存储机制,以提供最佳性能。若要了解有关 Azure 新服务层及产品的信息,请阅读“Azure SQL Database 服务层(版本)”。

 

存储产品

用途

最大大小

Microsoft Azure SQL Database

关系数据库管理系统

150 GB

Azure 存储

Blob

诸如视频或音频等大型二进制对象的持久存储

200 GB 或 1 TB

针对结构化数据的持久存储

100 TB

队列

针对进程间消息的持久存储

100 TB

本地存储

按实例的临时存储

250 GB 到 2 TB

本地存储为本地运行的应用程序实例提供临时存储。本地存储仅可由本地实例访问。如果实例在不同硬件上重新启动(如发生硬件故障或进行硬件维护时),本地存储中的数据将不再能够继续用于该实例。如果应用程序要求数据具有可靠的持久性、想要在实例之间共享数据或者访问 Azure 外部的数据,请考虑改用 Azure 存储空间帐户或 Microsoft Azure SQL Database。

Azure SQL Database 通过在服务器端执行的查询、事务和存储过程来提供数据处理功能,并且只有结果返回到应用程序。如果你的应用程序需要进行数据处理并涉及到对有限大小的数据执行联接和关系操作,则 Azure SQL Database 是一个很好的选择。如果你的应用程序只是存储和检索大型数据集,但不需要进行数据处理,则 Azure 表存储是更好的选择。

对于高级层,Azure SQL Database 大小限制当前设置为 500 GB;与 Azure 存储空间相比,Azure SQL Database 的成本要昂贵得多。因此,请考虑将 Blob 数据转移到 Azure Blog 存储空间。这样,你可以减轻数据库大小限制方面的压力并且降低操作成本。若要了解有关 Azure 新服务层及产品的信息,请阅读“Azure SQL Database 服务层(版本)”。

与 SQL Server 相似,Azure SQL Database 为基于 Transact-SQL 的数据库访问公开表格格式数据流 (TDS) 接口。这允许你的数据库应用程序采用与它们使用 SQL Server 相同的方式来使用 Azure SQL Database。

与 SQL Server 管理不同,Azure SQL Database 从物理管理中提取逻辑管理;你继续管理数据库、登录名、用户和角色,但 Microsoft 会管理和配置硬盘驱动器、服务器和存储之类的物理硬件。因为 Microsoft 处理所有物理管理,所以,在管理、设置、Transact-SQL 支持、编程模型和功能方面,Azure SQL Database 和 SQL Server 之间存在一些差异。

下表概述了其中一些主要差异:

  • 数据库大小

    Azure SQL Database 目前提供以下版本:

    • Web Edition,分别为 1 GB 和 5 GB 大小。

    • Business Edition,分别为 10、20、30、40、50、100、150 GB 大小。

    • 高级版支持最大容量为 500 GB 的数据库。

    请务必查看你的数据库的大小以及它适合 Azure SQL Database 所使用哪种数据库容限。如果你的数据库大于 Azure SQL Database 大小限制,则必须检查数据库并确定是否可以将该数据库拆分为若干更小的数据库(即分片),或者将大型数据移到 Window Azure Blob 存储空间中。有关数据库分片的详细信息,请参阅向外扩展 Azure SQL Database

  • 身份验证

    Azure SQL Database 仅支持 SQL 身份验证。你必须考虑是否需要对你的应用程序使用的身份验证架构进行更改。有关安全限制的详细信息,请参阅安全指导原则和限制

  • SQL Server 数据库版本

    Azure SQL Database 基于 SQL Server 2014。如果你想要将 SQL Server 2000 或 SQL Server 2005 数据库迁移到 Azure SQL Database,则必须确保你的数据库与 SQL Server 2014 兼容。你将会发现,最佳的途径是从 SQL Server 2014 迁移到 Azure SQL Database。你可以在迁移到 Azure SQL Database 前内部升级到 SQL Server 2014。下面这些有用的资源可帮助你从旧版 SQL Server 进行迁移:升级到 SQL Server 2014Microsoft SQL Server 2014 升级顾问

  • Schema

    Azure SQL Database 不支持堆。所有表都必须具有聚集索引,然后才能插入数据。有关聚集索引要求的详细信息,请参阅 Azure SQL Database 内幕

  • Transact-SQL 可支持性

    Microsoft Azure SQL Database 支持一部分 Transact-SQL 语言。在将数据库部署到 Azure SQL Database 之前,你必须修改脚本,使其仅包括支持的 Transact-SQL 语句。有关详细信息,请参阅 Transact-SQL 参考(数据库引擎)

  • Use 语句

    在 Azure SQL Database 中,USE 语句不在数据库之间切换。若要更改数据库,必须直接连接到该数据库。

  • 价格

    你的 Azure SQL Database 订阅的价格是以数据库和所用的版本为基准。任意时间数据进出数据中心的数据传输量需要另行收费。你可以选择是在内部运行你的应用程序代码并且连接到你在数据中心的 Azure SQL Database,还是在 Azure 中运行你的应用程序代码,后者与你的 Azure SQL Database 在同一个数据中心中托管。在 Azure 中运行应用程序代码可避免额外的数据传输费用。对于上述的任何一种情况,你都应该注意,使用任一模型均无法避免 Internet 网络延迟。有关详细信息,请参阅价格概述

  • 功能限制

    Azure SQL Database 目前不支持某些 SQL Server 功能。其中包括:SQL 代理、全文搜索、Service Broker、备份和还原、公共语言运行时和 SQL Server Integration Services。有关详细列表,请参阅 SQL Server 功能限制。若要了解有关备份和还原选项的信息,请阅读 Azure SQL Database 备份和还原

在使用 Azure SQL Database 之类基于云的数据库时,都需要通过 Internet 或其他复杂网络进行连接。因此,你应该准备好处理意外的网络中断。

Azure SQL Database对共享资源提供一个大型的多用户数据库服务。为了向所有 Azure SQL Database 客户提供良好的体验,在某些情况下,我们可能会关闭你与服务的连接。

下表列出了连接终止的原因:

  • 网络延迟

    延迟将导致增加将数据传输到 Azure SQL Database 所需的时间。缓解这一影响的最佳方式是使用多个并行流来传输数据。但是,并行性的效率会受网络带宽的限制。

    Azure SQL Database 允许你在不同的数据中心创建数据库。根据你的位置以及网络连接性,你的位置和各数据中心之间的网络延迟会有所不同。为了帮助降低网络延迟,请选择最接近你的大多数用户的数据中心。有关测量网络延迟的信息,请参阅测试与 Azure SQL Database 的客户端延迟

    在 Azure 中承载你的应用程序代码有利于提高你的应用程序的性能,因为这样做可以将与你的应用程序数据对 Azure SQL Database 的请求相关联的网络延迟时间降至最低。

    最小化网络往返行程也可以帮助减少与网络相关的问题。

  • 数据库故障转移

    Azure SQL Database 将你的数据的多个冗余副本复制到多个物理服务器上,以便维护数据可用性和业务连续性。在发生硬件故障或升级时,Azure SQL Database 提供自动故障转移,从而优化了你的应用程序的可用性。目前,某些故障转移行为会导致会话的意外终止。

  • 负载平衡

    Azure SQL Database 中的负载平衡器确保对数据中心中的物理服务器和服务的最佳使用。当计算机的 CPU 使用率、输入/输出 (I/O) 延迟或者繁忙工作线程数超过阈值时,Azure SQL Database 可能会终止事务并且断开会话的连接。

  • 限制

    为了确保所有订户都接收适当的资源共享并且没有任何订户以牺牲其他订户为代价独占资源,Azure SQL Database 可能会基于某些条件关闭或“限制”订户连接。Azure SQL Database 引擎限制服务会持续监视某些性能阈值以便评估系统的运行状况,并且可能会根据特定订户对系统运行状况的影响程度,针对这些订户启动不同的限制级别。

    Azure SQL Database 引擎限制将监视以下性能阈值:

    • 分配给使用中的 Azure SQL Database 物理数据库的空间百分比,软限制百分比和硬限制百分比相同。

    • 为 Azure SQL Database 日志文件分配的空间的使用百分比。日志文件在订户之间共享。软限制百分比和硬限制百分比不同。

    • 写入日志驱动器时的延迟毫秒数,软限制百分比和硬限制百分比不同。

    • 读取数据文件时的延迟毫秒数,软限制百分比和硬限制百分比相同。

    • 处理器使用率,软限制百分比和硬限制百分比相同。

    • 各个数据库的大小(相对于数据库订阅所允许的最大大小),软限制百分比和硬限制百分比相同。

    • 为数据库的活动请求提供服务的工作线程总数,软限制百分比和硬限制百分比不同。如果超出此阈值,选择要阻止的数据库的条件与针对其他阈值的条件不同。与发生流量速率最高的数据库相比,使用工作线程数量最多的数据库更有可能性成为限制的目标。

有关详细信息,请参阅 Azure SQL Database 连接管理Azure SQL Database 性能和伸缩性指南

处理连接丢失的最佳方式就是重新建立连接,然后重新执行失败的命令或查询。有关详细信息,请参阅暂时性故障处理框架

你可以对数据库采取以下措施来改进迁移性能:

  • 延迟非聚集索引的创建或禁用非聚集索引。在加载数据之前创建的其他索引可能会明显增加加载相同数据量所用的时间。

  • 禁用触发器和约束检查。在将某一行插入一个表中时可能会触发触发器,并且导致该行重新插入到另一个表中。触发器可能会导致延迟,并且你可能不希望重新执行这些类型的插入。

  • 如果根据表的聚集索引对要导入的数据排序,则将提高大容量导入的性能。有关详细信息,请参阅大容量导入数据时控制排序顺序

SQL Server Integration Services (SSIS) 和 bcp 实用工具在大型数据迁移方面表现出色。

在将大型数据加载到 Azure SQL Database 时,最好将你的数据拆分为多个并发流,以便获得最佳性能。

默认情况下,数据文件中的所有行均作为一个批次导入。若要将行分为多个批次进行操作,请在批次可用时指定一个批次大小。如果任何批次的事务失败,则将只回滚当前批次中的插入。已经由已提交事务导入的批次不会受到将来失败的影响。最好根据你的特定情况和环境对多种批次大小设置进行测试,以便找到最佳的批次大小。

有若干不同的工具可用于将数据库迁移到 Azure SQL Database。通常,数据库迁移包括架构迁移和数据迁移。一些工具支持这两种迁移,一些工具仅支持其中一种。你甚至可以使用大容量复制 API 来创作你自己的自定义数据上载应用程序。

 

工具

Schema

Azure SQL Database 兼容性检查

Data

数据传输效率

备注

DAC 包

N/A

  • 包含所有数据库对象、但不包含数据的实体

  • 完全 Azure SQL Database 支持

DAC BACPAC 导入导出

  • DAC 以及具有 DAC 框架的数据的导出/导入

  • 为仅限云的支持提供的服务

  • CodePlex 上提供的 SQL DAC 示例

SSMS 生成脚本向导

一些

较差

  • 具有针对 Azure SQL Database 脚本生成的显式选项

  • 适合于较小的数据库

bcp

N/A

  • 高效地将数据传输到现有表

  • 每个 bcp 命令传输一个表

Azure SQL Database 迁移向导

  • 很棒的功能,例如评估跟踪文件

  • CodePlex 上的开放源

  • Microsoft 不支持

SQL Server Integration Services

N/A

  • 最灵活

  • 在数据源之间直接传输,且不提取文件

SQL Server 导入和导出向导

N/A

  • 在 SSIS 之上的简单 UI;在 SSMS 中也提供

Azure SQL Database Migration Assistant 可用于将数据库从 Access、MySQL、Oracle、Sybase 迁移到 Azure SQL Database。

Microsoft Codename“Data Transfer” 可将 CSV 或 Excel 文件中的数据传输到 Azure SQL Database。

若要将数据从一个 Azure SQL Database 迁移到另一个 Azure SQL Database,你可以使用 Azure SQL Database copy

Azure SQL Database 支持数据库复制功能。这可在 Azure SQL Database 中一个新数据库,该数据库是现有数据库的副本,并且与现有数据库在事务上保持一致。若要复制数据库,你必须连接到将创建新数据库的 Azure SQL Database 服务器的 master 数据库,并且使用 CREATE DATABASE 命令:

CREATE DATABASE destination_database_name AS COPY OF 
[source_server_name.]source_database_name

新数据库可位于同一个服务器上,也可以位于其他服务器上。执行此语句的用户必须属于目标服务器上的 dbmanager 角色(以便创建新数据库),并且必须属于源数据库的 dbowner。有关详细信息,请参阅在 Azure SQL Database 中复制数据库

数据层应用程序 (DAC) 是在 SQL Server 2008 R2 中引入的,并且具有 Visual Studio 2010 中的开发人员工具支持。它们用于将数据库的架构、代码和配置打包在一起,以便部署到其他服务器。当 DAC 可供部署时,它将内置在一个 DAC 包 (.bacpac) 中,该包是一个压缩文件,包含 XML 格式的 DAC 定义。从 SQL Server Management Studio,你可以将数据库架构导出到一个 DAC 包中,然后将该包部署到 Azure SQL Database。

note备注
DACPAC 格式不同于 BACPAC 格式。BACPAC 格式扩展了 DACPAC 格式,除了标准 .dacpac 文件内容外,还包含元数据文件和 JavaScript 对象符号 (JSON) 编码的表数据。BACPAC 格式将在“DAC 导入导出”部分中论述。

你可以选择在部署前使用 Visual Studio 2010 修改 DAC 包。在 DAC 项目中,你可以指定部署前和部署后脚本。这些 Transact-SQL 脚本可以执行任何操作,包括在部署后脚本中插入数据。但是,建议不要使用 DAC 包插入大量数据。

DAC 随 SQL Server 20008 R2 一起提供。将 SQL Server 数据库架构迁移到 Azure SQL Database 涉及两个主要步骤:

  1. 从 SQL Server 数据库中提取 DAC 包:

    可以使用提取数据层应用程序向导基于现有数据库生成 DAC 包。DAC 包包含该数据库中的选定对象以及关联的实例级对象,例如映射到数据库用户的登录名。

    下面是打开向导的屏幕快照:



    该向导涉及以下主要步骤:

    1. 设置 DAC 属性,包括 DAC 应用程序的名称、版本、说明和包文件位置。

    2. 验证 DAC 支持所有数据库对象。

    3. 生成包。

    只能从 Azure SQL Database、SQL Server 2005 Service Pack 4 (SP4) 或更高版本的数据库中提取 DAC。如果数据库有 DAC 中不支持的对象或包含的用户,则不能提取 DAC。有关在 DAC 中支持的对象类型的详细信息,请参阅对 SQL Server 对象和版本的 DAC 支持

  2. 将 DAC 包部署到 Azure SQL Database:

    部署数据层应用程序向导可用于部署 DAC 包。你必须首先从 SQL Server Management Studio 连接到 Azure SQL Database 服务器。如果数据库不存在,则该向导将创建数据库。该向导将 DAC 包部署到与你在对象资源管理器层次结构中所选节点相关联的数据库引擎实例。例如,在下面的屏幕快照中,该向导会将包部署到名为 maqqarly23.database.windows.net 的 SQL Server 中:

    Important重要提示
    在将一个 DAC 包部署到生产中之前查看该包的内容是一个很好的行为,特别是这个部署的包不是在你的组织中开发的情况下。有关详细信息,请参阅验证 DAC 包

    该向导涉及以下主要步骤:

    1. 选择 DAC 包。

    2. 验证包的内容。

    3. 配置数据库部署属性,并指定 Azure SQL Database。

    4. 部署该包。

你还可以将 PowerShell 与 dacstore.install() 方法一起使用以便将架构迁移到 Azure SQL Database,而不是使用该向导。

数据层应用程序 (DAC) 是用于开发、部署和管理数据层对象的自包含单元。使用 DAC,数据层开发人员和数据库管理员可以将 Microsoft SQL Server 对象(包括数据库对象和实例对象)打包到名为 DAC 包(.dacpac 文件)的单个实体中。BACPAC 格式扩展了 DACPAC 格式,除了标准 .dacpac 文件内容外,还包含元数据文件和 JavaScript 对象符号 (JSON) 编码的表数据。你可以将你的 SQL Server 数据库打包到一个 .bacpac 文件中,并且使用该文件将数据库迁移到 Azure SQL Database。

note备注
虽然 DACPAC 和 BACPAC 相似,但它们的实际应用大不相同。DACPAC 侧重于捕获和部署架构。其主要用例是部署到开发、测试和生产环境。

BACPAC 侧重于捕获架构和数据。它是数据库备份的逻辑等效项,但不能用来升级现有数据库。BACPAC 的主要用例是将数据库从一个服务器移到另一个服务器(或移到 Azure SQL Database),并以开放格式对现有数据库进行存档。

Azure SQL Database 导入和导出服务以正式版提供。该服务可以在 Azure SQL Database 和 Azure Blob 存储空间之间直接导入或导出 BACPAC 文件。Azure SQL Database 导入和导出服务为提交请求提供一些公共 REST 端点。

SQL Azure 门户提供一个接口来调用 Azure SQL Database 导入和导出服务。

SQL Server Management Studio 目前不支持将数据库导出到 BACPAC 文件中。你可以利用 DAC API 来导入和导出数据。

SQL DAC 示例显示如何使用数据层应用程序框架 API 将数据库从 SQL Server 迁移到 Azure SQL Database。该包提供两个命令行实用工具及其源代码:

  • DAC 导入和导出客户端工具可用于导出和导入 bacpac 文件。

  • DAC 导入和导出服务客户端可用于调用 Azure SQL Database 导入和导出服务,以便在 Azure Blob 存储和 Azure SQL Database 之间导入和导出 bacpac 文件。

    将 bacpac 文件复制到 Azure Blob 存储的一个方法就使用 Microsoft Codename “Data Transfer”。有关详细信息,请参阅“Microsoft Codename Data Transfer”部分。

note备注
使用数据层应用程序 (DAC) 框架将数据导入和导出到 Azure SQL Database 的功能目前仅作为 CodePlex 示例提供。仅在社区支持这些工具。

本节演示如何使用 SQL DAC 示例的客户端工具将数据库从 SQL Server 迁移到 Azure SQL Database。

可以从 CodePlex 下载 SQL DAC 示例。若要运行示例,还必须在你的计算机上安装数据层应用程序框架

在使用工具迁移数据库之前,必须首先创建目标 Azure SQL Database。使用工具进行迁移涉及两个步骤:

  1. 导出 SQL Server 数据库

    假定有一个数据库正在 SQL Server 2014 上运行,并且有一个用户可以对该数据库进行集成安全性访问。可通过调用具有以下参数的示例 EXE,将该数据库导出到一个 .bacpac 文件中。

    DacCli.exe -s serverName -d databaseName -f C:\filePath\exportFileName.bacpac -x -e
    
  2. 将包导入到Azure SQL Database

    一旦导出,便可以使用以下参数将导出文件导入到 Azure SQL Database:

    DacCli.exe -s serverName.database.windows.net -d databaseName -f C:\filePath\exportFileName.bacpac -i -u userName -p password
    

“生成脚本向导”可以用来为 SQL Server 数据库和/或所选数据库中的相关对象创建 Transact-SQL 脚本。然后,你可以使用脚本将架构和/或数据传输到 Azure SQL Database。

生成脚本向导随 SQL Server 2008 R2 一起安装。可以从 SQL Server Management Studio 2008 R2 打开该向导。下面的屏幕快照显示如何打开该向导:

该向导涉及以下主要步骤:

  1. 选择要导出的对象。

  2. 设置脚本编写选项。你可以选择相应的选项,以将脚本保存到文件、剪贴板、新的查询窗口或将其发布到 Web 服务。

  3. 设置高级脚本编写选项。

    默认情况下,生成的脚本适用于独立的 SQL Server 实例。要更改配置,你必须单击“设置脚本编写选项”对话框中的“高级”按钮,然后将“数据库引擎类型的脚本”属性设置为 SQL Database



    还可以根据要求将“要编写脚本的数据的类型”设置为以下项之一:“仅限架构”“仅限数据”“架构和数据”

创建脚本后,你可以选择修改脚本,然后再针对 Azure SQL Database 运行脚本以传输数据库。

bcp 实用工具是一个命令行实用工具,旨在以高性能的方式大容量上载到 SQL Server 或 Azure SQL Database。它不是一个迁移工具。它不会提取或创建架构。你必须首先使用架构迁移工具之一将架构传输到 Azure SQL Database。

note备注
你可以使用 bcp 备份和还原 Azure SQL Database 上的数据。

note备注
Azure SQL Database 迁移向导使用 bcp。

bcp 实用工具随 SQL Server 一起提供。Azure SQL Database 完全支持 SQL Server 2014 随附的版本。

使用 bcp 涉及两个步骤:

  1. 将数据导出到数据文件中。

    若要将数据导出 SQL Server 数据库,你可以在命令提示符下运行以下语句:

    bcp tableName out C:\filePath\exportFileName.dat –S serverName –T –n -q
    
    out 参数指示从 SQL Server 复制出数据。-n 参数使用数据的本机数据库数据类型执行大容量复制操作。-q 参数在 bcp 实用工具与 SQL Server 引擎实例之间的连接中执行 SET QUOTED_IDENTIFIERS ON 语句。

  2. 将数据文件导入Azure SQL Database

    若要将数据导入 Azure SQL Database,你必须首先在目标数据库中创建架构,然后从命令提示符运行 bcp 实用工具:

    Bcp tableName in c:\filePath\exportFileName.dat –n –U userName@serverName –S tcp:serverName.database.windows.net –P password –b batchSize
    
    –b 参数指定每批导入数据的行数。每个批次均作为一个单独的事务进行导入并记录,在提交之前会导入整批。确定最佳批处理大小并使用此批处理大小是一个很好的做法,这可以减少在数据迁移期间与 Azure SQL Database 断开连接的几率。

下面是在你使用 bcp 传输大量数据时的一些最佳做法。

  1. 使用 -N 选项在本机模式下传输数据,这样,就不需要进行任何数据类型转换。

  2. 使用 –b 选项指定批大小。默认情况下,数据文件中的所有行均作为一个批次导入。如果某个事务失败,则只回滚当前批中的插入。

  3. 使用 –h“TABLOCK, ORDER(…)” 选项。–h“TABLOCK” 指定在大容量加载操作期间需要大容量更新表级锁;否则,获取行级锁。它可以减少表上的锁争用。–h“ORDER(…)” 选项指定数据文件中数据的排序顺序。如果根据表的聚集索引对要导入的数据排序,则将提高大容量导入的性能。

你可以使用 –F 和 –L 选项指定用于上载的平面文件的第一行和最后一行。这将有助于避免不得不物理拆分数据文件以便实现多个流上载。

Azure SQL Database 迁移向导是一种开放源 UI 工具,可帮助你将 SQL Server 2005/2008 或更高版本的数据库迁移到 Azure SQL Database。除了迁移数据之外,它还可用于识别任何兼容性问题、尽可能解决这些问题并通知它所发现的所有问题。

Azure SQL Database 迁移向导具有用于处理连接丢失的内置逻辑。它会将事务分解为若干较小的部分,并且在 Azure SQL Database 终止连接前一直运行。在向导遇到连接错误时,它将重新建立一个与 Azure SQL Database 的新连接并接着上次成功的命令重新开始处理。在使用 bcp 将数据上载到 Azure SQL Database 时,向导采用相同的方式将数据分为若干更小的部分,并且使用重试逻辑计算出在关闭连接前上载的最后一个成功记录。然后它使 bcp 使用下一个记录集重新启动数据上载。

note备注
Azure SQL Database 迁移向导是由社区构建和支持的开放源工具。

Azure SQL Database 迁移向导可从 http://sqlazuremw.codeplex.com 下载。将包解压缩到本地计算机,然后运行 SQLAzureMW.exe。下面是该应用程序的屏幕快照:

该向导涉及以下步骤:

  1. 选择希望向导指导你完成的过程。

  2. 选择要编写脚本的源。

  3. 选择要编写脚本的数据库对象。

  4. 生成脚本。你可以选择以后修改脚本。

  5. 输入用于连接到目标服务器的信息。你可以选择创建目标 Azure SQL Database。

  6. 针对目标服务器执行脚本。

SQL Server Integration Services (SSIS) 可以用于执行范围广泛的数据迁移任务。在对多个异类数据源和目标执行操作时,这个工具的功能十分强大。该工具提供对源和目标之间的复杂工作流和数据转换的支持。SSIS 不能作为 Azure 服务(例如 Azure SQL Database)获得。你可以在本地 SQL Server 上运行 SSIS 包以将数据传输到 Azure SQL Database。此外,你可以在 Azure 虚拟机中运行的 SQL Server 上运行 SSIS 包,以将数据传输到 Microsoft Azure SQL Database 中。但是,SQL IaaS 还是一个承载 SSIS 的选项。

如果要迁移的数据位于单个数据源中并且无需进行转换,那么使用 SSIS 导入/导出向导可允许用户针对这些数据创建相应的包,然后迁移到目标。该向导可以迅速将来自多种不同的源类型的数据移到不同的目标类型,包括文本文件和其他 SQL Server 实例。有关详细信息,请阅读如何:使用 Integration Services 将数据库迁移到 Azure SQL Database

必须使用 SQL Server 2008 R2 或更高版本的 SSIS 连接到 Azure SQL Database。

ADO.NET 适配器具有 Azure SQL Database 所需的支持。它特别为 Azure SQL Database 提供一个大容量加载数据的选项。使用 ADO.NET 目标适配器可以将数据传输到 Azure SQL Database。不支持使用 OLEDB 连接到 Microsoft Azure SQL Database。

因为你的包可能会由于限制或网络问题而失败,所以,你可能会考虑以某种方式对包进行设计,以便在失败时可恢复包,而不是重新启动包。有关详细信息,请阅读用于移动 Azure 数据和混合数据的 SSIS

在你配置 ADO.NET 目标时,请确保使用“尽可能使用大容量插入”选项。这允许你使用大容量加载功能提高传输性能。. 有关详细信息,请阅读 SSIS 操作与优化指南

SQL Server 导入和导出向导提供了最简便的方法,以便为简单的导入或导出创建 SQL Server Integration Services 包。有关详细信息,请阅读如何:使用导入和导出向导将数据库迁移到 Azure SQL Database

该向导支持以下数据源:

  • 用于 ODBC 的 .NET Framework 数据访问接口

  • 用于 Oracle 的 .NET Framework 数据访问接口

  • 用于 SQL Server 的 .NET Framework 数据访问接口

  • 平面文件源

  • 用于 Analysis Services 10.0 的 Microsoft OLE DB 访问接口

  • 用于 Search 的 Microsoft OLE DB 访问接口

  • 用于 SQL Server 的 Microsoft OLE DB 访问接口

  • SQL Native Client

  • SQL Server Native Client 10.0

SQL Server 导入和导出向导只能传输数据。在使用该向导前,你必须通过使用一种架构迁移工具(生成脚本向导或 DAC 包)来传输架构。

note备注
在 64 位计算机上,Integration Services 安装 64 位版本的 SQL Server 导入和导出向导 (DTSWizard.exe)。但是,有些数据源只提供 32 位提供程序。若要使用这些数据源,你可能需要安装并运行 32 位版本的向导。要安装 32 位版本的向导,请在安装期间选择“客户端工具”或“Business Intelligence Development Studio”。

Microsoft Codename“Data Transfer”是一种云服务,可用于将数据从你的计算机传输到 Azure SQL Database 或 Azure Blob 存储。你可以将任何数据格式上载到 Azure Blob 存储中,以及将以逗号分隔值 (CSV) 或 Microsoft Excel 格式 (.xlsx) 存储的数据上载到 Azure SQL Database 中。当你将数据上载到 Azure SQL Database 时,该数据将转换成数据库表。

该数据传输服务可从 https://web.datatransfer.azure.com/ 访问。在主页上,具有导入数据、管理你的数据集和存储区的选项。

将数据导入到 Azure SQL Database 的过程涉及以下步骤:

  • 输入你的 Azure SQL Database 凭据。

  • 选择要传输的文件。

  • 对数据文件进行分析,然后传输数据。

SQL Server Migration Assistant (SSMA) 是一系列产品,可降低从 Oracle、Sybase、MySQL 或 Microsoft Access 数据库迁移到 Azure SQL Database 或 SQL Server 的成本和风险。SSMA 自动执行迁移的所有方面,包括迁移评估分析、架构和 SQL 语句转换、数据迁移以及迁移测试。

SSMA 是一款可以从 Web 下载的工具。若要下载最新版本,请参阅 SQL Server 迁移工具产品页。截至撰写本文之时,以下是最新版本:

SSMS 使用基于 Windows Installer 的向导进行安装。SSMA 是免费的,但必须下载注册密钥。在你安装并运行该应用程序后,该应用程序会提示你注册并下载注册密钥。

SSMA for Access 的迁移过程包括以下几个步骤:

  1. 创建新的迁移向导。请确保在“迁移到”框中选择 Azure SQL Database。

  2. 添加 Access 数据库。

  3. 选择要迁移的 Access 对象。

  4. 连接到 Azure SQL Database。

  5. 链接表。如果你想要将现有的 Access 应用程序用于 Azure SQL Database,则可以将原始 Access 表链接到已迁移的 Azure SQL Database 表。链接会修改你的 Access 数据库,以便你的查询、窗体、报表和数据访问页使用 Azure SQL Database 中的数据,而非 Access 数据库中的数据。

  6. 转换所选对象。

  7. 将已转换的对象加载到 Azure SQL Database 中。

  8. 迁移所选 Access 对象的数据。

另请参阅

显示:
© 2014 Microsoft