Existe uma maneira eficiente de ver a causa de "String ou dados binários seriam truncados"?

13

Este é um acompanhamento desta questão . Também está relacionado a essa solicitação de recurso da Microsoft.

No entanto, muitos anos se passaram e vários lançamentos importantes chegaram ao mercado desde que foi divulgado.

Pergunta: o SQL Server 2017 fornece algum mecanismo para facilitar a descoberta da causa raiz desse erro? Ou é tão difícil investigar quanto há 9 anos atrás quando o problema foi relatado?

Alexei
fonte
Passo pelo menos 4 horas por semana depurando esse erro único e o SQL nem está na descrição do meu trabalho.
Tonny

Respostas:

20

Não houve mudanças. O SQL Server 2017 ainda oferece a mesma vaga mensagem de erro e não fornece nenhum mecanismo para descobrir a linha / coluna incorreta.

Este item do Connect teve mais de 1.600 votos quando o Connect foi retirado:

O último comentário, da Microsoft, foi o seguinte:

Atualização mais recente - o desenvolvedor que trabalha nele entende os desafios envolvidos na criação de uma correção completa. Pode ser complicado examinar as informações sobre as colunas necessárias para gerar uma mensagem de erro completa até a função de conversão real, de forma a não afetar o desempenho da inserção ou atualização. Podemos implementar algo barato a curto prazo, como registrar o tipo e o comprimento dos dados que estão sendo truncados. Ainda é muito cedo para saber quando essa correção chegaria a um lançamento visível publicamente.

O melhor que posso sugerir é votar nesse item (e comentar sobre ele, descrevendo o valor comercial que isso agregaria para você).

Aaron Bertrand
fonte
+1. Adicionar uma das maneiras menos ineficientes de descobrir o culprint (se você não tiver um log de aplicativo) é usar o criador de perfil e o filtro (por host / usuário / aplicativo / consulta / consulta / etc). Também isso pode ser útil: nimblegecko.com/…
jean
3

Nossas orações foram respondidas conforme indicado nesta postagem no blog do MDSN :

O SQL Server 2019 apresenta uma nova mensagem, com informações adicionais de contexto.

O erro deve ser muito mais significativo agora:

Msg 2628, Nível 16, Estado 1, Linha 14 Seqüência de caracteres ou dados binários seriam truncados na tabela 'DbName.SchemaName.TableName', coluna 'Col'. Valor truncado: '...'.

Além disso, a boa notícia é que essa mudança será suportada em 2017 e 2016:

Esta nova mensagem também é suportada para o SQL Server 2017 CU12 (e em uma próxima CU do SQL Server 2016 SP2), mas não por padrão. É necessário ativar o sinalizador de rastreamento 460 para substituir a ID da mensagem 8152 por 2628, no nível da sessão ou do servidor.

Alexei
fonte