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_OAGetProperty と sp_OAMethod は、これらのデータ値を結果セットの形で返します。
OLE オートメーション オブジェクトのスコープはバッチです。 そのオブジェクトへのすべての参照は、単一のバッチ、ストアド プロシージャ、またはトリガー内に含まれている必要があります。
SQL Server の OLE オートメーション オブジェクトからオブジェクトを参照する場合、参照するオブジェクトに含まれる他のオブジェクトも参照できます。 たとえば、SQL-DMO の SQLServer オブジェクトを使用すると、参照先のサーバーに含まれているデータベースとテーブルを参照できます。
関連コンテンツ
Ole Automation Procedures サーバー構成オプション
sp_OAGetProperty (Transact-SQL)
sp_OASetProperty (Transact-SQL)