Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Vytvoří instanci objektu OLE.
Syntax
sp_OACreate { progid | clsid }
, objecttoken OUTPUT
[ , context ]
[ ; ]
Argumenty
Důležitý
Argumenty rozšířených uložených procedur musí být zadány v určitém pořadí, jak je popsáno v části Syntaxe. Pokud jsou parametry zadány mimo pořadí, dojde k chybové zprávě.
Programový identifikátor (ProgID) objektu OLE, který se má vytvořit. Tento řetězec znaků popisuje třídu objektu OLE a má tvar: <OLEComponent>.<Object>.
oleComponent je název komponenty serveru OLE Automation a Objekt je název objektu OLE. Zadaný objekt OLE musí být platný a musí podporovat IDispatch rozhraní.
Například SQLDMO.SQLServer je ProgID objektu SQL-DMO SQLServer. SQL-DMO má název komponenty SQLDMO, objekt SQLServer je platný a (podobně jako všechny SQL-DMO objekty) SQLServer objekt podporuje IDispatch.
clsid
Identifikátor třídy (CLSID) objektu OLE, který se má vytvořit. Tento řetězec znaků popisuje třídu objektu OLE a má tvar: {<nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn>}. Zadaný objekt OLE musí být platný a musí podporovat IDispatch rozhraní.
Například {00026BA1-0000-0000-C000-000000000046} je CLSID objektu SQL-DMO SQLServer.
objecttoken OUTPUT
Vrácený token objektu a musí být místní proměnnou datového typu int. Tento token objektu identifikuje vytvořený objekt OLE a používá se při volání ostatních uložených procedur automatizace OLE.
kontextové
Určuje kontext spuštění, ve kterém se nově vytvořený objekt OLE spouští. Pokud je tato hodnota zadaná, musí být jedna z následujících možností:
-
1= pouze server OLE v procesu (.dll) -
4= pouze místní (.exe) server OLE -
5= povolený místní i místní server OLE
Pokud není zadána, výchozí hodnota je 5. Tato hodnota se předává jako dwClsContext parametr volání CoCreateInstance.
Pokud je povolený procesový server OLE (pomocí kontextové hodnoty 1 nebo 5 nebo nezadání kontextové hodnoty), má přístup k paměti a dalším prostředkům vlastněným SQL Serverem. Procesový server OLE může poškodit paměť nebo prostředky SQL Serveru a způsobit nepředvídatelné výsledky, například narušení přístupu k SQL Serveru.
Když zadáte kontextovou hodnotu 4, místní server OLE nemá přístup k žádným prostředkům SQL Serveru a nemůže poškodit paměť nebo prostředky SYSTÉMU SQL Server.
Poznámka
Parametry pro tuto uloženou proceduru jsou určeny podle pozice, nikoli podle názvu.
Návratové hodnoty kódu
0 (úspěch) nebo nenulové číslo (selhání), které je celočíselná hodnota HRESULT vrácená objektem AUTOMATIZACE OLE.
Další informace o návratových kódech HRESULT najdete v tématu návratové kódy automatizace OLE a informace o chybách.
Poznámky
Pokud jsou povolené procedury automatizace OLE, spustí volání sp_OACreate spustí prostředí sdíleného spouštění automatizace OLE. Další informace o povolení automatizace OLE naleznete v tématu Ole Automation Procedur (možnost konfigurace serveru).
Vytvořený objekt OLE se automaticky zničí na konci dávky příkazu Transact-SQL.
Dovolení
Vyžaduje členství v správce systému pevné role serveru nebo spustit oprávnění přímo v této uložené proceduře. Možnost konfigurace procedur Ole Automation serveru musí být povolena, aby bylo možné použít jakýkoli systémový postup související se službou OLE Automation.
Příklady
A. Použití IDENTIFIKÁTORu ProgID
Následující příklad vytvoří objekt SQL-DMO SQLServer pomocí jeho 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. Použití CLSID
Následující příklad vytvoří objekt SQL-DMO SQLServer pomocí jeho 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
Související obsah
- uložené procedury OLE Automation (Transact-SQL)
- procedur Ole Automation (možnost konfigurace serveru)
- ukázkový skript pro automatizaci OLE