Share via


パススルー クエリのテーブルとしての使用

SQL Server でパススルー クエリは、変換されていないクエリ文字列として OLE DB データ ソースに送信されます。パススルー クエリは、OLE DB データ ソースが許容する構文に準拠している必要があります。Transact-SQL ステートメントは、パススルー クエリからの結果を標準のテーブル参照と同じように使用します。

OLE DB プロバイダから行セットを生成するには、以下の方法があります。

  • プロバイダが表形式の行セットとして公開するデータ ソースの中のオブジェクトを参照します。すべてのプロバイダは、この機能をサポートしています。

  • プロバイダに対し、そのプロバイダが処理でき、結果を行セットとして公開できるコマンドを送信します。この機能を使用するには、プロバイダが OLE DB の Command オブジェクトとそれに必要なすべてのインターフェイスをサポートしている必要があります。

プロバイダが Command オブジェクトをサポートしている場合は、次の Transact-SQL 関数を使用してコマンドを送信できます。これらのコマンドはパススルー クエリと呼ばれます。

  • OPENQUERY は、リンク サーバー名を使用して OLE DB データ ソースにコマンド文字列を送信します。

  • OPENROWSET と OPENDATASOURCE は OLE DB データ ソースへのコマンド文字列の送信をサポートしています。結果の行セットは、アドホック名を使用して参照できます。

OPENROWSET と OPENQUERY は、クエリが次の状態のいずれかに当てはまる場合にのみ、クエリ文字列にストアド プロシージャの呼び出しが含まれるパススルー クエリをサポートします。

  • 単一の静的な SELECT ステートメントを実行する。

  • 動的な EXECUTE ステートメントを使用しない。

  • データ変更操作を実行しない。

OLE DB 仕様では、すべての OLE DB プロバイダが使用すべきコマンド言語として特定の言語は定義されていません。OLE DB プロバイダは、公開するデータに関連しているコマンド言語を任意にサポートできます。リレーショナル データベースのデータを公開する OLE DB プロバイダは、一般的に SQL 言語をサポートします。その他の種類のプロバイダ、たとえば、電子メール ファイルまたはネットワーク ディレクトリ内のデータを公開するプロバイダは、一般的に別の言語をサポートしています。