将数据库兼容层次改为SQL Server 2000(80)试试

解决方案 »

  1.   

    如果你字段定义为DEC(18,2) 那么存入数据库的应该会自动截取啊。
    你可以在SSMS里面去INSERT一条数据试试。
      

  2.   

    如果楼主用C#,那转成C#中的decimal再传入看.
      

  3.   


    直接在SSMS编辑表格就会出错,他会自动截断保存
    但在程序保存的话确实会出现上面的异常
    同一段代码如果访问的是2000数据库就不会出错
    我是用SqlDataAdapter.Update(tab)的方式更新表格的
    UpdateCommand.CommandText是自己手工生成的
    使用UpdateCommand.Parameters.Add添加参数
    之前一直使用2000没有出现这个问题,不知道大家试过没有
    百度了一下有个别人士也遇到过这个异常,但没给出解决办法
      

  4.   

    DOUBLE is a .Net datatype which equivalent is FLOAT in T-SQL.
      

  5.   

    不管是不是无限循环小数,全部cast([计算结果] as decimal(18,2))转为decimal(18,2)类型然后再写入.
      

  6.   


    既然选择升级就当然希望用对应兼容级别啦,使用80级别我还不如不升级好了
    斩脚趾避沙虫的方法不是好办法啊

    你对数据库兼容级别的理解有问题。SQL2008安装后的默认兼容级别就是80。这样SQL2008就能兼容SQL2000的语法和特性,同时也支持SQL2008的新特性
      

  7.   


    既然选择升级就当然希望用对应兼容级别啦,使用80级别我还不如不升级好了
    斩脚趾避沙虫的方法不是好办法啊

    你对数据库兼容级别的理解有问题。SQL2008安装后的默认兼容级别就是80。这样SQL2008就能兼容SQL2000的语法和特性,同时也支持SQL2008的新特性
    我觉得是你的理解有问题吧,呵呵
    很简单,如果兼容级别设成80的话既能兼容2000的语法和特性,又能支持2008的新特性
    那么我要100的兼容级别干嘛呢,干脆只有一个80级别好了,多好,向前兼容又能享受新特性
    设成80级别的话是需要牺牲某些2008的新特性或者性能的