数据层应用程序(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 Server\110\DAC\bin\sqlpackage.exe”
/a:Import
/sf:C:\DataExtraction\Tailspintoys.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 Server\130\DAC\bin\SqlPackage.exe 
-a:Import -sf:C:\TestDAC\dac_name.bacpac -tsn:server_name -tdn:db_name -ttsc:true

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

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

DAC Usage2:通过DAC实现DB Schema的Migration和Upgrade的更多相关文章

  1. jBPM4.4 no jBPM DB schema: no JBPM4_EXECUTION table. Run the create.jbpm.schema target first in the install tool.

    jBPM4.4 no jBPM DB schema: no JBPM4_EXECUTION table. Run the create.jbpm.schema target first in the ...

  2. DAC Usage4:从 Backup Package(.bacpac)还原DB

    使用DAC,能够将database的schema 和 data 从一个server 或 cloud 上复制到另外一个server上,存储schema 和 data的文件是 .bacpac 文件. 方法 ...

  3. MS SQL专用管理员连接DAC

    在SQL SERVER 2005中,微软引入了一个叫做数据库专用管理员连接方式(DAC Dedicated Administrator Connection)的特性,使用这个新特性,数据库管理员可以在 ...

  4. DAC杂谈二 ——ADC和DAC常用技术术语

    采集时间 采集时间是从释放保持状态(由采样-保持输入电路执行)到采样电容电压稳定至新输入值的1 LSB范围之内所需要的时间.采集时间(Tacq)的公式如下: 混叠 根据采样定理,超过奈奎斯特频率的输入 ...

  5. STM32之DAC君

    如花说得好:呃呃呃.是俗话说得好:有了ADC,怎可少了DAC..我觉得奇怪.今天我开头就直奔主题了.我想了想,总结了一句话:孙悟空纵然有七十二变.无论是变成猫也好,变成狗也罢.始终还是会变回他本身.所 ...

  6. STM32 DAC的配置与使用

    本博文转自:http://blog.chinaunix.net/uid-24219701-id-4101802.html STM32 的 DAC 模块(数字/模拟转换模块)是 12 位数字输入,电压输 ...

  7. 智能车学习(五)—— dac学习

    一.代码共享: 1.dac.h #ifndef DAC_H_ #define DAC_H_ #include "common.h" // 2.2 DAC控制寄存器0 位定义 #de ...

  8. 小梅哥FPGA数字逻辑设计教程——基于线性序列机的TLC5620型DAC驱动设计

    基于线性序列机的TLC5620型DAC驱动设计 目录 TLC5620型DAC芯片概述:    2 TLC5620型DAC芯片引脚说明:    2 TLC5620型DAC芯片详细介绍:    3 TLC ...

  9. 【二代示波器教程】第12章 示波器设计—DAC信号发生器的实现

    第12章      示波器设计—DAC信号发生器的实现 本章节为大家讲解二代示波器中信号发生器的实现.这个功能还是比较实用的,方便为二代示波器提供测试信号.实现了正弦波,方波和三角波的频率,幅度以及占 ...

随机推荐

  1. JS定义数组,初始化

    定义一维数组 方法1: var _TheArray = new Array);/定义 _TheArray[0]="1"; _TheArray[1]="2"; _ ...

  2. ps教程连接

    教程1:http://www.68ps.com/jc/ps_tp.asp 教程2:http://www.3lian.com/edu/photoshop/

  3. React虚拟DOM浅析

    在Web开发中,需要将数据的变化实时反映到UI上,这时就需要对DOM进行操作,但是复杂或频繁的DOM操作通常是性能瓶颈产生的原因,为此,React引入了虚拟DOM(Virtual DOM)的机制. 什 ...

  4. Oldboy-Homework-Week2.2

    一.关于Python全栈开发第二周所讲内容的回忆(上篇)6.列表(list).元组(tuple).字典(dictionary)7.字符串.及其字符串格式化输出8.for循环二.详细内容6.1列表:列表 ...

  5. 简述HTML DOM及其节点分类

    在JavaScript中,document这个对象大家一定很熟悉,哪怕是刚刚开始学习的新人,也会很快接触到这个对象.而document对象不仅仅是一个普通的JavaScript内置对象,它还是一个巨大 ...

  6. pyqt 发射接收信号

    翻页控件: 一.定义并发射信号: #!/usr/bin/python # #coding=utf-8 # __author__='' from PyQt4.QtCore import * from P ...

  7. Java 语句循环

    编写程序,显示Welcome to Java 五次. public class Welcome{ public static void main(String[] args){ int i;(定义变量 ...

  8. 【填坑】bzoj3224 splay裸题

    人生第一道splay不出所料是一道裸题,一道水题,一道2k代码都不到的题 #include <cstdio> ,n,p,q; ],c[][],size[],sp[]; void rot(i ...

  9. 微软官方提供的免费正版 Windows 8.1/Win10/7/XP/Vista 操作系统虚拟机镜像下载

    https://dev.windows.com/en-us/microsoft-edge/tools/vms/windows/

  10. dede 简略标题调用标签

    一.简略标题调用标签: 1.{dede:field.shorttitle/} 不可以在{dede:arclist}标签中套用,一般放在网页titile处; 2.[field:shorttitle/] ...