データベース エンジン エラーの処理
SQL Server データベース エンジンで発生する多くのエラーは、プログラムでキャプチャして、解決することができます。Transact-SQL 言語、またはアプリケーションでデータベース エンジンに格納されているデータへのアクセスに使用されるデータ アクセス アプリケーション プログラミング インターフェイス (API) を使用して、エラーを処理できます。
データベース エンジンで発生するエラーは、次の 2 つのレベルで処理できます。
- Transact-SQL バッチ、ストアド プロシージャ、トリガ、またはユーザー定義関数にエラー処理コードを追加することにより、データベース エンジンでエラーを処理できます。Transact-SQL のエラー処理メカニズムには、TRY...CATCH 構造 (「TRY...CATCH (Transact-SQL)」を参照)、RAISERROR ステートメント、および @@ERROR 関数などがあります。
- 呼び出し元のアプリケーションにエラーを返し、そのアプリケーションのコードでエラーを処理することができます。データベース エンジンへのアクセス用にアプリケーションが使用する各 API には、エラー情報をアプリケーションに渡すためのメカニズムが用意されています。
トピック | 説明 |
---|---|
すべてのデータベース エンジン エラーには、エラー番号、メッセージ文字列、重大度、状態、プロシージャ名、および行番号が含まれています。 |
|
Transact-SQL コードでは、ERROR_LINE 関数、ERROR_MESSAGE 関数、ERROR_NUMBER 関数、ERROR_PROCEDURE 関数、ERROR_SEVERITY 関数、ERROR_STATE 関数、および @@ERROR 関数を使用して、エラーに関する情報を取得できます。 |
|
SQL Server 2005 には、Microsoft Visual C++ 言語や Microsoft Visual C# 言語の例外処理機能と同様の TRY...CATCH 構造を使用して Transact-SQL コードでエラーを処理する機能が導入されています。TRY ブロックでエラー状態が検出されると、CATCH ブロックに制御が渡され、そこでエラーが処理されます。これは、SQL Server 2005 データベース エンジンにおけるエラー処理の主要なメカニズムです。 |
|
RAISERROR ステートメントを使用してユーザー定義エラーを発生させることができます。また、このステートメントを CATCH ブロックで使用すると、CATCH ブロックで処理されるエラーをアプリケーションに渡すことができます。 |
|
PRINT ステートメントを使用すると、ユーザー定義メッセージをアプリケーションに返せます。 |
|
以前のバージョンの SQL Server では、@@ERROR 関数が Transact-SQL ステートメントでエラーを検出する場合の主要な手段でした。TRY...CATCH 構造により、エラー検出機能が強化されました。 |
|
ADO (ActiveX Data Objects)、OLE DB、および ODBC (Open Database Connectivity) などの各データ アクセス API には、データベース エンジンで発生したエラー情報をアプリケーションに知らせるメカニズムが備わっています。 |
|
データベース エンジン エラーおよびユーザー定義エラー メッセージには、1 ~ 25 の重大度が設定されています。ユーザー定義エラー メッセージを生成するには、sp_addmessage と RAISERROR を使用します。 |