tipo not error ejemplos ejemplo desbordamiento datos convertir convert cast aritmético sql-server-2008-r2

not - SQL Server 2008 R2 Error de desbordamiento aritmético al convertir numérico a tipo de datos numérico



isnumeric sql ejemplos (1)

Tengo un error confuso que no puedo entender en SQL Server 2008 R2.

Pero cuando intento la misma solicitud en un servidor local (SQL Server 2008 R2 también) todo funciona bien.

Así que aquí está la solicitud planteando el problema:

select cast(cast(1.260 as numeric(13,3)) as numeric(10,2))

También agregué el resultado de algunas consultas que indican el entorno de cada servidor:

En el servidor local:

--------------------------------------- 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)

En el servidor remoto:

Msg 8115, nivel 16, estado 7, línea 1
Error de desbordamiento aritmético al convertir numérico a tipo de datos numérico.

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)

Mi pregunta es cómo puedo reproducir el problema que está ocurriendo en el servidor remoto. Como puede ver, los parámetros ARITH ... y ANSI_ .. son los mismos en ambos servidores. ¿Hay alguna configuración en ese tipo de errores en el servidor SQL?


La opción NUMERIC_ROUNDABORT está activada

Cuando SET NUMERIC_ROUNDABORT está activado, se genera un error después de que se produce una pérdida de precisión en una expresión. Cuando está desactivado, las pérdidas de precisión no generan mensajes de error y el resultado se redondea a la precisión de la columna o variable que almacena el resultado.

Normalmente esto está DESACTIVADO porque cuando las vistas indexadas ON pueden fallar.

Nunca he cambiado esto, nunca.

SET NOCOUNT ON; GO PRINT ''ON'' set NUMERIC_ROUNDABORT ON; select cast(cast(1.260 as numeric(13,3)) as numeric(10,2)); GO PRINT ''OFF'' set NUMERIC_ROUNDABORT OFF; select cast(cast(1.260 as numeric(13,3)) as numeric(10,2)); GO

da

ON --------------------------------------- Msg 8115, Level 16, State 7, Line 3 Arithmetic overflow error converting numeric to data type numeric. OFF --------------------------------------- 1.26