Udostępnij za pośrednictwem


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.

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

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''');