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. |