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
引数に変数を受け入れません。