此主题尚未评级 - 评价此主题

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

本文档介绍如何将数据定义(架构)和数据迁移到 Windows Azure SQL Database。本文档主要针对从 SQL Server 到 SQL Database 的一次性迁移。对于持续的数据共享和 SQL Database 备份,请参阅 SQL 数据同步概述

迁移注意事项

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

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

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

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

何时迁移

在 Windows Azure 平台上有三个主要的存储产品。Windows Azure 存储包含表、Blob 和队列。在设计 Windows Azure 解决方案时,您应该对不同的选项进行评估,并且针对应用程序的不同部分使用合适的存储机制,从而获得最佳性能。

 

存储产品

用途

最大大小

Windows Azure SQL Database

关系数据库管理系统

150GB

Windows Azure 存储

Blob

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

200GB 或 1TB

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

100TB

队列

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

100TB

本地存储

按实例的临时存储

250GB 到 2TB

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

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

因为 SQL Database 大小限制当前设为 150 GB,并且 SQL Database 的成本要比 Windows Azure 存储要高得多,所以,您可以考虑将 Blob 数据迁移到 Windows Azure Blob 存储。这样,您可以减轻数据库大小限制方面的压力并且降低操作成本。

有关详细信息,请参阅 Windows Azure 平台上的数据存储产品

Windows Azure SQL Database 与 SQL Server 的比较

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

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

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

  • 数据库大小

    SQL Database 目前提供两个版本:

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

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

    请务必查看您的数据库的大小以及它适合 SQL Database 所使用哪种数据库容限。如果您的数据库大于 SQL Database 大小限制,则必须检查数据库并且确定是否可以将该数据库拆分为若干更小的数据库(即分片),或者将大型数据移到 Windows Azure blob 存储中。有关数据库分片的详细信息,请参阅联合:使用 Windows Azure SQL Database 构建可伸缩、弹性和多租户的数据库解决方案

  • 身份验证

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

  • SQL Server 数据库版本

    SQL Database 基于 SQL Server 2008(级别 100)。如果您想要将您的 SQL Server 2000 或 SQL Server 2005 数据库迁移到 SQL Database,则必须确保您的数据库与 SQL Server 2008 兼容。您将会找到从 SQL Server 2008 迁移到 SQL Database 的最佳途径。您可以在迁移到 SQL Database 前内部升级到 SQL Server 2008。下面是一些优秀的资源,可帮助您从较旧版本的 SQL Server 进行迁移:升级到 SQL Server 2008 R2Microsoft SQL Server 2008 升级顾问

  • 架构

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

  • Transact-SQL 可支持性

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

  • Use 语句

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

  • 价格

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

  • 功能限制

    SQL Database 目前不支持某些 SQL Server 功能。这些功能包括:SQL 代理、全文搜索、Service Broker、备份和还原、公共语言运行时和 SQL Server Integration Services。有关详细列表,请参阅 SQL Server 功能限制

连接处理

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

SQL Database 在共享资源上提供一个大型的多租户数据库服务。为了向所有 SQL Database 客户都提供很好的体验,您与服务的连接可能会由于若干情况而关闭。 

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

  • 网络延迟

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

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

    在 Windows Azure 中承载您的应用程序代码有利于提高应用程序的性能,因为这样做可以最大程度地降低您的应用程序与 SQL Database 之间的数据请求相关的网络延迟。

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

  • 数据库故障转移

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

  • 负载平衡

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

  • 限制

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

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

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

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

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

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

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

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

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

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

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

优化数据库以便导入数据

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

  • 延迟非聚集索引的创建或禁用非聚集索引。在加载数据前创建的相加索引可显著增加最终的数据库大小以及加载相同数据量所用的时间。

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

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

将大型数据传输到 SQL Database

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

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

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

选择迁移工具

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

从 SQL Server 迁移

 

工具

架构

SQL Database 兼容性检查

数据

数据传输效率

备注

DAC 包

不适用

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

  • 完全 SQL Database 支持

DAC BACPAC 导入导出

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

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

  • CodePlex 上提供的 SQL DAC 示例

SSMS 生成脚本向导

一些

较差

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

  • 适合于较小的数据库

bcp

不适用

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

  • 每个 bcp 命令传输一个数据库

SQL Database 迁移向导

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

  • CodePlex 上的开放源

  • Microsoft 不支持

SQL Server Integration Services

不适用

  • 最灵活

SQL Server 导入和导出向导

不适用

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

从其他 RDMS 迁移

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

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

在 SQL Database 之间迁移

若要将数据从一个 SQL Database 迁移到另一个 SQL Database,您可以使用 SQL Database copySQL 数据同步

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

CREATE DATABASE destination_database_name AS COPY OF 
[source_server_name.]source_database_name

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

SQL Database 数据同步支持在 SQL Database 和 SQL Server 或其他 SQL Database 之间创建和计划常规同步。有关详细信息,请参阅 SQL 数据同步概述

使用迁移工具

数据层应用程序 DAC 包

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

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

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

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

    提取数据层应用程序向导

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

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

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

    3. 生成包。

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

  2. 将 DAC 包部署到 SQL Database:

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

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

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

    1. 选择 DAC 包。

    2. 验证包的内容。

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

    4. 部署该包。

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

资源

数据层应用程序 BACPAC 包

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

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

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

