sp_OAGetErrorInfo (Transact-SQL)
適用対象: SQL サーバー
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 Automation リターン コードとエラー情報を参照してください。
結果セット
出力パラメーターを指定しない場合、エラー情報は結果セットとしてクライアントに返されます。
列名 | データの種類 | 説明 |
---|---|---|
エラー | binary(4) | エラー番号のバイナリ表現。 |
ソース | nvarchar(nn) | エラーのソース。 |
説明 | 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 Automation リターン コードとエラー情報を参照してください。
アクセス許可
sysadmin固定サーバー ロールのメンバーシップが必要です。または、このストアド プロシージャに対して直接アクセス許可を実行します。 Ole Automation Procedures
OLE オートメーションに関連するシステム プロシージャを使用するには構成を有効にする必要があります。
例
次の使用例は、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 オートメーションのサンプル スクリプト
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示