次の方法で共有


SQL Server エラーの詳細

適用対象: SQL Server Azure SQL データベース Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

OLE DB ドライバーのダウンロード

OLE DB Driver for SQL Server では、プロバイダー固有のエラー インターフェイス 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)