Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:programu SQL Server
Tworzy wystąpienie obiektu OLE.
Transact-SQL konwencje składni
Składnia
sp_OACreate { progid | clsid }
, objecttoken OUTPUT
[ , context ]
[ ; ]
Argumenty
Ważny
Argumenty dla rozszerzonych procedur składowanych należy wprowadzić w określonej kolejności zgodnie z opisem w sekcji składni. Jeśli parametry są wprowadzane poza kolejnością, wystąpi komunikat o błędzie.
progid
Identyfikator programowy (ProgID) obiektu OLE do utworzenia. Ten ciąg znaków opisuje klasę obiektu OLE i ma postać: <OLEComponent>.<Object>
.
OLEComponent jest nazwą składnika serwera automatyzacji OLE, a Object jest nazwą obiektu OLE. Określony obiekt OLE musi być prawidłowy i musi obsługiwać interfejs IDispatch
.
Na przykład SQLDMO.SQLServer
jest wartością ProgID obiektu SQL-DMO SQLServer
. SQL-DMO ma nazwę składnika SQLDMO, obiekt SQLServer
jest prawidłowy i (podobnie jak wszystkie obiekty SQL-DMO) obiekt SQLServer
obsługuje IDispatch
.
clsid
Identyfikator klasy (CLSID) obiektu OLE do utworzenia. Ten ciąg znaków opisuje klasę obiektu OLE i ma postać: {<nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn>}
. Określony obiekt OLE musi być prawidłowy i musi obsługiwać interfejs IDispatch
.
Na przykład {00026BA1-0000-0000-C000-000000000046}
jest identyfikatorem CLSID obiektu SQL-DMO SQLServer
.
objecttoken OUTPUT
Zwrócony token obiektu i musi być lokalną zmienną typu danych int. Ten token obiektu identyfikuje utworzony obiekt OLE i jest używany w wywołaniach do innych procedur składowanych automatyzacji OLE.
kontekstu
Określa kontekst wykonywania, w którym jest uruchamiany nowo utworzony obiekt OLE. Jeśli zostanie określona, ta wartość musi być jedną z następujących opcji:
-
1
= tylko serwer OLE (.dll
) -
4
= lokalny (tylko serwer OLE.exe
) -
5
= dozwolony zarówno w procesie, jak i lokalnym serwerze OLE
Jeśli nie zostanie określona, wartość domyślna to 5
. Ta wartość jest przekazywana jako parametr dwClsContext wywołania do CoCreateInstance
.
Jeśli serwer OLE w procesie jest dozwolony (przy użyciu wartości kontekstowej 1
lub 5
lub nie określając wartości kontekstu), ma dostęp do pamięci i innych zasobów należących do programu SQL Server. Serwer OLE w procesie może uszkodzić pamięć lub zasoby programu SQL Server i spowodować nieprzewidywalne wyniki, takie jak naruszenie dostępu programu SQL Server.
Po określeniu wartości kontekstu 4
lokalny serwer OLE nie ma dostępu do żadnych zasobów programu SQL Server i nie może uszkodzić pamięci ani zasobów programu SQL Server.
Nuta
Parametry tej procedury składowanej są określane według pozycji, a nie według nazwy.
Zwracanie wartości kodu
0
(powodzenie) lub liczba niezerowa (niepowodzenie), która jest liczbą całkowitą HRESULT zwróconą przez obiekt automatyzacji OLE.
Aby uzyskać więcej informacji na temat kodów powrotnych HRESULT, zobacz kody powrotne automatyzacji OLE i informacje o błędach.
Uwagi
Jeśli procedury automatyzacji OLE są włączone, wywołanie sp_OACreate
uruchamia współużytkowane środowisko wykonywania automatyzacji OLE. Aby uzyskać więcej informacji na temat włączania automatyzacji OLE, zobacz Procedury automatyzacji Ole (opcja konfiguracji serwera).
Utworzony obiekt OLE jest automatycznie niszczony na końcu partii instrukcji Transact-SQL.
Uprawnienia
Wymaga członkostwa w sysadmin stałej roli serwera lub wykonywania uprawnień bezpośrednio w tej procedurze składowanej. Aby można było używać dowolnej procedury systemowej powiązanej z automatyzacją OLE, należy włączyć opcję konfiguracji serwera Ole Automation.
Przykłady
A. Użyj identyfikatora progID
Poniższy przykład tworzy obiekt SQL-DMO SQLServer
przy użyciu jego identyfikatora ProgID.
DECLARE @object INT;
DECLARE @hr INT;
DECLARE @src VARCHAR(255),
@desc VARCHAR(255);
EXEC @hr = sp_OACreate 'SQLDMO.SQLServer',
@object OUTPUT;
IF @hr <> 0
BEGIN
EXEC 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. Używanie identyfikatora CLSID
Poniższy przykład tworzy obiekt SQL-DMO SQLServer
przy użyciu 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 OUTPUT;
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object,
@src OUTPUT,
@desc OUTPUT
RAISERROR ('Error Creating COM Component 0x%x, %s, %s', 16, 1, @hr, @src, @desc);
RETURN
END;
GO
Powiązana zawartość
- procedur składowanych ole automation (Transact-SQL)
- Procedur automatyzacji Ole (opcja konfiguracji serwera)
- przykładowy skrypt automatyzacji OLE