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
}