Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come eseguire una query pass-through INSERT in SQL Server

In SQL Server puoi utilizzare OPENQUERY per eseguire una query pass-through su un server collegato.

OPENQUERY è comunemente indicato nel FROM clausola di una query come se fosse una tabella, ma può anche essere referenziata come tabella di destinazione di un INSERT , UPDATE o DELETE dichiarazione.

Questo articolo presenta un esempio di utilizzo di OPENQUERY per fare un INSERT query pass-through.

Esempio

Supponiamo di aver creato una tabella sul server collegato chiamata Cats , in un database chiamato Pets .

Qualcosa del genere:

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

E ora vogliamo inserire i dati usando un INSERT query pass-through.

Possiamo farlo in questo modo:

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

In questo caso, il server collegato si chiama Homer e stiamo inserendo tre valori in Pets.dbo.Cats tabella.

Controlla i risultati

Ora possiamo eseguire un SELECT query pass-through per vedere i risultati.

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

Risultato:

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

Nota che OPENQUERY non accetta variabili per i suoi argomenti.