Freigeben über


SQL Server-Fehlerdetail

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

OLE DB-Treiber herunterladen

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.

Weitere Informationen

Fehler
RAISERROR (Transact-SQL)