sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man gör en INSERT Pass-Through Query i SQL Server

I SQL Server kan du använda OPENQUERY för att utföra en genomkopplingsfråga på en länkad server.

OPENQUERY refereras ofta till i FROM sats i en fråga som om den vore en tabell, men den kan också refereras till som måltabellen för en INSERT , UPDATE , eller DELETE uttalande.

Den här artikeln presenterar ett exempel på hur du använder OPENQUERY för att göra en INSERT genomkopplingsfråga.

Exempel

Låt oss säga att vi skapade en tabell på den länkade servern som heter Cats , i en databas som heter Pets .

Något så här:

EXEC ('
    USE  [Pets];
    CREATE TABLE [dbo].[Cats](
        [CatId] [int] IDENTITY(1,1) NOT NULL,
        [CatName] [varchar](60) NULL
    ) ON [PRIMARY];
') AT Homer;

Och nu vill vi infoga data med en INSERT genomkopplingsfråga.

Vi kan göra så här:

INSERT OPENQUERY (
    Homer, 
    'SELECT CatName FROM Pets.dbo.Cats'
    )
VALUES 
    ( 'FluffDupp' ),
    ( 'Scratch' ),
    ( 'Long Tail' );

I det här fallet kallas den länkade servern Homer , och vi infogar tre värden i Pets.dbo.Cats bord.

Kontrollera resultaten

Vi kan nu köra en SELECT genomgångsfråga för att se resultaten.

SELECT * FROM OPENQUERY (
    Homer, 
    'SELECT * FROM Pets.dbo.Cats'
    );

Resultat:

+---------+-----------+
| CatId   | CatName   |
|---------+-----------|
| 1       | FluffDupp |
| 2       | Scratch   |
| 3       | Long Tail |
+---------+-----------+

Observera att OPENQUERY accepterar inte variabler för sina argument.


  1. Django, mod_wsgi, psycopg2 Felaktigt konfigurerad:Fel vid laddning av psycopg2-modul:Ingen modul med namnet _psycopg

  2. SQL Server-utlösare:DML-utlösare

  3. Prestanda av SUBSTR på CLOB

  4. Hur Ln()-funktionen fungerar i PostgreSQL