Тайм-аут команды SQL Server - только исполняемый файл - PullRequest
1 голос
/ 26 февраля 2011

Я получаю сообщение об ошибке:

System.Data.SqlClient.SqlException: Истекло время ожидания.

Я проследил это до тайм-аута команды, который по умолчанию установлен на 30 секунд. Конечно, при профилировании завершается (не удается) через 30 секунд на точке.

Простой ответ - увеличить значение CommandTimeout в коде. Вот подвох - у меня есть только исполняемый файл для работы.

Запрашиваемый запрос является хранимой процедурой, которая обычно выполняется между 18-26 секундами, и недавно он увеличился до 30+ секунд. Я сделал все от меня зависящее, чтобы оптимизировать запрос, который представляет собой один безобразный выбор для трех таблиц с объединениями. В любом случае это не вариант, так как набор данных будет продолжать расти и в будущем снова станет проблемой.

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

Я готов начать декомпиляцию исполняемого файла, чтобы попытаться переопределить / установить значение по умолчанию для тайм-аута команды.

Любые предложения о том, как я могу непрограммически увеличить значение тайм-аута команды, легко установить значение тайм-аута команды или другое (надеюсь, более разумное) решение?

Спасибо за вашу помощь!

ps - я уже довольно давно читаю ТАК. Моя репутация воняет, потому что я всегда нахожу ответ без необходимости писать. Вы, ребята, потрясающие, и я рад, что наконец нашел способ начать!

1 Ответ

2 голосов
/ 26 февраля 2011

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

Это значение, устанавливаемое команда за командой, поэтому все, что не относится к команде, не повлияет на нее.

...