【发布时间】:2014-04-03 18:43:19
【问题描述】:
我在 SQL Server 2008 R2 上遇到了一个我无法理解的令人困惑的错误。
但是当我在本地服务器(SQL Server 2008 R2 也是)上尝试相同的请求时,一切正常。
所以这是提出问题的请求:
select cast(cast(1.260 as numeric(13,3)) as numeric(10,2))
我还添加了一些查询的结果,指示每个服务器的环境:
在本地服务器上:
---------------------------------------
1.26
(1 row(s) affected)
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1617.0 (X64)
Apr 22 2011 19:23:43
Copyright (c) Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
ARITHABORT
---------------------------------------------------------------------------------------------
1
(1 row(s) affected)
ARITHIGNORE
---------------------------------------------------------------------------------------------
NULL
(1 row(s) affected)
ANSI_WARNINGS
---------------------------------------------------------------------------------------------
1
(1 row(s) affected)
在远程服务器上:
消息 8115,第 16 级,状态 7,第 1 行
将数值转换为数值数据类型时出现算术溢出错误。
Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64)
Jun 17 2011 00:54:03
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.0 <X64> (Build 6002: Service Pack 2) (Hypervisor)
(1 row(s) affected)
ARITHABORT
------------------------------------------------------------------------------------------------------------
1
(1 row(s) affected)
ARITHIGNORE
------------------------------------------------------------------------------------------------------------
NULL
(1 row(s) affected)
ANSI_WARNINGS
------------------------------------------------------------------------------------------------------------
1
(1 row(s) affected)
我的问题是如何重现远程服务器上发生的问题。如您所见,参数 ARITH... 和 ANSI_.. 在两台服务器上都是相同的。 SQL Server 上是否有针对此类错误的配置?
【问题讨论】:
-
我在具有相同版本(10.50.2500.0)的另一台(生产)远程服务器上尝试了相同的请求,并且没有错误。