Dans SQL Server, le OPENQUERY
La fonction d'ensemble de lignes vous permet d'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 une UPDATE
requête directe.
Exemple
Supposons que le serveur lié appelé Homer
a une table dans les Pets
base de données appelée Cats
avec les données suivantes.
SELECT * FROM OPENQUERY (
Homer,
'SELECT * FROM Pets.dbo.Cats'
);
Résultat :
+---------+-----------+ | CatId | CatName | |---------+-----------| | 1 | FluffDupp | | 2 | Scratch | | 3 | Long Tail | +---------+-----------+
Et disons que nous voulons mettre à jour l'un des noms de chat.
Nous pourrions le faire en utilisant un UPDATE
requête directe sur le serveur lié, comme ceci.
UPDATE OPENQUERY (
Homer,
'SELECT CatName FROM Pets.dbo.Cats WHERE CatId = 3'
)
SET CatName = 'Short Tail';
Résultat :
(1 row affected)
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 | Short Tail | +---------+------------+
Comme prévu, la troisième ligne a maintenant été mise à jour.
Une chose que je dois souligner est que OPENQUERY
n'accepte pas les variables pour ses arguments.