sp_OAGetErrorInfo (Transact-SQL)
OLE オートメーションのエラー情報を取得します。
構文
sp_OAGetErrorInfo [ objecttoken ]
[ , source OUTPUT ]
[ , description OUTPUT ]
[ , helpfile OUTPUT ]
[ , helpid OUTPUT ]
引数
objecttoken
以前に sp_OACreate で作成した OLE オブジェクトのオブジェクト トークン、または NULL を指定します。objecttoken を指定した場合、そのオブジェクトのエラー情報が返されます。NULL を指定した場合は、そのバッチ全体のエラー情報が返されます。sourceOUTPUT
エラー情報のソースです。指定する場合、値はローカルの char、nchar、varchar、または nvarchar 型の変数にする必要があります。戻り値は必要に応じてローカル変数のサイズに切り捨てられます。descriptionOUTPUT
エラーの説明です。指定する場合、値はローカルの char、nchar、varchar、または 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