Megosztás a következőn keresztül:


OPENQUERY (Transact-SQL)

A következőre vonatkozik: :SQL ServerAzure SQL Managed Instance

Végrehajtja a megadott átmenő lekérdezést a megadott társított kiszolgálón. Ez a kiszolgáló egy OLE DB-adatforrás. Az OPENQUERY a lekérdezés FROM záradékában úgy hivatkozhat rá, mintha táblanév lenne. AZ OPENQUERY az INSERT, UPDATE vagy DELETE utasítás céltáblájaként is hivatkozhat. Ez az OLE DB-szolgáltató képességeire vonatkozik. Bár a lekérdezés több eredményhalmazt is visszaadhat, az OPENQUERY csak az elsőt adja vissza.

Transact-SQL szintaxis konvenciók

Szemantika

OPENQUERY ( linked_server ,'query' )  

Arguments

linked_server
A csatolt kiszolgáló nevét jelképező azonosító.

"lekérdezés"
A lekérdezési sztring a csatolt kiszolgálón van végrehajtva. A sztring maximális hossza 8 KB.

Megjegyzések

Az OPENQUERY nem fogad el változókat az argumentumaihoz.

Az OPENQUERY nem használható kiterjesztett tárolt eljárások végrehajtására egy csatolt kiszolgálón. A kiterjesztett tárolt eljárás azonban négyrészes névvel végrehajtható egy csatolt kiszolgálón. Például:

EXEC SeattleSales.master.dbo.xp_msver  

A FROM záradékban található OPENDATASOURCE, OPENQUERY vagy OPENROWSET hívásokat a rendszer a frissítés céljaként használt függvények hívásától függetlenül, függetlenül értékeli, még akkor is, ha a két híváshoz azonos argumentumok vannak megadva. Az egyik ilyen hívás eredményére alkalmazott szűrési vagy illesztési feltételeknek nincs hatása a másik eredményére.

Jogosultságok

Bármely felhasználó végrehajthatja az OPENQUERY-t. A távoli kiszolgálóhoz való csatlakozáshoz használt engedélyek a csatolt kiszolgálóhoz megadott beállításokból származnak.

Examples

A. UPDATE átmenő lekérdezés végrehajtása

Az alábbi példa egy átmenő UPDATE lekérdezést használ a hivatkozott kiszolgálóhoz, amely neve OracleSvr.

UPDATE OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE id = 101')   
SET name = 'ADifferentName';  

B. INSERT átmenő lekérdezés végrehajtása

Az alábbi példa egy átmenő INSERT lekérdezést használ a hivatkozott kiszolgálóhoz, amely neve OracleSvr.

INSERT OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles')  
VALUES ('NewTitle');  

C. DELETE átmenő lekérdezés végrehajtása

Az alábbi példa egy átmenő DELETE lekérdezéssel törli a B példában beszúrt sort.

DELETE OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE name = ''NewTitle''');  

D. SELECT átmenő lekérdezés végrehajtása

Az alábbi példa egy átmenő SELECT lekérdezéssel választja ki a B példában beszúrt sort.

SELECT * FROM OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE name = ''NewTitle''');  

Lásd még

DELETE (Transact-SQL)
FROM (Transact-SQL)
INSERT (Transact-SQL)
OPENDATASOURCE (Transact-SQL)
OPENROWSET (Transact-SQL)
SELECT (Transact-SQL)
sp_addlinkedserver (Transact-SQL)
sp_serveroption (Transact-SQL)
UPDATE (Transact-SQL)
WHERE (Transact-SQL)