很多所谓专家上来就会说:“SqlServer根本没人用,谈不上替换。”之前作为老百姓的我由于不知道具体情况,也会懵懵懂懂地点头赞同。自己不知道啊,那专家说的肯定是真的了。随着本号粉丝的日益增多,加上讨论群的不断扩大,我的想法和以前完全不一样了。
从我的真实经历中,我认为SqlServer的使用在国内极为广泛,无论是党政还是企业,无论是金融业还是制造业,大量SqlServer依然存在。因为不但有很多网友问我Sqlserver的问题,其中很多还问我如何使用DBCS连接SqlServer 2008,2005,甚至2000。遇到这种用户我经常会打趣的问:“Sqlserver 200X的老古董如果硬件坏了,你连配件都买不到,心真的这么宽吗?”网友往往会无奈地回答:“不是心宽,而是历史问题,一言难尽....”。不开玩笑了,有相同问题的网友,请参考“屠龙刀法42--Sqlserver2008连接失败怎么办”,这篇文章已经帮N多网友解决问题了,可信可靠。
今天,咱们主要根据我个人的一点经验,聊聊替换Sqlserver为啥这么难?先说结论,我个人认为,比Oracle还要难。
Sqlserver特殊性非常的多,限于篇幅,我这边只举三个例子。
下面我们就逐一进行描述,首先我们看看奇葩的对象引用语法,这种中括号的对象引用在其他数据库是妥妥的错误,如下图所示:

中括号只是一个小小的语法兼容,想办法批量替换还是比较好处理的,但下面的三层对象结构就难了。如下图所示:在master数据库下访问db_test1库->dbo模式->emp表格。在我的知识范围内只有Sqlserver可以这么访问。

更奇葩的是,还可以支持如下这种两个”..”的引用方式,在Oracle/Mysql等数据库中闻所未闻。

这其实还不是最牛X的,最牛的地方需要用DBCS的命令行才能展示,如下图:
SELECT 1+1 as data select 2+2 as data;一句sql中,放上两个select,还真的能查出来两个结果,就问你服不服。

其实除了上述的语法之外,Sqlserver的系统表结构和Oracle\mysql等等数据库完全不一样。本来对于各种数据库中差异性最大是存储过程,如果把SqlServer的存储过程和其他数据库对比差异,绝对能差异出个天际,这里我就不具体举例了。
国产化的替代的现状根本不像很多专家所说的已经基本完成了,只有大家融入到具体一线,通过一线的实践和观察得出的结论才更为准确。以Sqlserver为例,之前国产化大多是靠对Oracle的兼容完成的数据库迁移,如达梦\OB等国产库,能够达到90%甚至更好的兼容性,但是有哪个国产库能够兼容SqlServer语法、系统表、以及存储过程呢?如果兼容性不行,如何进行迁移?要知道很多SqlServer2000还在用啊,这说明数据库的粘性太大了,不是说放弃就放弃,说重构就重构的。欢迎大家分享您的一线经验,一起讨论。
DESK倚天剑
DBCS屠龙刀
XGuard玄武之域
全名:全资源管控平台
继承DBCS和DESK运维功能于一体的Web平台版本,实现多人运维协作,并增加了管控和审计功能。平台不但能够补充替代传统堡垒机功能,而且克服了堡垒机“依赖客户端”、“审计粒度不够”、“不支持事中拦截”的三个安全性弊端。能够满足支持国内外20多种主流数据库、文件上传下载、操作系统远程接入等数据运维、开发需求的安全管控,并且可部署于信创环境,为政企单位提供一站式高安全数据管控解决方案。