Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment faire une requête INSERT Pass-Through dans SQL Server

Dans SQL Server, vous pouvez utiliser OPENQUERY pour exécuter une requête directe sur un serveur lié.

OPENQUERY est généralement référencé dans le FROM clause d'une requête comme s'il s'agissait d'une table, mais elle peut également être référencée comme table cible d'un INSERT , UPDATE , ou DELETE déclaration.

Cet article présente un exemple d'utilisation de OPENQUERY faire un INSERT requête directe.

Exemple

Disons que nous avons créé une table sur le serveur lié appelée Cats , dans une base de données appelée Pets .

Quelque chose comme ça :

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

Et maintenant, nous voulons insérer des données en utilisant un INSERT requête directe.

Nous pouvons le faire comme ceci :

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

Dans ce cas, le serveur lié s'appelle Homer , et nous insérons trois valeurs dans le Pets.dbo.Cats tableau.

Vérifiez les résultats

Nous pouvons maintenant exécuter un SELECT requête directe pour voir les résultats.

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

Résultat :

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

Notez que OPENQUERY n'accepte pas les variables pour ses arguments.