SQL Database 导入和导出服务目前以公共 CTP 形式提供。这项服务可以在 SQL Database 和 Windows Azure Blob 存储之间直接导入或导出 BACPAC 文件。SQL Database 导入和导出服务为提交请求提供一些公共 REST 端点。

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

为 SQL Database 导入和导出服务

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

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

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

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

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

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

安装和使用

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

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

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

  1. 导出 SQL Server 数据库

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

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

    一旦导出后,可以使用以下参数将导出文件导入到 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 脚本。然后,您可以使用脚本将架构和/或数据传输到 SQL Database。

安装和使用

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

生成脚本向导

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

  1. 选择要导出的对象。

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

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

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

    高级脚本选项

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

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

资源

bcp

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

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

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

安装和使用

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

使用 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. 将数据文件导入SQL Database

    若要将数据导入 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 参数指定每批导入数据的行数。每个批次均作为一个单独的事务进行导入并记录,在提交之前会导入整批。确定最佳批处理大小并使用此批处理大小是一个很好的做法,这可以减少在数据迁移期间与 SQL Database 断开连接的几率。

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

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

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

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

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

资源

SQL Database 迁移向导

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

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

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

安装和使用

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

SQL Database 迁移向导

该向导涉及以下步骤:

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

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

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

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

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

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

资源

SQL Server Integration Services

SQL Server Integration Services (SSIS) 可以用于执行范围广泛的数据迁移任务。在对多个异类数据源和目标执行操作时,这个工具的功能十分强大。该工具提供对源和目标之间的复杂工作流和数据转换的支持。尽管 SQL Database 当前不支持 SSIS,您仍可以在内部 SQL Server 2008 R2 上运行它,以便将数据传输到 Windows Azure SQL Database。

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

安装和使用

您必须使用 SSIS 的 SQL Server 2008 R2 版本连接到 SQL Database。

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

以下是用于将 ADO.NET 连接配置为 SQL Database 的屏幕快照:

配置 ADO.NET 连接管理器

因为您的包可能会由于限制或网络问题而失败,所以,您可能会考虑以某种方式对包进行设计,以便在失败时可恢复包,而不是重新启动包。

在您配置 ADO.NET 目标时,请确保使用“尽可能使用大容量插入”选项。这允许您使用大容量加载功能提高传输性能。

提高性能的一种方法是将源数据拆分为文件系统上的多个文件。在 SSIS 设计器中,您可以使用“平面文件组件”引用这些文件。然后,每个输入文件都连接到选中了“尽可能使用大容量插入”选项的 ADO .Net 组件。

资源

SQL Server 导入和导出向导

SQL Server 导入和导出向导提供了最简便的方法,以便为简单的导入或导出创建 SQL Server Integration Services 包。此向导可以配置连接、源和目标,以及添加允许您立即运行导入或导出所需的任何数据转换。在创建了某个包后,您可以选择在 SSIS 设计器中修改该包。

该向导支持以下数据源:

  • 用于 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)。但是,有些数据源(如 Access 或 Excel)只提供 32 位访问接口。若要使用这些数据源,您可能需要安装并运行 32 位版本的向导。要安装 32 位版本的向导,请在安装期间选择“客户端工具”或“Business Intelligence Development Studio”。

安装和使用

在SQL Server 2008 R2 或更高版本中,SQL Server 导入和导出向导支持 SQL Database。有几种方法可以启动该向导:

  1. “开始”菜单上,指向“所有程序”Microsoft SQL Server 2008,然后单击“导入和导出数据”

  2. 在 Business Intelligence Development Studio 中,从解决方案资源管理器右键单击“SSIS 包”文件夹,然后单击“SSIS 导入和导出向导”

  3. 在 Business Intelligence Development Studio 中,在“项目”菜单上单击“SSIS 导入和导出向导”

  4. 在 SQL Server Management Studio 中,连接到数据库引擎服务器类型,展开“数据库”,右键单击一个数据库,指向“任务”,再单击“导入数据”“导出数据”

  5. 在命令提示符窗口中运行 DTSWizard.exe(位于 C:\Program Files\Microsoft SQL Server\100\DTS\Binn)。

迁移包括以下主要步骤:

  1. 选择要从中复制数据的数据源。

  2. 选择要将数据复制到的目标。

    要将数据导出到 SQL Database,您必须选择“用于 SQL Server 的 .NET Framework 数据访问接口”作为目标:

    SQL Server 导入和导出向导 - 选择目标
  3. 指定表复制或查询。

  4. 选择源对象。

  5. 保存并运行包。

在 SQL Server 导入和导出向导创建了该包后,您可以选择保存该包以便在以后再次运行它,或者在 SQL Server Business Intelligence (BI) Development Studio 中优化和增强该包。

note注意
如果保存包,必须先将包添加到现有的 Integration Services 项目中,然后才能在 BI Development Studio 中更改包或运行包。

资源

Microsoft Codename “Data Transfer”

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

使用

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

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

  • 输入您的 SQL Database 凭据。

  • 选择要传输的文件。

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

资源

SQL Server Migration Assistant

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

安装和使用

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

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

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

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

  2. 添加 Access 数据库。

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

  4. 连接到 SQL Database。

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

  6. 转换所选对象。

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

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

资源

另请参见


生成日期:

2013-05-23
本文是否对您有所帮助?
(1500 个剩余字符)

社区附加资源

添加
© 2013 Microsoft. 版权所有。
facebook page visit twitter rss feed newsletter