Condividi tramite


Dettagli dell'errore di SQL Server

Il provider OLE DB di SQL Server Native Client definisce l'interfaccia di errore specifica del provider ISQLServerErrorInfo. L'interfaccia restituisce altri dettagli su un errore di SQL Server ed è utile quando l'esecuzione dei comandi o le operazioni del set di righe hanno esito negativo.

Esistono due modi per ottenere l'accesso all'interfaccia ISQLServerErrorInfo .

Il consumer può chiamare IErrorRecords::GetCustomerErrorObject per ottenere un puntatore ISQLServerErrorInfo , come illustrato nell'esempio di codice seguente. Non è necessario ottenere ISQLErrorInfo.Sia ISQLErrorInfo che ISQLServerErrorInfo sono oggetti di errore OLE DB personalizzati, con ISQLServerErrorInfo l'interfaccia da usare per ottenere informazioni sugli errori del server, inclusi dettagli come il nome della routine e i numeri di riga.

// Get the SQL Server custom error object.  
if(FAILED(hr=pIErrorRecords->GetCustomErrorObject(  
   nRec, IID_ISQLServerErrorInfo,  
   (IUnknown**)&pISQLServerErrorErrorInfo)))  

Un altro modo per ottenere un puntatore ISQLServerErrorInfo consiste nel chiamare il metodo QueryInterface su un puntatore ISQLErrorInfo già ottenuto. Si noti che poiché ISQLServerErrorInfo contiene un superset delle informazioni disponibili da ISQLErrorInfo, è opportuno passare direttamente a ISQLServerErrorInfo tramite GetCustomerErrorObject.

L'interfaccia ISQLServerErrorInfo espone una funzione membro, ISQLServerErrorInfo::GetErrorInfo. La funzione restituisce un puntatore a una struttura SSERRORINFO e un puntatore a un buffer di stringa. Entrambi i puntatori fanno riferimento alla memoria che il consumer deve deallocare usando il metodo IMalloc::Free .

I membri della struttura SSERRORINFO vengono interpretati dal consumer come indicato di seguito.

Membro Descrizione
pwszMessage Messaggio di errore di SQL Server. Identica alla stringa restituita in IErrorInfo::GetDescription.
pwszServer Nome dell'istanza di SQL Server per la sessione.
pwszProcedure Se appropriato, nome della procedura in cui ha avuto origine l'errore. Stringa vuota in caso contrario.
lNative Numero di errore nativo di SQL Server. Identico al valore restituito nel parametro plNativeError di ISQLErrorInfo::GetSQLInfo.
bState Stato di un messaggio di errore di SQL Server.
bClass Gravità di un messaggio di errore di SQL Server.
wLineNumber Se applicabile, il numero di riga di una stored procedure in cui si è verificato l'errore.

Vedere anche

Errori
RAISERROR (Transact-SQL)