Как изменить тайм-аут для выполняемого вручную запроса в 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 отлично подходит для обновлений таблиц с несколькими миллионами записей.