次の方法で共有


sp_OAGetErrorInfo (Transact-SQL)

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

適用対象: SQL Server (SQL Server 2008 から現在のバージョンまで)

トピック リンク アイコン Transact-SQL 構文表記規則

構文

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

引数

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

  • source OUTPUT
    エラー情報のソースです。 指定する場合、値はローカルの char、nchar、varchar、または nvarchar 型の変数にする必要があります。 戻り値は必要に応じてローカル変数のサイズに切り捨てられます。

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

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

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

    注意

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

戻り値

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

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

結果セット

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

列名

データ型

説明

Error

binary(4)

エラー番号の 2 進表記。

Source

nvarchar(nn)

エラーのソース。

説明

nvarchar(nn)

エラーの説明。

Helpfile

nvarchar(nn)

ソースのヘルプ ファイル。

HelpID

int

ヘルプ ソース ファイルのヘルプ コンテキスト ID。

説明

sp_OAGetErrorInfo 以外の各 OLE オートメーション ストアド プロシージャの呼び出しでは、エラー情報がリセットされます。したがって、sp_OAGetErrorInfo では直前の OLE オートメーション ストアド プロシージャ呼び出しのエラー情報だけが取得されます。 sp_OAGetErrorInfo ではエラー情報がリセットされないので、同じエラー情報を取得するため何度も呼び出すことができます。

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

エラーおよび HRESULT

一般的な原因

変数型が不正です
(0x80020008)

メソッド パラメーターとして渡された Transact-SQL 値のデータ型と、メソッド パラメーターの Microsoft Visual Basic データ型が一致しないか、メソッド パラメーターとして NULL 値が渡されました。

不明な名前です
(0x8002006)

指定したプロパティ名またはメソッド名が、指定したオブジェクトに見つかりませんでした。

無効なクラス文字列です
(0x800401f3)

指定した ProgID または CLSID は、SQL Server インスタンスに OLE オブジェクトとして登録されていません。 sp_OACreate を使用してカスタム OLE オートメーション サーバーをインスタンス化するには、その前にこれらを登録する必要があります。 登録するには、組み込み (.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 オートメーションのエラー情報を表示します。

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 オートメーションのサンプル スクリプト