Share via


SQL Server Native Client エラーの詳細

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

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)