sp_OACreate (Transact-SQL)sp_OACreate (Transact-SQL)

適用対象: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

OLE オブジェクトのインスタンスを作成します。Creates an instance of an OLE object.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

  
sp_OACreate { progid | clsid } , objecttoken OUTPUT [ , context ]   

引数Arguments

progidprogid
作成する OLE オブジェクトのプログラム ID (ProgID) を指定します。Is the programmatic identifier (ProgID) of the OLE object to create. この文字の文字列は OLE オブジェクトのクラスをについて説明し、フォーム。 ' OLEComponent . オブジェクト 'This character string describes the class of the OLE object and has the form: 'OLEComponent.Object'

OLEComponent 、OLE オートメーション サーバーのコンポーネントの名前とオブジェクトOLE オブジェクトの名前を指定します。OLEComponent is the component name of the OLE Automation server, and Object is the name of the OLE object. 指定した OLE オブジェクトが有効にする必要があり、サポートする必要があります、 IDispatchインターフェイス。The specified OLE object must be valid and must support the IDispatch interface.

たとえば、SQLDMO です。Sql Server は、SQL-DMO の ProgID SQLServerオブジェクト。For example, SQLDMO.SQLServer is the ProgID of the SQL-DMO SQLServer object. SQL-DMO は SQLDMO のコンポーネント名、 SQLServerオブジェクトが、有効であり (すべての SQL-DMO のようなオブジェクト)、 SQLServerオブジェクト サポートIDispatchします。SQL-DMO has a component name of SQLDMO, the SQLServer object is valid, and (like all SQL-DMO objects) the SQLServer object supports IDispatch.

clsidclsid
作成する OLE オブジェクトのクラス ID (CLSID) を指定します。Is the class identifier (CLSID) of the OLE object to create. この文字の文字列が OLE オブジェクトのクラスをについて説明し、フォーム: ' { nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn }' します。This character string describes the class of the OLE object and has the form: '{nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn}'. 指定した OLE オブジェクトが有効にする必要があり、サポートする必要があります、 IDispatchインターフェイス。The specified OLE object must be valid and must support the IDispatch interface.

たとえば、{00026BA1-0000-0000-C000-000000000046} には、SQL-DMO の CLSID SQLServerオブジェクト。For example, {00026BA1-0000-0000-C000-000000000046} is the CLSID of the SQL-DMO SQLServer object.

objecttoken 出力objecttoken OUTPUT
返されるオブジェクト トークンは、データ型のローカル変数にする必要がありますintします。このオブジェクト トークンは、作成する OLE オブジェクトを識別するもので、その他の OLE オートメーション ストアド プロシージャの呼び出しに使用されます。Is the returned object token, and must be a local variable of data type int. This object token identifies the created OLE object and is used in calls to the other OLE Automation stored procedures.

contextcontext
新しく作成した OLE オブジェクトを実行するときの実行条件を指定します。Specifies the execution context in which the newly created OLE object runs. 指定する場合は、次のいずれかの値を指定する必要があります。If specified, this value must be one of the following:

1プロセス (.dll) OLE サーバーのみを = です。1 = In-process (.dll) OLE server only.

4 = ローカル (.exe) OLE サーバーのみです。4 = Local (.exe) OLE server only.

5 = インプロセスおよびローカル OLE サーバーが許可されています。5 = Both in-process and local OLE server allowed

指定されていない場合、既定値は5します。If not specified, the default value is 5. この値は、 dwClsContextへの呼び出しのパラメーター CoCreateInstanceします。This value is passed as the dwClsContext parameter of the call to CoCreateInstance.

インプロセス OLE サーバーが許可されている場合 (のコンテキスト値を使用して1または5またはコンテキストの値を指定しない)、メモリへのアクセス権があるし、その他のリソースを所有SQL ServerSQL Serverします。If an in-process OLE server is allowed (by using a context value of 1 or 5 or by not specifying a context value), it has access to memory and other resources owned by SQL ServerSQL Server. 組み込み OLE サーバーは、SQL ServerSQL Server のメモリやリソースに損傷を与え、SQL ServerSQL Server のアクセス違反など予期しない結果を招く場合があります。An in-process OLE server may damage SQL ServerSQL Server memory or resources and cause unpredictable results, such as a SQL ServerSQL Server access violation.

