主页 | 专题新闻 | 杂志期刊 | 订阅杂志 | 申请赠阅 | 技术活动 | 技术社区 | FAQ | 招聘信息 | 客户服务
WinITPro首页> 新闻浏览

有备无患SQL Server变更管理


2008-6-10 17:36:19 作者:Sguy

      “谁动了我的数据库?”身为DBA的你或许经常为这样的问题苦恼,抛开可能由于应用程序缺陷带来的潜在数据库注入、数据丢失等威胁,内部可能失控的数据库变更足以让你手忙脚乱、不知所措了。如何练就一双火眼金睛,让任何动你数据库的行为都瞒不过你,让你轻敲键盘,昨日重现呢?Quest Change Director for SQL Server将成为你所向披靡的金箍棒。

      作为一名数据库管理员,你一直很负责,你很严格地站在数据库的门口,盘查每一位进出数据库的人,你还肩负着数据库的拆迁与重建工作。依赖数据库性能监控工具的仪表盘,你觉得运行状况一切都是OK的,你所负责的数据库一直运行得很正常。直到有一天有人来告诉你:我的一条重要的数据误删了,能找回来吗?然后又有人来找你说:我的某个时间段的数据都被修改了,要命的是,修改完全是错误的,能通过数据库修复吗?你说我要打开数据库看看是不是在某个角落里,但当你打开管理大门,找到你以为可能存在数据的地方,所有的人都惊呆了:那里是空的,数据库没有备份到这里,或者它完全被动过了。于是你抓狂了,谁动了我的数据库?

      是的,谁知道呢,谁动了你的数据库?你应该比任何一个人都更清楚谁在动你的数据库,然而动你的数据库的人就在你面前,而且他还满怀希望你能够帮他找回他想要的东西。你需要更为有力的工具来严格监控你的数据库变更情况。

      了解敌人——数据库变更级别
      所谓知己知彼,百战不殆!身为数据库管理者,你必须了解谁可能在什么样的情况下怎样动你的数据库,然后才可以监控其行为,了解做了哪些变动。

      依据数据库变更可能对企业整体IT环境带来的影响,数据库变更可以被分为四个级别:
      级别1:主要变更,指那些可能对企业的IT环境有巨大的或意义深刻的影响,需要一个重要的计划和构建过程,而且会导致对系统功能的重大变更,需要企业管理层和变更控制部门进行批准才能实施的变更。这样变更的实施往往不会瞒过你的眼睛,就像让你摧毁或重建一个正在运行中的数据库一样,你很清楚你对数据库做了哪些操作,甚至每一个操作都非常详细地记录在文档中,而且你也非常严格地按照这些文档上记录的内容进行了操作。

      级别2:重要变更,指那些需要较多资源以进行计划、构建和实施,需要变更控制机构批准才能够实施的变更。这类变更的实施同样受到变更控制部门的严格控制,通常为数据库中重要的表结构变更、数据定义变更等等,对依赖于某些表和数据结构的应用程序的影响比较大,因而这些变更的实施需要谨慎评估并沿用一定的审批流程,尽管其影响可能比主要变更的影响要小,但也不可能瞒过你的眼睛。你需要确保的是这些变更是可恢复的,因为这些变更实施完了可能发现原来未经变更的还要好些。

      级别3:次要变更,指那些对企业环境的影响较小,消耗的资源较少,而且不一定需要变更控制部门介入的变更。如你所见,这些变更是不确定的,比如某个应用程序的使用者,有权删除某些数据、有权新建某些数据,这些操作都是合法的,没有必要走一个非常严格的流程,或者对于部分对数据库有创建和删除权限的高权限操作人员,可以实施一些对数据库的次要变更,而这些变更是最可能给你惹麻烦的变更。你没有一个非常有效的方法了解什么时候什么地方什么人对你的数据库做了哪些修改,这就是你的麻烦。你要强化你的手段,确保这一切都只能在你的监控之下发生。

      级别4:标准变更,指那些按照定制的标准和文档实施的变更,这些变更对于操作有很小或者没有威胁,并且有文档化的恢复计划。这些变更对于数据库管理员的影响并不大,如果变更后出现非预期的结果,变更操作者也可以按照标准的实施流程进行相应的恢复。

      可能发生的数据库变更种类包括重新配置、强化配置、维护或紧急处理以及不可控制变更。重新配置发生于企业有新的硬件或软件增加、删除或者版本更新的情况下,这时候数据库管理员需要对企业数据库的配置进行更新;强化配置需要数据库管理员针对数据库服务器、数据库客户端、数据库实例、使用数据库的应用程序等进行强化或者优化;维护或紧急处理是数据库管理员在维护和管理数据库运行的过程中,发现有非预期的运行状况而采取的变更行动;不可控制变更是指变更或者变更管理流程失败、操作人员本身的操作错误导致的,或者是数据库管理人员本身的知识或者经验缺乏导致的,变更发生的原因是非预期的也是不可控制的。

      在了解了数据库可能涉及的种类之后,作为SQL Server数据库管理员的你或许会问:我应该怎样来确保这些变更是受管理的呢?

      练就内功——防患于未然
      为避免在任何变更实施情况下出错误,最大程度确保变更都能够出现预期结果,降低非预期的影响,SQL Server数据库变更的实施应当遵循一个严格的实施流程:

      变更开发。对于需要维护或变更数据库应用程序的企业来说,开发过程的管理是确保成功部署数据库和数据库环境变更的主要因素。变更管理中优先级最高的是控制实施阶段和合理的测试,规范化的实施阶段、质量保证策略和实施过程需要仔细地制定计划和准备,即便在开发过程中也应该遵守。

      在整个SQL Server项目的实施过程中,数据库管理员应当全程参与项目实施的各个阶段,包括开发、测试、分段实施、部署、评估等。理想状态下,数据库管理员还应当参与到系统运营和支持中去。DBA应当开发或者帮助开发实施脚本、回滚脚本以及测试脚本等,而且应当创建维护相关的文档。

      部署变更脚本。作为数据库管理员,你首先应当确保变更过程的实施是阶段化的,在必要的情况下实施人员应当有权限重新启动整个实施过程,同时能够在任意需要停下的地方停下,然后继续执行,能够准确定位哪些变更已经实施而哪些尚未实施。因此,实施人员应当针对变更的每个逻辑组分别创建一个独立的脚本,并且全程跟踪其执行。

      部署灾难恢复。“凡事预则立,不预则废”。因此在部署变更(包括经过测试的变更)过程中,作为数据库管理员,你应当留有足够的退路,确保有一个持续性的计划,充分考虑如果脚本执行过程中发生什么意外,或者数据库脚本正确执行但应用程序在使用过程中发生错误,并且需要去除变更等各种情况。因此,在变更实施的过程中必须制定至少针对以下两种可能性的计划:完全移除所有变更、基于预测或不可见的情况修改计划。

      重新配置与升级。变更实施结束后,其他的开发人员可以离场,而作为数据库管理员的你必须担当起后续的维护与管理。当配置和升级数据库环境变更时,需要完成一系列与计划、用户沟通和协作、灾难恢复、测试、应用程序和供应商等相关的任务。

      影响分析。作为数据库管理员,你必须要清楚变更可能对你的生产环境造成的影响,因此你需要通过评估来确定变更或变更实施可能对系统其它部分带来的影响,变更实施人员能够更为有效地对变更可能带来的影响做出准备。分析应当能够定位服务级别协议带来的所有结果,降低由于错误和变更实施带来的风险。

      依据以上的套路与招式,你已经能够在众多未知变更情况面前应对自如了,但是你想更上一层楼,牢牢把握变更管理的主动权。这时,你需要Quest SQL Server变更管理的利器:Quest Change Director for SQL Server。

      主动出击——获取SQL Server变更管理主动权
      应用Quest Change Director for SQL Server,可以让你在SQL Server管理上先声夺人,牢牢掌握变更管理的主动权。

      你已经迫不及待想要体验Quest Change Director的强大功能了吧,下面将通过实际部署和应用过程向你介绍Quest Change Director for SQL Server的应用细节。你可以从Quest的官方站点http://www.quest.com上快速获取一个试用版的Quest Change Director,这里需要注意的是,要确保你将安装Quest Change Director的计算机系统中安装了.NET Framework 2.0版本。

      完成安装以后,Quest Change Director默认可用的菜单只有数据库浏览器(Database Browser),显示的初始界面如图1所示。


