sp_OACreate (języka Transact-SQL)
Tworzy wystąpienie obiektu.
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
See Also