コンテキストの値を指定すると4、ローカル OLE サーバーでは、いずれかにアクセスできないSQL ServerSQL Serverリソース、およびそれが破損することはできませんSQL ServerSQL Serverメモリまたはリソースします。When you specify a context value of 4, a local OLE server does not have access to any SQL ServerSQL Server resources, and it cannot damage SQL ServerSQL Server memory or resources.

注意

このストアド プロシージャのパラメーターは、名前ではなく位置で指定します。The parameters for this stored procedure are specified by position, not by name.

リターン コードの値Return Code Values

成功した場合は 0、失敗した場合は OLE オートメーション オブジェクトによって返される HRESULT の 0 以外の整数値を返します。0 (success) or a nonzero number (failure) that is the integer value of the HRESULT returned by the OLE Automation object.

HRESULT のリターン コードの詳細については、次を参照してください。 OLE オートメーションのリターン コードとエラー情報します。For more information about HRESULT Return Codes, see OLE Automation Return Codes and Error Information.

コメントRemarks

OLE オートメーション プロシージャが有効な場合に呼び出しsp_OACreate OLE オートメーションの共有実行環境が開始します。If OLE automation procedures are enabled, a call to sp_OACreate will start the OLE Automation shared execution environment. OLE オートメーションを有効にする方法の詳細については、次を参照してください。 Ole Automation Procedures サーバー構成オプションします。For more information about enabling OLE automation, see Ole Automation Procedures Server Configuration Option.

作成された OLE オブジェクトは、Transact-SQLTransact-SQL ステートメント バッチの最後に自動的に破棄されます。The created OLE object is automatically destroyed at the end of the Transact-SQLTransact-SQL statement batch.

アクセス許可Permissions

メンバーシップが必要です、 sysadmin固定サーバー ロールまたはアクセス許可をこのストアド プロシージャを直接実行します。Requires membership in the sysadmin fixed server role or execute permission directly on this Stored Procedure. Ole Automation Procedures 構成でなければなりません有効になっているOLE オートメーションに関連するすべてのシステム プロシージャを使用します。Ole Automation Procedures configuration must be enabled to use any system procedure related to OLE Automation.

使用例Examples

A.A. ProgID を使用するUsing ProgID

次の例は、SQL-DMO SQLServer ProgID を使用してオブジェクト。The following example creates a SQL-DMO SQLServer object by using its ProgID.

DECLARE @object int;  
DECLARE @hr int;  
DECLARE @src varchar(255), @desc varchar(255);  
EXEC @hr = sp_OACreate 'SQLDMO.SQLServer', @object OUT;  
IF @hr <> 0  
BEGIN  
   EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT   
   raiserror('Error Creating COM Component 0x%x, %s, %s',16,1, @hr, @src, @desc)  
    RETURN  
END;  
GO  

B.B. CLSID を使用するUsing CLSID

次の例は、SQL-DMO SQLServerの CLSID を使用してオブジェクト。The following example creates a SQL-DMO SQLServer object by using its CLSID.

DECLARE @object int;  
DECLARE @hr int;  
DECLARE @src varchar(255), @desc varchar(255);  
EXEC @hr = sp_OACreate '{00026BA1-0000-0000-C000-000000000046}',  
    @object OUT;  
IF @hr <> 0  
BEGIN  
   EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT   
   raiserror('Error Creating COM Component 0x%x, %s, %s',16,1, @hr, @src, @desc)  
    RETURN  
END;  
GO  

参照See Also

OLE オートメーション ストアド プロシージャ(TRANSACT-SQL) OLE Automation Stored Procedures (Transact-SQL)
Ole Automation Procedures サーバー構成オプション Ole Automation Procedures Server Configuration Option
OLE オートメーションのサンプル スクリプトOLE Automation Sample Script