由图1可知,想要应用Quest Change Director进行SQLServer变更管理,必须要创建一个变更管理项目。而创建一个项目,我们需要完成以下任务:

      安装Quest Change Director注册库。要使用Quest Change Director for SQL Server进行数据库变更管理,首先应该新建一个注册库。当你启动Quest Change Director并看到图1显示的界面后,点击链接:创建或选择注册库(Create or select repository),在启动的创建/选择注册库向导中首先需要指定受管理的SQL Server的位置和认证方式,主要完成指定服务器、指定数据库实例、脚本预览、流程这四大任务。该注册库将用以存储捕获的SQL Server的变更信息。当你完成这些基本配置以后,便可以启动注册新服务器向导。

      注册新SQL Server服务器。这里要指定的是要监控的数据库,Quest Change Director将捕获该数据库的所有变更行为,完成服务器的注册以后则可以启动一个新的项目以进行指定的SQL Server服务器的变更监控。

      我们主要可以进行以下几种类型的项目:
      数据库版本控制。跟踪并进行数据库版本控制比程序代码和文件版本控制难以实施得多,SQL Server的数据库对象拥有太多的属性,而且彼此之间有太多的关联。因此我们可以创建数据库版本控制的项目执行数据库版本的控制。这里我们可以应用Quest Change Director for SQL Server提供的
