Megosztás a következőn keresztül:


sp_OACreate (Transact-SQL)

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