Gestione di errori e messaggi

Quando un'applicazione chiama una funzione ODBC, il driver esegue la funzione e restituisce le informazioni di diagnostica in due modi: un codice restituito indica l'esito positivo o negativo complessivo di una funzione ODBC e i record di diagnostica forniscono informazioni dettagliate sulla funzione. I record di diagnostica includono un record di intestazione e record di stato. Anche se la funzione riesce, viene restituito almeno un record di diagnostica, ovvero il record di intestazione.

Le informazioni di diagnostica vengono utilizzate in fase di sviluppo per rilevare errori di programmazione, ad esempio handle ed errori di sintassi non validi nelle istruzioni SQL hard-coded. Vengono utilizzate anche in fase di esecuzione per rilevare avvisi ed errori di runtime, ad esempio troncamento di dati, violazioni di regole ed errori di sintassi nelle istruzioni SQL immesse dall'utente. La logica del programma si basa generalmente sui codici restituiti.

Dopo che un'applicazione chiama SQLFetch per recuperare le righe in un set di risultati, ad esempio, il codice restituito indica se è stata raggiunta la fine del set di risultati (SQL_NO_DATA), se sono stati restituiti messaggi informativi (SQL_SUCCESS_WITH_INFO) o se si è verificato un errore (SQL_ERROR).

Se il driver ODBC di SQL Server Native Client restituisce un risultato diverso da SQL_SUCCESS, l'applicazione può chiamare SQLGetDiagRec per recuperare messaggi informativi o di errore. Utilizzare SQLGetDiagRec per scorrere verso l'alto o verso il basso il set di messaggi nel caso in cui siano presenti più messaggi.

Il codice restituito SQL_INVALID_HANDLE indica sempre un errore di programmazione e non dovrebbe essere mai rilevato in fase di esecuzione. Tutti gli altri codici restituiti forniscono informazioni di runtime, anche se SQL_ERROR potrebbe indicare un errore di programmazione.

L'API di Microsoft SQL Server Native Client originale, DB-Library per C, consente l'installazione di funzioni di gestione di callback degli errori e dei messaggi che restituiscono errori o messaggi. Alcune istruzioni Transact-SQL, ad esempio PRINT, RAISERROR, DBCC e SET, restituiscono i risultati alla funzione di gestione dei messaggi di DB-Library anziché a un set di risultati. L'API ODBC invece non presenta alcuna funzionalità di callback di questo tipo. Quando il driver ODBC di SQL Server Native Client rileva messaggi che provengono da SQL Server, imposta il codice restituito di ODBC su SQL_SUCCESS_WITH_INFO o SQL_ERROR e restituisce il messaggio come uno o più record di diagnostica. Un'applicazione ODBC deve pertanto testare attentamente questi codici restituiti e chiamare SQLGetDiagRec per recuperare i dati di messaggio.

Per ulteriori informazioni sull'analisi degli errori, vedere Data Access Tracing.