Condividi tramite


Dettagli relativi agli errori SQL Server

Il provider OLE DB SQL Server Native Client definisce l'interfaccia di errore specifica del provider ISQLServerErrorInfo. L'interfaccia restituisce maggiori dettagli relativi agli errori di SQL Server e risulta molto utile quando operazioni di esecuzione di comandi o del set di righe non riescono.

È possibile accedere all'interfaccia ISQLServerErrorInfo in due modi.

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

// 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. Dal momento che ISQLServerErrorInfo contiene un superset delle informazioni disponibili in ISQLErrorInfo, è consigliabile accedere direttamente a ISQLServerErrorInfo mediante 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 stringhe. Entrambi i puntatori fanno riferimento a una memoria che il consumer deve deallocare usando il metodo IMalloc::Free.

I membri di struttura SSERRORINFO vengono interpretati dal consumer come segue.

Membro Descrizione
pwszMessage Messaggio di errore di SQL Server. Identico alla stringa restituita in IErrorInfo::GetDescription.
pwszServer Nome dell'istanza di SQL Server per la sessione.
pwszProcedure Se appropriato, restituisce il nome della stored procedure in cui ha avuto origine l'errore. In caso contrario, una stringa vuota.
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 SQL Server.
bClass Gravità di un messaggio di errore SQL Server.
wLineNumber Quando è applicabile, restituisce il numero di riga di una stored procedure in cui si è verificato l'errore.

Vedere anche

Errori
RAISERROR (Transact-SQL)