Transact-SQL での OLE オートメーション オブジェクト

適用対象: SQL Server

Transact-SQL には、Transact-SQL バッチ、ストアド プロシージャ、およびトリガーの中で OLE オートメーション オブジェクトを参照できるいくつかのシステム ストアド プロシージャが組み込まれています。 これらのシステム ストアド プロシージャは拡張ストアド プロシージャとして動作します。また、これらのストアド プロシージャから実行される OLE オートメーション オブジェクトは、拡張ストアド プロシージャが実行されるのと同じ方法で、SQL Server データベース エンジンのインスタンスのアドレス空間で実行されます。

OLE オートメーション ストアド プロシージャを使用すると、Transact-SQL バッチから SQL-DMO オブジェクトやカスタム OLE オートメーション オブジェクト (IDispatch インターフェイスを公開しているオブジェクトなど) を参照できます。 Microsoft Visual Basic を使用して作成するカスタム インプロセス OLE サーバーには、Class_Initialize サブルーチンと Class_Terminate サブルーチン用に エラー ハンドラー (On Error GoTo ステートメントで指定) が必要です。 Class_Initialize サブルーチンと Class_Terminate サブルーチンで処理されないエラーが発生すると、データベース エンジンのインスタンスでのアクセス違反などの予期しないエラーが発生する可能性があります。 また、その他のサブルーチン用のエラー ハンドラーも用意しておくことをお勧めします。

Transact-SQL で OLE オートメーション オブジェクトを使用する場合は、まず、sp_OACreate システム ストアド プロシージャを呼び出して、データベース エンジンのインスタンスのアドレス空間にそのオブジェクトのインスタンスを作成します。

オブジェクトのインスタンスを作成した後、次のストアド プロシージャを呼び出してオブジェクトのプロパティ、メソッド、およびエラー情報を処理します。

  • sp_OAGetProperty はプロパティの値を取得します。

  • sp_OASetProperty はプロパティの値を設定します。

  • sp_OAMethod はメソッドを呼び出します。

  • sp_OAGetErrorInfo は、最新のエラー情報を取得します。

オブジェクトが必要なくなったら、 sp_OADestroy を呼び出し、 sp_OACreate で作成したオブジェクトのインスタンスの割り当てを解除します。

OLE オートメーション オブジェクトは、プロパティ値とメソッドを使用してデータを返します。 sp_OAGetProperty および sp_OAMethod プロシージャは、これらのデータ値を結果セットの形で返します。

OLE オートメーション オブジェクトのスコープはバッチです。 そのオブジェクトへのすべての参照は、単一のバッチ、ストアド プロシージャ、またはトリガー内に含まれている必要があります。

オブジェクトを参照する場合、SQL Server OLE オートメーション オブジェクトは、参照されたオブジェクトからそれに含まれる他のオブジェクトへのトラバースをサポートします。 たとえば、SQL-DMO の SQLServer オブジェクトを使用すると、参照先のサーバーに含まれているデータベースとテーブルを参照できます。

関連項目

次のステップ