Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

So führen Sie eine UPDATE Pass-Through-Abfrage in SQL Server durch

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.