OPENQUERY (Transact-SQL)OPENQUERY (Transact-SQL)

SI APPLICA A: sìSQL Server noDatabase SQL di Azure noAzure SQL Data Warehouse noParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Esegue la query pass-through specificata nel server collegato specificato.Executes the specified pass-through query on the specified linked server. Il server è un'origine dei dati OLE DB.This server is an OLE DB data source. È possibile fare riferimento alla funzione OPENQUERY nella clausola FROM di una query come se fosse un nome di tabella.OPENQUERY can be referenced in the FROM clause of a query as if it were a table name. È inoltre possibile fare riferimento alla funzione OPENQUERY come tabella di destinazione di un'istruzione INSERT, UPDATE o DELETE,OPENQUERY can also be referenced as the target table of an INSERT, UPDATE, or DELETE statement. a seconda delle capacità del provider OLE DB.This is subject to the capabilities of the OLE DB provider. Anche quando la query restituisce più set di risultati, la funzione OPENQUERY restituisce solo il primo set.Although the query may return multiple result sets, OPENQUERY returns only the first one.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintassiSyntax

OPENQUERY ( linked_server ,'query' )  

ArgomentiArguments

linked_serverlinked_server
Identificatore che rappresenta il nome del server collegato.Is an identifier representing the name of the linked server.

' query '' query '
Stringa della query eseguita nel server collegato.Is the query string executed in the linked server. La lunghezza massima della stringa è pari a 8 KB.The maximum length of the string is 8 KB.

RemarksRemarks

La funzione OPENQUERY non accetta variabili come argomenti.OPENQUERY does not accept variables for its arguments.

OPENQUERY non può essere utilizzata per eseguire stored procedure estese in un server collegato.OPENQUERY cannot be used to execute extended stored procedures on a linked server. È tuttavia possibile eseguire una stored procedure estesa in un server collegato utilizzando un nome in quattro parti,However, an extended stored procedure can be executed on a linked server by using a four-part name. Esempio:For example:

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.Any call to OPENDATASOURCE, OPENQUERY, or OPENROWSET in the FROM clause is evaluated separately and independently from any call to these functions used as the target of the update, even if identical arguments are supplied to the two calls. In particolare, le condizioni di filtro o join applicate al risultato di una di tali chiamate non hanno effetto sui risultati dell'altra.In particular, filter or join conditions applied on the result of one of those calls have no effect on the results of the other.

AutorizzazioniPermissions

Qualsiasi utente può eseguire OPENQUERY.Any user can execute OPENQUERY. Le autorizzazioni utilizzate per la connessione al server remoto sono ottenute dalle impostazioni definite per il server collegato.The permissions that are used to connect to the remote server are obtained from the settings defined for the linked server.

EsempiExamples

A.A. Esecuzione di una query pass-through UPDATEExecuting an UPDATE pass-through query

Nell'esempio seguente viene eseguita una query pass-through UPDATE sul server collegato creato nell'esempio A.The following example uses a pass-through UPDATE query against the linked server created in example A.

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

B.B. Esecuzione di una query pass-through INSERTExecuting an INSERT pass-through query

Nell'esempio seguente viene eseguita una query pass-through INSERT sul server collegato creato nell'esempio A.The following example uses a pass-through INSERT query against the linked server created in example A.

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

C.C. Esecuzione di una query pass-through DELETEExecuting a DELETE pass-through query

Nell'esempio seguente viene eseguita una query pass-through DELETE per eliminare la riga inserita nell'esempio C.The following example uses a pass-through DELETE query to delete the row inserted in example C.

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

D.D. Esecuzione di una query pass-through SELECTExecuting a SELECT pass-through query

Nell'esempio seguente viene eseguita una query pass-through SELECT per selezionare la riga inserita nell'esempio C.The following example uses a pass-through SELECT query to select the row inserted in example C.

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

Vedere ancheSee Also

DELETE (Transact-SQL) DELETE (Transact-SQL)
FROM (Transact-SQL) FROM (Transact-SQL)
INSERT (Transact-SQL) INSERT (Transact-SQL)
OPENDATASOURCE (Transact-SQL) OPENDATASOURCE (Transact-SQL)
OPENROWSET (Transact-SQL) OPENROWSET (Transact-SQL)
Funzioni per i set di righe (Transact-SQL) Rowset Functions (Transact-SQL)
SELECT (Transact-SQL) SELECT (Transact-SQL)
sp_addlinkedserver (Transact-SQL) sp_addlinkedserver (Transact-SQL)
sp_serveroption (Transact-SQL) sp_serveroption (Transact-SQL)
UPDATE (Transact-SQL) UPDATE (Transact-SQL)
WHERE (Transact-SQL)WHERE (Transact-SQL)