Diagnosemeldungen

Eine Diagnosenachricht wird mit jedem SQLSTATE zurückgegeben. Derselbe SQLSTATE wird häufig mit einer Reihe unterschiedlicher Nachrichten zurückgegeben. Beispielsweise wird SQLSTATE 42000 (Syntaxfehler oder Zugriffsverletzung) für die meisten Fehler in der SQL-Syntax zurückgegeben. Jeder Syntaxfehler wird jedoch wahrscheinlich durch eine andere Meldung beschrieben.

Beispieldiagnosemeldungen werden in der Spalte Fehler in der Tabelle mit SQLSTATEs in Anhang A und in jeder Funktion aufgeführt. Obwohl Treiber diese Nachrichten zurückgeben können, ist es wahrscheinlicher, dass sie die Nachricht zurückgeben, die ihnen von der Datenquelle übergeben wird.

Anwendungen zeigen dem Benutzer in der Regel Diagnosemeldungen an, zusammen mit dem SQLSTATE und dem nativen Fehlercode. Auf diese Weise können Benutzer und Supportmitarbeiter die Ursache von Problemen ermitteln. Die in die Nachricht eingebetteten Komponenteninformationen sind besonders hilfreich.

Diagnosemeldungen stammen aus Datenquellen und Komponenten in einer ODBC-Verbindung, z. B. Treiber, Gateways und Treiber-Manager. In der Regel unterstützen Datenquellen ODBC nicht direkt. Wenn eine Komponente in einer ODBC-Verbindung daher eine Nachricht von einer Datenquelle empfängt, muss sie die Datenquelle als Quelle der Nachricht identifizieren. Sie muss sich auch als die Komponente identifizieren, die die Nachricht erhalten hat.

Wenn es sich bei der Quelle eines Fehlers oder einer Warnung um eine Komponente selbst handelt, muss die Diagnosemeldung dies erklären. Daher weist der Text von Nachrichten zwei verschiedene Formate auf. Bei Fehlern und Warnungen, die nicht in einer Datenquelle auftreten, muss die Diagnosenachricht dieses Format verwenden:

[ vendor-identifier ][ ODBC-component-identifier ] component-supplied-text

Bei Fehlern und Warnungen, die in einer Datenquelle auftreten, muss die Diagnosenachricht dieses Format verwenden:

[ vendor-identifier ][ ODBC-component-identifier ][ data-source-identifier ] data-source-supplied-text

Die folgende Tabelle zeigt die Bedeutung der einzelnen Elemente.

Element Bedeutung
vendor-identifier Identifiziert den Anbieter der Komponente, in der der Fehler oder die Warnung aufgetreten ist oder die den Fehler oder die Warnung direkt von der Datenquelle erhalten hat.
ODBC-component-identifier Identifiziert die Komponente, in der der Fehler oder die Warnung aufgetreten ist oder die den Fehler oder die Warnung direkt von der Datenquelle erhalten hat.
data-source-identifier Identifiziert die Datenquelle. Bei dateibasierten Treibern ist dies in der Regel ein Dateiformat, z. B. Xbase[1] Für DBMS-basierte Treiber ist dies das DBMS-Produkt.
component-supplied-text Wird von der ODBC-Komponente erzeugt.
data-source-supplied-text Wird von der Datenquelle generiert.

[1] In diesem Fall fungiert der Treiber sowohl als Treiber als auch als Datenquelle.

Klammern ([ ]) müssen in der Nachricht enthalten sein und keine optionalen Elemente angeben.