OPENQUERY (Transact-SQL)

更新 : 2006 年 7 月 17 日

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

トピック リンク アイコンTransact-SQL 構文表記規則

構文

OPENQUERY ( linked_server ,'query' )

引数

  • linked_server
    リンク サーバーの名前を表す識別子を指定します。
  • 'query'
    リンク サーバーで実行するクエリ文字列を指定します。文字列の最大長は 8 KB です。

解説

OPENQUERY の引数に変数は指定できません。

SQL Server 2000 以降のバージョンでは、OPENQUERY を使用して、リンク サーバーで拡張ストアド プロシージャを実行することはできません。ただし、4 つの要素で構成される名前を使用して、リンク サーバーで拡張ストアド プロシージャを実行することはできます。次に例を示します。

EXEC SeattleSales.master.dbo.xp_msver

権限

すべてのユーザーが OPENQUERY を実行できます。リモート サーバーへの接続に使用される権限は、リンク サーバー用の定義から取得されます。

A. SELECT パススルー クエリを実行する

次の例では、Microsoft OLE DB Provider for Oracle を使用して、Oracle データベースに OracleSvr というリンク サーバーを作成します。次に、このリンク サーバーに対して SELECT パススルー クエリを実行します。

ms188427.note(ja-jp,SQL.90).gifメモ :
この例では、ORCLDB という Oracle データベースの別名が作成されていることを前提としています。
EXEC sp_addlinkedserver 'OracleSvr', 
   'Oracle 7.3', 
   'MSDAORA', 
   'ORCLDB'
GO
SELECT *
FROM OPENQUERY(OracleSvr, 'SELECT name, id FROM joe.titles') 
GO

B. UPDATE パススルー クエリを実行する

次の例では、例 A で作成したリンク サーバーに対して、 UPDATE パススルー クエリを使用します。

UPDATE OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE id = 101') 
SET name = 'ADifferentName';

C. INSERT パススルー クエリを実行する

次の例では、例 A で作成したリンク サーバーに対して、 INSERT パススルー クエリを使用します。

INSERT OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles')
VALUES ('NewTitle');

D. DELETE パススルー クエリを実行する

次の例では、DELETE パススルー クエリを使用して、例 C で追加した行を削除します。

DELETE OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE name = ''NewTitle''');

参照

関連項目

DELETE (Transact-SQL)
FROM (Transact-SQL)
INSERT (Transact-SQL)
FILEGROUPPROPERTY (Transact-SQL)
OPENROWSET (Transact-SQL)
行セット関数 (Transact-SQL)
SELECT (Transact-SQL)
sp_addlinkedserver (Transact-SQL)
sp_serveroption (Transact-SQL)
UPDATE (Transact-SQL)
WHERE (Transact-SQL)

その他の技術情報

分散クエリ

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2006 年 7 月 17 日

追加内容 :
  • INSERT、UPDATE、および DELETE の例を追加。

2006 年 4 月 14 日

新しい内容 :
  • 拡張ストアド プロシージャに課される制限への対応方法を追加。