Behandeln von Fehlern des Datenbankmoduls

Viele von SQL Server-Datenbankmodul ausgelöste Fehler können programmgesteuert aufgezeichnet und behoben werden. Möglichkeiten zur Fehlerbehandlung werden durch die Transact-SQL-Sprache und durch die Anwendungsprogrammierschnittstellen (APIs, Application Programming Interfaces) für den Datenzugriff bereitgestellt, die von Anwendungen zum Zugriff auf die in Datenbankmodul gespeicherten Daten verwendet werden.

Fehler aus Datenbankmodul können auf zwei Ebenen behandelt werden:

  • Fehler können in Datenbankmodul behandelt werden, indem Transact-SQL-Batches, gespeicherten Prozeduren, Triggern oder benutzerdefinierten Funktionen Fehlerbehandlungscode hinzugefügt wird. Der Fehlerbehandlungsmechanismus von Transact-SQL schließt ein TRY…CATCH-Konstrukt (siehe TRY...CATCH (Transact-SQL)), die RAISERROR-Anweisung und die @@ERROR-Funktion ein.
  • Fehler können an die aufrufende Anwendung zurückgegeben und vom Anwendungscode behandelt werden. Jede der APIs, die von Anwendungen für die Zugriff auf Datenbankmodul verwendet werden, stellt Mechanismen bereit, mit denen Informationen wieder zurück an die Anwendung übergeben werden können.
Thema Beschreibung

Grundlegendes zu Datenbankmodulfehlern

Jeder Datenbankmodul-Fehler enthält die folgenden Attribute: eine Fehlernummer, eine Meldungszeichenfolge, Schweregrad, Status, Name der Prozedur und Zeilennummer.

Abrufen von Fehlerinformationen in Transact-SQL

Mithilfe von Transact-SQL-Code können Informationen zu Fehlern mithilfe der Funktionen ERROR_LINE, ERROR_MESSAGE, ERROR_NUMBER, ERROR_PROCEDURE, ERROR_SEVERITY, ERROR_STATE und @@ERROR abgerufen werden.

Verwenden von TRY...CATCH in Transact-SQL

Ab SQL Server 2005 können Fehler in Transact-SQL-Code mithilfe eines TRY…CATCH-Konstrukts verarbeitet werden, das den Ausnahmeverarbeitungsfeatures der Sprachen Microsoft Visual C++ und Visual C# ähnelt. Wenn eine Fehlerbedingung in einem TRY-Block erkannt wird, wird die Steuerung an einen CATCH-Block übergeben, wo die Verarbeitung erfolgen kann. Dies ist der primäre Mechanismus zur Fehlerbehandlung in SQL Server 2005-Datenbankmodul.

Verwenden von RAISERROR

Die RAISERROR-Anweisung kann zum Auslösen benutzerdefinierter Fehler verwendet werden. Außerdem kann sie von einem CATCH-Block zum Übergeben der im CATCH-Block verarbeiteten Fehler an die Anwendung verwendet werden.

Verwenden von PRINT

Die PRINT-Anweisung kann zum Zurückgeben benutzerdefinierter Meldungen an die Anwendung verwendet werden.

Verwenden von @@ERROR

In früheren Versionen von SQL Server ist die @@ERROR-Funktion das primäre Mittel zum Erkennen von Fehlern in Transact-SQL-Anweisungen. TRY…CATCH-Konstrukte stellen verbesserte Funktionalität bereit.

Behandeln von Fehlern und Meldungen in Anwendungen

Jede Datenzugriffs-API, beispielsweise ActiveX Data Objects (ADO), OLE DB und Open Database Connectivity (ODBC), weisen Mechanismen auf, mit denen der Anwendung sämtliche von Datenbankmodul empfangene Fehlerinformationen gemeldet werden können.

Schweregrade von Datenbankmodulfehlern

Datenbankmodul-Fehler und benutzerdefinierte Fehlermeldungen werden mit Schweregraden von 1 bis 25 ausgelöst. sp_addmessage und RAISERROR können zum Generieren von benutzerdefinierten Fehlermeldungen verwendet werden.

Siehe auch

Andere Ressourcen

sys.messages (Transact-SQL)

Hilfe und Informationen

Informationsquellen für SQL Server 2005