次の方法で共有


SQL Server エラーの詳細

SQL Server Native Client OLE DB プロバイダーは、プロバイダー固有のエラー インターフェイスである ISQLServerErrorInfo を定義します。 このインターフェイスにより、SQL Server エラーの詳細が返されるので、コマンドの実行や行セットの操作が失敗したときに役立ちます。

ISQLServerErrorInfo インターフェイスにアクセスする方法は 2 つあります。

次のコード サンプルに示すように、コンシューマーは IErrorRecords::GetCustomerErrorObject を呼び出して ISQLServerErrorInfo を取得できます (ISQLErrorInfo. を取得する必要はありません)。ISQLErrorInfoISQLServerErrorInfo は、どちらもカスタム OLE DB エラー オブジェクトです。ISQLServerErrorInfo は、プロシージャ名や行番号などの詳細情報を含むサーバー エラーの情報を取得するために使用するインターフェイスです。

// Get the SQL Server custom error object.
if(FAILED(hr=pIErrorRecords->GetCustomErrorObject(
   nRec, IID_ISQLServerErrorInfo,
   (IUnknown**)&pISQLServerErrorErrorInfo)))

ISQLServerErrorInfo ポインターを取得するもう 1 つの方法は、既に取得した ISQLErrorInfo ポインターの QueryInterface メソッドを呼び出すことです。 ただし、ISQLServerErrorInfo には ISQLErrorInfo から取得できる情報のスーパーセットが含まれているので、GetCustomerErrorObject から直接 ISQLServerErrorInfo を取得する方が効果的です。

ISQLServerErrorInfo インターフェイスでは、メンバー関数 ISQLServerErrorInfo::GetErrorInfo が公開されます。 この関数では、SSERRORINFO 構造体へのポインターと文字列バッファーへのポインターが返されます。 どちらのポインターが参照するメモリも、コンシューマーが IMalloc::Free メソッドを使用して割り当て解除する必要があります。

コンシューマーでは SSERRORINFO 構造体のメンバーが次のように解釈されます。

メンバー

説明

pwszMessage

SQL Server エラー メッセージです。 このエラー メッセージは、IErrorInfo::GetDescription で返される文字列と同じです。

pwszServer

セッションの SQL Server インスタンスの名前。

pwszProcedure

該当する場合は、エラーが発生したプロシージャの名前です。 該当しない場合は空文字列です。

lNative

SQL Server のネイティブ エラー番号です。 ISQLErrorInfo::GetSQLInfoplNativeError パラメーターで返される値と同じです。

bState

SQL Server エラー メッセージの状態です。

bClass

SQL Server エラー メッセージの重大度です。

wLineNumber

該当する場合は、ストアド プロシージャでエラーが発生した行番号です。

関連項目

参照

RAISERROR (Transact-SQL)

概念

エラー