CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

MSSQL中吓人一身冷汗的BUG

楼主bedsheet(岸上的鱼)2005-08-03 12:17:44 在 MS-SQL Server / 基础类 提问

在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我并未测试,请大家自己测试。  
   
  (帖子错发到了非技术区,再次重发) 问题点数:0、回复次数:28Top

1 楼huangjianyou(小健)回复于 2005-08-03 12:20:29 得分 0

^_^Top

2 楼WuChenCan(雨中男孩)回复于 2005-08-03 12:26:32 得分 0

谢谢,不过偶不遇到过!Top

3 楼MrPotter(HarryPotter)回复于 2005-08-03 12:34:38 得分 0

理论上会报语法错误的,因为那个,无法识别Top

4 楼zjcxc(邹建)回复于 2005-08-03 12:35:14 得分 0

sql   2000中没有此问题.Top

5 楼operfume(橘子香水)回复于 2005-08-03 12:41:58 得分 0

没有遇到过Top

6 楼bedsheet(岸上的鱼)回复于 2005-08-03 12:48:50 得分 0

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

7 楼bedsheet(岸上的鱼)回复于 2005-08-04 18:48:07 得分 0

不会吧!  
  大家都没碰到这个问题吗???  
   
  给个共鸣啊!Top

8 楼MorningTea(一勺抹茶)回复于 2005-08-04 19:39:12 得分 0

\/^   O   ^\/  
    我的也有,不过是看了之后才去测试,果然!  
     
   我这里有2个版本,7.0,8.0,不过8.0的就没有这个问题,会报错哦  
   
   一定注意!!!!Top

9 楼wscft(努力工作,开心生活!))回复于 2005-08-04 19:48:03 得分 0

hehe,   俺用的是2000Top

10 楼summerICEREDTEA(从基础学起)回复于 2005-08-04 20:15:32 得分 0

现在主要用的是应该是2K吧Top

11 楼guid6(学无止境)回复于 2005-08-04 20:41:09 得分 0

谢谢楼主提醒Top

12 楼tangqijun199(撒旦.冲上了5角还差一个猩猩,继续努力……)回复于 2005-08-04 20:55:35 得分 0

谢谢提醒.Top

13 楼bedsheet(岸上的鱼)回复于 2005-08-04 21:00:01 得分 0

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

14 楼fongming()回复于 2005-08-05 10:11:40 得分 0

用MSSQL2000不会啊Top

15 楼good_luck898(898)回复于 2005-08-05 10:32:13 得分 0

呵呵,我好像一般不用中文标点!  
  只有比较特殊的文档才会将它调成中文的.  
   
  Top

16 楼glen_huang(心要飞扬)回复于 2005-08-05 12:59:00 得分 0

真的吗,我要回去看看Top

17 楼yxg80(林夕昱)回复于 2005-08-05 13:26:11 得分 0

谢谢了!Top

18 楼hglhyy(為人民币服务!)回复于 2005-08-05 14:30:13 得分 0

以前用过7.0 ,但没用多久就用8.0了! 不过你说的听起来是很危险!幸亏我没有做过这样的傻事!Top

19 楼starbzj(bbb)回复于 2005-08-05 16:51:07 得分 0

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

20 楼bedsheet(岸上的鱼)回复于 2005-08-06 15:35:50 得分 0

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

21 楼iwl()回复于 2005-08-07 13:52:09 得分 0

没有遇到过Top

22 楼goodsung(凄风冷雨)回复于 2006-01-16 16:42:33 得分 0

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

23 楼happyflystone(无枪的狙击手)回复于 2006-01-16 16:45:59 得分 0

呵呵     ,Top

24 楼tangqijun199(撒旦.冲上了5角还差一个猩猩,继续努力……)回复于 2006-03-04 11:08:29 得分 0

早就知道了,我还以为地球人都知道!Top

25 楼softj(天地客人<最近很迷茫>)回复于 2006-03-04 12:23:36 得分 0

所以还是用新的版本和补丁Top

26 楼bedsheet(岸上的鱼)回复于 2006-04-18 12:30:59 得分 0

看上面的回复,地球人还都不知道!呵呵  
   
  Top

27 楼xeqtr1982(Visual C# .NET)回复于 2006-04-18 12:39:15 得分 0

还真不知道   :)Top

28 楼tntzbzc(华裔大魔王—抗日要从娃娃抓起)回复于 2006-04-18 12:53:18 得分 0

成年老贴了  
   
   
  UPTop

相关问题

  • 发现MSSQL的BUG!!!isnumeric函数
  • 问题有点吓人!!!
  • 【BUG】
  • bug?
  • BUG
  • BUG?
  • bug???
  • bug~
  • bug?
  • bug?

关键词

  • sql2000
  • mssql
  • 字段
  • 语句
  • 版本
  • 修正
  • 中文
  • 执行
  • sql
  • 逗号

得分解答快速导航

  • 帖主:bedsheet

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo