Как изменить тайм-аут для выполняемого вручную запроса в SQL Server?
У меня есть простой сценарий SQL, который я выполняю вручную из Visual Studio. Это скрипт генерации данных, поэтому я ожидаю, что он займет пару минут. Но я получаю следующую ошибку.
Тайм-аут истек. Период ожидания истекший до завершения операция или сервер не отвечать на запросы.
Я не хочу изменять какие-либо глобальные настройки сервера, чтобы иметь возможность запускать этот файл. Есть ли какие-либо команды, которые я мог бы поместить в начало файла, чтобы увеличить время ожидания только для этого сценария/транзакции?
Ответы
Ответ 1
Если вы используете SQL Management Studio, в настройках есть два параметра (я имею в виду Management Studio от SQL Server 2005, который я использую):
(моя студия управления на немецком языке, поэтому я надеюсь, что правильно перевел имена на английский язык)
Вы можете найти оба в меню в разделе "Дополнительно" → "Параметры"
В параметрах первая находится в разделе "Выполнение запроса", вы можете установить "Тайм-аут выполнения" там (мой уже был на ноль)
Второй (и я думаю, что это то, что вам нужно) - это первый вариант в разделе "Дизайнер", он говорит что-то вроде "Override Timeout для обновлений дизайнерских таблиц", вы можете установить флажок и поставить там значение.
Некоторое время назад у меня была проблема, похожая на вашу (сообщение о тайм-ауте при запуске ALTER TABLE на большой таблице), и я решил это, установив этот параметр на более высокое значение.
Ответ 2
Увеличение свойства CommandTimeout решит проблему
то есть.
SqlCommandObject.CommandTimeout = 500000
Ответ 3
Увеличьте значения тайм-аута запроса и времени ожидания соединения в Visual Studio, используя процедуры, описанные ниже.
Изменение тайм-аута запроса:
В Visual Studio IDE перейдите в Инструменты → Параметры → Инструменты базы данных → Дизайнеры запросов и представлений
Вы можете либо снять флажок "Отменить длительный запрос", либо изменить значение "Отмена после опции" на более высокое значение.
Изменение таймаута соединения:
В среде Visual Studio IDE включите проводник сервера, перейдя в View → Server Explorer
В проводнике сервера щелкните правой кнопкой мыши по соединению с SQL Server, на котором развертываются объекты среды CLR, и выберите "Изменить подключение".
Нажмите кнопку "Дополнительно" в окне "Изменить соединение".
В окне "Дополнительные параметры" измените значение "Время ожидания подключения" в разделе "Инициализация" на более высокое значение.
http://support.microsoft.com/kb/2011805
Ответ 4
@christian ответ не работал у меня (изменение настроек в SQL Management Studio).
Ответ Бисвы работал на меня. Я буду включать код для уточнения
SqlCommand cmd = new SqlCommand("MyReport", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandTimeout = 60; /* note default is 30 sec */
Ответ 5
SQL Server будет ждать бесконечно, прежде чем вернуться к пользователю. Скорее всего, было установлено свойство тайм-аута на стороне клиента. Например, вы можете установить свойство timeout для объекта команды ADO.
Приветствия, Энди.
Ответ 6
Ничего, я могу отлично работать с SQL Management Studio.
Ответ 7
Просто хотел прояснить конкретные шаги для Microsoft SQL Server Management Studio 2005... Обязательные настройки "Дизайнер" обязательно должны быть настроены, даже если в разделе "Выполнение запросов" установлено значение "0", поскольку "Дизайнерские" символы переопределяют "Выполнение запроса".
- Откройте Microsoft SQL Server Management Studio 2005
- Инструменты → Параметры
- Развернуть "Дизайнеры"
- Я обнаружил, что установка "Тайм-аут транзакции после" до 120 отлично подходит для обновлений таблиц с несколькими миллионами записей.