Grundlegendes zu Datenbankmodulfehlern
Von MicrosoftSQL Server Database Engine (Datenbankmodul) ausgelöste Fehler weisen die in der folgenden Tabelle beschriebenen Attribute auf.
Attribut |
Beschreibung |
---|---|
Fehlernummer |
Jede Fehlermeldung besitzt eine eindeutige Fehlernummer. |
Fehlermeldungs-Zeichenfolge |
Die 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. |
Schweregrad |
Der 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 Schweregraden finden Sie unter Schweregrade von Datenbankmodulfehlern. |
Status |
Einige Fehlermeldungen können für mehrere Elemente im Code für Database Engine (Datenbankmodul) ausgelö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 Prozedur |
Ist der Name der gespeicherten Prozedur oder des Triggers, in der oder in dem der Fehler aufgetreten ist. |
Zeilennummer |
Zeigt 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 Instanz von Database Engine (Datenbankmodul) 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 FrameworkSQLClient-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. Weitere Informationen finden Sie unter Behandeln von Fehlern und Meldungen in Anwendungen.
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 Abrufen von Fehlerinformationen in Transact-SQL und Verwenden von TRY...CATCH in Transact-SQL.
Beispiele
Das folgende Beispiel fragt die sys.messages-Katalogsicht ab, um eine Liste von allen system- und benutzerdefinierten Fehlermeldungen in der Database Engine (Datenbankmodul), die englischen Text beinhalten (1033), wiederzugeben.
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).