Share via


SQLPROPSET_OPTHINTS プロパティ セットのプログラミング

各 OLE DB プロバイダは、DBPROPVAL_SQL_SUBMINIMUM で定義されたもの以外に一部の SQL 機能をサポートできますが、DBPROPVAL_SQL_ODBC_CORE や DBPROPVAL_SQL_ANSI92_ENTRY の機能のすべてをサポートすることはできません。SQL Server クエリ オプティマイザは、これらのドライバによりサポートされる機能の一部を使用して、分散クエリのパフォーマンスを向上できます。これらのプロバイダは SQLPROPSET_OPTHINTS プロパティ セットを使用して、分散クエリを高速化できるサポート機能を SQL Server に通知できます。

SQLPROPSET_OPTHINTS プロパティ セットが SQL Server ドキュメントに定義されていますが、各 OLE DB プロバイダ開発者は、開発者自身が作成するプロバイダにプロパティ セットのサポートを組み込む必要があります。このプロパティ セットのサポートがプロバイダに組み込まれていれば、SQL Server はそれを使用して分散クエリのパフォーマンスを最適化します。

DBPROPVAL_SQL_ANSI92_ENTRY または DBPROPVAL_SQL_ODBC_CORE をサポートする OLE DB プロバイダは、SQLPROP_DATELITERALS を除いて SQLPROPSET_OPTHINTS プロパティをどれも必要としません。これらのプロバイダは、SQLPROPSET_OPTHINTS プロパティ セット (SQLPROP_DATELITERALS を除く) が対応しているすべての機能をサポートし、DBPROPVAL_SQL_ANSI92_ENTRY または DBPROPVAL_SQL_ODBC_CORE をサポートする必要があります。

次の表は、SQLPROPSET_OPTHINTS により通知されないプロパティを示しています。

プロパティ

説明

SQLPROP_ANSILIKE

ISO 基本レベルでの定義のとおりに、% および _ のワイルドカード文字で LIKE 句をサポートするよう指定します。

SQLPROP_DATELITERALS

プロバイダが datetime リテラル、つまり定数を Transact-SQL 構文のとおりにサポートするよう指定します。

SQLPROP_DYNAMICSQL

プロバイダが ODBC パラメータ マーカー構文を疑問符 (?) でサポートするよう指定します。

SQLPROP_INNERJOIN

WHERE 句の複数のテーブルへの参照が外部結合参照でない限り、プロバイダがその参照をサポートするよう指定します。

SQLPROP_GROUPBY

プロバイダが SELECT ステートメント内の GROUP BY 句と HAVING 句をサポートするよう指定します。また、プロパティは、DISTINCT が集計引数として指定されない限り、プロバイダが集計関数の AVG、COUNT、MIN、MAX、SUM をサポートするよう指定します。

SQLPROP_NESTEDQUERIES

FROM 句で入れ子になった SELECT ステートメントをプロバイダがサポートするよう指定します。

SQLPROP_SQLLIKE

プロバイダが SQL Server の LIKE 構文をサポートするよう指定します。SQLPROP_SQLLIKE が有効な場合、クエリ プランにより認められれば、オプティマイザは SQL Server の LIKE 述語を含むクエリをリモート サーバーに送信できます。SQLPROP_SQLLIKE が無効な場合は、SQL Server の LIKE 述語は常にローカルで評価されます。

SQLPROP_SUBQUERIES

プロバイダが ISO 基本レベルでの定義のようにサブクエリをサポートするよう指定します。

OLE DB プロバイダのコードで SQLPROPSET_OPTHINTS プロパティ セットを定義するために使用する定数を次に示します。

Extern const GUID SQLPROPSET_OPTHINTS =
{ 0x2344480c, 0x33a7, 0x11d1,
     { 0x9b, 0x1a, 0x0, 0x60, 0x8, 0x26, 0x8b, 0x9e }
};
enum SQLPROPERTIES
{
     SQLPROP_NESTEDQUERIES = 0x4,
     SQLPROP_DYNAMICSQL = 0x5,
     SQLPROP_GROUPBY = 0x6,
     SQLPROP_DATELITERALS = 0x7,
     SQLPROP_ANSILIKE = 0x8,
     SQLPROP_INNERJOIN = 0x9,
     SQLPROP_SUBQUERIES = 0x10,
     SQLPROP_SQLLIKE = 0x15
}