次の方法で共有


ISQLServerErrorInfo::GetErrorInfo (OLE DB)

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

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

SQL Server エラーの詳細を含む OLE DB Driver for SQL Server SSERRORINFO 構造体へのポインターを返します。

OLE DB Driver for SQL Server では、ISQLServerErrorInfo エラー インターフェイスが定義されています。 このインターフェイスは、重大度や状態など、SQL Server エラーの詳細情報を返します。

構文

  
HRESULT GetErrorInfo(  
   SSERRORINFO**ppSSErrorInfo,  
   OLECHAR**ppErrorStrings);  

引数

ppSSErrorInfo[out]
SSERRORINFO 構造体へのポインター。 メソッドが失敗するか、エラーに関連する SQL Server 情報がない場合、プロバイダーはメモリの割り当てを行わず、出力時に ppSSErrorInfo 引数に NULL ポインターを設定します。

ppErrorStrings[out]
Unicode 文字列ポインターへのポインター。 メソッドが失敗するか、エラーに関連する SQL Server 情報がない場合、プロバイダーはメモリの割り当てを行わず、出力時に ppErrorStrings 引数に NULL ポインターを設定します。 IMalloc::Free メソッドを使用して ppErrorStrings 引数を解放すると、メモリがブロック単位で割り当てられているので、結果の SSERRORINFO 構造体の 3 つの各文字列メンバーが解放されます。

リターン コードの値

S_OK
メソッドが成功しました。

E_INVALIDARG
ppSSErrorInfo または ppErrorStrings 引数のいずれかが NULL でした。

E_OUTOFMEMORY
OLE DB Driver for SQL Server が、要求を完了するために必要なメモリを割り当てることができませんでした。

解説

OLE DB Driver for SQL Server は、コンシューマーが渡したポインターを使用して返される、SSERRORINFO 文字列と OLECHAR 文字列用にメモリを割り当てます。 コンシューマーはエラー データにアクセスする必要がなくなった時点で、IMalloc::Free メソッドを使用してこのメモリの割り当てを解除する必要があります。

SSERRORINFO 構造体は、次のように定義されています。

typedef struct tagSSErrorInfo  
   {  
   LPOLESTR pwszMessage;  
   LPOLESTR pwszServer;  
   LPOLESTR pwszProcedure;  
   LONG lNative;  
   BYTE bState;  
   BYTE bClass;  
   WORD wLineNumber;  
   }  
SSERRORINFO;  
メンバー 説明
pwszMessage SQL Server のエラー メッセージ。 このメッセージは、IErrorInfo::GetDescription メソッドにより返されます。
pwszServer エラーが発生した SQL Server インスタンスの名前。
pwszProcedure エラーがストアド プロシージャ内で発生している場合は、エラーが発生したストアド プロシージャの名前です。それ以外の場合は、空文字列になります。
lNative SQL Server のエラー番号。 このエラー番号は、ISQLErrorInfo::GetSQLInfo メソッドの plNativeError パラメーターに返されるものと同じになります。
bState SQL Server エラーの状態。
bClass SQL Server エラーの重大度。
wLineNumber 該当する場合は、SQL Server ストアド プロシージャのエラー メッセージを生成した行です。 プロシージャが関係していない場合は、既定値 1 が使用されます。

構造体内のポインターは、ppErrorStrings 引数に返される文字列内のアドレスを指します。

参照

RAISERROR (Transact-SQL)