診断メッセージ

各 SQLSTATE で診断メッセージが返されます。 同じ SQLSTATE は、多くの場合、さまざまなメッセージで返されます。 たとえば、SQL 構文のほとんどのエラーでは、SQLSTATE 42000 (構文エラーまたはアクセス違反) が返されます。 ただし、各構文エラーは、異なるメッセージで記述される可能性があります。

サンプル診断メッセージは、付録 A の SQLSTATEs の表および各関数のエラー列に一覧表示されます。 ドライバーはこれらのメッセージを返すことができますが、データ ソースから渡されたメッセージを返す可能性が高くなります。

通常、アプリケーションは、SQLSTATE およびネイティブ エラー コードと共に、ユーザーに診断メッセージを表示します。 これは、ユーザーとサポート担当者が問題の原因を特定するのに役立ちます。 メッセージに埋め込まれたコンポーネント情報は、これを行う際に特に役立ちます。

診断メッセージは、ドライバー、ゲートウェイ、ドライバー マネージャーなどの ODBC 接続のデータ ソースとコンポーネントから送信されます。 通常、データ ソースは ODBC を直接サポートしていません。 したがって、ODBC 接続のコンポーネントがデータ ソースからメッセージを受信する場合は、データ ソースをメッセージのソースとして識別する必要があります。 また、メッセージを受信したコンポーネントとして自身を識別する必要もあります。

エラーまたは警告の原因がコンポーネント自体である場合は、診断メッセージでこれを説明する必要があります。 したがって、メッセージのテキストには 2 つの異なる形式があります。 データ ソースで発生しないエラーと警告の場合、診断メッセージでは次の形式を使用する必要があります。

[ vendor-identifier ][ ODBC-component-identifier ] component-supplied-text

データ ソースで発生するエラーと警告の場合、診断メッセージでは次の形式を使用する必要があります。

[ vendor-identifier ][ ODBC-component-identifier ][ data-source-identifier ] data-source-supplied-text

次のテーブルは、それぞれの要素の意味を示しています。

要素 意味
ベンダー識別子 エラーまたは警告が発生したコンポーネント、またはデータ ソースから直接エラーまたは警告を受信したコンポーネントのベンダーを識別します。
ODBC-component-identifier エラーまたは警告が発生したコンポーネント、またはデータ ソースから直接エラーまたは警告を受信したコンポーネントを識別します。
データ ソース識別子 データ ソースを識別します。 ファイルベースのドライバーの場合、これは通常ファイル形式で、Xbase[1]などで、 DBMS ベースのドライバーの場合、これは DBMS 製品です。
component-supplied-text ODBC コンポーネントによって生成されます。
data-source-supplied-text データ ソースによって生成されます。

[1] この場合、ドライバーはドライバーとデータ ソースの両方として動作します。

角かっこ ([ ]) はメッセージに含める必要があり、オプションの項目を示すものではありません。