В SQL Server, OPENQUERY функцията rowset ви позволява да изпълните преходна заявка на свързан сървър.
OPENQUERY обикновено се споменава в FROM клауза на заявка, сякаш е таблица, но може да се посочи и като целева таблица на INSERT , UPDATE или DELETE изявление.
Тази статия представя пример за използване на OPENQUERY за да направите DELETE преминаваща заявка.
Пример
Да предположим, че свързаният сървър, наречен Homer има таблица в Pets база данни, наречена Cats със следните данни.
SELECT * FROM OPENQUERY (
Homer,
'SELECT * FROM Pets.dbo.Cats'
); Резултат:
+---------+------------+ | CatId | CatName | |---------+------------| | 1 | FluffDupp | | 2 | Scratch | | 3 | Short Tail | +---------+------------+
И да кажем, че искаме да изтрием една от котките от базата данни.
Можем да направим това с помощта на DELETE транзитна заявка към свързания сървър, като тази.
DELETE OPENQUERY (
Homer,
'SELECT CatName FROM Pets.dbo.Cats WHERE CatId = 2'
); Резултат:
(1 row affected)
Проверете резултатите
Вече можем да изпълним SELECT преминаваща заявка, за да видите резултатите.
SELECT * FROM OPENQUERY (
Homer,
'SELECT * FROM Pets.dbo.Cats'
); Резултат:
+---------+------------+ | CatId | CatName | |---------+------------| | 1 | FluffDupp | | 3 | Short Tail | +---------+------------+
Както се очакваше, вторият ред беше изтрит и сега остават само два реда.
Едно нещо, което трябва да се отбележи е, че OPENQUERY не приема променливи за своите аргументи.