尽管SQL Server R仅仅是SQL Server 到下一版本间的过渡升级版本不过对于SQL Server DBA来说SQL Server R仍然有一些值得进行探索的数据管理特性其中最为重要的特性莫过于SQL Server Utility 以及DataTier Application (简称DAC)
SQL Server Utility是SQL Server R中用于多实例管理一项手段而DAC则是SQL Server R中数据管理的一个单元
SQL Server Utility
下面我们简单介绍下SQL Server Utility
SQL Server Utility主要解决的问题是当前企业数据环境中经常面临的一个困境——越来越多的服务器越来越多的实例越来越多的数据库以及越来越少的IT人员预算许多调查都表明当前企业中%以上的数据库都小于GB并且使用简单的单文件策略不过为了满足日益灵活的业务模式这样的小型数据库被不断被投入生产环境同时为了隔离应用不过的部门预算又使这些小数据库分布到了越来越多的实例以及服务器中
尽管当前非常热门的虚拟化技术例如微软的HyperV和Vmware的VSphere(原来称为ESX)尽管SQL Server 也提供了许多Central Management Server这样的概念来管理多实例不过如何集中管理数据库本身以及如何集中管理这些数据库所依赖于的资源仍然是一项颇具挑战性的任务而SQL Server Utility就是用于解决这一问题的
SQL Server Utility是一项用于集中管理数据库所需资源的工具SQL Server Utility为一个企业在使用SQL Server过程中所涉及的主要对象进行了统一建模从而通过Utility Explorer为用户提供了一个用于观察SQL Server资源健康状况的窗口通过SQL Server Utility用户可以在一个仪表盘中观察
◆SQL Server实例的健康状况 (主要依据其资源消耗状况与资源利用策略的比较结果)
◆DataTier Application的健康状况 (稍后会有介绍)
◆数据文件
◆逻辑卷
◆CPU利用情况
◆存储资源利用情况
下图即是SQL Server Utility提供给DBA用户的管理仪表盘从中DBA可以迅速了解被托管实例或者已注册DAC的健康状况
SQL Server Utility的基础是Utility Control Point (简称UCP)UCP提供了一个用于存放所有被托管实例信息的存储中心同时也提供了用于查询各被托管实例情况的访问中心DBA将某个SQL Server实例注册到UCP中后一组数据收集代码作业就会被注册到这个被托管实例上这些作业每个分钟运行一次他们的主要任务是收集并上传被托管实例相关的信息例如资源利用率DAC配置等等
SQL Server Utility通过UCP实现的目标不仅仅是收集信息还有一项同样重要的任务就是提供一种称之为资源利用策略的对象通过这种策略对象SQL Server Utility将可以帮助用户判定某个实例某个DAC是否健康
DataTier Application
另外一个DBA越来越多在SQL Server R介绍中看到的词就是DAC它的全称其实是DataTier Application Component
DataTier Application其实是一个包含了几乎某一应用所需要的数据库及实例对象的实体例如表视图存储过程登录等等请注意实体这个概念有了实体这个概念也就意味着这些原本独立的对象现在可以被视为一个更大的对象因此可以被开发人员打包部署管理员整体维护配合上面我们介绍的SQL Server Utility我们甚至可以将那些原本独立的对象视为一个应用进行统一的监控和管理更为关键的是在升级过程中如果有这个整体对象的概念升级过程中所涉及的版本控制问题也会变得更为简单
看一下当前我们的工作流程如果开发人员发布了一个新的应用首先开发人员会准备一堆的脚本代码应用然后一一部署到某个测试实例上然后通知用户在这个测试实例上进行功能业务UAT一系列的测试当测试结束后DBA就需要收集这些脚本代码以及应用并将它们部署到生产实例上噢首先当然DBA还要确定哪个生产实例更加适合部署这个新的应用这还不是最具挑战性的正如前面所说如果这个应用是一个升级版本……天哪DBA和开发人员可能还要坐下来讨论一下详细的升级过程哪些对象需要更新?怎么更新这些对象?更新过程中怎么保证数据不受影响?
如果使用DataTier Application呢?开发人员只需要在Visual Studio 中通过一种被称为Datatier Application的项目模板创建一个新项目而后在其中定义前面提到那些对象——脚本代码应用等等而后将这个项目打包成一个DAC的包 (dacpac文件) 然后将其发布到测试服务器注意不再是一个一个安装运行而是通过SSMS中的Data Tier Application管理节点直接加在这个包文件这样就可以直接将所有相关对象注册到当前数据库引擎实例上
在升级场景中DataTier Application的优势就更为明显了原本开发人员需要为一个新版本准备N套脚本一套是全新安装而剩下是从某个特定版本升级到当前需要发布的版本如果使用的是DataTier Application开发人员只需要为新的版本编译出新的包文件在数据库引擎部署这个新版本DAC包的时候部署人员只需要定位到现存的DAC然后选择升级功能升级向导会自动比对数据库引擎中已经部署的版本和准备部署的版本差异然后自动确定需要执行的操作
在一个DAC项目中开发人员可以定义
DAC的自身属性例如应用名称版本等等
所有数据库级别的对象例如表视图存储过程
所有数据库引擎实例级别的对象例如登录
部署服务器需求策略例如所需SQL Server实例版本号操作系统版本号硬件架构等等
其他辅助文档例如数据生成计划部署前准备脚本及部署后清理脚本等等
总结语
SQL Server Utility提供了一个多实例管理的新思路而DataTier Application则提供了一个数据库管理的新方法结合这两项技术SQL Server R毫无疑问会对DBA的工作产生深远的影响另外一个毫无疑问的结论是对于当前越来越庞大的基础架构规模和应用规模这两项技术所产生的影响一定是正面积极的
了解了这么多最好的办法是什么呢?当然是下载一个SQL Server R的测试版赶紧亲身体验一下