DAC Usage2:通过DAC实现DB Schema的Migration和Upgrade
数据层应用程序(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实例。
DAC Usage2:通过DAC实现DB Schema的Migration和Upgrade的更多相关文章
- 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 ...
- DAC Usage4:从 Backup Package(.bacpac)还原DB
使用DAC,能够将database的schema 和 data 从一个server 或 cloud 上复制到另外一个server上,存储schema 和 data的文件是 .bacpac 文件. 方法 ...
- MS SQL专用管理员连接DAC
在SQL SERVER 2005中,微软引入了一个叫做数据库专用管理员连接方式(DAC Dedicated Administrator Connection)的特性,使用这个新特性,数据库管理员可以在 ...
- DAC杂谈二 ——ADC和DAC常用技术术语
采集时间 采集时间是从释放保持状态(由采样-保持输入电路执行)到采样电容电压稳定至新输入值的1 LSB范围之内所需要的时间.采集时间(Tacq)的公式如下: 混叠 根据采样定理,超过奈奎斯特频率的输入 ...
- STM32之DAC君
如花说得好:呃呃呃.是俗话说得好:有了ADC,怎可少了DAC..我觉得奇怪.今天我开头就直奔主题了.我想了想,总结了一句话:孙悟空纵然有七十二变.无论是变成猫也好,变成狗也罢.始终还是会变回他本身.所 ...
- STM32 DAC的配置与使用
本博文转自:http://blog.chinaunix.net/uid-24219701-id-4101802.html STM32 的 DAC 模块(数字/模拟转换模块)是 12 位数字输入,电压输 ...
- 智能车学习(五)—— dac学习
一.代码共享: 1.dac.h #ifndef DAC_H_ #define DAC_H_ #include "common.h" // 2.2 DAC控制寄存器0 位定义 #de ...
- 小梅哥FPGA数字逻辑设计教程——基于线性序列机的TLC5620型DAC驱动设计
基于线性序列机的TLC5620型DAC驱动设计 目录 TLC5620型DAC芯片概述: 2 TLC5620型DAC芯片引脚说明: 2 TLC5620型DAC芯片详细介绍: 3 TLC ...
- 【二代示波器教程】第12章 示波器设计—DAC信号发生器的实现
第12章 示波器设计—DAC信号发生器的实现 本章节为大家讲解二代示波器中信号发生器的实现.这个功能还是比较实用的,方便为二代示波器提供测试信号.实现了正弦波,方波和三角波的频率,幅度以及占 ...
随机推荐
- Android中ListView的几种常见的优化方法
Android中的ListView应该算是布局中几种最常用的组件之一了,使用也十分方便,下面将介绍ListView几种比较常见的优化方法: 首先我们给出一个没有任何优化的Listview的Adapte ...
- Eclipse 双击变量,其他相同变量有底色
转载:http://blog.csdn.net/majian_1987/article/details/46691697 方便下次查找. 在Eclipse中,鼠标选中或者光标移动到Java类的变量名时 ...
- Ansible-playbook批量部署,更新war脚本,可以再完善----后续再update
- name: install tomcat admin hosts: all sudo: True vars: war_file: /root/test.war tomcat_root: /data ...
- json相关的一些用法
一. json可以表示3种类型的值: 简单值 . 对象. 数组 表示对象时:>1. 没有变量的概念 ,所以不用申明变量 >2. 没有末尾结束 ...
- cf 红名计划!
我要成为红名爷! 这是现在好弱好弱的窝 >_< ****************UPD ON 2015/12/10 0:20 啊啊啊啊啊啊啊啊啊啊啊啊把时间记错了啊QAQ 我也不知道为什么 ...
- 选择列表中除了第一个li的其他元素
//选择div中除了第一个li的其他所以li元素 div li:not(:first-child){ }
- “眉毛导航”——SiteMapPath控件的使用(ASP.NET)
今天做网站的时候,用到了SiteMapPath控件,我把使用方法记录下来,以便日后查阅以及帮助新手朋友们. SiteMapPath”会显示一个导航路径(也称为痕迹导航或眉毛导航),此路径为用户显示当前 ...
- 【二】jekyll 的使用
本系列有五篇:分别是 [一]Ubuntu14.04+Jekyll+Github Pages搭建静态博客:主要是安装方面 [二]jekyll 的使用 :主要是jekyll的配置 [三]Markdown+ ...
- linux下打包zip文件
zip [参数] [打包后的文件名] [打包的目录路径] linux zip命令参数列表:-a 将文件转成ASCII模式-F 尝试修复损坏的压缩文件 -h 显示帮助界面-m 将文件压 ...
- win7 64位下 mongodb安装及命令运行
有网友老催我把框架加上mongodb的支持,于是偶尔抽空看了看相关的文章. 今天有缘,就把mongodb安装了一下,中间遇到了小小的问题,So,把整个过程记录一下: 1:先上官网:http://www ...