Schweregrade von Datenbank-Engine-Fehlern

Gilt für:SQL Server

Wenn ein Fehler vom SQL Server-Datenbankmodul ausgelöst wird, gibt der Schweregrad des Fehlers den Typ des Problems an, das von SQL Server aufgetreten ist.

Schweregrad

In der folgenden Tabelle werden die Schweregrade der vom SQL Server-Datenbankmodul ausgelösten Fehler aufgelistet und beschrieben.

Schweregrad Beschreibung
0-9 Informationsmeldungen, die Statusinformationen zurückgeben oder Fehler melden, die nicht schwerwiegend sind. Das Datenbankmodul löst keine Systemfehler mit Schweregraden von 0 bis 9 aus.
10 Informationsmeldungen, die Statusinformationen zurückgeben oder Fehler melden, die nicht schwerwiegend sind. Aus Kompatibilitätsgründen konvertiert das Datenbankmodul den Schweregrad 10 in den Schweregrad 0, bevor die Fehlerinformationen an die aufrufende Anwendung zurückgegeben werden.
11-16 Verweisen auf Fehler, die der Benutzer beheben kann.
11 Gibt an, dass das angegebene Objekt oder die angegebene Entität nicht vorhanden ist.
12 Ein spezieller Schweregrad für Abfragen, die aufgrund spezieller Abfragehinweise keine Sperrung verwenden. In einigen Fällen können lesevorgänge, die von diesen Anweisungen ausgeführt werden, zu inkonsistenten Daten führen, da Sperren nicht verwendet werden, um Konsistenz zu gewährleisten.
13 Verweist auf Deadlockfehler der Transaktion.
14 Verweist auf sicherheitsbezogene Fehler, wie z. B. eine verweigerte Berechtigung.
15 Gibt Syntaxfehler im Transact-SQL-Befehl an.
16 Verweist auf allgemeine Fehler, die der Benutzer beheben kann.
17-19 Geben Sie Softwarefehler an, die vom Benutzer nicht korrigiert werden können. Informieren Sie Ihren Systemadministrator über das Problem.
17 Gibt an, dass die Anweisung dazu führte, dass SQL Server nicht genügend Ressourcen hat (z. B. Arbeitsspeicher, Sperren oder Speicherplatz für die Datenbank) oder einen vom Systemadministrator festgelegten Grenzwert überschreiten.
18 Gibt ein Problem in der Datenbankmodulsoftware an, aber die Anweisung schließt die Ausführung ab, und die Verbindung mit der Instanz des Datenbankmoduls wird beibehalten. Der Systemadministrator sollte informiert werden, wenn eine Meldung mit dem Schweregrad 18 auftritt.
19 Gibt an, dass ein nicht konfigurierter Datenbankmodulgrenzwert überschritten wurde und der aktuelle Batchprozess beendet wurde. Durch Fehlermeldungen mit einem Schweregrad von 19 oder höher wird die Ausführung des aktuellen Batches beendet. Fehlermeldungen mit dem Schweregrad 19 sind selten und müssen vom Systemadministrator oder Ihrem bevorzugten Anbieter für technischen Support behoben werden. Wenden Sie sich an Ihren Systemadministrator, wenn eine Meldung mit dem Schweregrad 19 ausgelöst wird. Fehlermeldungen mit den Schweregraden 19 bis 25 werden im Fehlerprotokoll aufgezeichnet.
20-24 Gibt Systemprobleme an und sind schwerwiegende Fehler, was bedeutet, dass die Datenbankmodulaufgabe, die eine Anweisung oder einen Batch ausführt, nicht mehr ausgeführt wird. Der Task zeichnet Informationen über den Vorfall auf und wird dann beendet. In den meisten Fällen kann die Anwendungsverbindung mit der Instanz des Datenbankmoduls ebenfalls beendet werden. In diesem Fall ist die Anwendung je nach Problem möglicherweise nicht in der Lage, erneut eine Verbindung herzustellen.

Fehlermeldungen in diesem Bereich können sich auf alle Vorgänge auswirken, die auf Daten in der gleichen Datenbank zugreifen, und weisen möglicherweise darauf hin, dass eine Datenbank oder ein Objekt beschädigt ist. Fehlermeldungen mit den Schweregraden 19 bis 24 werden im Fehlerprotokoll aufgezeichnet.
20 Gibt an, dass bei einer Anweisung ein Problem aufgetreten ist. Da sich das Problem nur auf den aktuellen Task auswirkt, ist es unwahrscheinlich, dass die Datenbank selbst beschädigt wurde.
21 Gibt an, dass ein Problem aufgetreten ist, das sich auf alle Tasks in der aktuellen Datenbank auswirkt. Es ist jedoch unwahrscheinlich, dass die Datenbank selbst beschädigt wurde.
22 Zeigt an, dass die Tabelle oder der Index, die bzw. der in der Meldung angegeben ist, durch ein Software- oder Hardwareproblem beschädigt wurde.

