设为首页 收藏本站
查看: 885|回复: 0

[经验分享] sql server 2008 R2 Data-tier Application 提供新的数据库升级方法

[复制链接]

尚未签到

发表于 2016-11-7 01:02:36 | 显示全部楼层 |阅读模式
sql server 2008 R2  Data-tier Application 提供新的数据库升级方法

 

数据库的升级总是比应用程序的升级要困难。应用程序升级不外乎就是完整的覆盖文件。而数据库的升级不能简单的做文件整体覆盖,而必须考虑用户数据的存在,保证用户数据是完整性和可用性。

 

以往我们升级数据库的方法可以简称为Create then Alter 。这个方法常常有两个文件构成,一个为Create.sql,一个是Alter.sql .Create.sql 建立1.0的数据库(包括模式和数据),Alter.sql 可以在任何版本的用户数据库上运行,然后把这个数据库升级到最新版本。整个alter.sql内,必须详细的说明从1.0以来到最新版本的全部变化——需要小心编写这个文件——做很多的检查来适应不同版本的数据库,并且不能破坏任何用户数据。

 

 

比如说我们做了一个应用,1.0 版本中有一个表

 

CREATE TABLE [dbo].[Person]

(

    id int NOT NULL,

    name int NOT NULL

)

 

在版本2.0的时候,需要为Person表添加一个新的字段,email

那么我们必须在Alter.sql内添加一个过程语句。表明从1.0的数据库模式 如何变成2.0的模式:

 

Alter table Person Add Column email varchar(50)  null;

 

就是说,开发者必须自己用过程的方法,告诉sql server,数据库模式如何一步步的从1.0 2.0 的。

 

这样的变化非常的多,多年的经验说明,数据库版本的升级可以新增表,删除表,填写数据,修改字段名称,字段类型,约束等等。其间的繁琐冗长,可以想得到。

 

sql server 2008 R2 DAC提供了新的升级方法。

 

DAC的定义:A Data-tier Application (DAC) is an entity that contains all of the database and instance objects that are required to support an application, like stored procedures, tables, views, logins, etc.DAC 是一个实体,内含全部数据库和实例的对象,比如存储过程,表,视图,登录帐号等等)

这个定义很准确,但是不容易看出应用的范围。我的个人看法可以简而言之:DAC 提供了数据库的声明型的升级,而不是过程型升级。

同样以Person为例。DAC的做法,就是直接说明新的模式如下:

 

CREATE TABLE [dbo].[Person]

(

    id int NOT NULL,

    name int NOT NULL

       email varchar(50)  null

)

 

然后 ,由DAC 自动比较新老模式的差异,自动升级模式和迁移。假设要升级的数据库为 People ,那么具体过程如下:

 

_        以新的模式定义文件,创建一个新的数据库,比如 people_new
_        拷贝 People 的数据到 people_new
_        老数据库 People 改名(新名称和现有数据库不能重复)
_        people_new 改名为people
 

这样整个升级完成。

 

声明型升级相比过程型升级的好处就是开发者只要说明新版本的模式是怎样的就行了,而不必担心如何做,以及怎样迁移数据。

DAC相当的程度上做到了声明型升级。使用 Data-Tier Application,开发者只需要为新的版本编译出新的dacpac包文件,DBA 定位到现存的DAC然后选择升级功能,升级向导会比对新老版本差异,然后自动确定需要升级的操作。

 

 

DAC模式是有限定的。以字段的调整为例,修改字段的类型、约束,新增字段,删除字段都可以自动的完成数据的迁移。

修改字段名称这样的数据库模式升级是无法自动迁移数据的。而必须自己编写脚本来完成—— 因为和删除一个字段然后在新增一个字段无法区别。

 

Visual Studio 2010 可以提供 DAC应用 开发的支持。开发工程的模板为 Data-tier Application

 

本文强调了两种数据库升级方法的思想差异和DAC模式的限定。具体操作方面的内容和我的文章参考的内容,可以从以下资源获得(没有指明URL,因为你可以自己搜索):

 

1. SQL Server 2008 R2 Update for Developers Training Kit@microsoft. 非常翔实,具体而容易操作。有PPTVideo,动手试验三方面的内容构成。

2. SQL Server 2008 R2数据管理新纪元@it168。初步的,新特性级别的描述,容易阅读。

3. 主数据管理和实施 @developerworks。原来我们的基本信息诸如商品,科目,仓库等是有一个统一的名字,叫做主数据!

4. Is SQL Server 2008 R2 For You? 200020052008的不同的用户角度分析R2带来的新特性。

5.Master Data Management and Customer Data Integration Data Warehousing Folks Don’t Get It。没有仔细看。

6. Why SQL Server 2008 R2 Matters to Small Business。没有仔细看。

7. Why Upgrading to SQL Server 2008 R2 Is Not a Given。没有仔细看。

8. SQL Server 2008 R2 August CTP Available Today。新特性,概览以下就行。

9.Frequently Asked Questions: SQL Server 2008 R2。新特性,概览以下就行。

10. SQL Server 2008 R2: The DAC Pack。较有看法的文章。

11.SQL Server 2008 R2: Into the Clouds。较有看法的文章。

 

 
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-296534-1-1.html 上篇帖子: SQL Server数据库备份及恢复等维护简明手册 下篇帖子: 怎样从MS Office Excel导入数据到SQL Server 2005
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表