In SQL Server können Sie OPENQUERY
verwenden um eine Pass-Through-Abfrage auf einem Verbindungsserver auszufü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 INSERT
auszuführen Pass-Through-Abfrage.
Beispiel
Nehmen wir an, wir haben auf dem Verbindungsserver eine Tabelle mit dem Namen Cats
erstellt , in einer Datenbank namens Pets
.
Etwa so:
EXEC ('
USE [Pets];
CREATE TABLE [dbo].[Cats](
[CatId] [int] IDENTITY(1,1) NOT NULL,
[CatName] [varchar](60) NULL
) ON [PRIMARY];
') AT Homer;
Und jetzt wollen wir Daten mit einem INSERT
einfügen Pass-Through-Abfrage.
Wir können es so machen:
INSERT OPENQUERY (
Homer,
'SELECT CatName FROM Pets.dbo.Cats'
)
VALUES
( 'FluffDupp' ),
( 'Scratch' ),
( 'Long Tail' );
In diesem Fall heißt der Verbindungsserver Homer
, und wir fügen drei Werte in Pets.dbo.Cats
ein Tabelle.
Ü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 | Long Tail | +---------+-----------+
Beachten Sie, dass OPENQUERY
akzeptiert keine Variablen für seine Argumente.