Hola a todos, hoy queremos enseñaros un caso que nos pasó recientemente con un cliente. Este error pone de manifiesto la importancia del idioma en SQL Server.
Os ponemos situación. Recibimos un correo indicando un problema con una inserción de datos. El error que reportaba al insertar era:
Msg 242, Level 16, State 3, Line 1
La conversión del tipo de datos varchar en datetime produjo un valor fuera de intervalo.
En inglés el mensaje es:
Msg 242, Level 16, State 3, Line 1
The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.
Esta consulta hasta ahora había funcionado sin problema hasta ahora durante años, ¿qué había cambiado?
Investigando el problema
Decidimos investigar y buscar una solución para este error. La opción más lógica hubiera sido intentar modificar la consulta y usar conversiones. Esto puede que haya solucionado también el problema, pero si había funcionado siempre hasta ahora, ¿por qué ahora no?
Recientemente se había hecho una migración de servidores, incluyendo logins. Todavía teníamos disponible el servidor antiguo y nos pusimos a investigar.
Lo primero que miramos fue el collation de la instancia y eran iguales, lo descartamos. Posteriormente comparamos el login que había en el servidor antiguo y el nuevo.
Ambos tenían los permisos, accesos…todo era igual salvo una cosa. El idioma.
¿Cómo identificarlo?
Dentro de las propiedades de login, al final del todo aparece una opción de idioma:

Originalmente el login que se usaba en el servidor antiguo, tenía esta opción en inglés. Sin embargo, el login que se usaba en el nuevo entorno, lo tenía en Español esta opción.
La importancia del idioma y de un DBA con experiencia
Hasta ahora había funcionado todo bien, las aplicaciones funcionaban…no había problema. Hasta que llegó este problema con el idioma.
Tras cambiar el idioma a inglés también, en el nuevo login, se realizó la inserción sin problemas.
Tras este error, queríamos enseñaros la importancia que tiene el idioma en SQL Server. Es algo que suele pasarse por alto hasta que comienzan los problemas.
Por otro lado, deja claro la importancia de contar con DBAs con experiencia que sepan mirar más allá de lo lógico.
Al encontrarse con este problema, lo más rápido hubiera sido probar conversiones, cambiar código, estar horas o días probando…pero antes de eso vimos más allá y empezamos a descartar otros problemas.
Haciendo que esta solución de 15 minutos hubiera costado días de investigación y cambio de código que no siempre es posible en aplicaciones cerradas.
Si tienes un caso parecido o quieres contar con DBAs con experiencia. Puedes informarte sin compromiso sobre nuestros servicios de soporte y mantenimiento SQL Server o contactarnos para evaluar tu caso.
Esperamos que esta entrada os haya sido de utilidad.
¿Aún no conoces Query Performance? Descubre cómo puede ayudarte en tu entorno Oracle. Más información en su página de LinkedIn.
Sígue a GPS en LinkedIn
