利用DAC(Data-tier Application)实现数据库结构迁移
从一个存在的库,抽取其表结构,对象,权限等,再部署成一个不包含数据的”空库“的方法有很多种。如自带的Generate Scripts功能,自定义脚本提取创建脚本等。
在实际使用中,我更喜欢使用DAC的方式。特别是它能跟PowerShell结合使用。
什么是DAC,它能干什么?
数据层应用程序 (DAC) 可以简化支持客户端-服务器或多层应用程序的数据层元素的开发、部署和管理。每个 DAC 都作为单个管理单元运行,贯穿于关联应用程序的开发、测试和生产生命周期。DAC 定义支持应用程序所需的所有数据库对象(如表和视图)以及与数据库关联的实例对象(例如登录名)。DAC 还包括用于定义 DAC 的部署先决条件的策略。
它能实现的功能很,官方说明:数据层应用程序
下面简单介绍一下利用DAC迁移数据结构的步骤:
1. 创建测试库和登录。然后提取库为DAC包,这个过程有向导,很简单,基本一路Next。
use master
go
create database DAC_Test
go
create login DAC_User with password='P@ssword123'
go use DAC_Test
go
select * into tb1 from sys.objects
select * into tb2 from sys.objects
go
create user DAC_User for login DAC_User
exec sp_addrolemember 'db_owner','DAC_User'
go

2. Application name需要注意,后面会用到。

3. 提取DAC并不是所有对象都受支持,支持类型限制在BOL中有说明。我曾经就遇到过数据库有Synonyms不能提取,只能先删除之,再提取。
然后一路Next,得到一个生成的DAC包。

4. 在目标实例上创建一个空库,不一定要同名。首先将这个库注册成DAC。

5. 注册的Application name要与2.中的一致。

6. 注册成功后, 在Management—>Data-tier Application会看到此DAC。

7. 将前面生成DAC包,拷到一个目标实例上能访问的位置。然后使用Upgrade Data-tier Application将这个包导入。一路Next.


8. 完成后,源库中的各种对象都有了。有一点要注意,目标实例被导入的Login是被禁用的,并且在目标库上对应User的Role,并不是原来的db_owner,而是public。
需要使用则要手动设定之。

总结
1. DAC是很强大的一个工具,还有很多功能。
2. SQL Server要是能提供Backup Database ….WITH NO_DATA,也就不会有这么多事了。
利用DAC(Data-tier Application)实现数据库结构迁移的更多相关文章
- 华为云推UGO:一手抓结构迁移,一手抓SQL转换
摘要:UGO,一款专注于异构数据库对象迁移和应用迁移的专业化工具. 近日,华为云推出数据库和应用迁移 UGO,这是一款专注于异构数据库对象迁移和应用迁移的专业化工具,通过预迁移评估.结构迁移两大核心功 ...
- 利用powerdesigner反向数据库结构,生成ER图
参考月下狼~图腾~:<利用powerdesigner反向数据库结构,生成ER图> https://www.zybuluo.com/Jpz/note/123582 首先新建一个"P ...
- Mysql 利用拷贝data目录文件的方式迁移mysql数据库
Mysql 利用拷贝data目录文件的方式迁移mysql数据库 步骤如下: 1.首先要确定data目录 这个问题困扰了我很久,因为网上的帖子大部分只是说拷贝mysql数据库目录下的data文件夹中的数 ...
- C# 利用mysql.data 在mysql中创建数据库及数据表
C# 利用mysql.data 在mysql中创建数据库及数据表 using System; using System.Collections.Generic; using System.Linq; ...
- 利用PowerDesigner比较2个数据库结构
主要实现思路 建立新旧数据库ODBC 导入原始数据模型 选择并比较对象 .PowerDesigner中可以对2个数据模型进行比较,所以想到用这个功能来实现对比数据库的目的.到底怎样利用PowerDes ...
- Code First 更新数据库结构(简单实现方法:会删除原来的数据)
之前在 http://www.cnblogs.com/mmcmmc/p/3833265.html 写到关于“Code First 更新数据库结构”的东西. 可是由于某种原因,新手们会出现各种问题,好了 ...
- .net mvc 站点自带简易SSL加密传输 Word报告自动生成(例如 导出数据库结构) 微信小程序:动画(Animation) SignalR 设计理念(一) ASP.NET -- WebForm -- ViewState ASP.NET -- 一般处理程序ashx 常用到的一些js方法,记录一下 CryptoJS与C#AES加解密互转
.net mvc 站点自带简易SSL加密传输 因项目需要,传输数据需要加密,因此有了一些经验,现简易抽出来分享! 请求:前端cryptojs用rsa/aes 或 rsa/des加密,后端.net ...
- [转]oracle学习入门系列之五内存结构、数据库结构、进程
原文地址:http://www.2cto.com/database/201505/399285.html 1 Oracle数据库结构 关于这个话题,网上一搜绝对一大把,更别提书籍上出现的了,还有很多大 ...
- ECSHOP 数据库结构说明 (适用版本v2.7.3)
ECSHOP 数据库结构说明 (适用版本v2.7.3) 1.account_log 用户账目日志表 字段 类型 Null/默认 注释 log_id mediumint(8) 否 / 自增 ID 号 u ...
随机推荐
- Nginx 限制php解析、限制浏览器访问
限制php解析 1.有时候会根据目录来限制php解析: location ~ .*(diy|template|attachments|forumdata|attachment|image)/.*\.p ...
- python 异常的引发和捕捉处理
1.什么是异常(exception): 异常是python发现某个地方出现逻辑错误时,抛出一个信号,即异常的引发.如果有捕捉语句在,则异常信号被捕捉,如果没有则会传递到默认异常处理器(终止程序). ...
- 周立功CAN-II引脚图
注意:如果需要两个CAN通道通信,直接用杜邦线将L连L,H连H,地连地就行(3.6引脚已做短接处理),不需要反接
- object c中@property 的使用
assign: 对基础的数据类型,比如NSInteger和C数据类型(int,float,char)等 copy: 针对NSString retail: 针对NSObject及其子类 nonat ...
- cookie 与 session 的区别详解
[转]cookie 与session 的区别详解 二者的定义: 当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是一些选择,都纪录下来.当 ...
- python标准库学习-SimpleHTTPServer
这是一个专题 记录学习python标准库的笔记及心得 简单http服务 SimpleHTTPServer 使用 python -m SimpleHTTPServer 默认启动8000端口 源码: &q ...
- OwinStartup not firing
https://stackoverflow.com/questions/20203982/owinstartup-not-firing 缺少依赖 Make sure you have installe ...
- how to create an asp.net web api project in visual studio 2017
https://docs.microsoft.com/en-us/aspnet/web-api/overview/getting-started-with-aspnet-web-api/tutoria ...
- HUE中oozie执行shell
Oozie执行Shell,传入参数1. 新建一个workflow 2. 拖入一个shell 3. shell脚本如下 #!/bin/sh sqoop import --connect jdbc:mys ...
- CommStringLib
#include "syswatcher/CommStringLib.h" //#include "String16.h" #undef LOG_TAG #de ...