sp_OAGetErrorInfo (Transact-SQL)
適用対象: SQL Server
OLE オートメーションのエラー情報を取得します。
構文
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 変数である必要があります。
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;