次の方法で共有


ISQLServerErrorInfo::GetErrorInfo (ネイティブ クライアント OLE DB プロバイダー)

適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

重要

SQL Server Native Client (SNAC と略されることがよくあります) は、SQL Server 2022 (16.x) と SQL Server Management Studio 19 (SSMS) から削除されました。 SQL Server Native Client OLE DB プロバイダー (SQLNCLI または SQLNCLI11) とレガシ Microsoft OLE DB Provider for SQL Server (SQLOLEDB) はどちらも、新しい開発には推奨されません。 今後は、新しい Microsoft OLE DB Driver (MSOLEDBSQL) for SQL Server に切り替えてください。

SQL Server エラーの詳細を含む SQL Server Native Client OLE DB プロバイダー SSERRORINFO 構造体へのポインターを返します。

SQL Server Native Client OLE DB プロバイダーは、 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
SQL Server Native Client OLE DB プロバイダーは、要求を完了するのに十分なメモリを割り当てませんでした。

解説

SQL Server Native Client OLE DB プロバイダーは、コンシューマーによって渡されたポインターを介して返される 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)