Afhandeling van fouten en berichten

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Wanneer een applicatie een ODBC-functie aanroept, voert de driver de functie uit en geeft diagnostische informatie op twee manieren terug: een retourcode geeft het algehele succes of falen van een ODBC-functie aan, en diagnostische records geven gedetailleerde informatie over de functie. Diagnostische records bevatten een headerrecord en statusrecords. Ten minste één diagnostisch record, het headerrecord, wordt teruggegeven, zelfs als de functie slaagt.

Diagnostische informatie wordt tijdens de ontwikkeling gebruikt om programmeerfouten te detecteren, zoals ongeldige handles en syntaxisfouten in hardgecodeerde SQL-instructies. Het wordt ook tijdens runtime gebruikt om runtime-fouten en waarschuwingen te detecteren, zoals gegevensafkaping, regelovertredingen en syntaxisfouten in SQL-instructies die door de gebruiker worden ingevoerd. Programmalogica is over het algemeen gebaseerd op retourcodes.

Bijvoorbeeld, nadat een applicatie SQLFetch heeft aangeroepen om de rijen in een resultaatset op te halen, geeft de retourcode aan of het einde van de resultaatset is bereikt (SQL_NO_DATA), of er informatieve berichten zijn teruggestuurd (SQL_SUCCESS_WITH_INFO), of dat er een fout is opgetreden (SQL_ERROR).

Als de SQL Server Native Client ODBC-driver iets anders dan SQL_SUCCESS teruggeeft, kan de applicatie SQLGetDiagRec aanroepen om informatieve of foutmeldingen op te halen. Gebruik SQLGetDiagRec om de berichtset op en neer te scrollen als er meer dan één bericht is.

De retourcode SQL_INVALID_HANDLE geeft altijd een programmeerfout aan en mag nooit tijdens runtime worden aangetroffen. Alle andere retourcodes bieden runtime-informatie, hoewel SQL_ERROR een programmeerfout kan aangeven.

De oorspronkelijke Microsoft SQL Server native API, DB-Library for C, stelt een applicatie in staat om callback-fout- en berichtbehandelingsfuncties te installeren die fouten of berichten teruggeven. Sommige Transact-SQL-instructies, zoals PRINT, RAISERROR, DBCC en SET, geven hun resultaten terug aan de functie van de DB-Library berichtbehandelaar in plaats van aan een resultaatset. De ODBC API heeft echter geen dergelijke callback-mogelijkheid. Wanneer de SQL Server Native Client ODBC-driver berichten van SQL Server detecteert, stelt hij de ODBC-retourcode in op SQL_SUCCESS_WITH_INFO of SQL_ERROR en geeft het bericht terug als één of meer diagnostische records. Daarom moet een ODBC-applicatie zorgvuldig testen op deze retourcodes en SQLGetDiagRec aanroepen om berichtgegevens op te halen.

Voor informatie over tracingfouten, zie Data Access Tracing. Voor informatie over verbeteringen aan foutopsporing die zijn toegevoegd in SQL Server 2012 (11.x), zie Toegang tot diagnostische informatie in het Uitgebreide Gebeurtenislogboek.

In deze sectie

Zie ook

SQL Server Native Client (ODBC)