如何将本地数据库迁移到Azure SQL,一般来说分为几部分工作,

  • 兼容性测试:验证数据库是否与 SQL 数据库 V12 兼容。

  • 解决兼容性问题(如果有):如果验证失败,必须先解决验证错误。

  • 运行迁移:如果数据库兼容,则可使用一种或多种方法来执行迁移。

  1. 兼容性测试

兼容性测试微软提供了4种方法,

  • SQL Server Data Tools for Visual Studio (SSDT):SSDT 使用最新的兼容性规则来检测 SQL 数据库 V12 不兼容性。如果检测到不兼容,则可以直接在此工具中解决检测到的问题。此方法是目前用于测试和解决 SQL 数据库 V12 兼容性问题的建议方法。

  • SqlPackage:SqlPackage 是一个命令行实用程序,用于测试兼容性问题,并生成包含检测到的兼容性问题的报告。如果使用此工具,请确保使用最新版本,以便使用最新的兼容性规则。如果检测到错误,必须使用其他工具来解决任何检测到的兼容性问题 - 建议使用 SSDT。

  • SQL Server Management Studio 中的“导出数据层”应用程序向导:此向导可以检测错误并在屏幕上报告错误。如果未检测到错误,则可以继续迁移到 SQL 数据库。如果检测到错误,必须使用其他工具来解决任何检测到的兼容性问题 - 建议使用 SSDT。

  • SQL Azure Migration Wizard ("SAMW")(SQL Azure 迁移向导 (SAMW)):SAMW 是一个codeplex 工具,使用 Azure SQL 数据库 V11 兼容性规则来检测 Azure SQL 数据库 V12 的不兼容性。如果检测到不兼容,某些问题可直接在此工具中解决。此工具可以发现无需修复的不兼容性。该工具是第一个可以使用的 AzureSQL 数据库迁移协助工具,受到 SQL Server 社区的积极支持。此外,此工具可在工具本身内部完成迁移。

1.1使用 SQL Server Data Tools for VisualStudio 检测兼容性问题

SSDT 是微软提供的数据库开发和管理工具,最新版本的 SSDT。使用SSDT可以进行兼容性检查。

2.打开SSDT连接需要进行检查的数据库

  1. 点击数据库,右键创建新项目

  1. 3、将导入设置配置为“仅导入应用程序范围的对象”。取消选中导入以下项的选项:引用的登录名、权限和数据库设置。

    4、单击“启动”导入数据库并创建项目,其中包含数据库中每个对象的 T-SQL 脚本文件。这些脚本文件嵌入到项目内的文件夹中。

    5、在 Visual Studio 解决方案资源管理器中,右键单击数据库项目并选择“属性”。在“项目设置”页中,将“目标平台”配置为“Azure SQL 数据库 V12”。

6.右键单击项目并选择“生成”以生成项目。

本数据库没有兼容性问题, 只有几个警告,基本可以忽略,也就是可以放心的往Azure SQL上迁移。

1.2 使用 SqlPackage.exe进行兼容性测试

1、打开命令提示符并更改包含 sqlpackage.exe 最新版本的目录。此实用程序随 SQL Server Management Studio 和用于 Visual Studio 的 SQL Server Data Tools 的最新版本提供,也可直接从 Microsoft 下载中心下载 SqlPackage 的最新版本。

2、使用你的环境的以下参数执行以下 SqlPackage 命令:

'sqlpackage.exe/Action:Export /ssn:< server_name > /sdn:< database_name > /tf:<target_file > /p:=< schema_name.table_name > > < output_file> 2>&1'

参数

说明

< server_name >

源服务器名称

< database_name >

源数据库名称

< target_file >

BACPAC 文件的文件名和位置

< schema_name.table_name >

其数据将输出到目标文件的表

< output_file >

包含错误(如果有)的输出文件的文件名和位置

