Поделиться через


Программирование набора свойств SQLPROPSET_OPTHINTS

Отдельные поставщики OLE DB могут поддерживать некоторые функции SQL, кроме тех, которые определены в DBPROPVAL_SQL_SUBMINIMUM, но не все функции DBPROPVAL_SQL_ODBC_CORE или DBPROPVAL_SQL_ANSI92_ENTRY. Оптимизатор запросов SQL Server может использовать некоторые функции этих драйверов, чтобы увеличить производительность распределенных запросов. Эти поставщики могут использовать набор свойств SQLPROPSET_OPTHINTS, чтобы сообщить SQL Server о поддерживаемых функциях, которые могут ускорить распределенные запросы.

Хотя набор свойств SQLPROPSET_OPTHINTS определен в документации SQL Server, разработчики поставщиков OLE DB должны встроить поддержку этого набора свойств в коде. После реализации поддержки этого набора свойств SQL Server использует его для оптимизации производительности распределенных запросов.

Поставщикам OLE DB, поддерживающим DBPROPVAL_SQL_ANSI92_ENTRY или DBPROPVAL_SQL_ODBC_CORE, не требуются свойства SQLPROPSET_OPTHINTS, кроме SQLPROP_DATELITERALS. Эти поставщики должны поддерживать все функциональные возможности набора свойств SQLPROPSET_OPTHINTS (кроме SQLPROP_DATELITERALS), чтобы соответствовать DBPROPVAL_SQL_ANSI92_ENTRY или DBPROPVAL_SQL_ODBC_CORE.

В следующей таблице перечислены свойства, о которых сообщается в SQLPROPSET_OPTHINTS.

Свойство

Описание

SQLPROP_ANSILIKE

Указывает, что предложение LIKE поддерживается согласно определению начального уровня ISO, с символами-шаблонами «%» и «_».

SQLPROP_DATELITERALS

Указывает, что поставщик поддерживает литералы или константы datetime, как в любом другом синтаксисе Transact-SQL.

SQLPROP_DYNAMICSQL

Указывает, что поставщик поддерживает синтаксис маркеров параметров ODBC, используя знак вопроса (?).

SQLPROP_INNERJOIN

Указывает, что поставщик поддерживает ссылки на несколько таблиц в предложении WHERE, если только они не являются ссылками на внешние соединения.

SQLPROP_GROUPBY

Указывает, что поставщик поддерживает предложения GROUP BY и HAVING в инструкции SELECT. Это свойство также указывает, что поставщик поддерживает статистические функции AVG, COUNT, MIN, MAX и SUM, если только в качестве аргумента функции не указано ключевое слово DISTINCT.

SQLPROP_NESTEDQUERIES

Указывает, что поставщик поддерживает вложенные инструкции SELECT в предложении FROM.

SQLPROP_SQLLIKE

Указывает, что поставщик поддерживает синтаксис LIKE сервера SQL Server. Если свойство SQLPROP_SQLLIKE включено, оптимизатор может отправлять запросы, содержащие предикат SQL Server LIKE удаленному серверу, если это оправдано планом запроса. Если параметр SQLPROP_SQLLIKE выключен, предикат SQL Server LIKE всегда оценивается локально.

SQLPROP_SUBQUERIES

Указывает, что поставщик поддерживает вложенные запросы согласно определению начального уровня ISO.

Ниже перечислены константы, используемые для определения набора свойств SQLPROPSET_OPTHINTS в коде поставщиков OLE DB:

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
}