У меня есть приложение, подключающееся к базе данных SQL Server через ODBC, и обеспечивающее функциональность запросов через веб-интерфейс.Чтобы отобразить базу данных на нашу веб-среду, я использую прокручиваемый набор результатов.В большинстве остальных приложений используется курсор только для пересылки.
У меня есть таблица заказов с огромным количеством строк и запрос:
SELECT * FROM order
Если я запускаюэто с моей собственной программой командной строки, она сразу начинает возвращать данные.Если я получу только 25 строк, запрос выполняется очень быстро.Если я запускаю его на веб-экранах, запрос прерывается через 30 секунд, не возвращая никаких данных.
Оба метода выполняют одинаковую последовательность вызовов, за исключением типа курсора.В программе командной строки я использую SQLSetStmtAttr
, чтобы установить SQL_ATTR_CURSOR_TYPE
на SQL_CURSOR_FORWARD_ONLY
, а в веб-версии я использую SQL_CURSOR_DYNAMIC
.
Я пошел с отладчиком, чтобы выяснить,где задержка, и то, что я видел, это вызов SQLExecute
, который занимает около 50 секунд с курсором, установленным на динамический.Для информации, я использовал SQL_CURSOR_STATIC
раньше, и SQL_CURSOR_DYNAMIC
- моя первая попытка исправить проблему.
Есть ли способ получить результативный прокручиваемый набор результатов в SQL Server через ODBC?