SQL Serverでは、OPENQUERY
行セット関数を使用すると、リンクサーバーでパススルークエリを実行できます。
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 | +---------+-----------+
そして、猫の名前の1つを更新したいとします。
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 | +---------+------------+
予想どおり、3行目が更新されました。
私が指摘しなければならないことの1つは、OPENQUERY
引数に変数を受け入れません。