Freigeben über


Behandlung von Fehlern und Meldungen

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics 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 eine Anwendung z. B. 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), wenn Informationsmeldungen zurückgegeben wurden (SQL_SUCCESS_WITH_INFO), oder wenn ein Fehler aufgetreten ist (SQL_ERROR).

Wenn der SQL Server Native Client ODBC-Treiber einen anderen Wert als SQL_SUCCESS zurückgibt, kann die Anwendung SQLGetDiagRec aufrufen, um informationen oder Fehlermeldungen abzurufen. Verwenden Sie SQLGetDiagRec , um nach oben und unten zu scrollen, wenn mehrere Nachrichten vorhanden sind.

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 systemeigene Microsoft SQL Server-API, DB-Library für C, ermöglicht einer Anwendung die Installation von Rückruffehlerbehandlungs- und Nachrichtenbehandlungsfunktionen, die Fehler oder Nachrichten zurückgeben. Einige Transact-SQL-Anweisungen, z. B. PRINT, RAISERROR, DBCC und SET, geben ihre Ergebnisse an die Funktion db-Library-Nachrichtenhandler statt 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)