zoukankan      html  css  js  c++  java
  • 数据库的迁移

    数据层应用程序(Data-tier AppliCation,简称DAC)是一个数据库逻辑架构的管理工具,DAC定义了用于管理单个SQL Server数据库对象(包括table,view,以及实例级别对象login等)的元数据。使用DAC,用户能够很方便地将数据库打包成一个DAC package文件,后缀名是DACPAC,只需要简单的操作,就能将数据库部署在其他服务器上,类似于数据库的完整备份,只不过dacpac文件不包含数据,只包括数据库对象的元数据,用户使用这些元数据能够创建一个空的,一模一样的数据库。使用DAC,用户也能够将数据库对象的架构和数据打包成一个backup package文件,后缀名是bacpac。使用该文件,用户能够在另外一个SQL Server实例中创建新的数据库,新的数据库含有原始数据库的所有数据和架构(Schema)信息。

    通过DAC实现数据库的架构迁移,DACPAC文件主要用于部署数据库的架构(Schema),创建产品数据库的测试环境,对新业务需求进行代码逻辑测试;而BACPAC文件在逻辑上等价于数据库的完整备份,主要用于数据库架构和数据的整体迁移,BACPAC文件支持EXPORT操作,用于备份数据库,IMPORT操作用于在目标服务器上创建新的数据库,类似数据库的还原操作。

    一,使用DAC实现数据库的架构迁移

    完整的架构迁移操作,分为抽取(Extract)、注册(Register),部署(Deploy)和升级(Upgrade):

    • 抽取(Extract)DAC是根据现存的数据库创建DAC package文件,抽取数据库对象的定义和相关的实例级别的元素,比如Login,以及Login 和User之间的关系。
    • 注册(Register)DAC是根据DACpackage中包含的数据库对象的元数据,在目标SQL Server实例中注册数据库对象。
    • 部署(Deploy)DAC是在目标SQL Server 实例级别上,使用DAC package包含的数据库元数据创建新的DB
    • 升级(Upgrade) DAC是指对现存的数据库元数据进行升级,是DAC作为轻量型的数据库架构迁移工具的特征;

    二,迁移数据库架构示例

    1,抽取DAC,打开Extract DAC向导

    选择迁移数据库DAC_Study的架构,右击DAC_Study,打开菜单,一次点击“Tasks”->“Extract Data-tier Application...”,打开Extract DAC向导

    从开始界面(Introduction)可以看出,抽取(Extract)DAC主要分为三步:设置DAC属性,验证和创建Package,需要用户配置的是设置DAC的属性,在抽取DAC package时,必须填写一个唯一的应用程序名(Application name),该属性用于标识DAC。

    2,拆包(unpack)DAC

    unpack DAC 就是拆包,用于打开dacpac文件,查看文件的内容。选中一个dacpac文件,右击弹出“Unpack...”,将拆分文件存放到指定的目标文件夹。

    一个DACPAC文件,供拆解成四个文件,三个XML文件,一个TSQL脚本文件,包含用于创建数据库对象的代码,如图:

    3,注册(Register)DAC

    在目标SQL Server实例上创建一个空的数据库,新的数据库不一定和原来的数据库同名,将新数据库命名为DAC_Test,右击该数据库,一次点击“Tasks”->“Register as Data-tier Application...”,弹出注册(Register)DAC向导

    注册DAC的过程,主要分为三步:设置属性,验证和注册DAC,需要用户配置的是“设置属性”,用户必须填写正确的Application Name,该属性必须和DACPAC文件中的Application Name 相同。

    4,部署(Deploy)DAC

    在一个SQL Server 实例上部署(Deploy)DAC,实际上,是使用DACPAC文件创建新的数据库,实现数据库架构的迁移,和注册DAC不同的时,部署DAC不需要手动创建空的数据库。

    在部署DAC时,右击DataBases,弹出快捷菜单,点击 “Deploy Data-tier Application...”,弹出部署DAC向导,

    部署DAC的过程主要分为四部:选择DACPAC文件,配置部署,Review和部署。根据向导,选择需要部署的dacpack文件,配置新建的数据库名称,在name 属性中输入新的数据库名称,可以和原有的数据库名称不同,查看之后,点击Next,进行部署。部署完成之后,在当前的SQL Server实例中成功创建一个空的数据库。

    4,升级(Upgrade)DAC

    升级(Upgrade)DAC 是对现存数据库的架构(Schema)进行更新和升级,前提是必须有存在数据库,和注册(Register)DAC类似。

    选择升级的数据库,右击弹出快捷菜单,依次点击“Tasks”->“Upgrade Data-tier Application...”,打开升级(Upgrader)DAC向导

    升级DAC的过程十分简单,只需要选择包含最新元数据的dacpac文件,根据向导的提示,直接点击Next就能完成对现存数据库的升级。

    三,从 Backup Package(.bacpac)创建新的数据库

    使用bacpac文件,能够创建一个新的数据库,包含架构(schema)和数据(data),功能类似数据库的还原,都能创建一个新的、包含数据和架构的数据库。

    方法一,使用SSMS向导

    右击Databases,打开“Import Data-tier Application”,打开Wizard,按照UI提示配置即可

    方法二,使用SqlPackage.exe 实现自动导入DAC

    命令的调用示例,为了便于查看,我将命令格式化,在DOS命令行工具中,请不要换行。

    “C:Program Files (x86)Microsoft SQL Server110DACinsqlpackage.exe” 
    /a:Import 
    /sf:C:DataExtractionTailspintoys.bacpac 
    /tsn:cgrd7z8kac.database.windows.net 
    /tdn:Tailspintoys 
    /tu:mysysadmin@cgrd7z8kac 
    /tp:Pa55w0rd

    参数解释:

    • sf   – 指定bacpac文件
    • tsn – 指定SQL Server实例名,用于存储新的目标数据库
    • tdn – 指定目标数据库的名称
    • tu   – 指定用于访问SQL Server实例的登录名
    • tp   – 指定用于访问SQL Server实例的登录名对应的密码

    如果使用Windows 验证方式登陆,可以使用ttsc差数代替 tu 和 tp。

    C:Program Files (x86)Microsoft SQL Server130DACinSqlPackage.exe 
    -a:Import -sf:C:TestDACdac_name.bacpac -tsn:server_name -tdn:db_name -ttsc:true

    参数:ttsc:{True | False} 指定是否使用Secure Socket Layer (SSL) 加密,以Windows验证方式登录目标SQL Server实例。

    将数据库迁移到SQL Azure的三种工具

  • 相关阅读:
    Java--从键盘读取
    java--mkdirs()
    Java--正则表达式
    java--利用Filereader BufferedReader读取文本文档
    java--lambda表达式和动态数组arraylist的forEach方法
    substring 方法
    ES 字符串操作
    slice方法
    process.env.NODE_ENV
    像素
  • 原文地址:https://www.cnblogs.com/ljhdo/p/5173514.html
Copyright © 2011-2022 走看看