澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

澳门新萄京官方网站:数据库的迁移,上进行应

2019-11-24 作者:数据库网络   |   浏览(145)

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


从一个存在的库,抽取其表结构,对象,权限等,再部署成一个不包含数据的”空库“的方法有很多种。如自带的Generate Scripts功能,自定义脚本提取创建脚本等。

对于普通应用程序的部署和升级,大家已经非常熟悉和习惯的使用MSI或者Click Once了。 那么对于数据层,微软有什么类似的标准而易用的解决方案,可以统一将所需的所有数据库和实例对象(例如,用户表、存储过程、视图、登录等)统一打包,能够 对版本,部署和升级条件及策略的声明和控制呢?这就是数据层应用程序(Data-tier Application,DAC)。

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

数据应用层程序(Data-Tier Application Component, DAC)是SQL Sever 2008 R2的一大功能亮点,结合使用Visual Studio 2010,可以帮助开发人员和数据库管理员比以前更加有效的开发、部署、管理应用程序的数据层。

在实际使用中,我更喜欢使用DAC的方式。特别是它能跟PowerShell结合使用。

数据层应用程序DAC可使用以下两个工具来实现:

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

数据库应用层程序(DAC)是一个包含了几乎某一应用所需要的数据库及实例对象的实体,如表、视图、存储过程、登录等等。有了实体以后,开发人员或数据库管理员就可以把DAC打包成为一个单一实体,这个单一实体就是DAC包。 DBA可以把DAC包部署到SQL Server上,数据库管理员就可以把原本独立的对象视为一个数据库应用层的程序来进行部署、监控和管理。

什么是DAC,它能干什么?

      数据层应用程序 (DAC) 可以简化支持客户端-服务器或多层应用程序的数据层元素的开发、部署和管理。每个 DAC 都作为单个管理单元运行,贯穿于关联应用程序的开发、测试和生产生命周期。DAC 定义支持应用程序所需的所有数据库对象(如表和视图)以及与数据库关联的实例对象(例如登录名)。DAC 还包括用于定义 DAC 的部署先决条件的策略。      

它能实现的功能很,官方说明:数据层应用程序.aspx)

 

下面简单介绍一下利用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

澳门新萄京官方网站 1

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

澳门新萄京官方网站 2

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

    然后一路Next,得到一个生成的DAC包。

澳门新萄京官方网站 3

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

澳门新萄京官方网站 4

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

澳门新萄京官方网站 5

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

澳门新萄京官方网站 6

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

澳门新萄京官方网站 7

澳门新萄京官方网站 8

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

需要使用则要手动设定之。

澳门新萄京官方网站 9

 

  • 可使用 Microsoft Visual Studio 2010 中的数据层应用程序项目编写和构建 DAC,并可以进行对 T-SQL 代码运行静态代码分析、重构 T-SQL 代码、声明 版本和部署意向的策略;升级DAC时还可以对数据层应用程序进行架构对比。
  • 可以使用 SQL Server Management Studio 中的提取数据层应用程序向导从现有的数据库中提取 DAC,或进行DAC的部署、升级和统一管理。

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

DAC既为开发人员提供了新的数据库开发工具,又为DBA提供了数据层管理工具,开发人员开发出DAC应用后,通过VS2010 IDE的编译,打包成DAC包(其扩展名是.dacpac)并提供给数据库管理员,DBA通过SSMS把DAC包部署到SQL Server数据库上。DAC应用开发、部署、管理的整个过程如图1所示:

总结

  1. DAC是很强大的一个工具,还有很多功能。

  2. 澳门新萄京官方网站:数据库的迁移,上进行应用开发。SQL Server要是能提供Backup Database ….WITH NO_DATA,也就不会有这么多事了。

数据层应用程序DAC在软件生命周期中的具体应用:

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

澳门新萄京官方网站 10.jpg)

  • 开发:Visual Studio 2010 中添加了一些新功能和增强功能:
    • 全面支持数据层应用程序开发。
    • 全新的 Transact-SQL 编辑器体验。
    • 集成式编辑器、调试器、离线和在线 IntelliSense、语言服务和策略设计器。
    • 静态代码分析和构建服务。
  • 部署:引入全新的部署单元DAC包( DACPAC),从而轻松高效准确地从 Visual Studio 2010 和 SQL Server Management Studio 部署和升级数据层应用程序。DACPAC是.zip格式的,其中包含.XML和.SQL文件,以方便浏览和对比。
  • 管理:SQL Server 2008 R2 引入了 SQL Server 实用工具控制点(SQL Server 实用工具)的概念,极大地简化了多个 SQL Server 实例的管理。您可以采用 SQL Server 实例并将其注册为现有 SQL Server 实用工具,从而同时在实例和应用程序级别监控其性能和配置。这有助于您进行趋势分析,从而提高资源利用率并最终降低成本。详细信息及演示,请参考我们的这篇文章。

二,迁移数据库架构示例

图1 DAC开发和生产过程

澳门新萄京官方网站 11

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

