次の方法で共有


sp_OAGetErrorInfo (Transact-SQL)

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

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

構文

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

引数

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

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

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

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

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

    注意

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

戻り値

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

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

結果セット

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

列名

データ型

説明

Error

binary(4)

エラー番号の 2 進表記。

Source

nvarchar(nn)

エラーのソース。

Description

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