在MSSQL7.0中用查询分析器选择NorthWind数据库,复制粘贴下面的一条语句执行:update Orders set CustomerID='HANAR',EmployeeID=4 where OrderID='10250'看看执行结果,也许你会吓出一身冷汗!!!
因为执行结果是修改了830行记录,这830行记录的CustomerID字段都改成了'HANAR'。为什么呢?
大家注意上面那条语句中间的逗号,那不是一个简单的逗号,而是一个中文的逗号。
就是这个致命的中文逗号,导致了从逗号以后的语句全被忽略,而且执行并未报错。
(用Delphi等开发工具编制数据库程序,一样会碰到这个问题)
实际执行的语句就变成了
update Orders set CustomerID='HANAR'所以在使用MSSQL7.0的朋友一定要特别注意了,不然这个BUG导致的错误一定会让你欲哭无泪!
『注:此BUG只在 MSSQL 7.0 版本中存在,MSSQL2000已经修正此问题』
我使用的MSSQL 7.0 未使用任何升级补丁,所以MSSQL 7.0 的升级补丁是否修正了此BUG我并未测试,请大家自己测试。(帖子错发到了非技术区,再次重发)

解决方案 »

  1.   

    『注:此BUG只在 MSSQL 7.0 版本中存在,MSSQL2000已经修正此问题』
    大家注意:我已经说明了,是MSSQL 7.0 版本中的问题!
      

  2.   

    虽然说现在普遍都用MSSQL2000了,但相信7.0的用户也一定不少!个人感觉这个错误比较低级,说不过去!但仔细一想,应该是对中文支持的问题,
    可见外国对c h i n a的重视程度!
      

  3.   

    sql server就是差,明明该出错了,可是它却要把它屏蔽掉。
    还有一些其它的,比如:插入一个字段,本来字段长度不够长,报一个错出来就行了,可以MS就是不,偏要把它截断了再插入,你说这样多危险,出了错都不知道。
      

  4.   

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    sql server就是差,明明该出错了,可是它却要把它屏蔽掉。
    还有一些其它的,比如:插入一个字段,本来字段长度不够长,报一个错出来就行了,可以MS就是不,偏要把它截断了再插入,你说这样多危险,出了错都不知道。
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%这位老兄说的问题好像有误!除了数值型字段会出现自动截断问题,其他类型的字段都是会报错的,包括MSSQL7.0如果说是改变表结构,减少字段位数的话,系统会提示数据有可能丢失。所以说,这一点不是MSSQL的错!
      

  5.   

    我也测试了,确实有这个问题。真的是很恐怖又不该有的错误。不过幸亏SQL7以后的版本没有这个问题!