很久以来,SQL server的用户就有统一管理他们的SQL Server环境的需求,随着SQL Server 2008 R2发布的SQL Server Utility便是整合了应用和多服务器管理的概念,针对用户统一管理的需求推出的解决方案。
SQL Server Utility将一个组织内与SQL Server相关的实体组织在一个统一的视图中。在SSMS中的Utility Explorer和SQL Server Utility给管理员提供了一个观察SQL Server资源健康状态的整体视图,提供该视图的SQL Server实例被称为utility control point (UCP). 能在SQL Server UCP中查看的内容包括:
  • SQL Server实例的健康状况 (主要依据其资源消耗状况与资源利用策略的比较结果)
  • Data-Tier Application的健康状况
  • 数据文件
  • 逻辑卷
  • CPU利用情况
  • 存储资源利用情况
以在4月份的文章《Utility Control Points in SQL Server 2008 R2》中的图片为例,SQL Server Utility提供给DBA用户的管理仪表盘。从中DBA可以迅速了解被托管实例或者已注册DAC的健康状况
 
SQL Server Utility的基础是Utility Control Point (简称UCP),UCP提供了一个用于存放所有被托管实例信息的存储中心,同时也提供了用于查询各被托管实例情况的访问中心。DBA将某个SQL Server实例注册到UCP中后,一组数据收集代码作业就会被注册到这个被托管实例上,这些作业每个15分钟运行一次,他们的主要任务是收集并上传被托管实例相关的信息,例如资源利用率、DAC配置等等。
  SQL Server Utility通过UCP实现的目标不仅仅是收集信息,还有一项同样重要的任务就是提供一种称之为资源利用策略的对象,通过这种策略对象,SQL Server Utility将可以帮助用户判定某个实例、某个DAC是否健康。下图就是SQL Server Utility的架构图。
 
另外,管理员可以在企业内创建多个SQL Server Utility,一个SQL Server Utility可以用于管理多个SQL Server实例。但一个SQL Server实例仅能创建一个UCP,每个SQL Server Utility都必须而且仅能依赖于一个UCP。
使用SQL Server Utility的流程
  • 在某个SQL Server实例上创建UCP,用于宿主UCP的实例上会创建一个UCP用于存储各类信息的数据仓库,同时该实例会创建相关的用于处理数据的作业:
  • 将需要被托管的SQL Server实例添加到UCP中,被托管实例上会创建一个作业用于收集并上载该被托管实例的配置及性能信息并在该实例的msdb数据库中创建若干表及代码对象:
  • 被托管实例上的两个作业每个15分钟运行一次并将收集到的数据上载到UCP数据仓库 。
  • 管理员通过Utility Explorer查看各项信息。
这里需要注意的是,SQL Server Utility的数据收集是利用的Data Collection来实现的,而该功能是在sql 2008中推出的。SQL Server Utility使用的是名为Utility Information的Collection Set。
SQL Server Utility的需求
SQL Server Utility对UCP宿主实例以及UCP托管实例都是有一些限制条件的,分别是:
• UCP宿主实例以及UCP托管实例的SQL Server的版本必须在10.5以上。
• UCP宿主实例以及UCP托管实例都必须是数据库引擎实例。
• UCP宿主实例以及UCP托管实例必须工作在同一个域或具备双向信任关系的域内。
• UCP宿主实例以及UCP托管实例的SQL Server服务帐号都必须拥有对活动目录中用户对象的读权限。
• 在Windows Server 2003中,SQL Server Agent服务帐号必须是Performance Monitor User组成员。
从上面的需求可以看出,SQL Server Utility的要求是相当的苛刻了,目前只支持SQL Server 2008 R2。而这也将延缓SQL Server Utility在企业中的普遍使用。
SQL Server Utility存储消耗
正如许多管理工具一样,UCP将收集到的数据存储在一个数据仓库中,这就会带来存储的问题。为了避免存储空间耗尽导致SQL Server Utility停止工作甚至影响同一存储设备上其他数据库的情况发生,DBA需要考虑一下SQL Server Utility存储消耗的问题。
在通常情况下,每个托管实例每年会在数据仓库sysutility_mdw中消耗将近2GB的数据空间,同时每个托管实例还会在msdb中消耗将近20MB的数据空间。托管实例上的数据库数量、DBA设置的资源利用评估策略会对这个数据产生明显的影响。因此建议DBA需要在SQL Server Utility上限后的一至两周观察一下实际的存储消耗速率。
创建UCP
说了这麽多,就是要把该功能使用起来,不是吗?
由于在拙作Utility Control Points in SQL Server 2008 R2中对创建UCP 进行了step by step的描述,这里就不再赘述,需要查阅的朋友的请点击参考内容中链接2即可。
参考内容: