OPENQUERY (języka Transact-SQL)
Wykonuje kwerenda przekazująca do określonego serwer połączony.Ten serwer jest urządzenie źródłowe danych OLE DB.Można odwoływać się w klauzula FROM kwerendy OPENQUERY tak, jakby była to nazwa tabela.OPENQUERY można także odwoływać się w tabela miejsce docelowe INSERT, UPDATE, lub Instrukcja DELETE.Podlega to funkcje dostawca OLE DB.Mimo że kwerenda może zwracać wiele zestawów wyników, OPENQUERY zwraca tylko pierwszy z nich.
OPENQUERY ( linked_server ,'query' )
Argumenty
linked_server
Identyfikator jest reprezentującym nazwę serwer połączony.'query'
Ciąg kwerendy jest wykonywane w serwer połączony.Maksymalna długość ciąg wynosi 8 KB.
Remarks
OPENQUERY nie akceptuje zmienne dla jej argumentów.
OPENQUERY nie może być używany w celu wykonać rozszerzonych procedur przechowywanych serwer połączony.Jednak rozszerzone procedura przechowywana mogą być wykonywane serwer połączony przy użyciu nazwy four-part.Na przykład:
EXEC SeattleSales.master.dbo.xp_msver
Uprawnienia
Każdy użytkownik może wykonywać OPENQUERY.Uprawnienia, które są używane do łączenia się z serwerem zdalnym są uzyskiwane z ustawieniami określonymi dla serwer połączony.
Przykłady
A.Wykonywanie kwerenda przekazująca WYBIERAJĄCEJ
W poniższym przykładzie przedstawiono tworzenie serwer połączony, o nazwie OracleSvr przed bazy danych Oracle przy użyciu Microsoft OLE DB dostawca for Oracle. Następnie w tym przykładzie użyto przekazujące SELECT Kwerenda dla tego serwer połączony.
Uwaga
W tym przykładzie założono, że wywołania alias bazy danych Oracle ORCLDB został utworzony.
EXEC sp_addlinkedserver 'OracleSvr',
'Oracle 7.3',
'MSDAORA',
'ORCLDB';
GO
SELECT *
FROM OPENQUERY(OracleSvr, 'SELECT name, id FROM joe.titles');
GO
B.Wykonywanie kwerenda przekazująca aktualizującej
W poniższym przykładzie użyto przekazujące UPDATE kwerendy serwer połączony utworzone w przykładzie A.
UPDATE OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE id = 101')
SET name = 'ADifferentName';
C.Wykonywanie kwerenda przekazująca INSERT
W poniższym przykładzie użyto przekazujące INSERT kwerendy serwer połączony utworzone w przykładzie A.
INSERT OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles')
VALUES ('NewTitle');
D.Wykonywanie kwerenda przekazująca DELETE
W poniższym przykładzie użyto przekazujące DELETE kwerendy, aby usunąć wiersz wstawiony w przykładzie C.
DELETE OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE name = ''NewTitle''');
See Also