sp_OAGetErrorInfo (Transact-SQL)

適用対象:SQL Server

OLE オートメーションのエラー情報を取得します。

Transact-SQL 構文表記規則

構文

  
sp_OAGetErrorInfo [ objecttoken ]  
    [ , source OUTPUT ]   
    [ , description OUTPUT ]   
    [ , helpfile OUTPUT ]   
    [ , helpid OUTPUT ]   

引数

objecttoken
以前に sp_OACreate を使用して作成された OLE オブジェクトのオブジェクト トークンか、NULL です。 objecttoken を指定すると、そのオブジェクトのエラー情報が返されます。 NULL を指定すると、バッチ全体のエラー情報が返されます。

sourceOUTPUT
エラー情報のソースです。 指定する場合は、ローカル char、ncharvarchar、または nvarchar 変数である必要があります。 戻り値は、必要に応じてローカル変数に合わせて切り捨てられます。

descriptionOUTPUT
エラーの説明を指定します。 指定する場合は、ローカル char、ncharvarchar、または nvarchar 変数である必要があります。 戻り値は、必要に応じてローカル変数に合わせて切り捨てられます。

helpfileOUTPUT
OLE オブジェクトのヘルプ ファイルです。 指定する場合は、ローカル char、ncharvarchar、または nvarchar 変数である必要があります。 戻り値は、必要に応じてローカル変数に合わせて切り捨てられます。

helpidOUTPUT
ヘルプ ファイルのコンテキスト ID です。 指定する場合は、ローカル の int 変数である必要があります。

Note

このストアド プロシージャのパラメーターは、名前ではなく位置によって指定されます。

リターン コードの値

0 (成功) または 0 以外の数値 (失敗) は、OLE オートメーション オブジェクトによって返される HRESULT の整数値です。

HRESULT リターン コードの詳細については、「OLE オートメーションのリターン コードとエラー情報」を参照してください

結果セット

出力パラメーターを指定しない場合、エラー情報は結果セットとしてクライアントに返されます。

列名 データの種類 説明
エラー binary(4) エラー番号のバイナリ表現。
ソース nvarchar(nn) エラーのソース。
説明 nvarchar(nn) エラーの説明。
Helpfile nvarchar(nn) ソースのヘルプ ファイル。
HelpID int ヘルプ ソース ファイルのヘルプ コンテキスト ID。

解説

OLE オートメーション ストアド プロシージャを呼び出すたびに (sp_OAGetErrorInfoを除く) エラー情報がリセットされるため、sp_OAGetErrorInfoは最新の OLE オートメーション ストアド プロシージャ呼び出しについてのみエラー情報を取得します。 sp_OAGetErrorInfoはエラー情報をリセットしないため、同じエラー情報を取得するために複数回呼び出すことができます。

次の表は、OLE オートメーション エラーと一般的な原因の一覧です。

エラーおよび HRESULT 一般的な原因
変数型が正しくありません (0x80020008) メソッド パラメーターとして渡された Transact-SQL 値のデータ型が、メソッド パラメーターの Microsoft Visual Basic データ型と一致しなかったか、NULL 値がメソッド パラメーターとして渡されました。
不明な名前 (0x8002006) 指定したプロパティ名またはメソッド名が、指定したオブジェクトに見つかりませんでした。
無効なクラス文字列 (0x800401f3) 指定された ProgID または CLSID は、SQL Server のインスタンス上の OLE オブジェクトとして登録されていません。 カスタム OLE オートメーション サーバーは、sp_OACreateを使用してインスタンス化する前に登録する必要があります。 これは、インプロセス (.dll) サーバーの Regsvr32.exe ユーティリティ、またはローカル (.exe) サーバーの /REG Standard Edition RVER コマンド ライン スイッチを使用して行うことができます。
サーバーの実行に失敗しました (0x80080005) 指定した OLE オブジェクトは、ローカル OLE サーバー (.exe ファイル) として登録されていますが、.exe ファイルが見つからないか、起動できません。
指定したモジュールが見つかりませんでした (0x8007007e) 指定された OLE オブジェクトはインプロセス OLE サーバー (.dll ファイル) として登録されていますが、.dll ファイルが見つからないか、読み込まれませんでした。
型の不一致 (0x80020005) 返されたプロパティ値またはメソッドの戻り値を格納するために使用される Transact-SQL ローカル変数のデータ型が、プロパティまたはメソッドの戻り値の Visual Basic データ型と一致しませんでした。 または、プロパティやメソッドの戻り値を要求しましたが、そのプロパティやメソッドで戻り値が返されません。
sp_OACreateの 'context' パラメーターのデータ型または値が無効です。 (0x8004275B) コンテキスト パラメーターの値は 1、4、5 のいずれかであることが必要です。

HRESULT リターン コードの処理の詳細については、「OLE オートメーションリターンコードとエラー情報」を参照してください

アクセス許可

sysadmin 固定サーバー ロールのメンバーシップが必要です。または、このストアド プロシージャに対して直接アクセス許可を実行する必要があります。 Ole Automation Procedures OLE オートメーションに 関連するシステム プロシージャを使用するには、構成を有効にする 必要があります。

次の使用例は、OLE オートメーションのエラー情報を表示します。

DECLARE @output varchar(255);  
DECLARE @hr int;  
DECLARE @source varchar(255);  
DECLARE @description varchar(255);  
PRINT 'OLE Automation Error Information';  
EXEC @hr = sp_OAGetErrorInfo @object, @source OUT, @description OUT;  
IF @hr = 0  
BEGIN  
    SELECT @output = '  Source: ' + @source  
    PRINT @output  
    SELECT @output = '  Description: ' + @description  
    PRINT @output  
END  
ELSE  
BEGIN  
    PRINT '  sp_OAGetErrorInfo failed.'  
    RETURN  
END;  

参照

OLE オートメーション ストアド プロシージャ (Transact-SQL)
OLE オートメーションのサンプル スクリプト