Gestione di errori e messaggi
Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW)
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.
Ad esempio, dopo che un'applicazione chiama SQLFetch per recuperare le righe in un set di risultati, 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 qualsiasi valore diverso da SQL_SUCCESS, l'applicazione può chiamare SQLGetDiagRec per recuperare eventuali messaggi informativi o di errore. Usare SQLGetDiagRec per scorrere verso l'alto e verso il basso il set di messaggi se è presente più di un messaggio.
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 nativa di Microsoft SQL Server originale, DB-Library per C, consente a un'applicazione di installare funzioni di gestione degli errori di callback e gestione dei messaggi che restituiscono errori o messaggi. Alcune istruzioni Transact-SQL, ad esempio PRINT, RAISERROR, DBCC e SET, restituiscono i risultati alla funzione del gestore messaggi della libreria DB 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 i messaggi restituiti da SQL Server, imposta il codice restituito ODBC su SQL_SUCCESS_WITH_INFO o SQL_ERROR e restituisce il messaggio come uno o più record di diagnostica. Pertanto, un'applicazione ODBC deve testare attentamente questi codici restituiti e chiamare SQLGetDiagRec per recuperare i dati dei messaggi.
Per informazioni sulla traccia degli errori, vedere Data Access Tracing (Traccia di accesso ai dati). Per informazioni sui miglioramenti apportati alla traccia degli errori aggiunta in SQL Server 2012 (11.x), vedere Accesso alle informazioni di diagnostica nel log degli eventi estesi.