Behandeln von Fehlern des Datenbankmoduls
Viele von SQL Server Database Engine (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 Database Engine (Datenbankmodul) gespeicherten Daten verwendet werden.
Fehler aus Database Engine (Datenbankmodul) können auf zwei Ebenen behandelt werden:
Fehler können in Database Engine (Datenbankmodul) behandelt werden, indem Transact-SQL-Batches, gespeicherten Prozeduren, Triggern oder benutzerdefinierten Funktionen Fehlerbehandlungscode hinzugefügt wird.
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 Database Engine (Datenbankmodul) verwendet werden, stellt Mechanismen bereit, mit denen Informationen wieder zurück an die Anwendung übergeben werden können.
Thema |
Beschreibung |
---|---|
Jeder Database Engine (Datenbankmodul)-Fehler enthält die folgenden Attribute: eine Fehlernummer, eine Meldungszeichenfolge, Schweregrad, Status, Name der Prozedur und Zeilennummer. |
|
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. |
|
Fehler können 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. |
|
Fehler können 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. |
|
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. |
|
Die PRINT-Anweisung kann zum Zurückgeben benutzerdefinierter Meldungen an die Anwendung verwendet werden. |
|
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. |
|
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 Database Engine (Datenbankmodul) empfangene Fehlerinformationen gemeldet werden können. |
|
Database Engine (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. |