Grundlegendes zu Datenbankmodulfehlern

 

Betrifft: SQL Server 2016

Von Microsoft SQL Server-Datenbankmodul ausgelöste Fehler weisen die in der folgenden Tabelle beschriebenen Attribute auf.

AttributBeschreibung
FehlernummerJede Fehlermeldung besitzt eine eindeutige Fehlernummer.
Fehlermeldungs-ZeichenfolgeDie Fehlermeldung enthält Diagnoseinformationen über die Ursache des Fehlers. Zahlreiche Fehlermeldungen haben Ersetzungsvariablen, in die Informationen, wie z. B. der Name des Objekts, das den Fehler generiert, eingefügt werden.
SeverityDer Schweregrad zeigt an, wie schwerwiegend der Fehler ist. Fehler mit einem niedrigen Schweregrad, wie z. B. 1 oder 2, sind Informationsmeldungen oder Warnungen auf niedriger Ebene. Fehler mit einem hohen Schweregrad deuten auf Probleme hin, die so bald wie möglich behoben werden sollten. Weitere Informationen zu den Schweregraden finden Sie unter Schweregrade von Datenbankmodulfehlern.
StatusEinige Fehlermeldungen können für mehrere Elemente im Code für Datenbankmodulausgelöst werden. So kann z. B. der Fehler 1105 aufgrund verschiedener Bedingungen ausgelöst werden. Jeder Bedingung, die einen Fehler auslöst, wird ein eindeutiger Statuscode zugewiesen.

Beim Anzeigen von Datenbanken von bekannten Problemen, wie z. B. der Microsoft Knowledge Base, können Sie mithilfe der Statusnummer bestimmen, ob das aufgezeichnete Problem mit dem aufgetretenen Fehler übereinstimmt. Wenn z. B. ein Knowledge Base-Artikel den Fehler 1105 mit dem Status 2 erläutert und die von Ihnen empfangene Fehlermeldung 1105 den Status 3 aufwies, ist der Fehler möglicherweise auf eine andere als die im Artikel gemeldete Ursache zurückzuführen.

Der Microsoft Software Service kann auch den Statuscode von einem Fehler verwenden, um den Ort im Quellcode zu finden, wo der Fehler entstanden ist. Diese Informationen stellen möglicherweise zusätzliche Ideen zur Problemdiagnose bereit.
Name der ProzedurIst der Name der gespeicherten Prozedur oder des Triggers, in der oder in dem der Fehler aufgetreten ist.
ZeilennummerZeigt an, welche Anweisung in einem Batch, einer gespeicherten Prozedur, einem Trigger oder einer Funktion den Fehler generiert hat.

Alle System- und benutzerdefinierten Fehlermeldungen in einer Datenbankmodul-Instanz sind in der Katalogsicht sys.messages enthalten. Die RAISERROR-Anweisung kann zur Rückgabe von benutzerdefinierten Fehlern an eine Anwendung verwendet werden.

Alle Datenbank-APIs, wie Microsoft .NET Framework SQLClient-Namespace, ActiveX Data Objects (ADO), OLE DB und Open Database Connectivity (ODBC) berichten die grundlegenden Fehlerattribute. Diese Information schließt die Fehlernummer und die Meldungszeichenfolge ein. Nicht alle APIs berichten jedoch alle anderen Fehlerattribute.

Informationen zu einem Fehler, der innerhalb des Bereichs des TRY-Blocks eines TRY…CATCH-Konstrukts auftritt, können im Transact-SQL-Code mithilfe von Funktionen wie z. B. ERROR_LINE, ERROR_MESSAGE, ERROR_NUMBER, ERROR_PROCEDURE, ERROR_SEVERITY und ERROR_STATE innerhalb des Bereichs des zugehörigen CATCH-Blocks abgerufen werden. Weitere Informationen finden Sie unter TRY...CATCH (Transact-SQL).

Im folgenden Beispiel wird die sys.messages-Katalogsicht abgefragt, um eine Liste aller system- und benutzerdefinierten Fehlermeldungen im Datenbankmodul zurückzugeben, die über englischen Text verfügen (1033).

SELECT  
    message_id,  
    language_id,  
    severity,  
    is_event_logged,  
    text  
  FROM sys.messages  
  WHERE language_id = 1033;  

Weitere Informationen finden Sie unter sys.messages (Transact-SQL).

sys.messages (Transact-SQL)
RAISERROR (Transact-SQL)
@@ERROR (Transact-SQL)
TRY...CATCH (Transact-SQL)
ERROR_LINE (Transact-SQL)
ERROR_MESSAGE (Transact-SQL)
ERROR_NUMBER (Transact-SQL)
ERROR_PROCEDURE (Transact-SQL)
ERROR_SEVERITY (Transact-SQL)
ERROR_STATE (Transact-SQL)

Community-Beiträge

HINZUFÜGEN
Anzeigen: