Zpracování chyb a zpráv

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytický platformní systém (PDW)

Když aplikace volá funkci ODBC, ovladač ji vykoná a vrátí diagnostické informace dvěma způsoby: Zpětný kód označuje celkový úspěch nebo neúspěch funkce ODBC a diagnostické záznamy poskytují podrobné informace o funkci. Diagnostické záznamy zahrnují záznam hlavičky a stavové záznamy. Alespoň jeden diagnostický záznam, hlavičkový záznam, je vrácen i v případě, že funkce uspěje.

Diagnostické informace se používají při vývoji k odhalení programátorských chyb, jako jsou neplatné rukojeti a syntaxní chyby v pevně zakódovaných SQL příkazech. Používá se také za běhu k zachycení chyb a varování za běhu, jako je zkrácení dat, porušení pravidel a syntaxní chyby v SQL příkazech zadaných uživatelem. Logika programu je obecně založená na návratových kódech.

Například po vyvolání SQLFetch aplikací pro získání řádků v sadě výsledků zpětný kód označuje, zda byl dosažen konec výsledné sady (SQL_NO_DATA), zda byly vráceny nějaké informační zprávy (SQL_SUCCESS_WITH_INFO), nebo zda došlo k chybě (SQL_ERROR).

Pokud ovladač ODBC pro nativního klienta SQL Server vrátí cokoli jiného než SQL_SUCCESS, aplikace může vyvolat SQLGetDiagRec a získat jakékoli informační nebo chybové zprávy. Použijte SQLGetDiagRec k posouvání nahoru a dolů po sadě zpráv, pokud je zpráv více než jedna.

Návratový kód SQL_INVALID_HANDLE vždy označuje programovou chybu a nikdy by neměl být zjištěn za běhu. Všechny ostatní návratové kódy poskytují informace o době běhu, i když SQL_ERROR může znamenat programovací chybu.

Původní Microsoft SQL Server nativní API, DB-Library pro C, umožňuje aplikaci nainstalovat funkce pro zpracování chyb a zpráv zpětným voláním, které vracejí chyby nebo zprávy. Některé Transact-SQL příkazy, jako PRINT, RAISERROR, DBCC a SET, vracejí své výsledky do funkce DB-Library message handler místo do výsledné množiny. Nicméně ODBC API takovou schopnost zpětného volání nemá. Když ovladač ODBC nativního klienta SQL Server detekuje zprávy přicházející zpět od SQL Server, nastaví zpětný kód ODBC na SQL_SUCCESS_WITH_INFO nebo SQL_ERROR a vrátí zprávu jako jeden nebo více diagnostických záznamů. Proto musí aplikace ODBC pečlivě otestovat tyto zpětné kódy a volat SQLGetDiagRec pro získání dat zpráv.

Pro informace o chybách při trasování viz Sledování přístupu k datům. Pro informace o vylepšeních sledování chyb přidaných v SQL Server 2012 (11.x) viz Přístup k diagnostickým informacím v Extended Events Log.

V této sekci