Fehler mit dem Schweregrad 22 treten selten auf. Wenn eins auftritt, führen Sie den Befehl aus DBCC CHECKDB , um festzustellen, ob andere Objekte in der Datenbank ebenfalls beschädigt sind. Möglicherweise betrifft das Problem nur den Puffercache und nicht der Datenträger selbst. Wenn dies der Fall ist, wird durch den Neustart der Instanz des Datenbankmoduls das Problem behoben. Um den Vorgang fortzusetzen, müssen Sie eine erneute Verbindung mit der Instanz des Datenbankmoduls herstellen. andernfalls können Sie DBCC das Problem beheben. In einigen Fällen müssen Sie möglicherweise die Datenbank wiederherstellen.

Wenn beim Neustart der Instanz des Datenbankmoduls das Problem nicht behoben wird, befindet sich das Problem auf dem Datenträger. Manchmal kann das Problem durch Löschen des in der Fehlermeldung angegebenen Objekts behoben werden. Wenn die Meldung beispielsweise meldet, dass die Instanz des Datenbankmoduls eine Zeile mit einer Länge von 0 in einem nicht gruppierten Index gefunden hat, löschen Sie den Index, und erstellen Sie ihn neu.
23 Zeigt an, dass die Integrität der gesamten Datenbank aufgrund einer Beschädigung durch ein Hardware- oder Softwareproblem zweifelhaft ist.

Fehler mit dem Schweregrad 23 treten selten auf. Wenn einer auftritt, führen Sie DBCC CHECKDB aus, um den Umfang des Schadens zu bestimmen. Möglicherweise betrifft das Problem nur den Cache und nicht der Datenträger selbst. Wenn dies der Fall ist, wird durch den Neustart der Instanz des Datenbankmoduls das Problem behoben. Um den Vorgang fortzusetzen, müssen Sie eine erneute Verbindung mit der Instanz des Datenbankmoduls herstellen. verwenden Sie andernfalls DBCC, um das Problem zu beheben. In einigen Fällen müssen Sie möglicherweise die Datenbank wiederherstellen.
24 Verweist auf einen Medienfehler. Der Systemadministrator muss möglicherweise die Datenbank wiederherstellen. Außerdem müssen Sie möglicherweise den Hardwarehersteller anrufen.

Benutzerdefinierter Schweregrad der Fehlermeldung

Sie können benutzerdefinierte sp_addmessage Fehlermeldungen mit Schweregraden von 1 bis 25 zur sys.messages Katalogansicht hinzufügen. Diese benutzerdefinierten Fehlermeldungen können von RAISERROR. Weitere Informationen finden Sie unter sp_addmessage (Transact-SQL).

RAISERROR kann verwendet werden, um benutzerdefinierte Fehlermeldungen mit Schweregraden von 1 bis 25 zu generieren. RAISERROR kann auf eine benutzerdefinierte Fehlermeldung verweisen, die in der sys.messages Katalogansicht gespeichert ist, oder eine Nachricht dynamisch erstellen. Bei Verwendung der benutzerdefinierten Fehlermeldung sys.messages beim Generieren eines Fehlers überschreibt der schweregrad RAISERROR , der durch sys.messagesüberschriebene Schweregrad angegeben ist. Weitere Informationen finden Sie unter RAISERROR (Transact-SQL).

Fehlerschweregrad und TRY... FANGEN

EIN TRY... Catch-Konstrukt erfasst alle Ausführungsfehler mit dem Schweregrad größer als 10, die die Datenbankverbindung nicht beenden.

Fehler mit Schweregrad von 0 bis 10 sind Informationsmeldungen und führen nicht dazu, dass die Ausführung vom CATCH-Block eines TRY springt... CATCH-Konstrukt.

Fehler, die die Datenbankverbindung beenden, normalerweise mit Schweregrad von 20 bis 25, werden nicht vom CATCH-Block behandelt, da die Ausführung abgebrochen wird, wenn die Verbindung beendet wird.

Weitere Informationen finden Sie unter TRY...CATCH (Transact-SQL).

Fehlerschweregrad abrufen

Mithilfe der Systemfunktion ERROR_SEVERITY kann der Schweregrad des Fehlers abgerufen werden, der bewirkt hat, dass der CATCH-Block eines TRY…CATCH-Konstrukts ausgeführt wurde. ERROR_SEVERITY gibt NULL zurück, wenn die Funktion außerhalb des Bereichs eines CATCH-Blocks aufgerufen wird. Weitere Informationen finden Sie unter ERROR_SEVERITY (Transact-SQL).

Siehe auch