Gibt es eine effiziente Möglichkeit, die Ursache für "Zeichenfolge oder Binärdaten würden abgeschnitten" zu ermitteln?

13

Dies ist ein Follow-up zu dieser Frage . Es bezieht sich auch auf diese Funktionsanforderung von Microsoft.

Es sind jedoch viele Jahre vergangen und mehrere Hauptversionen haben den Markt erreicht, seit es gemeldet wurde.

Frage: Stellt SQL Server 2017 einen Mechanismus zur Verfügung, mit dem die Hauptursache für diesen Fehler leichter ermittelt werden kann? Oder ist es so schwer zu untersuchen, wie es vor ungefähr 9 Jahren war, als das Problem gemeldet wurde?

Alexei
quelle
Ich verbringe mindestens 4 Stunden pro Woche mit dem Debuggen dieses einzelnen Fehlers, und SQL ist nicht einmal in meiner Jobbeschreibung enthalten.
Tonny

Antworten:

20

Es hat keine Änderung gegeben. SQL Server 2017 bietet weiterhin dieselbe vage Fehlermeldung und keinen Mechanismus zum Erkennen der fehlerhaften Zeile / Spalte.

Dieser Connect-Artikel hatte über 1.600 Stimmen, als Connect in den Ruhestand ging:

Der neueste Kommentar von Microsoft war:

Letztes Update - Der Entwickler, der daran arbeitet, versteht die Herausforderungen, die mit der Erstellung eines vollständigen Updates verbunden sind. Es kann schwierig sein, die Informationen zu Spalten, die zum Generieren einer vollständigen Fehlermeldung erforderlich sind, bis auf die eigentliche Konvertierungsfunktion so auszuloten, dass die Leistung beim Einfügen oder Aktualisieren nicht beeinträchtigt wird. Wir können kurzfristig etwas billiges implementieren, wie das Protokollieren des Typs und der Länge der Daten, die abgeschnitten werden. Es ist noch zu früh, um zu wissen, wann eine solche Korrektur zu einer öffentlich sichtbaren Veröffentlichung führen würde.

Das Beste, was ich vorschlagen kann, ist, für diesen Artikel zu stimmen (und ihn zu kommentieren und den geschäftlichen Nutzen zu beschreiben, den dies für Sie bedeuten würde).

Aaron Bertrand
quelle
+1. Um eine der weniger ineffizienten Möglichkeiten zum Ermitteln der Ursache hinzuzufügen (wenn Sie kein App-Protokoll haben), verwenden Sie den Profiler und den Filter (nach Host / Benutzer / App / Abfrage / usw.). Dies kann auch nützlich sein: nimblegecko.com/…
jean
2

Unsere Gebete wurden beantwortet, wie in diesem MDSN-Blogeintrag angegeben :

SQL Server 2019 führt eine neue Nachricht mit zusätzlichen Kontextinformationen ein.

Der Fehler sollte jetzt viel aussagekräftiger sein:

Meldung 2628, Ebene 16, Status 1, Zeile 14 Zeichenfolge oder Binärdaten werden in der Tabelle 'DbName.SchemaName.TableName' in der Spalte 'Col' abgeschnitten. Verkürzter Wert: '...'.

Die gute Nachricht ist auch, dass diese Änderung sowohl 2017 als auch 2016 rückgängig gemacht wird:

Diese neue Nachricht wird ebenfalls in SQL Server 2017 CU12 (und in einer zukünftigen SQL Server 2016 SP2-CU) zurückportiert, jedoch nicht standardmäßig. Sie müssen das Ablaufverfolgungsflag 460 aktivieren, um die Nachrichten-ID 8152 entweder auf Sitzungsebene oder auf Serverebene durch 2628 zu ersetzen.

Alexei
quelle