Teilen über


Regeln der Diagnosebehandlung

Die folgenden Regeln regeln die Diagnosebehandlung in SQLGetDiagRec und SQLGetDiagField.

Für alle ODBC-Komponenten:

  • Fehler oder Warnungen, die von einer anderen ODBC-Komponente empfangen werden, dürfen nicht ersetzt, geändert oder maskiert werden.

  • Fügen Sie möglicherweise einen zusätzlichen Statusdatensatz hinzu, wenn sie eine Diagnosenachricht von einer anderen ODBC-Komponente erhalten. Der hinzugefügte Datensatz muss der ursprünglichen Nachricht einen echten Informationswert hinzufügen.

Für die ODBC-Komponente, die direkt eine Datenquelle schnittstellen:

  • Muss dem Anbieterbezeichner, dem Komponentenbezeichner und dem Bezeichner der Datenquelle die Diagnosenachricht voranstellen, die er von der Datenquelle empfängt.

  • Muss den systemeigenen Fehlercode der Datenquelle beibehalten.

  • Muss die Diagnosenachricht der Datenquelle beibehalten.

Für jede ODBC-Komponente, die unabhängig von der Datenquelle einen Fehler oder eine Warnung generiert:

  • Muss den richtigen SQLSTATE-Wert für den Fehler oder die Warnung angeben.

  • Muss den Text der Diagnosenachricht generieren.

  • Muss dem Anbieterbezeichner und dessen Komponentenbezeichner die Diagnosenachricht voranstellen.

  • Muss einen systemeigenen Fehlercode zurückgeben, wenn ein Fehler verfügbar und aussagekräftig ist.

Für die ODBC-Komponente, die mit dem Treiber-Manager schnittstellen:

  • Muss die Ausgabeargumente von SQLGetDiagRec und SQLGetDiagField initialisieren.

  • Muss die Diagnoseinformationen beim Aufrufen dieser Funktion als Ausgabeargumente von SQLGetDiagRec und SQLGetDiagField formatieren und zurückgeben.

Für eine andere ODBC-Komponente als den Treiber-Manager:

  • Muss den SQLSTATE-Wert basierend auf dem systemeigenen Fehler festlegen. Für dateibasierte Treiber und DBMS-basierte Treiber, die kein Gateway verwenden, muss der Treiber den SQLSTATE-Wert festlegen. Bei DBMS-basierten Treibern, die ein Gateway verwenden, kann entweder der Treiber oder ein Gateway, das ODBC unterstützt, sqlSTATE festlegen.