Forcing Management Studio использовать ALTER TABLE вместо DROP/CREATE

Мне интересно, есть ли способ заставить MSSQL Management Studio создать script следующим образом:

ALTER TABLE Mytable
ADD MyCol bit NOT NULL
CONSTRAINT MyColDefault
DEFAULT 0 WITH VALUES


ALTER TABLE [dbo].Mytable
ALTER COLUMN MyCol2 int NULL

GO 

когда я изменяю очень простое свойство столбца таблицы. Если я сделаю это в дизайнере и попрошу создать script, script не выполняет такие простые задачи, а вместо этого копирует все данные в таблице tmp, отбрасывает исходную таблицу, переименовывает таблицу tmp с помощью оригинал таблица name. И, конечно же, капли и воссоздают все ограничения и отношения.

Есть ли какой-либо параметр, который я могу изменить, чтобы изменить это поведение? Или, возможно, это возможно, есть ли какая-то опасность, которую я не вижу в использовании простой ALTER TABLE выше?

спасибо.

Ответ 1

Вы не можете изменить поведение, это просто, что созданный по умолчанию script он не всегда является самым эффективным. Он создает сценарии в формате, который знает, хотя часто результаты будут медленными и ресурсоемкими. Я рекомендую вам привыкнуть к созданию script для всех изменений самостоятельно, так как вы можете оптимизировать его. Нет ничего плохого в том, что вы создали (при условии, что у вас нет существующих ограничений/зависимостей в MyCol2, которые были бы недействительными, становясь нулевым int)

Ответ 2

Да, ты можешь!

В SQL Server Management Studio перейдите в режим конструирования таблицы для рассматриваемой таблицы и внесите изменения. Однако: не нажимайте кнопку "Сохранить", а вместо этого щелкните правой кнопкой мыши в представлении дизайна таблицы, в конце вашего контекстного меню должен быть пункт "Создать сценарий изменения".

alt text

Нажмите на этот пункт меню, и вы увидите всплывающее диалоговое окно, которое содержит скрипт T-SQL, необходимый для внесения тех изменений, которые вы внесли в таблицу в конструкторе. Скопируйте или сохраните этот код T-SQL, отмените его из конструктора и вуаля - у вас есть сценарий изменений!

ОБНОВЛЕНИЕ: Марко, извините, я не думаю, что есть какая-либо возможность изменить поведение по умолчанию, по крайней мере, не сейчас. Возможно, вы захотите подать запрос на расширение в Microsoft на Microsoft Connect, чтобы предложить это - хорошая идея, я думаю!

Ответ 3

легко! просто перейдите к ToolOption, затем Designer node и выберите Table and Database designer, чтобы снять флажок Prevent saving changes that require ....

Теперь вы можете сделать любой шаг в дизайне таблиц!