Библиотека курсоров ODBC

Применимо к:SQL ServerAzure SQL DatabaseAzure Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)

Некоторые драйверы ODBC поддерживают только параметры курсора по умолчанию; Эти драйверы также не поддерживают операции с позиционированных курсоров, например SQLSetPos. Библиотека курсоров ODBC — компонент доступа к данным MDAC, используемый для реализации блочных или статических курсоров на драйвере, который обычно не поддерживает их. Библиотека курсоров также реализует инструкции UPDATE и DELETE и SQLSetPos для курсоров, которые он создает.

Библиотека курсоров ODBC реализована как уровень между диспетчером драйверов ODBC и драйвером ODBC. Если библиотека курсоров ODBC загружена, диспетчер драйверов ODBC направляет все относящиеся к курсору команды в библиотеку курсоров, а не драйвер. Библиотека курсоров реализует курсор путем выборки целого результирующего набора из базового драйвера и кэширования результирующего набора на клиенте. При использовании библиотеки курсоров ODBC приложение ограничено функциональностью курсора для библиотеки курсоров; любая дополнительная функциональность базового драйвера недоступна для приложения.

Не нужно использовать библиотеку курсоров ODBC с драйвером ODBC собственного клиента SQL Server, так как сам драйвер поддерживает больше функций курсора, чем библиотека курсоров ODBC. Единственной причиной использования библиотеки курсоров ODBC с драйвером ODBC собственного клиента SQL Server является то, что драйвер реализует поддержку курсоров с помощью курсоров сервера, а курсоры сервера не поддерживают все инструкции SQL. Всегда, когда необходимо иметь статический курсор с хранимыми процедурами, пакетами или инструкциями SQL, содержащими предложение COMPUTE, COMPUTE BY, FOR BROWSE или INTO, используйте библиотеку курсоров ODBC. Однако при использовании библиотеки курсоров необходима осмотрительность, так как кэширование всего результирующего набора на клиенте может потребовать большого объема памяти и снизить производительность.

Приложение вызывает библиотеку курсоров на основе подключения с помощью SQLSetConnectAttr , чтобы задать атрибут подключения SQL_ATTR_ODBC_CURSORS перед подключением к источнику данных. SQL_ATTR_ODBC_CURSORS устанавливается в одно из трех значений:

SQL_CUR_USE_ODBC
Если этот параметр задан с драйвером ODBC собственного клиента SQL Server, библиотека курсоров ODBC переопределяет поддержку собственного курсора драйвера ODBC для SQL Server Native Client. Только типы курсора, поддерживаемые библиотекой курсоров, могут быть использованы для соединения; серверные курсоры не могут быть использованы.

SQL_CUR_USE_DRIVER
Если этот параметр задан, для подключения можно использовать все курсоры, собственные для драйвера ODBC собственного клиента SQL Server. Библиотека курсоров ODBC не может быть использована. Все курсоры реализованы как серверные курсоры.

SQL_CUR_USE_IF_NEEDED
Если этот параметр задан, эффект совпадает с SQL_CUR_USE_DRIVER при использовании с драйвером ODBC собственного клиента SQL Server. Во время подключения диспетчер драйверов ODBC проверяет, подключен ли драйвер ODBC для поддержки SQL_FETCH_PRIOR параметра SQLFetchScroll. Если драйвер не поддерживает параметр, диспетчер драйверов ODBC загружает библиотеку курсоров ODBC. Если драйвер поддерживает параметр, диспетчер драйверов ODBC не загружает библиотеку курсоров ODBC и приложение использует собственную поддержку драйвера. Так как драйвер ODBC собственного клиента SQL Server поддерживает SQL_FETCH_PRIOR, диспетчер драйверов ODBC не загружает библиотеку курсоров ODBC.

Библиотека курсоров ODBC позволяет приложениям использовать несколько активных инструкций для соединения, а также прокручиваемые, обновляемые курсоры. Библиотека курсоров должна быть загружена для поддержки этой функциональности. Используйте SQLSetConnectAttr, чтобы указать, как следует использовать библиотеку курсоров и SQLSetStmtAttr, чтобы указать тип курсора, параллелизм и размер набора строк.

См. также

Способы реализации курсоров