I SQL Server, OPENQUERY
rowset-funktionen gör att du kan köra en pass-through-fråga på en länkad server.
OPENQUERY
refereras ofta till i FROM
sats i en fråga som om den vore en tabell, men den kan också refereras till som måltabellen för en INSERT
, UPDATE
, eller DELETE
uttalande.
Den här artikeln presenterar ett exempel på hur du använder OPENQUERY
för att göra en UPDATE
genomkopplingsfråga.
Exempel
Antag att den länkade servern heter Homer
har en tabell i Pets
databas som heter Cats
med följande data.
SELECT * FROM OPENQUERY (
Homer,
'SELECT * FROM Pets.dbo.Cats'
);
Resultat:
+---------+-----------+ | CatId | CatName | |---------+-----------| | 1 | FluffDupp | | 2 | Scratch | | 3 | Long Tail | +---------+-----------+
Och låt oss säga att vi vill uppdatera ett av kattens namn.
Vi skulle kunna göra det med en UPDATE
genomgångsfråga mot den länkade servern, så här.
UPDATE OPENQUERY (
Homer,
'SELECT CatName FROM Pets.dbo.Cats WHERE CatId = 3'
)
SET CatName = 'Short Tail';
Resultat:
(1 row affected)
Kontrollera resultaten
Vi kan nu köra en SELECT
genomgångsfråga för att se resultaten.
SELECT * FROM OPENQUERY (
Homer,
'SELECT * FROM Pets.dbo.Cats'
);
Resultat:
+---------+------------+ | CatId | CatName | |---------+------------| | 1 | FluffDupp | | 2 | Scratch | | 3 | Short Tail | +---------+------------+
Som väntat har den tredje raden nu uppdaterats.
En sak jag bör påpeka är att OPENQUERY
accepterar inte variabler för sina argument.