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

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

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.