Esporta (0) Stampa
Espandi tutto
Espandi Riduci a icona

OPENQUERY (Transact-SQL)

Data aggiornamento: 17 luglio 2006

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.

Icona di collegamento a un argomento Convenzioni della sintassi Transact-SQL


OPENQUERY ( linked_server ,'query' )

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.

La funzione OPENQUERY non accetta variabili come argomenti.

In SQL Server 2000 e versioni successive la funzione 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, come illustrato di seguito:

EXEC SeattleSales.master.dbo.xp_msver

Qualsiasi utente può eseguire OPENQUERY. Le autorizzazioni utilizzate per la connessione al server remoto sono ottenute dalle impostazioni definite per il server collegato.

A. Esecuzione di una query pass-through SELECT

Nell'esempio seguente viene creato un server collegato denominato OracleSvr per un database Oracle con il provider Microsoft OLE DB per Oracle. Viene quindi eseguita una query pass-through SELECT sul server collegato.

ms188427.note(it-it,SQL.90).gifNota:
In questo esempio si presuppone che sia stato creato un alias denominato ORCLDB per il database Oracle.

EXEC sp_addlinkedserver 'OracleSvr', 
   'Oracle 7.3', 
   'MSDAORA', 
   'ORCLDB'
GO
SELECT *
FROM OPENQUERY(OracleSvr, 'SELECT name, id FROM joe.titles') 
GO

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

A. Esecuzione di una query pass-through DELETE

Nell'esempio seguente viene eseguita una query pass-through DELETE per eliminare la riga inserita nell'esempio C.

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

Versione Cronologia

17 luglio 2006

Nuovo contenuto:
  • Aggiunta di esempi relativi a INSERT, UPDATE e DELETE.

14 aprile 2006

Nuovo contenuto:
  • Aggiunta della soluzione alternativa per la restrizione relativa alle stored procedure estese.

Aggiunte alla community

AGGIUNGI
Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?
Mostra:
© 2014 Microsoft