Esiste un modo efficace per vedere la causa di "Dati stringa o binari verrebbero troncati"?


13

Questo è un seguito a questa domanda . È anche correlato a questa richiesta di funzionalità da parte di Microsoft.

Tuttavia, sono trascorsi molti anni e diverse importanti pubblicazioni hanno raggiunto il mercato da quando è stato segnalato.

Domanda: SQL Server 2017 fornisce qualche meccanismo per facilitare la ricerca della causa principale di questo errore? O è difficile indagare come lo era circa 9 anni fa quando è stato segnalato il problema?


Dedico almeno 4 ore alla settimana al debug di questo singolo errore e SQL non è nemmeno nella descrizione del mio lavoro.
Tonny,

Risposte:


20

Non ci sono stati cambiamenti. SQL Server 2017 offre ancora lo stesso vago messaggio di errore e non fornisce alcun meccanismo per rilevare la riga / colonna offensiva.

Questo elemento di Connect ha ottenuto oltre 1.600 voti quando Connect è stato ritirato:

L'ultimo commento lì, di Microsoft, è stato questo:

Ultimo aggiornamento: lo sviluppatore che ci sta lavorando comprende le sfide legate alla creazione di una correzione completa. Può essere difficile individuare le informazioni sulle colonne necessarie per generare un messaggio di errore completo fino alla funzione di conversione effettiva in modo tale da non influire sulle prestazioni di inserimento o aggiornamento. Potremmo implementare qualcosa di economico a breve termine come la registrazione del tipo e della lunghezza dei dati troncati. È ancora troppo presto per sapere quando una tale correzione raggiungerà una versione pubblicamente visibile.

Il meglio che posso suggerire è votare quell'elemento (e commentarlo, descrivendo il valore commerciale che questo aggiungerebbe per te).


+1. Aggiungere uno dei modi meno inefficienti per scoprire il problema (se non si dispone di un registro dell'app) è utilizzare il profiler e il filtro (per host / utente / app / query / ecc.). Anche questo può essere utile: nimblegecko.com/…
jean

3

Le nostre preghiere hanno ricevuto risposta come indicato da questo post sul blog MDSN :

SQL Server 2019 introduce un nuovo messaggio, con informazioni di contesto aggiuntive.

L'errore dovrebbe essere molto più significativo ora:

Messaggio 2628, livello 16, stato 1, riga 14 I dati stringa o binari verrebbero troncati nella tabella "DbName.SchemaName.TableName", colonna "Col". Valore troncato: '...'.

Inoltre, la buona notizia è che questo cambiamento sarà trasferito in backport sia nel 2017 che nel 2016:

Questo nuovo messaggio è anche backportato in CU12 di SQL Server 2017 (e in una CU di SQL Server 2016 SP2 in arrivo), ma non per impostazione predefinita. È necessario abilitare il flag di traccia 460 per sostituire l'ID messaggio 8152 con 2628, a livello di sessione o server.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.