SQL Serverでは、OPENQUERY 行セット関数を使用すると、リンクサーバーでパススルークエリを実行できます。
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 | +---------+------------+
そして、データベースから猫の1匹を削除したいとします。
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 | +---------+------------+
予想どおり、2番目の行が削除され、残りの行は2つだけになりました。
注意すべき点の1つは、OPENQUERY 引数に変数を受け入れません。