CommandTimeout
и т. Д. Действительно следует увеличивать только для каждого конкретного сценария. Это может избежать неожиданно длительных сценариев блокировки и т. Д. (Или, что еще хуже, сценарий необнаруженной тупиковой ситуации). Что касается как высоко ... сколько времени занимает запрос? Добавьте запас, и у вас есть ответ.
Другое, что нужно сделать, конечно, это сократить время, затрачиваемое на запрос. Это может означать ручную оптимизацию некоторых TSQL в sproc, обычно в сочетании с проверкой стратегии индексации, и, возможно, более крупные изменения, такие как денормализация или другие изменения схемы. Это может также включать стратегию хранилища данных, поэтому вы можете перенести нагрузку на отдельную базу данных (в отличие от транзакционных данных) с помощью схемы, оптимизированной для создания отчетов. Может быть, звездная схема.
Я бы не стал устанавливать бесконечность ... Я не ожидаю, что запуск отчета займет вечность. Выберите номер, который имеет смысл для отчета.
Да, SQL Server может зависнуть, так что команда никогда не завершится. Открытая блокирующая транзакция будет самой простой ... получите две, и вы можете зайти в тупик. Обычно система обнаруживает локальный тупик - но не всегда, особенно если задействован DTC (т.е. нелокальные блокировки).