SQL Server-Fehlerdetail
Der SQL Server Native Client-OLE DB-Anbieter definiert die anbieterspezifische ISQLServerErrorInfo-Schnittstelle. Diese Schnittstelle stellt Details zu SQL Server-Fehlern bereit und ist daher eine nützliche Informationsquelle, wenn Fehler bei der Ausführung von Befehlen oder Rowsetvorgängen auftreten.
Für den Zugriff auf die ISQLServerErrorInfo-Schnittstelle gibt es zwei Möglichkeiten.
Der Consumer kann IErrorRecords::GetCustomerErrorObject aufrufen, um einen ISQLServerErrorInfo-Zeiger zu erhalten, wie im folgenden Codebeispiel gezeigt. (Es ist nicht nötig, ISQLErrorInfo abzurufen.) Sowohl ISQLErrorInfo und ISQLServerErrorInfo sind benutzerdefinierte OLE DB-Fehlerobjekte, deren Schnittstelle zum Abrufen von Informationen zu Serverfehlern einschließlich Details wie Prozedurname und Zeilennummern ISQLServerErrorInfo ist.
// Get the SQL Server custom error object.
if(FAILED(hr=pIErrorRecords->GetCustomErrorObject(
nRec, IID_ISQLServerErrorInfo,
(IUnknown**)&pISQLServerErrorErrorInfo)))
Eine andere Möglichkeit, einen ISQLServerErrorInfo-Zeiger zu erhalten, besteht darin, die QueryInterface-Methode für einen bereits erhaltenen ISQLErrorInfo-Zeiger aufzurufen. Beachten Sie, dass ISQLServerErrorInfo eine Obermenge der Informationen enthält, die durch ISQLErrorInfo verfügbar sind. Daher ist es sinnvoll, direkt über GetCustomerErrorObject zu ISQLServerErrorInfo zu gehen.
Die ISQLServerErrorInfo-Schnittstelle macht eine Memberfunktion, ISQLServerErrorInfo::GetErrorInfo, verfügbar. Die Funktion gibt einen Zeiger auf eine SSERRORINFO-Struktur und einen Zeiger auf einen Zeichenfolgenpuffer zurück. Beide Zeiger verweisen auf den Arbeitsspeicher, den der Consumer mithilfe der IMalloc::Free -Methode freigeben muss.
SSERRORINFO-Strukturmember werden vom Consumer interpretiert wie folgt.
Member |
Beschreibung |
---|---|
pwszMessage |
SQL Server-Fehlermeldung. Identisch mit der Zeichenfolge, die in IErrorInfo::GetDescription zurückgegeben wird. |
pwszServer |
Name der Instanz von SQL Server für diese Sitzung. |
pwszProcedure |
Falls zutreffend, der Name der Prozedur, in der der Fehler aufgetreten ist. Andernfalls eine leere Zeichenfolge. |
lNative |
Systemeigene SQL Server-Fehlernummer. Identisch mit dem Wert, der im plNativeError-Parameter von ISQLErrorInfo::GetSQLInfo zurückgegeben wird. |
bState |
Der Status einer SQL Server-Fehlermeldung. |
bClass |
Schweregrad einer SQL Server-Fehlermeldung. |
wLineNumber |
Falls zutreffend, die Zeilennummer einer gespeicherten Prozedur, in der der Fehler aufgetreten ist. |