共享注册库以提供一个简单的针对整个SQL Server实例的、对象级别的数据库变更复审功能。

      数据库对比。Quest Change Director for SQL Server允许你方便地在一个动态的源数据库和一个动态的目标数据库之间进行比较,进而创建序列化的脚本。在必要的情况下,还可以创建回滚脚本。Quest Change Director还可以用以进行动态数据库与某个时间点的快照之间进行比较。

      影响分析。你可以创建一个项目进行变更影响分析以应对自动检测和部署数据库变更的挑战,但了解这些数据库变更对目标数据库系统带来的影响是一个更为艰难的挑战。Quest Change Director for SQL Server能够在变更实施之前分析变更可能对数据库带来的影响,从而允许SQL Server数据库管理员提前为最小化风险做准备。

      按时间表或立刻变更实施。Quest Change Director for SQL Server提供的作业计划工具Job Scheduler允许你按照需要部署数据库变更,作为对即时需求的快速响应。它同样能够用以制定部署计划以与策略相符合或维护需求。

      多服务器变更部署。很多情况下,你管理的是企业当中为数众多的数据库,而你经常在不同的数据库之间疲于奔命,应对不同的麻烦。你可以应用Quest Change Director for SQL Server来比较和确认变更对数据库实例的影响,以及部署这些变更到一个或多个目标的过程大大简化。你可以简单
地通过一个多服务器变更部署项目轻松搞定所有的麻烦。

      用以符合法规性和审计的变更报告。以前你经常为项目完成以后大量的报告而头疼,在糟糕的情况下,你完成的报告可能不被你的老板看好,你甚至需要重写多次才能获得老板的批准。现在Quest Change Director for SQL Server让你能够提供在安全、服务器指标、未授权登录以及对象变更
