I SQL Server er OPENQUERY
rowset-funktionen giver dig mulighed for at udføre en pass-through-forespørgsel på en forbundet server.
OPENQUERY
refereres almindeligvis til i FROM
klausul af en forespørgsel, som om den var en tabel, men den kan også refereres til som måltabellen for en INSERT
, UPDATE
eller DELETE
erklæring.
Denne artikel præsenterer et eksempel på brug af OPENQUERY
for at lave en UPDATE
pass-through-forespørgsel.
Eksempel
Antag, at den linkede server kaldet Homer
har en tabel i Pets
database kaldet Cats
med følgende data.
SELECT * FROM OPENQUERY (
Homer,
'SELECT * FROM Pets.dbo.Cats'
);
Resultat:
+---------+-----------+ | CatId | CatName | |---------+-----------| | 1 | FluffDupp | | 2 | Scratch | | 3 | Long Tail | +---------+-----------+
Og lad os sige, at vi vil opdatere et af kattens navne.
Vi kunne gøre det ved at bruge en UPDATE
pass-through-forespørgsel mod den linkede server, som denne.
UPDATE OPENQUERY (
Homer,
'SELECT CatName FROM Pets.dbo.Cats WHERE CatId = 3'
)
SET CatName = 'Short Tail';
Resultat:
(1 row affected)
Tjek resultaterne
Vi kan nu køre en SELECT
pass-through-forespørgsel for at se resultaterne.
SELECT * FROM OPENQUERY (
Homer,
'SELECT * FROM Pets.dbo.Cats'
);
Resultat:
+---------+------------+ | CatId | CatName | |---------+------------| | 1 | FluffDupp | | 2 | Scratch | | 3 | Short Tail | +---------+------------+
Som forventet er tredje række nu blevet opdateret.
En ting, jeg bør påpege, er, at OPENQUERY
accepterer ikke variabler for sine argumenter.