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 un DELETE
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 | Short Tail | +---------+------------+
Et disons que nous voulons supprimer l'un des chats de la base de données.
Nous pourrions le faire en utilisant un DELETE
requête directe sur le serveur lié, comme ceci.
DELETE OPENQUERY (
Homer,
'SELECT CatName FROM Pets.dbo.Cats WHERE CatId = 2'
);
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 | | 3 | Short Tail | +---------+------------+
Comme prévu, la deuxième ligne a été supprimée et il ne reste plus que deux lignes.
Une chose à noter est que OPENQUERY
n'accepte pas les variables pour ses arguments.