Выделение дескриптора инструкции
Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics 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 в отдельных пакетах, что приводит к появлению дополнительного обращения к серверу.