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.