Сохранение изменений после редактирования таблицы в среде SQL Server Management Studio
Если я хочу сохранить какие-либо изменения в таблице, ранее сохраненные в среде SQL Server Management Studio (данные в таблице отсутствуют), я получаю сообщение об ошибке:
сохранение изменений не допускается. Внесенные изменения требуют
следующие таблицы должны быть удалены и повторно созданы. Вы либо сделали
изменения в таблице, которую нельзя повторно создать или включить этот параметр
Запретить сохранение изменений, требующих повторного создания таблицы.
Что может предотвратить таблицу, которая будет легко редактироваться? Или это обычный способ для SQL Server Management Studio требовать повторного создания таблицы для редактирования? Что это-такое "опция предотвращения сохранения изменений"?
7 ответов:
перейдите в Инструменты - > Параметры - > конструкторы - > снимите флажок "запретить сохранение изменений, требующих повторного создания таблицы". Вот.
Это происходит потому, что иногда необходимо отбросить и воссоздать таблицу, чтобы что-то изменить. Это может занять некоторое время, так как все данные должны быть скопированы во временную таблицу и затем повторно вставить в новую таблицу. Поскольку SQL Server по умолчанию не доверяет вам, вам нужно сказать: "Хорошо, я знаю, что я делаю, теперь позвольте мне делать свою работу."
чтобы обойти эту проблему, используйте инструкции SQL для внесения изменений в структуру метаданных таблицы.
эта проблема возникает, когда "запретить сохранение изменений, требующих повторного создания таблицы" опция включена.
вместо того, чтобы снять флажок (плохое решение), вы должны прекратить редактирование данных таким образом. Если данные должны быть изменены, то сделайте это с помощью скрипта, чтобы вы могли легко перенести его в производство и чтобы он находился под управлением исходного кода. Это также упрощает обновление изменений тестирования после того, как производство было перенесено в 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/

Comments