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