原创文章转载请注明出处:@协思, http://amwicfai.cnblogs.com
SQL Server是我使用时间最长的数据库,算起来已经有10年了。上世纪90年代,微软在软件开发的所有领域高歌猛进,形成了操作系统、办公软件、企业开发、游戏制作、浏览器各领域的全线垄断。那曾经是微软发展的黄金时期,至到今天,它仍然在享受着当年的红利。
在SQL Server 2000那个年代,由其功能强大,使用方便,“国人免费”等特点迅速流行起来,成为企业开发的不二选择。早期的用友、管家婆的ERP也使用此作为数据库。那个时候WEB开发还不像现在这样流行,主要就是做一些网站,而企业桌面管理软件则是大家争抢的市场。SQL Server和Visual Studio开发的软件跑在Windows平台下,则成为标配,大量程序员夜以继日的研究其中的奇巧淫技,乐此不彼。SQL Server和Sybase之间还有些渊源,有兴趣的同学自查。
在摩尔定律的推动下,硬件飞速发展,软件复杂度增加,SQL Server 2000的潜能已经被榨干,市场迫切需要性能更高,功能更完善的数据库。数据库是微软的现金牛,当然是当然不让。经过5年的开发,推出了经典的SQL Server 2005。5年时间才发布一次版本,和VS2008, 2010,2012,2013比起来,弱爆了啊。SQL Server 2005完全颠覆了“数据库就是保存数据的地方”概念,带有一系列的辅助组件,身材翻了几倍,在我的老DELL笔记本安装了一个多小时……
SQL Server 2005新增了一系列的函数,推出了CLR存储过程,提升XML为数据类型,Service Broker消息组件,BI报表服务等。报表服务(Report Service)目的是想取代水晶报表,挖掘数据,后来的发展事实证明这玩艺儿就是玩具,很快被开发者摒弃。Service Broker消息组件被一些公司作为数据同步机制使用,也就是读写分离。XML增强后可以直接在SQL中XPATH运算,通过相关函数,还可以和Table做Join,为一些特定场景提供了灵活性,但物极必反,过度使用会造成效率问题。
SQL Server 2005中第一次引入了表变量,可以很多场合替代临时表,像变量一样自动回收的特性立即吸引了我。引入了Oracle中数据窗口的概念,可以方便完成以前需要复杂SQL的工作。影响最常见和深远的应该是对分页的影响,ROW_NUMBER分页几乎现在已经标准化,新生代程序员可能很少去关注了。而在此之前,牛逼的DBA都喜欢做分页存储过程来显示自己的能力,而开发者也喜欢比较各自使用的分页存储过程效率,各种测试甚至口水仗,那是一个多么纯真的年代啊。
SQL Server 2005借用Visual Studio的经验,提供了相当华丽的的SQL Server Management Studio。集成了SQL Server 2000时代的企业管理器和查询分析器,重新设计整体布局,用户体验瞬间提高了不少。遗憾的是,仍然没有提供智能提示的支持,还得继续使用第三方工具辅助。
SQL Server 2005给开发者的惊喜是空前绝后的,现在恐怕再也看不到如此革命性的突破了。其打下的根基和建立的概念在后续版本中得到了增强和完善。当前业界在不断弱化关系型数据库,NOSQL、BigData流行了起来,SQL的激情岁月一去不复返了,留给我们却是一代程序员的回忆。