Требования к диалекту SQL для поставщиков OLE DB

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

Спецификацией OLE DB определено свойство DBPROP_SQLSUPPORT, которое позволяет поставщику объявить уровень синтаксиса SQL, который он поддерживает. Минимальными уровнями поддержки SQL, необходимыми разным версиям SQL Server для выполнения распределенных запросов, являются:

  • 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 соответствующими поставщиками OLE DB, в SQL Server 2000 и более поздних версиях определен набор свойств SQLPROPSET_OPTHINTS, который используются поставщиками для объявления поддержки отдельных элементов синтаксиса SQL, выходящих за рамки DBPROPVAL_SQL_SUBMINIMUM. Если поставщик поддерживает одну или две возможности, применяемые для оптимизации распределенных запросов, но не поддерживает полный синтаксис DBPROPVAL_SQL_ANSI92_ENTRY или DBPROPVAL_SQL_ODBC_CORE, он может при помощи свойств SQLPROPSET_OPTHINTS уведомить SQL Server о том, какие именно параметры оптимизации он поддерживает.