Программирование набора свойств 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
}