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 DELETE
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 | Short Tail | +---------+------------+
Och låt oss säga att vi vill ta bort en av katterna från databasen.
Vi skulle kunna göra det med en DELETE
genomgångsfråga mot den länkade servern, så här.
DELETE OPENQUERY (
Homer,
'SELECT CatName FROM Pets.dbo.Cats WHERE CatId = 2'
);
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 | | 3 | Short Tail | +---------+------------+
Som väntat togs den andra raden bort och det finns nu bara två rader kvar.
En sak att notera är att OPENQUERY
accepterar inte variabler för sina argument.