Schweregrade von Datenbank-Engine-Fehlern

Gilt für:yes SQL Server (alle unterstützten Versionen)

Wenn vom SQL Server Datenbank-Engine ein Fehler ausgelöst wird, gibt der Schweregrad des Fehlers den Typ des Problems an, das bei SQL Server auftritt.

Schweregrade

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

Schweregrad BESCHREIBUNG
0-9 Informationsmeldungen, die Statusinformationen zurückgeben oder Fehler melden, die nicht schwerwiegend sind. Die Datenbank-Engine führt nicht zu Systemfehlern mit den Schweregraden 0 bis 9.
10 Informationsmeldungen, die Statusinformationen zurückgeben oder Fehler melden, die nicht schwerwiegend sind. Aus Kompatibilitätsgründen konvertiert der Datenbank-Engine Schweregrad 10 in 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 Objekt oder die Entität nicht vorhanden ist.
12 Ein spezieller Schweregrad für Abfragen, die aufgrund von speziellen Abfragehinweisen keine Sperren verwenden. In einigen Fällen können von diesen Anweisungen ausgeführte Lesevorgänge zu inkonsistenten Daten führen, da Sperren nicht zur Sicherstellung der Konsistenz verwendet werden.
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 Verweisen auf Softwarefehler, die der Benutzer nicht beheben kann. Informieren Sie Ihren Systemadministrator über das Problem.
17 Gibt an, dass die Anweisung dazu geführt hat, dass SQL Server nicht genügend Ressourcen (z. B. Arbeitsspeicher, Sperren oder Speicherplatz für die Datenbank) oder einen vom Systemadministrator festgelegten Grenzwert überschritten hat.
18 Gibt ein Problem in der Datenbank-Engine Software an, aber die Anweisung schließt die Ausführung ab, und die Verbindung mit der Instanz des Datenbank-Engine wird beibehalten. Der Systemadministrator sollte informiert werden, wenn eine Meldung mit dem Schweregrad 18 auftritt.
19 Gibt an, dass ein nicht konfigurierbarer Datenbank-Engine Grenzwert ü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 Geben Sie Systemprobleme an, und sind schwerwiegende Fehler. Dies bedeutet, dass die Datenbank-Engine Aufgabe, 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 auch die Anwendungsverbindung mit der Instanz des Datenbank-Engine 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. Führen Sie DBCC CHECKDB aus, wenn ein solcher Fehler auftritt. So stellen Sie fest, ob weitere Objekte in der Datenbank beschädigt sind. Möglicherweise betrifft das Problem nur den Puffercache und nicht der Datenträger selbst. Wenn dies der Fall ist, wird das Problem durch einen Neustart der Instanz des Datenbank-Engine behoben. Um die Arbeit fortzusetzen, müssen Sie erneut eine Verbindung mit der Instanz des Datenbank-Engine herstellen. Verwenden Sie andernfalls DBCC, um das Problem zu beheben. In einigen Fällen müssen Sie möglicherweise die Datenbank wiederherstellen.

Wenn das Problem durch einen Neustart der Instanz des Datenbank-Engine 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 Datenbank-Engine 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 ein solcher Fehler auftritt, führen Sie DBCC CHECKDB aus, um das Ausmaß des Schadens festzustellen. Möglicherweise betrifft das Problem nur den Cache und nicht der Datenträger selbst. Wenn dies der Fall ist, wird das Problem durch einen Neustart der Instanz des Datenbank-Engine behoben. Um die Arbeit fortzusetzen, müssen Sie erneut eine Verbindung mit der Instanz des Datenbank-Engine 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.

Schweregrad von benutzerdefinierten Fehlermeldungen

Mithilfe vonsp_addmessage können benutzerdefinierte Fehlermeldungen mit Schweregraden zwischen 1 und 25 der sys.messages -Katalogsicht hinzugefügt werden. Diese benutzerdefinierten Fehlermeldungen können von RAISERROR verwendet werden. Weitere Informationen finden Sie unter sp_addmessage (Transact-SQL).

Mithilfe von RAISERROR können benutzerdefinierte Fehlermeldungen mit Schweregraden zwischen 1 und 25 generiert werden. RAISERROR kann auf eine benutzerdefinierte, in der sys.messages -Katalogsicht gespeicherte Fehlermeldung verweisen oder eine Meldung dynamisch erstellen. Wird beim Generieren eines Fehlers die benutzerdefinierte Fehlermeldung in sys.messages verwendet, überschreibt der von RAISERROR angegebene Schweregrad den in sys.messagesangegebenen Schweregrad. Weitere Informationen finden Sie unter RAISERROR (Transact-SQL).

Schweregrad von Fehlern und TRY…CATCH

Ein TRY…CATCH-Konstrukt findet alle Ausführungsfehler, deren Schweregrad größer als 10 ist und die die Datenbankverbindung nicht beenden.

Fehler mit einem Schweregrad zwischen 0 und 10 sind Informationsmeldungen und bewirken nicht, dass die Ausführung aus dem CATCH-Block eines TRY…CATCH-Konstrukts springt.

Fehler, die die Datenbankverbindung beenden, normalerweise mit einem Schweregrad zwischen 20 und 25, werden nicht von dem CATCH-Block behandelt, da die Ausführung beim Beenden der Verbindung abgebrochen wird.

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

Abrufen des Schweregrads eines Fehlers

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).

Weitere Informationen

Grundlegendes zu Datenbank-Engine-Fehlern
sys.messages (Transact-SQL)
Systemfunktionen (Transact-SQL)
TRY...CATCH (Transact-SQL)