电脑技术学习

微软需要改进SQL Server的六大功能

dn001

  很长时间以来,我一直在使用Microsoft SQL Server。最开始,我使用的是SQL 4.2,这是Sybase SQL Server 4.9的一个移植版本,运行在Windows for Workgroups 3.11系统上,这都是很久以前的事情了。从那以后,微软的SQL产品已经走过了漫长的道路,而今年年底,微软又将推出新版本的SQL 10.0,也就是被业界炒得沸沸扬扬的SQL Server 2008。经过这么多年的不断完善,SQL产品肯定接近完美了,是不是?而事实并非如此。下面我就详细介绍一下我希望微软能够改进的SQL 6大功能,但愿能够在SQL Server 2008看到这些变化。

  1.SSMS 自动刷新

  在老版的企业管理器中,一件令人感到很讨厌的事情是当你创建一个新的对象时,比如一个数据库或一个表,您需要手动刷新对象资源管理器(Object Explorer),这样才能看到新创建的对象。这种现象仍然存在于SQL Server Management Studio中,即使它在2005年被彻底重写了,这件事情很恼人,因为你必须手动刷新包含新对象的那个文件夹。仅仅单击“F5”是不会解决问题的。SSMS在后台完成了那么多工作,那么,为什么不把这一功能交给SSMS来完成呢?

  2.负载平衡的数据库镜像

  当SQL Server 2005宣布具备数据库镜像(Database Mirroring)功能时,微软承诺给我们一个数据保护和负载平衡的解决方案,不需要群集就能实现透明的故障和客户端重定向。SQL Server 2008实现了几乎所有这些功能,除了负载平衡。在故障发生之前,镜像数据库不得不处于“Restoring”或“No Recovery”模式下,这使得镜像数据库不能用于负载平衡查询。的确,你可以对镜像数据库拍快照(snapshot),但是,这只是一个基于时间点的快照,并不能反映最新的数据库更新。我认为这是由设计缺陷造成的。在修整这一缺陷之前,我不得不使用点对点复制(Peer-to-Peer Replication)或日志传送(Log Shipping)进行负载平衡。

  3. SSMS内置日志管理器(Log Explore)

  通常,开发商对待事务日志(Transaction Log)的通用路线是,把它以某种内部或私有格式储存,用户无法查看或手动修改。如果你想要查看存储在Transaction Log中的事务记录,或者有选择性重新执行某些事务而不扰乱其它事务的话,出你需要使用一个第三方的工具,比如Lumigent的Log Explorer。微软应该将这种技术内置到SSMS中。微软至今没有收购该技术,这令我感到很奇怪。我猜想肯定是因为Lumigent要价太高了。也许要比收购雅虎的价格要便宜一些。

  4. ReportBuilder RDL应该更为精确,以便能为BIDS提供更好的服务

  ReportBuilder真的很酷,它能够让你使用报告模型非常迅速地创建强大的报告。你甚至可以让你的用户自己创建专案报告。或者把它放在你的口袋里,以便能在你预约体育锻炼的空闲间隙快速地开发报告---想象一下,这会给你的用户留下多么深刻的印象啊(开玩笑!)。ReportBuilder的神奇之处就在于它能生成RDL(报告定义语言),RDL是Report Services 中所有报告的XML源格式。这意味着你可以在Business Intelligence Development Studio (BIDS)中,用报表设计器(Report Designer)打开内置于ReportBuilder中的报告,从而进行进一步的修改和优化。除了BIDS数据集的定义不是很正确,需要进行一些人工干预来纠正这些错误。不过,微软若要修改这一功能应该不会花费太多时间。

  5.完整备份(Full Backup)应该截断事务日志

  自从SQL Server产品问世以来,完整的数据库备份(Full Database Backup)是不截断事务日志的。这意味着在全面修复模型(Full Recovery Model)下,事物日志会继续无限增长,除非你经常单独运行进行事务日志备份(Transaction Log Backups)。鉴于Microsoft Exchange Full Backup是截断事物记录的,所以我们为什么在SQL Server上也这么做呢?对于那些听说微软正在把SQL Server推进到“自我调整”模式的新用户来说,这将是很有帮助的。

  6.“开源”的报告管理器

  内置在ASP.NET 2005中的报告管理器(Report Manager)是一个相当笨重的Web应用。不过现在,它在本地.NET代码中被重写了,所以我们不必使用IIS or ASP.NET。这简直好极了。但是,把源代码给我们,那么我们自己就能够优化这个前端应用,这是不是太接近开源了?或许我们称之为共享源代码(Shared Source)更为准确。