次の方法で共有


SQL Server エラーの詳細

SQL 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)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手