Сохранение изменений после редактирования таблицы в Studio управления SQL Server

Если я хочу сохранить какие-либо изменения в таблице, ранее сохраненной в Studio управления SQL Server (никакие данные в существующей таблице), я получаю сообщение об ошибке:

Сохранение изменений не разрешено. Изменения, которые Вы сделали, требуют, чтобы следующие таблицы были отменены и воссозданы. Вы или внесли изменения в таблицу, которая не может быть воссоздана или включена изменения сохранения опции Prevent, которые требуют, чтобы таблица была воссоздана.

Что может предотвратить таблицу, которая будет легко отредактирована? Или, действительно ли это - обычный путь к Studio управления SQL Server для требования таблицы воссоздания для редактирования? Что это - это "сохранение опции Prevent изменения"?

248
задан Liam 10 March 2017 в 03:56
поделиться

5 ответов

Зайдите в Tools -> Options -> Designers-> Снимите флажок "Предотвращать сохранение изменений, требующих повторного создания таблицы". Voila.

Это происходит потому, что иногда необходимо бросить и воссоздать таблицу, чтобы что-то изменить. Это может занять некоторое время, так как все данные должны быть скопированы в временную таблицу, а затем повторно вставлены в новую таблицу. Поскольку SQL Server по умолчанию не доверяет вам, вы должны сказать: "Хорошо, я знаю, что делаю, теперь позвольте мне делать мою работу"

.
541
ответ дан 23 November 2019 в 02:59
поделиться

Вместо того, чтобы снимать флажок (плохое решение), следует остановить редактирование данных таким образом. Если данные должны быть изменены, то сделайте это с помощью скрипта, чтобы вы могли легко перенести их в производство и чтобы они находились под контролем источника. Это также облегчает обновление тестовых изменений после того, как производство было отодвинуто на разработку, чтобы разработчики могли работать с более свежими данными.

15
ответ дан 23 November 2019 в 02:59
поделиться

Для решения этой проблемы используйте SQL-операторы для внесения изменений в структуру метаданных таблицы.

Эта проблема возникает, когда включена опция "Предотвращать сохранение изменений, требующих повторного создания таблицы".

Источник: Сообщение об ошибке при попытке сохранения таблицы в SQL Server 2008: "Сохранение изменений не разрешено"

72
ответ дан 23 November 2019 в 02:59
поделиться

Многие изменения, которые можно очень легко и наглядно сделать в редакторе таблиц в SQL Server Management Studio, на самом деле требуют, чтобы SSMS бросил таблицу в фоновом режиме и воссоздал ее с нуля. Даже такие простые вещи, как переупорядочивание столбцов, не могут быть выражены в стандартном SQL DDL операторе - все, что может сделать SSMS - это бросить таблицу и воссоздать ее заново.

Эта операция может быть а) очень трудоемкой на большой таблице, или б) даже неудачной по разным причинам (например, ограничения FK и т.п.). Поэтому SSMS в SQL Server 2008 ввел новую опцию, которую уже определили другие ответы.

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

14
ответ дан 23 November 2019 в 02:59
поделиться

Существует риск отключения этой опции. Вы можете потерять изменения, если у вас включено отслеживание изменений (ваши таблицы).

Chris

http://chrisbarba.wordpress.com/2009/04/15/sql-server-2008-cant-save-changes-to-tables/

6
ответ дан 23 November 2019 в 02:59
поделиться
Другие вопросы по тегам:

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