对DAC有了大概了解后,接下来我们以一个完整的实例结合VS 2010来介绍DAC应用程序的开发和部署过程。

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

这里我们分成三个部分:DAC开发环境、创建DAC应用、部署DAC应用。

澳门新萄京官方网站 12

1.DAC开发环境

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

在VS 2010 和SQL Server 2008 R2(包括SQL Server 2008)之前,我们是不能单独在Visual Studio或者SQL Server里创建DAC的,以VS 2008 SQL Server2008开发环境为例,在此环境下可以创建的数据库项目如图2所示:

澳门新萄京官方网站 13

澳门新萄京官方网站 14.jpg)

2,拆包(unpack)DAC

图2 VS 2008数据库项目模板

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

而数据应用层支持的SQL Server版本如表1所示:

澳门新萄京官方网站 15

澳门新萄京官方网站 16.jpg)

澳门新萄京官方网站 17

在DAC中,不是所有的SQL Server对象都支持, 能够支持的数据库对象如表2所示:

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

表2 DAC支持的SQL Server对象

澳门新萄京官方网站 18

澳门新萄京官方网站 19.jpg)

3,注册(Register)DAC

应用&实践

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

使用AdventureWorks创建DAC包

澳门新萄京官方网站 20

为了验证SQL Server 2008 R2中DAC对SQL Server对象的支持,我们以SQL Server 2008 R2的实例数据AdventureWorks为例来演示。

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

对已经存在的数据库SQL Server 2008 R2可以使用向导来创建数据层应用程序,使用向导页面,可以设置DAC属性,查看对象依赖项和验证结果和生成DAC包。

澳门新萄京官方网站 21

(1)打开Microsoft SQL Server Management Studio,右击AdventureWorks,选择任务|提取数据层应用程序(X)…

4,部署(Deploy)DAC

(2)在弹出的页面中可以看到DAC简介,点击“下一步”,设置DAC属性,这里可以设置的属性有:应用程序名称、版本号、说明、保存的DAC包文件

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

(3)设置完成后点击下一步,查看对象依赖项和验证,验证结果如图3所示:

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

澳门新萄京官方网站 22.jpg)

澳门新萄京官方网站 23

图3 AdventureWorks库验证结果

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

案例使用AdventureWorks创建DAC包不仅给大家展示了DAC支持和不支持的数据库对象,同时也给大家(尤其是DBA)提供了一种简单而有效的创建DAC的方法,感兴趣的读者可以自己下去尝试一下。

澳门新萄京官方网站 24

安装了SQL Server 2008 R2和VS 2010后,我们就可以创建DAC应用,如图4所示:

澳门新萄京官方网站 25

澳门新萄京官方网站 26.jpg)

4,升级(Upgrade)DAC

图4 使用VS2010创建数据层应用程序

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

同时在应用程序模板的右侧我们可以看到数据层应用程序的概念和作用。

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

2.创建DAC应用

澳门新萄京官方网站 27

开发人员创建DAC应用后,需要对数据DAC应用做一些初始化,这些初始化的操作可以是创建表、字段、视图,不仅如此,还可以把已经存在的DAC包导入,或者直接导入脚本来创建DAC应用。

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

案例&应用

澳门新萄京官方网站 28

在VS 2010中创建DAC应用SqlDacDemo

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

在如图3所示的界面上,我们创建用于演示的项目SqlDacDemo,并把项目的解决方案存入E:Demo下,点击“OK”,创建DAC应用如图5所示:

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

澳门新萄京官方网站 29.jpg)

方法一,使用SSMS向导

图5 创建SqlDacDemo

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

在图4所示界面中,我们可以看到使用VS 2010创建DAC应用程序后,可以创建和实现的功能有:Data Generation Plans、Schema Comparison、Schema Objects、Script。其中Schema Objects是我们在此演示案例中主要创建的对象,使用Schema Comparison可以对数据库的Schema进行比较,常用来对同一个应用的不同版本Schema进行比较。

澳门新萄京官方网站 30

在此演示案例中,我们创建两个数据表:Users和Products,并对SqlDacDemo项目进行编译打包,为第三步部署DAC应用做好准备工作。

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

(1)在项目工程中依次展开Schema Objects|Schemas|tables,右击“Tables”,选择Add,弹出添加表的界面,如图6所示:

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

澳门新萄京官方网站 31.jpg)

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

图6 添加数据表

参数解释:

输入Users,点击“Add”,创建Users.Table.Sql,重复步骤1,添加Products.Table.Sql,输入创建用户表(Users)和产品表(Products)的脚本,完成后可以在Schema Objects|Schemas|tables下增加了两个文件Users.Table.Sql和Products.Table.Sql,这样我们创建表的工作已经完成了。

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

我们可以直接写SQL 脚本来创建数据表,不仅如此,在DAC项目中,还可以创建的内容有:

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

在项目属性里设置项目版本、默认Schema、

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

数据层应用属性,如DAC的名称、版本、描述

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

