In SQL Server ist die OPENQUERY
Mit der Rowset-Funktion können Sie eine Pass-Through-Abfrage auf einem Verbindungsserver ausführen.
OPENQUERY
wird üblicherweise in FROM
referenziert -Klausel einer Abfrage, als wäre es eine Tabelle, sie kann aber auch als Zieltabelle eines INSERT
referenziert werden , UPDATE
, oder DELETE
Aussage.
Dieser Artikel enthält ein Beispiel für die Verwendung von OPENQUERY
um ein DELETE
auszuführen Pass-Through-Abfrage.
Beispiel
Angenommen, der Verbindungsserver heißt Homer
hat eine Tabelle in den Pets
Datenbank namens Cats
mit folgenden Daten.
SELECT * FROM OPENQUERY (
Homer,
'SELECT * FROM Pets.dbo.Cats'
);
Ergebnis:
+---------+------------+ | CatId | CatName | |---------+------------| | 1 | FluffDupp | | 2 | Scratch | | 3 | Short Tail | +---------+------------+
Und sagen wir, wir wollen eine der Katzen aus der Datenbank löschen.
Wir könnten das mit einem DELETE
tun Pass-Through-Abfrage an den Verbindungsserver, wie hier.
DELETE OPENQUERY (
Homer,
'SELECT CatName FROM Pets.dbo.Cats WHERE CatId = 2'
);
Ergebnis:
(1 row affected)
Überprüfen Sie die Ergebnisse
Wir können jetzt ein SELECT
ausführen Pass-Through-Abfrage, um die Ergebnisse anzuzeigen.
SELECT * FROM OPENQUERY (
Homer,
'SELECT * FROM Pets.dbo.Cats'
);
Ergebnis:
+---------+------------+ | CatId | CatName | |---------+------------| | 1 | FluffDupp | | 3 | Short Tail | +---------+------------+
Wie erwartet wurde die zweite Zeile gelöscht und es sind jetzt nur noch zwei Zeilen übrig.
Zu beachten ist, dass OPENQUERY
akzeptiert keine Variablen für seine Argumente.