Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Létrehoz egy OLE-objektumpéldányt.
Transact-SQL szintaxis konvenciói
Szintaxis
sp_OACreate { progid | clsid }
, objecttoken OUTPUT
[ , context ]
[ ; ]
Érvek
Fontos
A kiterjesztett tárolt eljárások argumentumait a Szintaxis szakaszban leírt sorrendben kell megadni. Ha a paraméterek sorrenden kívül vannak beírva, hibaüzenet jelenik meg.
A létrehozandó OLE objektum programozott azonosítója (ProgID). Ez a karaktersztring az OLE objektum osztályát írja le, és a következő űrlapot tartalmazza: <OLEComponent>.<Object>.
OLEComponent az OLE Automation-kiszolgáló összetevőneve, objektum pedig az OLE-objektum neve. A megadott OLE-objektumnak érvényesnek kell lennie, és támogatnia kell a IDispatch felületet.
A SQLDMO.SQLServer például a SQL-DMO SQLServer objektum ProgID azonosítója. SQL-DMO sqlDMO összetevőnévvel rendelkezik, a SQLServer objektum érvényes, és (mint minden SQL-DMO objektum) az SQLServer objektum támogatja a IDispatch.
clsid
A létrehozandó OLE-objektum osztályazonosítója (CLSID). Ez a karaktersztring az OLE objektum osztályát írja le, és a következő űrlapot tartalmazza: {<nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn>}. A megadott OLE-objektumnak érvényesnek kell lennie, és támogatnia kell a IDispatch felületet.
A {00026BA1-0000-0000-C000-000000000046} például a SQL-DMO SQLServer objektum CLSID azonosítója.
objecttoken OUTPUT
A visszaadott objektum jogkivonatának helyi adattípusú változónak kell lennie, int. Ez az objektum-jogkivonat azonosítja a létrehozott OLE objektumot, és a többi tárolt OLE Automation-eljárás hívásaiban használatos.
környezet
Meghatározza az újonnan létrehozott OLE-objektum futtatásának végrehajtási környezetét. Ha meg van adva, ennek az értéknek az alábbi lehetőségek egyikének kell lennie:
-
1= Csak folyamatban lévő (.dll) OLE-kiszolgáló -
4= Csak helyi (.exe) OLE-kiszolgáló -
5= Mind a folyamatban lévő, mind a helyi OLE-kiszolgáló engedélyezett
Ha nincs megadva, az alapértelmezett érték 5. Ez az érték a CoCreateInstancehívás dwClsContext paramétereként lesz átadva.
Ha egy folyamatban lévő OLE-kiszolgáló engedélyezve van (1 vagy 5 környezeti érték használatával, vagy nem határoz meg környezeti értéket), hozzáféréssel rendelkezik az SQL Server által birtokolt memóriához és egyéb erőforrásokhoz. A folyamatban lévő OLE-kiszolgálók károsíthatják az SQL Server memóriáját vagy erőforrásait, és kiszámíthatatlan eredményeket okozhatnak, például az SQL Server hozzáférés-megsértését.
Ha 4környezeti értéket ad meg, a helyi OLE-kiszolgáló nem fér hozzá egyetlen SQL Server-erőforráshoz sem, és nem károsíthatja az SQL Server memóriáját vagy erőforrásait.
Jegyzet
A tárolt eljárás paramétereit nem név, hanem pozíció határozza meg.
Kódértékek visszaadása
0 (sikeres) vagy az OLE Automation objektum által visszaadott HRESULT egész számának egész számát (hiba).
További információ a HRESULT visszatérési kódokról: OLE automation return codes and error information.
Megjegyzések
Ha az OLE automatizálási eljárások engedélyezve vannak, a sp_OACreate hívása elindítja az OLE Automation megosztott végrehajtási környezetet. Az OLE-automatizálás engedélyezéséről további információt az Ole Automation Procedures (kiszolgálókonfigurációs lehetőség)című cikkben talál.
A létrehozott OLE-objektum automatikusan el lesz pusztítva a Transact-SQL utasítás köteg végén.
Engedélyek
A sysadmin rögzített kiszolgálói szerepkörhöz való tagságot igényel, vagy közvetlenül ezen a tárolt eljáráson hajthat végre engedélyeket. Az Ole Automation-eljárások kiszolgálókonfigurációs lehetőséget engedélyezni kell az OLE Automationhez kapcsolódó rendszereljárások használatához.
Példák
Egy. A ProgID használata
Az alábbi példa létrehoz egy SQL-DMO SQLServer objektumot a ProgID használatával.
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. CLSID használata
Az alábbi példa létrehoz egy SQL-DMO SQLServer objektumot a CLSID használatával.
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