sp_OACreate (języka Transact-SQL)
Tworzy wystąpienie obiektu OLE.
Składnia
sp_OACreate { progid | clsid } , objecttoken OUTPUT [ , context ]
Argumenty
progid
Jest identyfikatorów programowych (ProgID) obiektu OLE, aby utworzyć.Ten ciąg opisuje klasy obiektu OLE i ma postać: "OLEComponent.Obiektu"OLEComponent jest nazwą składnika serwera automatyzacji OLE i obiektu to nazwa obiektu OLE.Określony obiekt OLE musi być prawidłowy i musi obsługiwać interfejsu IDispatch interfejs.
Na przykład SQLDMO.SQLServer jest identyfikator programu SQL- DMO SQLServer obiektu.SQL- DMO ma nazwę składnika SQLDMO, SQLServer obiektu jest prawidłowa i (np. wszystkich obiektów SQL- DMO) SQLServer obiekt obsługuje interfejsu IDispatch.
clsid
Jest obiekt OLE, aby utworzyć identyfikator klasy (CLSID).Ten ciąg opisuje klasy obiektu OLE i ma postać: "{nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn}'.Określony obiekt OLE musi być prawidłowy i musi obsługiwać interfejsu IDispatch interfejs.Na przykład {00026BA1-0000-0000-C000-000000000046} to identyfikator CLSID obiektu SQL- DMO SQLServer obiektu.
objecttokenDANE WYJŚCIOWE
Jest zwracany obiekt tokenu i musi być lokalną zmienną typu danych int.Token ten obiekt identyfikuje utworzony obiekt OLE i jest używany w wywołaniach innych procedur automatyzacji OLE przechowywane.context
Określa kontekst wykonania 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 trakcie.
4 = Lokalne (.exe) OLE tylko do serwera.
5 = Dozwolone zarówno w trakcie i lokalnego serwera OLE
Jeżeli nie podano, wartością domyślną jest 5.Ta wartość jest przekazywana jako dwClsContext parametru wywołania Wywołanie funkcji CoCreateInstance.
Jeśli serwer OLE w trakcie jest dozwolony (przy użyciu wartości kontekstu dla 1 lub 5 lub nie podając wartości kontekstu), ma dostęp do pamięci i innych zasobów należących do SQL Server.Serwer OLE w trakcie może uszkodzić SQL Server pamięci lub zasobów i 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 zasobów i nie może uszkodzić SQL Server pamięci lub zasobów.
Ostrzeżenie
Parametry dla tej procedura składowana 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 wartością całkowitą wartość HRESULT zwrócone przez obiekt automatyzacji OLE.
Aby uzyskać więcej informacji na temat kody powrotne HRESULT zobacz OLE automatyzacji kody zwrotne i informacje o błędzie.
Uwagi
Jeśli włączone są procedury automatyzacji OLE, wywołanie sp_OACreate uruchomi środowisko wykonawcze udostępnionego automatyzacji OLE.Aby uzyskać więcej informacji dotyczących włączania funkcji automatyzacji OLE, zobacz Opcja procedur automatyzacji OLE.
Utworzony obiekt OLE jest automatycznie zniszczone na koniec Transact-SQL instrukcja partia.
Uprawnienia
Wymaga członkostwa w sysadmin stała rola serwera.
Przykłady
A.Za pomocą ProgID
Poniższy przykład tworzy SQL- DMO SQLServer obiektu przy użyciu swojego identyfikatora ProgID.
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 swojego 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
Zobacz także