SQL SERVERのOpenQueryの使い方

1. OpenQueryの使用手順

  指定されたリンク サーバー上で指定されたパススルー クエリを実行します。サーバーは OLE DB データ ソースです。OPENQUERY は、テーブル名であるかのように、クエリの FROM 句で参照できます。OPENQUERY は、INSERT、UPDATE、または DELETE ステートメントのターゲット テーブルとして参照することもできます。ただし、これは OLE DB プロバイダーの機能によって異なります。クエリは複数の結果セットを返す場合がありますが、OPENQUERY は最初の結果セットのみを返します。

2. OpenQuery の構文

OPENQUERY ( linked_server ,'query' ) 

2.1 パラメータの説明

linked_server は、
リンク サーバー名の識別子を表します。
ここに画像の説明を挿入します
リンクの構成方法については、以前のドキュメントを参照してください: mysql リンク サーバーを SQL Server データベースに追加する方法 (Windows システム)およびOracle リンク サーバーを SQL Server データベースに追加する方法 (Windows システム)

'query'
リンク サーバーで実行されるクエリ文字列。この文字列の最大長は 8 KB です。

2.2 注意事項

OPENQUERY はパラメータとして変数を受け入れません。

OPENQUERY を使用して、リンク サーバーに対して拡張ストアド プロシージャを実行することはできません。ただし、拡張ストアド プロシージャは、4 つの部分からなる名前を使用してリンク サーバー上で実行できます。例えば:

EXEC SeattleSales.master.dbo.xp_msver  

FROM 句での OPENDATASOURCE、OPENQUERY、または OPENROWSET の呼び出しは、両方の呼び出しに指定されたパラメーターが同じであっても、更新ターゲットとして使用されるこれらの関数の呼び出しとは別に評価されます。具体的には、上記のいずれかの呼び出しの結果に適用されたフィルターまたは結合条件は、他の呼び出しの結果には影響しません。

3. 例

3.1 SELECTパスクエリの実行

次の例では、SELECT パス クエリを使用してデータ (例: id = 1) を選択します。

SELECT * FROM OPENQUERY(MySQLTest,'SELECT * FROM test_table WHERE id = ''1''')

ここに画像の説明を挿入します

3.2 UPDATE配信クエリの実行

次の例では、MySQLTest (例で作成したリンク サーバー名) の UPDATE パス クエリを使用します。
ここに画像の説明を挿入します
私の環境で実行したところ上記のエラーが発生しましたが、原因はまだ判明していません。

3.3 INSERT パスクエリの実行

次の例では、MySQLTest (例で作成したリンク サーバー名) に対する INSERT パススルー クエリを使用します。
ここに画像の説明を挿入します

3.4 DELETEパスクエリの実行

次の例では、MySQLTest (例で作成したリンク サーバー名) に対する DELETE パス クエリを使用します。
ここに画像の説明を挿入します

私の環境で実行したところ上記のエラーが発生しましたが、原因はまだ判明していません。

おすすめ

転載: blog.csdn.net/slb190623/article/details/132782364