Я пытаюсь добавить столбец в таблицу с большим количеством данных в SQL Server 2005, используя SSMS.
Итак, я перехожу к таблице, выбираю «Изменить» и добавляю новый столбец. Затем, когда я нажимаю Сохранить, я получаю следующее предупреждение:
Сохранение изменений определений в таблицах с большими объемами данных может занять значительное время. Пока изменения сохраняются, данные таблицы будут недоступны
Я в порядке, БД отключена, и у меня есть все время, поэтому я нажимаю Да.
Однако через 30 секунд операция переходит в тайм-аут с таким сообщением:
Невозможно изменить таблицу. Истекло время ожидания. Время ожидания истекло до завершения операции или сервер не отвечает.
Затем, когда я нажимаю ОК:
Пользователь вышел из диалогового окна сохранения (MS Visual Database Tools)
Я этого не понимаю. Я установил тайм-аут выполнения на 0 (бесконечный) как в диалоговом окне подключения SSMS, так и в разделе Инструменты -> Параметры -> Выполнение запроса -> SQL Server. Какой смысл устанавливать тайм-аут выполнения, если он просто игнорируется?
Кто-нибудь знает, какое значение тайм-аута здесь используется и как я могу его установить?
Похоже на настройку тайм-аута. Таким образом, ваша SSMS считает, что это занимает слишком много времени, и отменяет соединение для вас. Роли SQL-сервера вернулись. Но есть помощь. Вы не первый, кто с этим сталкивается.
Видеть Вот.
Для всех, кто не хочет переходить по ссылке. Вот ответ на выигрыш по цене:
После того, как я столкнулся с той же ошибкой, я наткнулся на настройку corrent.
В Management Studio в меню «Инструменты» выберите «Параметры» и нажмите «Дизайнеры». Существует опция «Переопределить значение времени ожидания строки подключения для обновлений конструктора таблиц:» В поле «Время ожидания транзакции после:» вы увидите волшебные 30 секунд.
// ДЕЛАЙТЕ СЛЕДУЮЩЕЕ:
Откройте студию управления SQL Server -> Меню «Инструменты» -> Параметры -> Вкладка «Дизайнеры» -> Конструктор таблиц и баз данных -> Увеличьте время ожидания с 30 до 65 535 секунд -> ОК
// Теперь вы можете сохранить изменения в таблице. // Надеюсь, что это поможет, и проверьте мой блог @: //www.ogolla.blogspot.com
Этот ответ пришел ко мне в Google, даже когда я думал, что добавляю индекс, а не меняю столбец.
Есть лучший способ делать длительные изменения:
1) Внесите желаемые изменения в дизайн стола. Не нажимайте «Сохранить».
2) В SSMS щелкните Конструктор таблиц ... Затем сгенерируйте сценарий изменения ...
3) В окне вы увидите скрипт, который при выполнении внесет изменения, которые вы поставили в очередь в дизайнере.
4) Вы можете сохранить и запустить этот сценарий в SMSS или что вы можете сделать, если уверены, - это «скопировать» сценарий из этого окна в буфер обмена. Скажите «нет» сохранению файла. Затем закройте конструктор БЕЗ СОХРАНЕНИЯ (технически теряя изменения в БД) и откройте новое окно запроса. Вставьте сценарий изменения, затем выполните сценарий. Ваши изменения будут применены к БД, даже если на это уйдут годы.
SSMS не следует использовать для общей модификации данных. Освоитесь с T-SQL и добавьте столбец, как предложено ниже.
ALTER TABLE TableName ДОБАВИТЬ NewColumn INT
SSMS фактически создает новую таблицу со всеми столбцами, импортирует данные в новую таблицу и удаляет старую. Даже если у вас есть все время в мире, если есть эффективный способ сделать что-то, вы должны использовать правильный метод. Чтобы избежать этого беспорядка, в SQL Server 2008 не разрешен GUI-метод IIRC.