zoukankan      html  css  js  c++  java
  • 如何将本地数据库迁移至SQL Azure

    Windows Azure的SQL Azure和SQL Server 拥有不同的体系结构,可以说是两个不同的产品。SQL Azure不完全支持或者尚不支持SQL Server的某些功能,这使得我们不能像平常一样使用bak文件还原的方式迁移数据库,也不能使用数据导入导出向导。很多SQL Server的特性在SQL Azure中不被支持。

    那我们怎样才能将现有数据库迁移到SQL Azure上呢?

    一、“将数据库部署到SQL Azure”向导

      我最先想到的是这个向导,对数据库右键=>任务=>选择“ 将数据库部署到SQL Azure”。按照部署向导一步一步执行到最后会得到这样一个长长的错误列表:

           

    如图中错误信息所示,SQL Azure不支持SQL Server的扩展属性[MS_Description](字段说明)。修改现有数据库把所有字段说明全删除显然不可行,即使可以,也会有新的兼容性问题在等着你。使用数据导入导出向导同样不能完美解决问题。

    二、使用DAC迁移数据库架构

    于是我尝试用DAC包来只迁移架构,DAC是数据层应用程序,使用SQL Server Management Studio(SSMS)的“提取数据层应用程序”向导可以将数据库的架构信息打包至一个.dacpac文件里,如图所示:

    然后打开SSMS,使用SQL Azure的“部署数据层应用程序”向导,选择刚才的.dacpac文件,即可将数据库架构迁移到SQL Azure。

    但是DAC包只包含数据库的架构定义信息,不包含数据,所以只能进行架构的迁移。如果数据库有海量数据,该怎么迁移呢?

    三、使用SQLAzureMW完美实施数据库迁移

    SQLAzureMW是第三方数据库迁移工具,能很好的解决SQL Server至SQL Azure的迁移问题。

    它会解决SQL Server和SQL Azure的兼容性冲突,生成SQL Azure兼容的脚本,然后远程执行脚本实施数据库迁移。

    该工具下载地址:http://sqlazuremw.codeplex.com/

    我以数据库School为例,它包含100万条数据以及复杂的外键关系,约束。另外还包含存储过程1个,视图1个。

    具体步骤如下:

      1. 选择分析并迁移/数据库

             

      2.选择源数据库,以本地数据库school为例

            

      3.选择要生成的数据库对象

           

      4.打开高级选项,确保“生成表/数据”一项选择的是“表结构和数据”

       

      5.检查将要生成脚本的数据库对象

       

      6.脚本生成成功

       

      7.链接目标数据库,我这里以SQL Azure上的SchoolAzure为例

       

      8.点击下一步,执行脚本

       

      9.打开SSMS查看结果,可以看到表、数据、主外键关系、约束、视图、存储过程都在。迁移成功!

       

          后记:数据库一旦迁移到Azure上,以后的备份和还原工作就简单得多了,直接在Windows Azure管理门户上导出.bacpac包,即可进行备份或迁移至本地。

         

  • 相关阅读:
    HDU 4024 Dwarven Sniper’s hunting(数学公式 或者是二分)
    二分图最大匹配总结
    HDU 4022 Bombing (STL应用)
    HDU 1847 Good Luck in CET4 Everybody!(组合博弈)
    HDU 1556 Color the ball(树状数组)
    HDU 4023 Game(博弈)
    HDU 1406 完数(水题)
    HDU 4021 24 Puzzle
    Oracle 多表查询优化
    【编程之美】字符串移位包含的问题(续)
  • 原文地址:https://www.cnblogs.com/choon/p/SQLServerToAzure.html
Copyright © 2011-2022 走看看