OPENQUERY (Transact-SQL)
Si applica a: SQL Server Istanza gestita di SQL di Azure
Esegue la query pass-through specificata nel server collegato specificato. Il server è un'origine dei dati OLE DB. È possibile fare riferimento alla funzione OPENQUERY nella clausola FROM di una query come se fosse un nome di tabella. È inoltre possibile fare riferimento alla funzione OPENQUERY come tabella di destinazione di un'istruzione INSERT, UPDATE o DELETE, a seconda delle capacità del provider OLE DB. Anche quando la query restituisce più set di risultati, la funzione OPENQUERY restituisce solo il primo set.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
OPENQUERY ( linked_server ,'query' )
Argomenti
linked_server
Identificatore che rappresenta il nome del server collegato.
' query '
Stringa della query eseguita nel server collegato. La lunghezza massima della stringa è pari a 8 KB.
Osservazioni:
La funzione OPENQUERY non accetta variabili come argomenti.
OPENQUERY non può essere utilizzata per eseguire stored procedure estese in un server collegato. È tuttavia possibile eseguire una stored procedure estesa in un server collegato utilizzando un nome in quattro parti, Ad esempio:
EXEC SeattleSales.master.dbo.xp_msver
Qualsiasi chiamata a OPENDATASOURCE, OPENQUERY o OPENROWSET nella clausola FROM viene valutata separatamente e indipendentemente da qualsiasi altra chiamata a queste funzioni utilizzate come destinazione dell'aggiornamento, anche se alle due chiamate vengono forniti argomenti identici. In particolare, le condizioni di filtro o join applicate al risultato di una di tali chiamate non hanno effetto sui risultati dell'altra.
Autorizzazioni
Qualsiasi utente può eseguire OPENQUERY. Le autorizzazioni utilizzate per la connessione al server remoto sono ottenute dalle impostazioni definite per il server collegato.
Esempi
R. Esecuzione di una query pass-through UPDATE
Nell'esempio seguente viene eseguita una query pass-through UPDATE
sul server collegato creato nell'esempio A.
UPDATE OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE id = 101')
SET name = 'ADifferentName';
B. Esecuzione di una query pass-through INSERT
Nell'esempio seguente viene eseguita una query pass-through INSERT
sul server collegato creato nell'esempio A.
INSERT OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles')
VALUES ('NewTitle');
C. Esecuzione di una query pass-through DELETE
Nell'esempio seguente viene eseguita una query pass-through DELETE
per eliminare la riga inserita nell'esempio B.
DELETE OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE name = ''NewTitle''');
D. Esecuzione di una query pass-through SELECT
Nell'esempio seguente viene eseguita una query pass-through SELECT
per selezionare la riga inserita nell'esempio B.
SELECT * FROM OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE name = ''NewTitle''');
Vedi anche
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)