使用 /P:TableName 参数的原因是:只需测试导出到 Azure SQL 数据库 V12 的数据库兼容性,无需测试从所有表导出数据。遗憾的是,sqlpackage.exe的导出参数不支持提取零个表。需指定至少一个表,例如一个小型表。<output_file > 包含任何错误的报告。“>2>&1”字符串将执行命令后生成的标准输出和标准错误传送到指定的输出文件。

3、打开输出文件并查看兼容性错误(如果有)。

1.3、使用 SQL Server Management Studio确定 SQL 数据库的兼容性

  1. 确认你安装了最新版本的 SQL ServerManagement Studio。Management Studio 的新版本将每月更新一次,以与 Azure 门户的更新保持同步。

  2. 打开 Management Studio 并连接到你在对象资源管理器中的源数据库。

  3. 右键单击对象资源管理器中的源数据库、指向“任务”,然后单击“导出数据层应用程序...”

  4. 在导出向导中,单击“下一步”,然后在“设置”选项卡上配置导出,以将 BACPAC 文件保存到本地磁盘位置或 Azure Blob。在没有数据库兼容性问题时,将会保存 BACPAC 文件。如果有兼容性问题,这些问题将显示在控制台上。

  5. 若要跳过导出数据这一步,请单击“高级”选项卡并清除“全选”复选框。此时我们的目标仅是测试兼容性。

6、单击“下一步”,然后单击“完成”。在向导验证架构后,将显示数据库兼容性问题(如果有)

7、如果 *.BACPAC 文件已成功生成,则数据库与 SQL 数据库兼容,并可随时进行迁移。

2、修复数据库迁移的兼容性问题

如果检测到兼容性问题,必须先修复这些兼容性问题,才能继续 SQL Server 数据库迁移。根据源数据库中的 SQL Server 版本以及正在迁移的数据库复杂性,可能会发现各种不同的不兼容性问题。旧版 SQL Server 的兼容性问题更多。除了使用所选搜索引擎的目标 Internet 搜索以外,还可以使用以下资源:

  • AzureSQL 数据库中不支持的 SQL Server 数据库功能

  • SQL Server 2016 中已停用的数据库引擎功能

  • SQL Server 2014 中已停用的数据库引擎功能

  • SQL Server 2012 中已停用的数据库引擎功能

  • SQL Server 2008 R2 中已停用的数据库引擎功能

  • SQL Server 2005 中已停用的数据库引擎功能

除了搜索 Internet 和使用这些资源,还可以使用 MSDN SQL Server 社区论坛或 StackOverflow。

使用以下数据库迁移工具之一解决检测到的问题:

SSDTSSMSSAMW

  • 使用 SQLServer Data Tools for Visual Studio (SSDT):若要使用 SSDT,请将数据库架构导入 SQL ServerData Tools for Visual Studio (SSDT),然后生成进行 SQL 数据库 V12 部署的项目。然后,在 SSDT 中修复所有检测到的兼容性问题。完成后,将所做的更改同步回源数据库或源数据库的副本。SSDT 是目前用于测试和解决 SQL 数据库 V12 兼容性问题的建议方法。请单击使用 SSDT 进行演练的链接。

  • 使用 SQLServer Management Studio (SSMS):若要使用 SSMS,可以执行 Transact-SQL命令,修复使用其他工具检测到的错误。此方法主要供高级用户直接在源数据库中修改数据库架构。

  • 使用 SQLAzure 迁移向导 (SAMW):若要使用 SAMW,请从源数据库生成Transact-SQL 脚本。该向导会尽可能转换脚本,使架构兼容 SQL 数据库 V12。完成后,SAMW 可以连接到 SQL 数据库 V12 以执行脚本。此工具还可分析跟踪文件,确定兼容性问题。生成的脚本可以只包含架构,也可以包含 BCP 格式的数据。

3、将兼容的 SQL Server 数据库迁移到 SQL 数据库