Schema 对象,如Assembly、Trigger、安全、服务、存储、表、视图、函数

 

所有数据库引擎实例级别的对象,例如错误信息、连接的服务器

参考文档:

其他辅助文档和一些脚本,如部署前准备脚本及部署后清理脚本等等

Data-tier Applications

(2)创建表完成后,需要设置项目的属性,右击解决方案“SqlDacDemo”,选择属性,弹出的属性页里选择项目设置,如图7所示:

Export and Import BACPAC using command line

澳门新萄京官方网站 32.jpg)

SqlPackage.exe.aspx)

图7 项目属性设置

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

如图7所示,在项目属性页里,可以项目版本、数据模型、默认的Schema,数据层应用属性,这里的重点是数据层应用属性,其可设置属性有名称、版本号、描述。

选择Build页,设置数据集合、编译输出文件路径、编译输出文件名称,设置完成后,点击保存。

(3)编译工程文件,选择菜单Build| Build Solution,可以看到:

SqlDacDemo -> E:DemoSqlDacDemoSqlDacDemosqldebugSqlDacDemo.dacpac

Build: 1 succeeded or up-to-date, 0 failed, 0 skipped

这说明我们的编译已经成功,右击我的电脑|打开-> E:DemoSqlDacDemoSqlDacDemosqldebug,看到打好的DAC包文件SqlDacDemo.dacpac。

3.部署DAC应用

创建DAC包成功后,需要把DAC包部署到数据库服务器上去,如果是开发人员测试部署,可以使用VS 2010自带的部署DAC包的功能,如果是DBA部署,可以使用SSMS来部署DAC包。

案例&应用

在VS 2010中部署DAC包SqlDacDemo.dacpac

在步骤2中,我们创建并打包好了DAC包文件SqlDacDemo.dacpac,接下来就要把这个包部署到数据库服务器上去,可以使用VS 2010来部署DAC包,也可以使用SSMS来部署DAC包。首先我们演示使用VS 2010来部署DAC包。

(1) 可以选择菜单Build | Deploy SqlDacDemo部署,也可以右击解决方案名称“SqlDacDemo”,选择Deploy部署,部署结果如下:

澳门新萄京官方网站 33.jpg)

图8 部署DAC包

(2)解决部署错误

由图8我们可以看到失败的原因是没有连接到数据库,解决方法如下:右击解决方案SqlDacDemo,选择属性,打开项目属性设置,选择部署(Deploy)页,设置要连接的数据和数据库实例名称,本例中设置为SqlDacDemo,保存后再次部署,我们可以看到编译器输出如下代码:

Post-Deploy: Finished script execution.

Build: 1 succeeded or up-to-date, 0 failed, 0 skipped

Deploy: 1 succeeded, 0 failed, 0 skipped

VS 2010已经提示我们部署成功,使用SSMS打开数据库,我们可以清楚的看到SQL Server已经添加了数据库SqlDacDemo。

除了使用VS 2010 来部署DAC包,我们也可以使用SQL Server 2008 R2所带的实用工具管理器来部署DAC包。实用工具管理器部署DAC包主要实现两个主要步骤:创建并连接UCP、使用部署向导部署DAC包。

(1)打开查看|使用工具资源管理器,打开配置SQL Server实体的操作的界面如图9所示:

澳门新萄京官方网站 34.jpg)

在此界面下,创建并连接到UCP,完成后就可以部署DAC包了。

(2)部署DAC

在已有DAC包的情况下,可以使用SSMS来部署DAC包,使用SQL Server 自带工具部署DAC包的界面如图10所示:

澳门新萄京官方网站 35.jpg)

图10 部署DAC

如果我们把刚才使用VS 2010编译的SqlDacDemo.dacdpc包直接拿来部署,SQL Server会提示我们已经存在同名的DAC实例,这也为我们以后更新DAC包留下了一条后路。

点击“部署应用层程序”后,会弹出向导,根据向导选择要部署的DAC包,更新配置,部署DAC,部署DAC是最后一步,同时也是部署DAC最关键的一步,包括准备元数据、准备部署脚本、创建数据库、在MSDB中注册,都提示成功后就可以把DAC包部署到SQL Server 服务器上。刷新数据库,就可以看到已经创建了新的数据库,切换到实用工具资源管理器,可以看到如图11所示的界面:

澳门新萄京官方网站 36.jpg)

图11 已部署的数据层应用程序

在这里我们可以看到已经部署的DAC包SqlDacDemo。

总结语

数据应用层程序(Data-Tier Application Component, DAC)提供了全新的方法来管理数据库,对DBA来说,可以通过SQL Server 2008 R2来创建、配置、更新、删除和管理DAC;对VS开发人员来说,可以通过Visual Studio 2010 来创建和部署DAC。有了这样简单而又强大的工具后,DBA对数据的管理会更加高效。

转自赛迪:
       MSDN上也有了:

 

本文由澳门新萄京官方网站发布于数据库网络,转载请注明出处:澳门新萄京官方网站:数据库的迁移,上进行应

关键词: