SQLServer2008 R2数据管理两特性新亮相
随着Microsoft SQL Server 2008 R2即将发布,使得更多的DBA和Visual Studio.Net开发人员更加关注其新增的功能特点。SQL Server 2008 R2提供了主数据服务、数据应用层程序、多服务器管理、Power Pivot for SharePoint 、Report Builder 3.0、Stream Insight等众多新功能
随着Microsoft SQL Server 2008 R2即将发布,使得更多的DBA和Visual Studio.Net开发人员更加关注其新增的功能特点。SQL Server 2008 R2提供了主数据服务、数据应用层程序、多服务器管理、Power Pivot for SharePoint 、Report Builder 3.0、Stream Insight等众多新功能。在新功能支持下,SQL Server 在数据管理上也有了全新提高,无论是数据的易管理性还是数据的可用性都得到了增强,尤其是数据应用层程序和数据库镜像,本文将从这两个方面进行介绍。
在数据应用层程序实例中,你可以看到数据层应用程序的整个生命周期,包括使用测试数据库DemoSqlServer来创建和部署数据层应用程序,DemoSqlServer是一个简单数据库,只是用来演示DAC,此数据库中有2个表,一个是Users表,存储用户信息,有一个是Products表,存储商品信息,通过这个实例让你学习到使用SQL Server 2008 R2管理数据库的新方法。
数据应用层程序(Data-Tier Application Component, DAC)
数据库应用层程序是一个包含了几乎某一应用所需要的数据库及实例对象的实体,如表、视图、存储过程、登录等等。有了实体以后,原本独立的登陆、部署、维护就可以通过开发人员进行开发来整合成为一个统一的整体,这样DBA 就可以把原本独立的对象视为一个数据库应用层的程序来进行部署、监控和管理。在使用DAC 之前,开发人员会准备一堆的脚本、代码和应用,测试人员部署到测试环境上,然后测试人员和用户在这个测试实例上进行功能、业务、UAT等一系列的测试。当测试结束后,DBA就收集这些脚本、代码以及应用,并将它们部署到生产环境上。在部署到生产环境之前,DBA首先要确定部署到哪个生产环境的实例上。是否需要做订阅和镜像?如果这个应用是一个升级版本,DBA可能还需要和开发人员坐下来讨论一下详细的升级过程,哪些对象需要更新?怎么更新这些对象?历史数据如何处理?发布订阅是否需要重做?更新过程中怎么保证数据不受影响?
如果使用DAC,所有问题将简化,下面我们就一步一步来体验一下DAC。
创建DAC
创建DAC 有两种方法,其一是对已经存在的数据使用SQL Server 2008 R2 自带的DAC向导来创建DAC;其二是使用Visual Studio 2010 来创建DAC,下面我们分别演示。
在这个演示中我们将使用已经创建好的数据库DemoSqlServer,选择Users和Products表,使用SQL Server 2008 R2创建DAC;创建完DAC包以后,使用SQL Server Management Studio工具打开数据库DemoSqlServer,并导出创建数据库表的脚本,保存为Create DemoSqlServer Table.sql,在使用Visual Studio 2010创建DAC项目时导入脚本,然后将项目打成DAC包(扩展名是.dacpac),就可以部署了。
使用SQL Server 2008 R2 创建DAC
使用SQL Server 2008 R2 创建DAC实际上是对已经存在的数据库执行提取数据层应用程序功能,主要包括三个步骤:
(1)设置DAC属性,需要设置的属性有:应用程序名称、版本、说明、保存DAC包路径以及可选项是否覆盖现有文件。其界面如图1

图1 DAC设置属性
(2)检查对象依赖项和验证结果,在验证过程中将验证登陆、表、视图、存储过程等等,验证结果包括在前一个步骤里的DAC设置和DAC对象,包括DAC中支持的对象和DAC中不支持的对象,只有全部对象都支持DAC才能验证通过生成DAC包。
(3)生成DAC包,创建在DAC设置步骤中所设置的DAC包,如图1所示,生成DAC包以后,例如,可以在E:\SQL Server Management Studio\DAC Packages下找到文件DemoSqlServer.dacpac,其类型是Microsoft SQL Server Package File。
如果我们对生成的DemoSqlServer.dacpac有更改,则可以重复步骤(1)-(3),重新生成DAC包,重新生成时可以保留原有的包,也可以以相同的文件名覆盖原有的包,但是在这里建议保留原有的包,同时以不同的文件名,不同的版本号来标识,这样做的好处是可以部署需要的版本,并能够回滚到稳定版本。