Принуждение Studio управления использовать ALTER TABLE вместо ОТБРАСЫВАЕТ/СОЗДАЕТ

Я задаюсь вопросом, там ли способ вынудить Studio управления MSSQL произвести сценарий как это:

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


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

GO 

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

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

спасибо.

12
задан Keith Walton 28 December 2011 в 22:21
поделиться

2 ответа

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

5
ответ дан 2 December 2019 в 21:43
поделиться

Да, можно!

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

alt text

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

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

8
ответ дан 2 December 2019 в 21:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: