SQL Server-Fehlerdetail
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Der OLE DB-Treiber für SQL Server definiert die anbieterspezifische Fehlerschnittstelle für ISQLServerErrorInfo. 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 wie im folgenden Codebeispiel gezeigt einen ISQLServerErrorInfo-Zeiger zu erhalten. (Es ist nicht nötig, ISQLErrorInfo abzurufen.) Sowohl ISQLErrorInfo als auch ISQLServerErrorInfo sind benutzerdefinierte OLE DB-Fehlerobjekte. Dabei ist ISQLServerErrorInfo die Schnittstelle zum Abrufen von Informationen zu Serverfehlern, einschließlich Details wie Prozedurname und Zeilennummern.
// 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 im Aufrufen der QueryInterface-Methode für einen bereits erhaltenen ISQLErrorInfo-Zeiger. 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 Elementfunktion (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. |