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