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 |
---|---|
Jeder 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. |
|
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. |
|
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 Datenbankmodul empfangene Fehlerinformationen gemeldet werden können. |
|
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. |