Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Skapar en instans av ett OLE-objekt.
Transact-SQL syntaxkonventioner
Syntax
sp_OACreate { progid | clsid }
, objecttoken OUTPUT
[ , context ]
[ ; ]
Argument
Viktig
Argument för utökade lagrade procedurer måste anges i den specifika ordning som beskrivs i avsnittet Syntax. Om parametrarna anges i fel ordning visas ett felmeddelande.
Den programmatiska identifieraren (ProgID) för OLE-objektet som ska skapas. Den här teckensträngen beskriver klassen för OLE-objektet och har formuläret: <OLEComponent>.<Object>.
OLEComponent är komponentnamnet på OLE Automation-servern och Object är namnet på OLE-objektet. Det angivna OLE-objektet måste vara giltigt och måste ha stöd för IDispatch-gränssnittet.
SQLDMO.SQLServer är till exempel ProgID för SQL-DMO SQLServer-objektet. SQL-DMO har komponentnamnet SQLDMO är SQLServer-objektet giltigt och (som alla SQL-DMO objekt) stöder SQLServer-objektet IDispatch.
clsid
Klassidentifieraren (CLSID) för OLE-objektet som ska skapas. Den här teckensträngen beskriver klassen för OLE-objektet och har formuläret: {<nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn>}. Det angivna OLE-objektet måste vara giltigt och måste ha stöd för IDispatch-gränssnittet.
Till exempel är {00026BA1-0000-0000-C000-000000000046} CLSID för SQL-DMO SQLServer-objektet.
objecttoken OUTPUT
Den returnerade objekttoken och måste vara en lokal variabel av datatypen int. Den här objekttoken identifierar det skapade OLE-objektet och används i anrop till andra OLE Automation-lagrade procedurer.
kontext
Anger körningskontexten där det nyligen skapade OLE-objektet körs. Om det här värdet anges måste det vara något av följande alternativ:
-
1= In-process ( endast.dll) OLE-server -
4= Endast lokal (.exe) OLE-server -
5= Både processbaserad och lokal OLE-server tillåts
Om det inte anges är standardvärdet 5. Det här värdet skickas som parametern dwClsContext för anropet till CoCreateInstance.
Om en processbaserad OLE-server tillåts (med hjälp av ett kontextvärde för 1 eller 5 eller genom att inte ange ett kontextvärde) har den åtkomst till minne och andra resurser som ägs av SQL Server. En processbaserad OLE-server kan skada SQL Server-minne eller resurser och orsaka oförutsägbara resultat, till exempel en överträdelse av SQL Server-åtkomst.
När du anger ett kontextvärde för 4har en lokal OLE-server inte åtkomst till några SQL Server-resurser och det kan inte skada SQL Server-minne eller resurser.
Not
Parametrarna för den här lagrade proceduren anges efter position, inte efter namn.
Returnera kodvärden
0 (lyckades) eller ett icke-nolltal (fel) som är heltalsvärdet för HRESULT som returneras av OLE Automation-objektet.
Mer information om HRESULT-returkoder finns i RETURkoder för OLE Automation och felinformation.
Anmärkningar
Om OLE-automatiseringsprocedurer är aktiverade startar ett anrop till sp_OACreate den delade körningsmiljön för OLE Automation. Mer information om hur du aktiverar OLE-automatisering finns i Ole Automation-procedurer (serverkonfigurationsalternativ).
Det skapade OLE-objektet förstörs automatiskt i slutet av batchen Transact-SQL-instruktion.
Behörigheter
Kräver medlemskap i sysadmin fast serverroll eller kör behörighet direkt på den här lagrade proceduren. Alternativet Ole Automation-procedurer serverkonfiguration måste vara aktiverat för att kunna använda alla systemprocedurer som är relaterade till OLE Automation.
Exempel
A. Använda ProgID
I följande exempel skapas ett SQL-DMO SQLServer objekt med hjälp av dess ProgID.
DECLARE @object AS INT;
DECLARE @hr AS INT;
DECLARE @src AS VARCHAR (255);
DECLARE @desc AS VARCHAR (255);
EXECUTE
@hr = sp_OACreate 'SQLDMO.SQLServer',
@object OUTPUT;
IF @hr <> 0
BEGIN
EXECUTE sp_OAGetErrorInfo
@object,
@src OUTPUT,
@desc OUTPUT;
RAISERROR ('Error Creating COM Component 0x%x, %s, %s', 16, 1, @hr, @src, @desc);
RETURN;
END
GO
B. Använda CLSID
I följande exempel skapas ett SQL-DMO SQLServer objekt med hjälp av dess CLSID.
DECLARE @object AS INT;
DECLARE @hr AS INT;
DECLARE @src AS VARCHAR (255);
DECLARE @desc AS VARCHAR (255);
EXECUTE
@hr = sp_OACreate '{00026BA1-0000-0000-C000-000000000046}',
@object OUTPUT;
IF @hr <> 0
BEGIN
EXECUTE sp_OAGetErrorInfo
@object,
@src OUTPUT,
@desc OUTPUT;
RAISERROR ('Error Creating COM Component 0x%x, %s, %s', 16, 1, @hr, @src, @desc);
RETURN;
END
GO