Behandlung von Fehlern und Meldungen

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Wenn eine Anwendung eine ODBC-Funktion aufruft, führt der Treiber die Funktion aus und gibt Diagnoseinformationen zurück: Ein Rückgabecode gibt das Ergebnis einer ODBC-Funktion zurück (Erfolg oder Fehlschlagen), und Diagnosedatensätze liefern detaillierte Informationen über die Funktion. Diagnosedatensätze enthalten einen Headerdatensatz und Statusdatensätze. Auch wenn die Funktion erfolgreich ausgeführt wurde, wird zumindest ein Diagnosedatensatz, der Headerdatensatz, zurückgegeben.

Die Diagnoseinformationen dienen während der Entwicklung zur Erfassung von Programmierfehlern wie ungültigen Handles und Syntaxfehlern in hartcodierten SQL-Anweisungen. Darüber hinaus dienen sie zur Laufzeit dazu, Laufzeitfehler und Warnungen zu erfassen, beispielsweise das Abschneiden von Daten, Regelverstöße und Syntaxfehler in benutzerdefinierten SQL-Anweisungen. Die Programmlogik basiert im Allgemeinen auf Rückgabecodes.

Nachdem beispielsweise eine Anwendung SQLFetch aufgerufen hat, um die Zeilen in einem Resultset abzurufen, gibt der Rückgabecode an, ob das Ende des Resultsets erreicht wurde (SQL_NO_DATA), ob Informationsmeldungen zurückgegeben wurden (SQL_SUCCESS_WITH_INFO) oder ob ein Fehler aufgetreten ist (SQL_ERROR).

Wenn der SQL Server Native Client ODBC-Treiber etwas anderes als SQL_SUCCESS zurückgibt, kann die Anwendung SQLGetDiagRec aufrufen, um alle Informations- oder Fehlermeldungen abzurufen. Verwenden Sie SQLGetDiagRec , um die festgelegte Meldung nach oben und unten zu scrollen, wenn mehr als eine Nachricht vorhanden ist.

Der Rückgabecode SQL_INVALID_HANDLE gibt immer einen Programmierfehler an und sollte zur Laufzeit nie auftreten. Alle anderen Rückgabecodes stellen Laufzeitinformationen bereit, wenngleich SQL_ERROR einen Programmierfehler angeben kann.

Die ursprüngliche microsoft SQL Server native API, DB-Library für C, ermöglicht es einer Anwendung, Rückruffehlerbehandlungs- und Nachrichtenbehandlungsfunktionen zu installieren, die Fehler oder Nachrichten zurückgeben. Einige Transact-SQL-Anweisungen, z. B. PRINT, RAISERROR, DBCC und SET, geben ihre Ergebnisse an die DB-Library Nachrichtenhandlerfunktion und nicht an ein Resultset zurück. Jedoch verfügt die ODBC-API über keine solche Rückruffähigkeit. Wenn der SQL Server Native Client ODBC-Treiber Nachrichten erkennt, die von SQL Server zurückgegeben werden, legt er den ODBC-Rückgabecode auf SQL_SUCCESS_WITH_INFO oder SQL_ERROR fest und gibt die Nachricht als mindestens einen Diagnosedatensatz zurück. Daher muss eine ODBC-Anwendung sorgfältig auf diese Rückgabecodes testen und SQLGetDiagRec aufrufen, um Nachrichtendaten abzurufen.

Informationen zur Ablaufverfolgung von Fehlern finden Sie unter Data Access Tracing (Ablaufverfolgung für den Datenzugriff). Informationen zu Verbesserungen der in SQL Server 2012 (11.x) hinzugefügten Fehlerablaufverfolgung finden Sie unter Zugreifen auf Diagnoseinformationen im Protokoll der erweiterten Ereignisse.

In diesem Abschnitt

Weitere Informationen

SQL Server Native Client (ODBC)