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

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_OAGetPropertysp_OAMethod は、これらのデータ値を結果セットの形で返します。

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

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