OLE DB プロバイダの SQL 言語構文の要件

OLE DB プロバイダが SQL をどのレベルまでサポートするかによって、SQL Server が分散クエリ処理を OLE DB プロバイダにどれだけ有効に委任できるかが決まります。SQL をサポートしていないプロバイダが行セットのみを開く場合は、分散クエリが必要とする行がソース行セットの一部のみでも、SQL Server は行セットの全体を取得して、すべての論理操作を実行しなければなりません。OLE DB プロバイダが多数の SQL 構文要素をサポートしている場合は、SQL Server はより高度なクエリを生成し、SQL Server に行セットを戻す前に、ソース プロバイダで不要な行がフィルタ処理されます。

OLE DB 仕様では、プロバイダがサポートする SQL 構文のレベルを報告するための手段である、DBPROP_SQLSUPPORT プロパティが定義されています。以下に、SQL Server の各バージョンが分散クエリで必要とする SQL サポートの最小限のレベルを示します。

  • SQL Server 2005 : DBPROPVAL_SQL_SUBMINIMUM

  • SQL Server 2000 : DBPROPVAL_SQL_SUBMINIMUM

  • SQL Server 7.0 : DBPROPVAL_SQL_ANSI92_ENTRY または DBPROPVAL_SQL_ODBC_CORE

SQL Server 2000 以降では、基本となる OLE DB プロバイダの下位レベルの SQL 構文をサポートする以外に、SQLPROPSET_OPTHINTS プロパティ セットが定義されています。OLE DB プロバイダでは、このプロパティ セットを使用して、DBPROPVAL_SQL_SUBMINIMUM に定義された以外の各 SQL 構文要素をサポートするように指定できます。プロバイダが分散クエリの最適化に使用できる 1 つまたは 2 つの機能をサポートしていても、DBPROPVAL_SQL_ANSI92_ENTRY 構文または DBPROPVAL_SQL_ODBC_CORE 構文を完全にはサポートしていない場合、そのプロバイダは SQLPROPSET_OPTHINTS プロパティを使用して、サポートしている機能を SQL Server に通知できます。