从一个存在的库,抽取其表结构,对象,权限等,再部署成一个不包含数据的”空库“的方法有很多种。如自带的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'
gouse 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,也就不会有这么多事了。

转载于:https://www.cnblogs.com/Joe-T/p/3993095.html

利用DAC(Data-tier Application)实现数据库结构迁移相关推荐

  1. SQL SERVER data tier application 的作用及如何使用SSDT进行SQL数据库的自动化部署到生产环境和版本控制

    这个是管理员用来发布数据库所有的脚本用的,自SQL2008以后,微软开始将数据库的开发整合到VS2010上,用户可以将数据所有的相关对象打包成一个DAC包,让管理通过extract data-tier ...

  2. 华为云推UGO:一手抓结构迁移,一手抓SQL转换

    摘要:UGO,一款专注于异构数据库对象迁移和应用迁移的专业化工具. 近日,华为云推出数据库和应用迁移 UGO,这是一款专注于异构数据库对象迁移和应用迁移的专业化工具,通过预迁移评估.结构迁移两大核心功 ...

  3. mysql复制库目录结构_利用拷贝data目录的方式进行迁移mysql5.7数据库

    利用拷贝data目录文件的方式迁移mysql数据库 其实迁移数据库,一般用sql文件就行,把A服务器数据库的表结构和数据等等导出,然后导入到B服务器数据库, 但是这次数据文件过大,大约有57个G,使用 ...

  4. 数据库应用 --- Yelp Data Analysis Application

    数据库应用 --- Yelp Data Analysis Application Overview Basic Info Functionality 初始GUI Simple Business Sea ...

  5. 数据库结构Sqlite与CoreData

    改章节是一篇关于数据库结构的帖子 这两个就不是同一个层面的东西,core data是ORM框架+objects graph,它可以选择sqlite,xml,plist或是其他方式作为持久化方案.所以如 ...

  6. [翻译]The Data Access Application Block

    Enterprise Library 4.1 - October 2008 The Data Access Application Block 数据访问应用块 The Enterprise Libra ...

  7. C#分析数据库结构,使用XSL模板自动生成代码

    <html> <head> <TITLE>分析数据库结构,自动生成代码</TITLE> <meta http-equiv="Conten ...

  8. oracle数据库存储结构语句,oracle之物理数据库结构描述

    oracle之物理数据库结构概述 oracle的物理结构其实是由各种各样的文件组成的, 其中与数据库相关的有: 数据文件(data file):这些文件是数据库的主要文件:其中包括数据表.索引和所有其 ...

  9. oracle之物理数据库结构概述(数据文件、重做日志文件,控制文件等各种数据库文件)

    oracle之物理数据库结构概述 oracle的物理结构其实是由各种各样的文件组成的, 其中与数据库相关的有: 数据文件(data file):这些文件是数据库的主要文件:其中包括数据表.索引和所有其 ...

最新文章

  1. mysql构造函数_MySQL行构造器表达式优化(Row Constructor Expression)
  2. 面向对象软件设计——设计模式学习
  3. 轻松学习Linux之自动执行任务
  4. 第五讲 类的封装和类的继承
  5. 发现一个好工具RenderDoc
  6. offsetLeft 解析
  7. php static method,php 类方法用static::hello(); 等同于 $this-hello();吗?
  8. 如何成为一名出色的次世代游戏美术师?
  9. 提高MySQL性能的方法
  10. Android 异步任务
  11. 单片机c语言实习报告,单片机C语言程序设计实训100例.pdf
  12. 【数学逻辑思维】A 好玩的数独游戏——001
  13. VMWare16下载安装Centos7镜像教程,详细记录
  14. SQL Server添加Northwind数据库
  15. 植物大战僵尸 php,植物大战僵尸修改器使用方法 php 函数使用方法与函数定义方法...
  16. CocosCreator之构建web版时自动使用模板文件
  17. Unity 2D 自定义碰撞系统(一)
  18. android脚本精灵开发,触动精灵脚本开发示例代码
  19. 抽35块树莓派新品单片机送给可爱的你们
  20. 4054原厂LTH7R座充充电管理IC

热门文章

  1. 华为发布会: 牛逼鸿蒙,吹水的大会
  2. [Python]网络爬虫(五):urllib2的使用细节与抓站技巧
  3. Spring Boot构建RESTful API与单元测试
  4. MYSQL:约束?添加约束?删除约束?以及一些其他修饰?
  5. queue:queue清空的方法?
  6. 5.MYSQL存储过程的管理
  7. iphone11计算机出现问题,苹果11出现死机现象
  8. linux连接redis 命令_在Docker中使用Redis
  9. 美国一大型数据中心将24h由光伏+储能供电
  10. 供配电负荷计算方法详解