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包,即可进行备份或迁移至本地。

         

  • 相关阅读:
    12
    11-常用模块
    10-异常处理
    C#程序关闭时怎么关闭子线程
    [转]Android加载图片堆栈溢出
    [转]JS弹出确认/取消对话框
    [整理]获取当前页面的网址
    C/C++多参数处理
    图标素材网站收集
    PHP "Warning: Unknown: failed to open stream: Permission denied in Unknown on line 0" 错误
  • 原文地址:https://www.cnblogs.com/choon/p/SQLServerToAzure.html
Copyright © 2011-2022 走看看