Выделение дескриптора инструкции

Применимо к: SQL Server Azure SQL DatabaseУправляемый экземпляр SQL AzureAzure Synapse AnalyticsAnalytics Platform System (PDW)

Прежде чем приложение сможет выполнить инструкцию, оно должно выделить дескриптор инструкции. Это делается путем вызова SQLAllocHandle с параметром HandleType , равным SQL_HANDLE_STMT, и InputHandle , указывающим на дескриптор подключения.

Атрибуты инструкции представляют собой характеристики дескриптора инструкции. Атрибуты образца инструкции могут включать закладки и курсор для использования с результирующим набором инструкции. Атрибуты инструкции задаются с помощью SQLSetStmtAttr, а их текущие параметры извлекаются с помощью SQLGetStmtAttr. Приложению не обязательно устанавливать атрибуты инструкции, все они имеют значения по умолчанию, а некоторые зависят от драйвера.

При использовании некоторых инструкций ODBC и параметров соединения следует соблюдать осторожность. Вызов SQLSetConnectAttr с параметром fOption , для SQL_ATTR_LOGIN_TIMEOUT управляет временем ожидания ожидания попытки подключения приложением во время ожидания установки подключения (0 указывает бесконечное ожидание). Сайты с низким временем ответа могут задать большее значение, чтобы дать приложению достаточно времени для установления соединения. Тем не менее этот интервал должен быть достаточно низким, чтобы дать пользователю ответ в том случае, если драйвер не может установить соединение.

Вызов SQLSetStmtAttr с параметром fOption , для SQL_ATTR_QUERY_TIMEOUT задает интервал времени ожидания запроса, чтобы защитить сервер и пользователя от длительных запросов.

Вызов SQLSetStmtAttr с параметром fOption , для которого задано значение SQL_ATTR_MAX_LENGTH, ограничивает объем текстовых и графических данных, которые может извлечь отдельная инструкция. Вызов SQLSetStmtAttr с параметром fOption , для SQL_ATTR_MAX_ROWS также ограничивает набор строк первыми n строк, если это все, что требуется приложению. Обратите внимание, что по значению SQL_ATTR_MAX_ROWS драйвер выполняет инструкцию SET ROWCOUNT на сервере. Это влияет на все инструкции microsoft SQL Server, включая триггеры и обновления.

Соблюдайте осторожность при установке этих параметров. Лучше, если все дескрипторы инструкций в дескрипторе соединения будут иметь одинаковые значения SQL_ATTR_MAX_LENGTH и SQL_ATTR_MAX_ROWS. Если драйвер переключается с одного дескриптора инструкции на другой с разными значениями этих параметров, то он должен для изменения значений формировать соответствующие инструкции SET TEXTSIZE и SET ROWCOUNT. Драйвер не может поместить эти инструкции в один пакет как пользовательские инструкции SQL, поскольку пользовательские инструкции SQL могут содержать инструкцию, которая должна быть первой в пакете. Драйвер должен отправлять инструкции SET TEXTSIZE и SET ROWCOUNT в отдельных пакетах, что приводит к появлению дополнительного обращения к серверу.

См. также:

Выполнение запросов (ODBC)