sp_OAGetErrorInfo (Transact-SQL)
OLE オートメーションのエラー情報を取得します。
適用対象: SQL Server (SQL Server 2008 から現在のバージョンまで) |
構文
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
エラーの説明です。 指定する場合、値はローカルの char、nchar、varchar、または 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;