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.