In SQL Server, il OPENQUERY
la funzione rowset ti consente di eseguire una query pass-through su un server collegato.
OPENQUERY
è comunemente indicato nel FROM
clausola di una query come se fosse una tabella, ma può anche essere referenziata come tabella di destinazione di un INSERT
, UPDATE
o DELETE
dichiarazione.
Questo articolo presenta un esempio di utilizzo di OPENQUERY
per eseguire un UPDATE
query pass-through.
Esempio
Supponiamo che il server collegato chiamato Homer
ha una tabella in Pets
database chiamato Cats
con i seguenti dati.
SELECT * FROM OPENQUERY (
Homer,
'SELECT * FROM Pets.dbo.Cats'
);
Risultato:
+---------+-----------+ | CatId | CatName | |---------+-----------| | 1 | FluffDupp | | 2 | Scratch | | 3 | Long Tail | +---------+-----------+
E supponiamo di voler aggiornare uno dei nomi del gatto.
Potremmo farlo usando un UPDATE
query pass-through sul server collegato, in questo modo.
UPDATE OPENQUERY (
Homer,
'SELECT CatName FROM Pets.dbo.Cats WHERE CatId = 3'
)
SET CatName = 'Short Tail';
Risultato:
(1 row affected)
Controlla i risultati
Ora possiamo eseguire un SELECT
query pass-through per vedere i risultati.
SELECT * FROM OPENQUERY (
Homer,
'SELECT * FROM Pets.dbo.Cats'
);
Risultato:
+---------+------------+ | CatId | CatName | |---------+------------| | 1 | FluffDupp | | 2 | Scratch | | 3 | Short Tail | +---------+------------+
Come previsto, la terza riga è stata ora aggiornata.
Una cosa che dovrei sottolineare è che OPENQUERY
non accetta variabili per i suoi argomenti.