Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Драйвер ODBC для собственного клиента SQL Server не поддерживает модель смешанного курсора (набор ключей или динамический). Попытки задать размер набора ключей с помощью SQL_ATTR_KEYSET_SIZE завершаются ошибкой, если набор значений не равен 0.
Приложение задает SQL_ATTR_ROW_ARRAY_SIZE для всех инструкций, чтобы объявить количество строк, возвращаемых при вызове функции SQLFetch или SQLFetchScroll . В инструкциях, указывающих на курсор сервера, драйвер использует SQL_ATTR_ROW_ARRAY_SIZE для определения размера блока строк, генерируемых сервером для удовлетворения запроса на получение из курсора. В пределах размера блока динамического курсора членство в строках и упорядочивание фиксируются, если уровень изоляции транзакций достаточно, чтобы обеспечить повторяющиеся операции чтения зафиксированных транзакций. Курсор полностью динамичен вне блока, указанного этим значением. Размер блока курсора сервера полностью динамический и может быть изменен в любой момент при обработке получения.
Параметры SQLSetStmtAttr и Table-Valued
SQLSetStmtAttr можно использовать для задания SQL_SOPT_SS_PARAM_FOCUS в дескрипторе параметра приложения (APD) перед доступом к полям дескриптора для столбцов параметров с табличным значением.
Если предпринята попытка задать SQL_SOPT_SS_PARAM_FOCUS порядковый номер параметра, который не является табличным параметром, SQLSetStmtAttr возвращает SQL_ERROR, а диагностическая запись создается с помощью SQLSTATE = HY024 и сообщение "Недопустимое значение атрибута". SQL_SOPT_SS_PARAM_FOCUS не изменяется при возврате SQL_ERROR.
Установка SQL_SOPT_SS_PARAM_FOCUS значение 0 восстанавливает доступ к записям дескриптора для параметров.
SQLSetStmtAttr также можно использовать для задания SQL_SOPT_SS_NAME_SCOPE. Дополнительные сведения см. в разделе SQL_SOPT_SS_NAME_SCOPE далее в этом разделе.
Дополнительные сведения см. в разделеTable-Valued Метаданные параметров для подготовленных инструкций.
Дополнительные сведения о табличном значении параметров см. в разделе "Параметры с табличным значением" (ODBC).
Поддержка SQLSetStmtAttr для разреженных столбцов
SQLSetStmtAttr можно использовать для задания SQL_SOPT_SS_NAME_SCOPE. Дополнительные сведения см. в разделе SQL_SOPT_SS_NAME_SCOPE далее в этом разделе. Дополнительные сведения о разреженных столбцах см. в разделе "Поддержка разреженных столбцов" (ODBC).
Атрибуты заявления
Драйвер ODBC для собственного клиента SQL Server также поддерживает следующие атрибуты инструкции для конкретного драйвера.
SQL_SOPT_SS_CURSOR_OPTIONS
Атрибут SQL_SOPT_SS_CURSOR указывает, будет ли драйвер использовать параметры производительности для конкретного драйвера на курсорах. SQLGetData не допускается при установке этих параметров. Параметр по умолчанию — SQL_CO_OFF. Значение ValuePtr имеет тип SQLLEN.
| Значение ValuePtr | Описание |
|---|---|
| SQL_CO_OFF | По умолчанию. Отключает курсоры только для чтения и автозабор только для чтения, включает SQLGetData только для перенаправления, доступные только для чтения. Если SQL_SOPT_SS_CURSOR_OPTIONS задано значение SQL_CO_OFF, тип курсора не изменится. То есть курсор только для быстрого переадресации останется курсором только вперед. Чтобы изменить тип курсора, приложение должно задать другой тип курсора с помощью SQLSetStmtAttr/SQL_ATTR_CURSOR_TYPE. |
| SQL_CO_FFO | Включает быстрый переадресацию, только для чтения курсоров, отключает SQLGetData только для перенаправления, доступные только для чтения. |
| SQL_CO_AF | Включает параметр автозабора для любого типа курсора. Если этот параметр задан для дескриптора инструкции, SQLExecute или SQLExecDirect создаст неявный SQLFetchScroll (SQL_FIRST). Курсор открывается, и первый пакет строк возвращается в одном цикле на сервер. |
| SQL_CO_FFO_AF | Включает курсоры только вперед с параметром автозабора. Это то же самое, что и при указании обоих SQL_CO_AF и SQL_CO_FFO. |
При установке этих параметров сервер автоматически закрывает курсор при обнаружении того, что последняя строка была возвращена. Приложение должно по-прежнему вызывать SQLFreeStmt (SQL_CLOSE) или SQLCloseCursor, но драйвер не должен отправлять близкое уведомление серверу.
Если список выбора содержит текст, ntext или столбец изображения , то курсор только для быстрого переадресации преобразуется в динамический курсор и SQLGetData разрешено.
SQL_SOPT_SS_DEFER_PREPARE
Атрибут SQL_SOPT_SS_DEFER_PREPARE определяет, подготавливается ли инструкция немедленно или откладывается до выполнения SQLExecute, SQLDescribeCol или SQLDescribeParam. В SQL Server 7.0 и более ранних версий это свойство игнорируется (не откладывается подготовка). Значение ValuePtr имеет тип SQLLEN.
| Значение ValuePtr | Описание |
|---|---|
| SQL_DP_ON | По умолчанию. После вызова функции SQLPrepare подготовка инструкции откладывается до тех пор, пока sqlExecute не будет вызвана или выполняется операция метапрописи (SQLDescribeCol или SQLDescribeParam). |
| SQL_DP_OFF | Инструкция подготавливается сразу после выполнения SQLPrepare . |
SQL_SOPT_SS_REGIONALIZE
Атрибут SQL_SOPT_SS_REGIONALIZE используется для определения преобразования данных на уровне инструкции. Атрибут приводит к тому, что драйвер учитывает параметр языкового стандарта клиента при преобразовании значений даты, времени и валюты в символьные строки. Преобразование выполняется только из собственных типов данных SQL Server в символьные строки.
Значение ValuePtr имеет тип SQLLEN.
| Значение ValuePtr | Описание |
|---|---|
| SQL_RE_OFF | По умолчанию. Драйвер не преобразует данные даты, времени и валюты в символьные строковые данные с помощью параметра языкового стандарта клиента. |
| SQL_RE_ON | Драйвер использует параметр языкового стандарта клиента при преобразовании данных даты, времени и валюты в символьные строковые данные. |
Региональные параметры преобразования применяются к типам данных валюты, числовых, дат и времени. Параметр преобразования применим только к выходным преобразованиям, если значения валюты, числовых, дат или времени преобразуются в символьные строки.
Замечание
Если параметр инструкции SQL_SOPT_SS_REGIONALIZE включен, драйвер использует параметры реестра языкового стандарта для текущего пользователя. Драйвер не учитывает языковой стандарт текущего потока, если приложение задает его, например, вызывая SetThreadLocale.
Изменение регионального поведения источника данных может привести к сбою приложения. Приложение, которое анализирует строки даты и ожидает, что строки даты будут отображаться как определено ODBC, могут быть негативно затронуты путем изменения этого значения.
SQL_SOPT_SS_TEXTPTR_LOGGING
Атрибут SQL_SOPT_SS_TEXTPTR_LOGGING переключает ведение журнала операций с столбцами, содержащими текстовые или изображения . Значение ValuePtr имеет тип SQLLEN.
| Значение ValuePtr | Описание |
|---|---|
| SQL_TL_OFF | Отключает ведение журнала операций, выполняемых с данными текста и изображения . |
| SQL_TL_ON | По умолчанию. Включает ведение журнала операций, выполняемых с данными текста и изображения . |
SQL_SOPT_SS_HIDDEN_COLUMNS
Атрибут SQL_SOPT_SS_HIDDEN_COLUMNS предоставляет в результирующем наборе столбцы, скрытые в инструкции SQL Server SELECT FOR BROWSE. Драйвер по умолчанию не предоставляет эти столбцы. Значение ValuePtr имеет тип SQLLEN.
| Значение ValuePtr | Описание |
|---|---|
| SQL_HC_OFF | По умолчанию. Столбцы FOR BROWSE скрыты из результирующего набора. |
| SQL_HC_ON | Предоставляет столбцы FOR BROWSE. |
Атрибут SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT
Атрибут SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT возвращает текст сообщения для запроса на уведомление.
SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS
Атрибут SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS указывает параметры, используемые для запроса на уведомление запроса. Они указаны в строке с name=value синтаксисом, как указано ниже. Приложение отвечает за создание службы и чтение уведомлений из очереди.
Строка параметров уведомлений запросов имеет следующий синтаксис.
service=<service-name>[;(local database=<database>|broker instance=<broker instance>)]
Рассмотрим пример.
service=mySSBService;local database=mydb
SQL_SOPT_SS_QUERYNOTIFICATION_TIMEOUT
Атрибут SQL_SOPT_SS_QUERYNOTIFICATION_TIMEOUT указывает количество секунд, в течение которых уведомление запроса остается активным. Значение по умолчанию — 432000 секунд (5 дней). Значение ValuePtr имеет тип SQLLEN.
SQL_SOPT_SS_PARAM_FOCUS
Атрибут SQL_SOPT_SS_PARAM_FOCUS задает фокус для последующих вызовов SQLBindParameter, SQLGetDescField, SQLSetDescField, SQLGetDescRec и SQLSetDescRec.
Тип для SQL_SOPT_SS_PARAM_FOCUS — SQLULEN.
Значение по умолчанию равно 0, что означает, что эти вызовы вызывают параметры адреса, соответствующие маркерам параметров в инструкции SQL. Если задано значение параметра с табличным значением, эти вызовы вызывают столбцы адресов этого табличного параметра. Если задано значение, которое не является номером параметра табличного значения, эти вызовы возвращают ошибку IM020: "Фокус параметра не ссылается на параметр с табличным значением".
SQL_SOPT_SS_NAME_SCOPE
Атрибут SQL_SOPT_SS_NAME_SCOPE указывает область имени для последующих вызовов функции каталога. Результирующий набор, возвращаемый SQLColumns, зависит от параметра SQL_SOPT_SS_NAME_SCOPE.
Тип SQL_SOPT_SS_NAME_SCOPE — SQLULEN.
| Значение ValuePtr | Описание |
|---|---|
| SQL_SS_NAME_SCOPE_TABLE | По умолчанию. При использовании возвращаемых табличным значением параметров следует возвращать метаданные для фактических таблиц. При использовании функции разреженных столбцов SQLColumns возвращает только столбцы, которые не являются членами разреженного. column_set |
| SQL_SS_NAME_SCOPE_TABLE_TYPE | Указывает, что приложению требуются метаданные для типа таблицы, а не фактическая таблица (функции каталога должны возвращать метаданные для типов таблиц). Затем приложение передает TYPE_NAME табличного параметра в качестве параметра TableName . |
| SQL_SS_NAME_SCOPE_EXTENDED | При использовании функции разреженных столбцов SQLColumns возвращает все столбцы независимо от column_set членства. |
| SQL_SS_NAME_SCOPE_SPARSE_COLUMN_SET | При использовании функции разреженных столбцов SQLColumns возвращает только столбцы, которые являются элементами разреженного.column_set |
| SQL_SS_NAME_SCOPE_DEFAULT | Равно SQL_SS_NAME_SCOPE_TABLE. |
SS_TYPE_CATALOG_NAME и SS_TYPE_SCHEMA_NAME используются с параметрами CatalogName и SchemaName соответственно для идентификации каталога и схемы для параметра с табличным значением. Когда приложение закончит получать метаданные для возвращающего табличное значение параметра, оно должно вновь присвоить SQL_SOPT_SS_NAME_SCOPE значение по умолчанию SQL_SS_NAME_SCOPE_TABLE.
Если SQL_SOPT_SS_NAME_SCOPE имеет значение SQL_SS_NAME_SCOPE_TABLE, то запросы к связанным серверам завершаются ошибкой. Вызовы SQLColumns или SQLPrimaryKeys с каталогом, содержащим компонент сервера, завершаются ошибкой.
Если вы пытаетесь задать SQL_SOPT_SS_NAME_SCOPE недопустимым значением, возвращается SQL_ERROR и создается диагностическая запись с помощью SQLSTATE HY024 и сообщения "Недопустимое значение атрибута".
Если функция каталога другая, то sqlColumns или SQLPrimaryKeys вызывается, если SQL_SOPT_SS_NAME_SCOPE имеет значение, отличное от SQL_SS_NAME_SCOPE_TABLE, возвращается SQL_ERROR. Запись диагностики создается с помощью SQLSTATE HY010 и сообщение "Ошибка последовательности функций (SQL_SOPT_SS_NAME_SCOPE не задано для SQL_SS_NAME_SCOPE_TABLE)".
См. также
Функция SQLGetStmtAttr
Подробные сведения о реализации API-интерфейсов ODBC