SQL Server数据库升级常见的错误

痕风 2012年12月30日22:06:14
评论
159

  SQLServer数据库升级需要DBA进行大量的规划与测试。大多数的时间里,升级过程也许不会出现任何问题,但是一些潜在的威胁绝不能忽视。在本文中,SQLServer专家RomanRehak将为您介绍数据库升级或者迁移过程中,DBA应该注意哪些问题。

  升级测试不足。在SQLServer数据库升级出现问题的情况下,其中最常见的原因就是测试不足。DBA不仅需要对每一个连接数据库的应用进行测试,还需要测试任何一个执行数据库代码的程序,比如SSIS包、数据库工具、辅助存储过程以及复制等。如果你使用SQLServer2000版本的话,那么测试就变得更加重要。

  升级到SQLServer2005时,许多语法都发生了变化,还包括T-SQL相关的特性。举例来说,当使用SQLServer2005NOLOCK语句时,你需要加上WITH.测试出错语法的方法有很多中,这里介绍一个最直接的方法,就是针对所有存储过程使用ALTER命令,对T-SQL代码进行重新编译。但是这个方法无法找到动态SQL中的语法错误,所以这里没有捷径,你需要执行所有的数据库代码。

  没有认真阅读升级白皮书。DBA进行SQLServer数据库升级时,除了基本的SQLServer在线手册之外,还可以参考微软提供的升级白皮书,该白皮书针对了所有版本的SQLServer.尽管它看起来比较枯燥乏味,而且大部分内容你都不一定能够用到,但是从头到尾阅读一遍,将重点内容标注下了,我想这对DBA是有百利而无一害的。

  进行升级之前,需要弄清楚哪些功能在新的版本中是被废弃的,如果发现这样的功能,DBA应该及时对相关代码进行修改和调整。如果在升级之前没有多余时间阅读白皮书,那么一定要记住有些功能在下一个版本中是无法运行的。

  主观认为现有硬件可以运行新版本数据库。通常情况下,微软在发布每个新版本的SQLServer数据库之前都会预先提供一些技术文档,以向用户介绍新版本的数据库有哪些新特性。许多DBA都会犯这样的低级错误,就是他们认为现有的硬件可以运行新的数据库。大多数情况下,这样的问题可能不会发生,但是并不是所有服务器都能满足新版本的硬件需求。

  举个例子,SQLServer2005在系统配置要求上远远超过SQLServer2000,从实际应用上来看,有DBA表示服务器在升级SQLServer之后运行速度大大降低。微软官方已经承认,在极少数情况下,安装SQLServer2005之后数据库性能不升反降。那么找到真相的唯一方法就是进行性能基准测试,你可以使用相同的服务器安装不同版本的SQLServer,然后对应用性能进行对比。

  另外我们还可以使用虚拟化技术来进行对比,在一些情况下,数据库软件的升级也意味着硬件服务器同样需要升级,特别是服务器使用时间较长的时候,DBA应该充分考虑到硬件的问题。

  没有更改兼容性版本。在进行数据库升级时,DBA需要对兼容性级别进行设置,这使得你可以在不更改语法的情况下运行新版本数据库。当你从早期版本数据库恢复到新版本时,SQLServer将保留兼容性版本,也就是说它可以让你运行那些无效的语法。这个功能是为了让DBA能够有更多的时间对语法进行修改。

  如果你将数据库设置在早期版本的兼容模式下,你可能会误以为升级工作已经完成,因为在测试的时候没有出现任何问题。但是如果你之后再更改到新版本的兼容模式下,T-SQL就会出现问题。因此一定要记住,你需要对所有数据(包括系统数据库)的兼容模式进行修改,当你需要运行之前版本的SQLServer时,你还可以改回去。

  没有制定回滚计划。无论你进行何种规模的数据库升级,一定要确保当遭遇故障时能够对SQLServer进行回滚操作。"升级之前做好数据库备份"是所有DBA都知道的,但是说到容易做到难,特别是当你使用了复制之后,并不是每个DBA都会恢复所有数据库并redo所有SQLServer.

  对于一个24/7运营的企业来说,长时间宕机造成不必要的用户流失可以说是无法接受的。在这些环境下,数据库升级需要最小的停机时间,而且DBA无法接受升级中出现各种各样的错误。为将风险降到最低,我们可以现在新的机器上运行SQLServer新的数据库,之前的机器还将运行。如果新的测试显示出现重大问题,你还可以利用之前的设置继续工作,直到将所有的问题都解决为止。

继续阅读
weinxin
痕风的起点
专注于互联网资讯、中央空调、Windows、wordpress、建站技术、软件应用等相关网络资源的分享。
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: