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.