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

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

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

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

7 ответов


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

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


Сервис>Параметры

enter image description here

снимите флажок над опцией


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

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

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


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


перейдите в SSMS и попробуйте это

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

вот очень хорошее объяснение этому: http://blog.sqlauthority.com/2009/05/18/sql-server-fix-management-studio-error-saving-changes-in-not-permitted-the-changes-you-have-made-require-the-following-tables-to-be-dropped-and-re-created-you-have-either-made-changes-to-a-tab/


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

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

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


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

Крис

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