Как установить или отключить Тайм-аут запроса с подключением ODBC C базы данных C ++ к базе данных SQL Сервера - PullRequest
0 голосов
/ 29 апреля 2020

Мне нужно выполнить запрос по какому-то коду. Выполнение запроса в MSSMS занимает полторы минуты (не так уж и плохо для более 4 миллионов строк). В коде я открываю соединение с

CDatabase *base = new CDatabase () ;
base->OpenEx ("Driver={SQL Server};Server=Computer\\User;Database=base;") ;

, затем я могу создавать CRecordset объекты и выполнять запросы. Запрос SELECT COUNT работает правильно (дает ~ 4M). Первый SELECT cols запрос (выборка некоторых атрибутов) работает правильно. Их соответствующие CRecordset правильно закрыты и очищены. Второй SELECT cols запрос (большое соединение, которое возвращает строки 4M) истекает при каждой попытке.

Я не знаю, как установить значение тайм-аута запроса, как будет вызываться этот параметр или куда установить его в первую очередь. Я попытался много комбинаций параметров в строке подключения, я попытался отредактировать опции пула пилот-сигналов ODB C. Меня не интересует использование другого объекта соединения ODB C, но я могу настроить DSN и подключиться через него вместо использования строки прямого соединения.

В худшем случае я просто разбью все на страницы но сейчас это хлопотно, и, так как запрос может истечь, логически должен быть способ установить и этот тайм-аут, я хотел бы знать, что это такое.

1 Ответ

1 голос
/ 30 апреля 2020

Тайм-аут запроса не является параметром строки подключения, по крайней мере, не для SQL Сервер. Возможно, вы ищете функцию-член CDatabase :: SetQueryTimeout .

...