方面相关的数据库变更活动报告给相关的管理人员或审计人员。你只需要点击鼠标即可获得你想要的所有信息。

      接下来让我们深入了解Quest Change Director的应用:
      变更跟踪。你可以应用Quest Change Director中的变更跟踪器来获取SQL Server服务器上的以下信息:

  • 服务器变更
  • 受监控的数据库数目
  • 发生变更的数据库
  • 代理状态

      Change Tracker还可以显示生成的报告内容框架,如安全变更、无安全变更、登录失败、对象变更、无对象变更等。在Change Tracker的“配置”页面中,你可以依据变更的具体类型对Quest Change Director要监控的变更进行配置。

      Quest Change Director for SQL Server的Change Tracker的应用方法如图2所示。


      Quest Change Director影响分析。影响分析的实施是在项目中得以体现的,在你创建变更管理项目的过程中,首先选择项目的类型,选择是比较还是部署。然后在操作界面中,进行以下操作:

  • 变更对比源和对比目的;
  • 编辑项目属性;
  • 保存项目。


      在左侧的栏目中,将同步显示完成的操作,对于比较项目,将会显示:

  • 载入数据库模型;
  • 比较;
  • 执行影响分析。

      你可以把影响分析的结果以报告的形式展示出来,所有数据库管理相关的人能够非常方便地了解变
更可能造成的影响,以及是哪部分变更造成了哪部分影响等细节,针对警告和错误,当你选中该条记录时,将会显示具体原因。变更影响分析功能的具体应用方法如图3所示。


      Quest Change Director日志阅读器。你可以使用Quest Change Director日志阅读器来查看SQL Server变更日志。与其它应用程序的日志阅读器类似,Quest Change Director将
详细记录事件发生的内容和类型。Quest Change Director记录的SQL Server变更日志包括以下具体内容:

1.SQL命令类型:如UPDATE、DELETE、CREATE等;
2.对象名称:命令作用的对象的名称,如以DBO.DEPCO等形式命名的对象;
3.父表:被作用对象的上级表名称;
4.日期:变更发生的详细时间,具体到秒;
5.变更ID:一个形如00005996:0000的ID号码,唯一指定了一次记录在日志当中的事件。

      Quest Change Director的强大之处在于能够选择是否取消或重做某次变更,如图4所示。


几点建议看完本文的介绍,我想你一定很想把这些方法和工具应用到你的SQL Server变更管理中去,这里有几点建议可以帮助你成功应用Quest Change Director:

      1.在SQL Server上创建一个专用的注册库,该数据库专门用以存放相应的变更信息等;
      2.按照本文介绍的SQL Server变更实施流程制定适合你的企业的变更实施计划,把计划中能够自动化的部分交给Quest Change Director进行处理;
      3.在任何工具面前人都是最主要的因素,因此在应用Quest Change Director的过程中,应用经验和知识,对一些异常情况做出正确的判断,然后应用Quest Change Director帮助你快速解决问题。


     上述内容选自《Windows IT Pro Magazine国际中文版》2008年第6期,更多精彩内容,敬请参阅这儿,订阅《Windows IT Pro Magazine国际中文版》,请点击这儿

全文共9194字节  

 
新闻更新
·WindowsITPro杂志2008年8月刊目录及文中脚本
·使用已保存的查询对Active Directory进行管理
·SQL Server 2008改进的加密功能
·Exchange Server 2007 SP1纵览
·你所应当了解的Hyper-V
·灾难恢复新时代
·Quest Password Manager助力身份管理之口令管理
·用户数据和设置管理最佳实践(二)
·为UC 打造一份商业论据
·构建统一沟通-提高沟通效率
[more...]  
© <<Windows IT Pro Magazine 国际中文版>> All Rights Reserved. 京ICP证05037048
联系地址:北京市朝阳区曙光西里甲6号时间国际A座1206室┊邮编:100028
电话:010-58677341 58677342 58677343┊传真:58677400
发行部:Readers#winitpro.com.cn┊市场部:AE#winitpro.com.cn┊编辑部:Editor#winitpro.com.cn (使用时,请将#换成@)