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
Mostra:
© 2014 Microsoft