一般来说我们可以通过几种方法来将兼容数据库迁移到云端。

  • 使用SSMS迁移向导

  • 使用BACPAC文件导入导出

  • 事务复制

3.1使用SSMS迁移向导

现在将之前测试的无兼容问题的数据库迁移到云端

  1. 右键单击对象资源管理器中的数据库、指向“任务”,然后单击“将数据库部署到 Azure SQL 数据库...”

  2. 在部署向导中,单击“下一步”,然后单击“连接”以配置与 SQL 数据库服务器的连接

  3. 为 BACPAC 文件提供以下内容,该文件是此向导在迁移过程中创建的:

    • 新数据库名称

    • Azure SQL 数据库的版本(服务层)

    • 数据库最大大小

    • 服务目标(性能级别)

    • 临时文件名

4.完成该向导。根据数据库的大小和复杂度,部署可能需要花费几分钟到几小时。如果此向导检测到兼容性问题,错误将显示到屏幕上,并且迁移将不会继续

5、使用对象资源管理器连接到 Azure SQL 数据库服务器中的已迁移数据库。

6、使用 Azure 门户,查看数据库及其属性。

3.2 使用BACPAC文件导入导出

其实细心的你会发现在进行上面的数据库导入的时候生成了临时文件。

C:\Users\maxshen\AppData\Local\Temp\HrAdminWebDB-20170319220759.bacpac

也就是说,其实上面的操作也是通过了bacpac文件进行操作的

因此我们如果有一个生成的Bacpac文件,就可以直接导入

1、连接到 Azure SQL 数据库服务器、右键单击“数据库”文件夹,然后单击“导入数据层应用程序...”

2、若要在 Azure SQL 数据库中创建数据库,请从本地磁盘导入 BACPAC 文件,或选择已将 BACPAC 文件上传到其中的 Azure 存储帐户和容器。

从 Azure Blob 存储导入 BACPAC 时,请使用标准存储。不支持从高级存储导入 BACPAC。

3、为 Azure SQL 数据库中的数据库提供新数据库名称,设置 Azure SQL 数据库的版本(服务层)、最大数据库大小服务目标(性能级别)。

4、单击“下一步”,然后单击“完成”以将该 BACPAC 文件导入 Azure SQL 数据库服务器中的新数据库。

3.3 事务复制

另外Azure SQL支持事务复制方式将本地数据库设置为发布服务器,在AzureSQL上进行订阅。这种方式的有点是减少停机时间。

缺点有:

  • 使用本地分发服务器 ,这会对服务器的性能造成影响。

    如果对性能的影响不可接受,可以使用另一台服务器,但这又会增大管理的复杂性。

  • 选择快照文件夹时,请确保选择的文件夹足够大,可以保存想要复制的每个表的 BCP。

  • 请注意,快照创建操作在完成之前会锁定关联的表,因此,在计划快照时请记住这一点。

  • Azure SQL 数据库中仅支持推送订阅 ,只能从本地数据库端添加订阅服务器。

    基于以上原因, 个人不是特别推荐此种方式。建议将数据库直接搬移到Azure SQL过程更简单。

总结

  1. Azure SQL v12版本已经和本地实例高度兼容

  2. SQL 数据库迁移到Azure SQL 并不复杂

  3. 我们提供了大家熟悉的工具如datatools, SSMS等几个工具帮助大家迁移,并且操作都很简单。

下一步我们来聊了Azure SQL的更细的功能

