sp_OACreate (Transact-SQL)

Si applica a:SQL Server

Crea un'istanza di un oggetto OLE.

Convenzioni di sintassi Transact-SQL

Sintassi

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

Argomenti

progid
ProgID dell'oggetto OLE da creare. Questa stringa di caratteri descrive la classe dell'oggetto OLE e ha il formato : 'OLEComponent.Oggetto'

OLEComponent è il nome del componente del server di automazione OLE e Object è il nome dell'oggetto OLE. L'oggetto OLE specificato deve essere valido e deve supportare l'interfaccia IDispatch .

Ad esempio, SQLDMO. SQLServer è il ProgID dell'oggetto SQL-DMO SQLServer . SQL-DMO ha un nome di componente SQLDMO, l'oggetto SQLServer è valido e,come tutti gli oggetti SQL-DMO, l'oggetto SQLServer supporta IDispatch.

Clsid
CLSID dell'oggetto OLE da creare. Questa stringa di caratteri descrive la classe dell'oggetto OLE e ha il formato : '{nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnn}'. L'oggetto OLE specificato deve essere valido e deve supportare l'interfaccia IDispatch .

Ad esempio, {00026BA1-0000-0000-C000-000000000046} è il CLSID dell'oggetto SQL-DMO SQLServer .

output objecttoken
Token dell'oggetto restituito e deve essere una variabile locale di tipo di dati int. Questo token di oggetto identifica l'oggetto OLE creato e viene utilizzato nelle chiamate alle altre stored procedure di automazione OLE.

context
Specifica il contesto di esecuzione in cui viene eseguito il nuovo oggetto OLE. I possibili valori sono i seguenti:

1 = solo server OLE in-process (con estensione dll).

4 = Solo server OLE locale (.exe).

5 = Sia nel processo che nel server OLE locale consentito

Se non specificato, il valore predefinito è 5. Questo valore viene passato come parametro dwClsContext della chiamata a CoCreateInstance.

Se un server OLE in-process è consentito (usando un valore di contesto pari a 1 o 5 o non specificando un valore di contesto), ha accesso alla memoria e ad altre risorse di proprietà di SQL Server. Un server OLE in-process può danneggiare la memoria o le risorse di SQL Server e causare risultati imprevedibili, ad esempio una violazione di accesso a SQL Server.

Quando si specifica un valore di contesto pari a 4, un server OLE locale non ha accesso ad alcuna risorsa di SQL Server e non può danneggiare la memoria o le risorse di SQL Server.

Nota

I parametri di questa stored procedure vengono specificati in base alla posizione, non in base al nome.

Valori del codice restituito

0 (esito positivo) o un numero diverso da zero (esito negativo) corrispondente al valore intero del codice HRESULT restituito dall'oggetto di automazione OLE.

Per altre informazioni sui codici restituiti HRESULT, vedere Codici restituiti di automazione OLE e informazioni sugli errori.

Osservazioni:

Se le procedure di automazione OLE sono abilitate, una chiamata a sp_OACreate avvierà l'ambiente di esecuzione condivisa di automazione OLE. Per altre informazioni sull'abilitazione dell'automazione OLE, vedere Opzione di configurazione del server Ole Automation Procedures.

L'oggetto OLE creato viene eliminato automaticamente alla fine del batch di istruzioni Transact-SQL.

Autorizzazioni

È richiesta l'appartenenza al ruolo predefinito del server sysadmin o l'autorizzazione di esecuzione direttamente in questa stored procedure. Ole Automation Procedures la configurazione deve essere abilitata per utilizzare qualsiasi procedura di sistema correlata all'automazione OLE.

Esempi

R. Utilizzo di un valore ProgID

Nell'esempio seguente viene creato un oggetto SQL-DMO SQLServer usando il relativo 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. Utilizzo di un valore CLSID

Nell'esempio seguente viene creato un oggetto SQL-DMO SQLServer usando il relativo 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  

Vedi anche

Stored procedure di automazione OLE (Transact-SQL)
Opzione di configurazione del server Ole Automation Procedures
Script di automazione OLE di esempio