次の方法で共有


sp_OAGetErrorInfo (Transact-SQL)

適用対象: SQL Server

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

Transact-SQL 構文表記規則

構文

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

引数

objecttoken

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

source OUTPUT

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

description OUTPUT

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

helpfile OUTPUT

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

helpid OUTPUT

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

Note

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

リターン コードの値

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

HRESULT 戻りコードの詳細については、 OLE 自動化戻りコードとエラー情報を参照してください。

結果セット

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

列名 データ型 説明
Error binary(4) エラー番号のバイナリ表現。
Source nvarchar(nn) エラーのソース。
Description 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) サーバーの/REGSERVERコマンドライン スイッチを使用してサーバーを登録できます。
サーバーの実行に失敗しました (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 オートメーションに関連するシステム プロシージャを使用するには、 Ole Automation Procedures サーバー構成オプションを有効にする必要があります。

次の使用例は、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 OUTPUT,
    @description OUTPUT;

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;