一起来玩AZURE SQL(三)AZURE SQL 数据库迁移相关推荐

  1. 【Microsoft Azure 的1024种玩法】三十. 使用Azure Data Studio之快速上手连接管理Azure SQL 数据库(一)

    [简介] Azure Data Studio 是一种跨平台的数据库工具,适合在 Windows.macOS 和 Linux 上使用本地和云数据平台的数据专业人员,Azure Data Studio 利 ...

  2. aws 数据库迁移_将您的sql数据库迁移到云AWS和Azure

    aws 数据库迁移 When migrating your SQL databases to the cloud you need to make your choice carefully. Mig ...

  3. sql azure 语法_如何将内部SQL Server数据库迁移到Azure

    sql azure 语法 Lately, database administrators often hear the question "have you tried Azure?&quo ...

  4. sql azure 语法_使用Azure Data Studio开发SQL Server数据库

    sql azure 语法 In the previous article, Starting your journey with Azure Data Studio, we put the first ...

  5. azure上传excel_使用MS Excel访问Azure中的关系SQL数据库

    azure上传excel 介绍 (Introduction) There are great Microsoft tools to access to SQL Server in Azure. How ...

  6. 如何在Windows Azure VM上的SQL Server和Windows Azure SQL Database两者中做出选择

    作者信息:本篇文章是由SQL Server Cloud Infrastructure Team的 Madhan Arumugam 和 Guy Bowerman共同著作. 简介 把SQL 数据托管在哪里 ...

  7. 数据系列:如何在Windows Azure虚拟机上设置SQL Server

    编者按: 今天的帖子来自我们的客户体验团队高级技术作家Rick Byham.这篇文章提供的详细指导文档概述的链接在底部 将数据库操作移动到云上的速度最快的方法之一是通过移动您的数据库到Windows ...

  8. SQL Server调优系列玩转篇三(利用索引提示(Hint)引导语句最大优化运行)

    SQL Server调优系列玩转篇三(利用索引提示(Hint)引导语句最大优化运行) 原文:SQL Server调优系列玩转篇三(利用索引提示(Hint)引导语句最大优化运行) 前言 本篇继续玩转模块 ...

  9. sql azure 语法_将SQL工作负载迁移到Microsoft Azure:服务选择

    sql azure 语法 In the previous article, Migrating SQL workloads to Microsoft Azure: Planning the jump, ...

最新文章

  1. vb中如何才能有手型的光标?
  2. halcon知识:【2】二维码原理
  3. 在控制台中录入学生姓名(python)
  4. hdu 3320 计算几何(三维图形几何变换)
  5. Xcode启动RN报错“`fsevents` unavailable“
  6. E-Prime2.0安装避坑指南
  7. 软考 系统架构设计师考试大纲
  8. M/M/m排队模型 (单队列多服务台并联服务模型)数学建模: 基于生灭过程的理论计算和基于事件推进的Matlab模拟仿真思路
  9. javaScript学习手册:JS对象
  10. Pyramidal Feature Shrinking for Salient Object Detection
  11. 利用TLF给文本加样式
  12. 计算机屏幕刷新频率,屏幕刷新率多少合适,教您电脑屏幕刷新率多少合适
  13. 《富兰克林自传》读后感:从这个接地气的伟人身上我们可以学到什么?
  14. [docker]六、云计算和云的种类、4种容器网络类型、docker中常见文件和进程的作用、json、link、docker底层的隔离机制
  15. mysql 长度存储汉字_mysql 长度存储汉字
  16. SVN黑马程序员笔记
  17. Canvas 绘制方法过一遍
  18. Giant Sequoia(UTPC Contest 02-25-22 Div. 2 (Beginner))
  19. 2-Arduino小车测速模板安装与测试
  20. hdu 6119(区间重合处理)(尺取

热门文章

  1. WPF RichTextBox自动调整高度
  2. MLE(最大似然估计)和EM算法
  3. 使用sshpass同时更新一台ubuntu和一台CentOS
  4. JavaScript 之 JS重载
  5. 【教程】一步一步教你如何自定义设置——博客园canvas/JS交互动画背景
  6. 003 python接口 cookies
  7. 开发利器JRebel部署SpringBoot项目
  8. 【NOIP2016提高A组模拟10.15】打膈膜
  9. Shiro第四篇【Shiro与Spring整合、快速入门、Shiro过滤器、登陆认证】
  10. 简记Ubuntu下载 Android源码