¿Hay una manera eficiente de ver la causa de "La cadena o los datos binarios se truncarían"?

13

Este es un seguimiento de esta pregunta . También está relacionado con esta solicitud de función de Microsoft.

Sin embargo, han pasado muchos años y varios lanzamientos importantes llegaron al mercado desde que se informó.

Pregunta: ¿SQL Server 2017 proporciona algún mecanismo para facilitar la búsqueda de la causa raíz de este error? ¿O es tan difícil de investigar como lo fue hace unos 9 años cuando se informó el problema?

Alexei
fuente
Dedico al menos 4 horas a la semana a depurar este error único y SQL ni siquiera está en la descripción de mi trabajo.
Tonny

Respuestas:

20

No ha habido cambios. SQL Server 2017 todavía ofrece el mismo mensaje de error vago y no proporciona ningún mecanismo para descubrir la fila / columna infractora.

Este artículo de Connect tenía más de 1,600 votos cuando se retiró Connect:

El último comentario allí, de Microsoft, fue este:

Última actualización: el desarrollador que trabaja en ella comprende los desafíos que implica la creación de una solución completa. Puede ser complicado obtener la información sobre las columnas necesarias para generar un mensaje de error completo hasta la función de conversión real de tal manera que no afecte el rendimiento de inserción o actualización. Podemos implementar algo barato a corto plazo, como registrar el tipo y la longitud de los datos que se truncan. Todavía es demasiado pronto para saber cuándo una solución de este tipo alcanzaría una versión públicamente visible.

Lo mejor que puedo sugerir es votar por ese elemento (y comentarlo, describiendo el valor comercial que esto agregaría para usted).

Aaron Bertrand
fuente
+1. Para agregar una de las formas menos ineficientes de descubrir la culpabilidad (si no tiene un registro de aplicación) es usar el generador de perfiles y el filtro (por host / usuario / aplicación / consulta / etc.). También esto puede ser útil: nimblegecko.com/…
jean
3

Nuestras oraciones han sido respondidas como lo indica esta publicación de blog de MDSN :

SQL Server 2019 presenta un nuevo mensaje, con información de contexto adicional.

El error debería ser mucho más significativo ahora:

Msg 2628, Nivel 16, Estado 1, Línea 14 Los datos de cadena o binarios se truncarían en la tabla 'DbName.SchemaName.TableName', columna 'Col'. Valor truncado: '...'.

Además, la buena noticia es que este cambio se trasladará en 2017 y 2016:

Este nuevo mensaje también es compatible con SQL Server 2017 CU12 (y en un próximo SQL Server 2016 SP2 CU), pero no de manera predeterminada. Debe habilitar el indicador de seguimiento 460 para reemplazar el ID de mensaje 8152 con 2628, ya sea a nivel de sesión o de servidor.

Alexei
fuente