解决方案 »

  1.   

    关键有相同的系统(XP)一台可以,一台不可以,XP位数是一样的把!
      

  2.   

    64位的系统decimal(18,2)最大可以表示9999999999999999.99 ,但是32位系统就苦逼了,没有decimal(18,2) 这么大的东东,所以转换会报错
    这就想同样是int类型在32位系统和64位系统中表示的数据范围不一样是一个道理。
      

  3.   

    刚才引用错了。
    32位或者64位,最开始指的是硬件的数据总线的位数(也叫寻址空间),后来又根据数据总线的位数开发有32位系统或者64位系统,64位系统会向下兼容32位系统,64位系统是可以装在数据总线为32位的机器上的。因此除了看你的系统是多少位的之外还要看数据总线是多少位的。你的机子肯定特别老,可能是32位的数据总线,如果你的系统是64位,那就可能是你的数据总线是32位的了这个是比较底层的硬件知识,大学的计算机组成原理里面有详细的介绍。其实你的问题也不难解决,一般人用不到decimal(18,2)这么大的数据的,改小一些就可以了decimal(10,2)已经上亿了,足够用了但是你要想知道为什么的话,我目前掌握的知识就只能是上面的回答了。求高手再赐教
      

  4.   

    为什么SQL2005都对呢?
    主要是以前都这样写的.以前都是对的.
    升级到SQL2008有的机子对.有的机子不对.这才有问题的.
    如果修改代码,工作量太大了,
    而且找不全,既然有的机子SQL2008可以,就想找到怎么可以把不可以用的机子配置成可以用的呢?
      

  5.   

    还是没有解决。现在 WIN8+SQL2008 服务器上就是不行。
      

  6.   


    WIN8+SQL2008还是报这个错,
    有台XP+sql2008也是这个错。
    有台XP+sql2008是对的。我猜想应该是SQL或者系统设置问题
    不过到底是哪里设置的问题呢?
    求赐教!
      

  7.   

    http://q.cnblogs.com/q/51643/只要加一个,SET NUMERIC_ROUNDABORT OFF可以了还真的是设置问题