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 wie eine Tabelle, 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 UPDATE
durchzufü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 | Long Tail | +---------+-----------+
Und nehmen wir an, wir möchten den Namen einer Katze aktualisieren.
Wir könnten das mit einem UPDATE
machen Pass-Through-Abfrage an den Verbindungsserver, wie hier.
UPDATE OPENQUERY (
Homer,
'SELECT CatName FROM Pets.dbo.Cats WHERE CatId = 3'
)
SET CatName = 'Short Tail';
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 | | 2 | Scratch | | 3 | Short Tail | +---------+------------+
Wie erwartet wurde nun die dritte Zeile aktualisiert.
Eine Sache, auf die ich hinweisen sollte, ist, dass OPENQUERY
akzeptiert keine Variablen für seine Argumente.