Udostępnij za pośrednictwem


sp_OACreate (języka Transact-SQL)

Tworzy wystąpienie obiektu.

Topic link iconKonwencje składni języka Transact-SQL

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

Argumenty

  • progid
    Jest identyfikatorem programowych (ProgID) obiektu OLE, aby utworzyć.Ten ciąg znaków zawiera opis klasy obiektu OLE i ma postać: 'OLEComponent.Object'

    OLEComponent jest nazwą składnika serwera automatyzacji OLE, a Obiekt jest nazwą obiektu OLE.Określony obiekt OLE musi być prawidłowy i musi obsługiwać Interfejs IDispatch interfejsu.

    Na przykład SQLDMO.SQLServer jest identyfikatora ProgID SQL-DMO SQLServer obiektu.SQL-DMO ma nazwę składnika z SQLDMO, SQLServer obiektu jest prawidłowa i (takie jak SQL-DMO wszystkie obiekty) SQLServer obsługiwanych obiekt Interfejs IDispatch.

  • clsid
    Jest identyfikatorem klasy (CLSID) obiektu OLE, aby utworzyć.Ten ciąg znaków zawiera opis klasy obiektu OLE i ma postać: **' {**nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn } „.Określony obiekt OLE musi być prawidłowy i musi obsługiwać Interfejs IDispatch interfejsu.

    Na przykład {00026BA1-0000-0000-C000-000000000046} to identyfikator klasy (CLSID) obiektów SQL-DMO SQLServer obiektu.

  • objecttokenDANE WYJŚCIOWE
    Jest tokenem zwracany obiekt, a musi być zmiennej lokalnej typu danych int. Token ten obiekt identyfikuje utworzonego obiektu OLE i jest używany w wywołaniach do innych procedur automatyzacji OLE przechowywanych.

  • context
    Określa kontekst wykonania, w którym jest uruchamiana nowo utworzony obiekt OLE.Jeśli określony, wartość ta musi być jedną z następujących czynności:

    1 = Tylko serwer OLE (.dll) w procesie.

    4 = Lokalnego (.exe) OLE tylko do serwera.

    5 = Dozwolone zarówno w procesie i lokalnego serwera OLE

    Jeśli nie zostanie określony, wartość domyślna to 5.Ta wartość jest przekazywana jako dwClsContext Parametr wywołanie Wywołanie funkcji CoCreateInstance.

    Jeśli w procesie serwera OLE jest dozwolony (przy użyciu wartości kontekstu 1 or 5 lub nie określając wartość kontekstu), ma dostęp do pamięci i innych zasobów należących do SQL Server. W procesie serwera OLE może uszkodzić SQL Server pamięci lub zasobów oraz powodować nieprzewidywalne wyniki, takie jak SQL Server naruszenie zasad dostępu.

    Po określeniu wartości kontekstu 4, lokalny serwer OLE nie ma dostępu do żadnych SQL Server zasoby, a nie może uszkodzić SQL Server pamięci lub zasobów.

    Uwaga

    Parametry dla tej procedura przechowywana są określane według położenia, nie przez nazwę.

Wartości kodów powrotnych

0 (sukces) lub liczbę różną od zera (błąd), która jest liczbą całkowitą wartość HRESULT, zwrócone przez obiekt automatyzacji OLE.

Aby uzyskać więcej informacji na temat Kody zwracanych wartości HRESULT zobacz OLE Automation Return Codes and Error Information.

Remarks

Jeśli włączone są procedury automatyzacji OLE, wywołanie sp_OACreate uruchomi środowiska wykonania udostępnionego automatyzacji OLE.Aby uzyskać więcej informacji na temat włączania automatyzacji OLE zobacz Ole Automation Procedures Option.

Utworzony obiekt OLE jest niszczony automatycznie na końcu Transact-SQL Instrukcja partia.

Uprawnienia

Członkostwo w grupie wymaga sysadmin stała rola serwera.

Przykłady

A.Za pomocą identyfikator programu

Poniższy przykład tworzy SQL-DMO SQLServer obiektu przy użyciu jej identyfikatora programu.

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.Za pomocą identyfikatora CLSID

Poniższy przykład tworzy SQL-DMO SQLServer obiektu przy użyciu jej identyfikatora 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