Transact-SQL には、OLE オートメーション オブジェクトを Transact-SQL バッチ、ストアド プロシージャ、およびトリガーで参照できるようにする、いくつかのシステム ストアド プロシージャが含まれています。 これらのシステム ストアド プロシージャは拡張ストアド プロシージャとして実行され、ストアド プロシージャを介して実行される 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 オートメーション オブジェクトのスコープはバッチです。 オブジェクトへのすべての参照は、1 つのバッチ、ストアド プロシージャ、またはトリガーに含まれている必要があります。
オブジェクトを参照する場合、SQL Server OLE オートメーション オブジェクトは、参照先オブジェクトを含む他のオブジェクトへの走査をサポートします。 たとえば、SQL-DMO SQLServer オブジェクトを使用する場合、そのサーバーに含まれるデータベースとテーブルへの参照を行うことができます。
関連コンテンツ
Ole Automation Procedures サーバー構成オプション
sp_OAGetProperty (Transact-SQL)
sp_OASetProperty (Transact-SQL)