Сохранение изменений после редактирования таблицы в SQL Server Management Studio
Если я хочу сохранить какие-либо изменения в таблице, ранее сохраненной в SQL Server Management Studio (данные в таблице отсутствуют), я получаю сообщение об ошибке:
Сохранение изменений не разрешено. Внесенные вами изменения требуют удаления и повторного создания следующих таблиц. Вы внесли изменения в таблицу, которую нельзя воссоздать, или включили опцию Запретить сохранение изменений, которые требуют повторного создания таблицы.
Что может помешать редактированию таблицы? Или SQL Server Management Studio обычно требует повторного создания таблицы для редактирования? Что это - эта "опция Предотвратить сохранение изменений"?
8 ответов
Зайдите в Инструменты -> Параметры -> Дизайнеры-> Снимите флажок "Запретить сохранение изменений, которые требуют пересоздания таблицы". Вуаля.
Это происходит потому, что иногда необходимо удалить и воссоздать таблицу, чтобы что-то изменить. Это может занять некоторое время, поскольку все данные должны быть скопированы во временную таблицу и затем снова вставлены в новую таблицу. Поскольку 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 -вы-у-сделанный требуют, по-следующих столов, чтобы быть сброшенным-и-воссозданными вы-у-либо сделанные изменения-к-вкладка-/
Многие изменения, которые вы можете сделать очень легко и визуально в редакторе таблиц в SQL Server Management Studio, фактически требуют, чтобы SSMS отбрасывала таблицу в фоновом режиме и воссоздала ее с нуля. Даже простые вещи, такие как переупорядочение столбцов, не могут быть выражены в стандартном операторе SQL DDL - все, что может сделать SSMS - это удалить и заново создать таблицу.
Эта операция может быть: а) очень трудоемкой для большой таблицы, или б) может даже потерпеть неудачу по разным причинам (например, ограничения FK и прочее). Поэтому SSMS в SQL Server 2008 представил эту новую опцию, которую другие ответы уже определили.
На первый взгляд может показаться нелогичным предотвращать такие изменения - и это, безусловно, неприятно для сервера разработки. Но на рабочем сервере этот параметр и его значение по умолчанию для предотвращения таких изменений становится потенциальным спасением жизни!
Это риск отключения этой опции. Вы можете потерять изменения, если у вас включено отслеживание изменений (ваши таблицы).
Крис
http://chrisbarba.wordpress.com/2009/04/15/sql-server-2008-cant-save-changes-to-tables/
Действия по воспроизведению проблемы
- В SQL Server Management Studio создайте таблицу, содержащую первичный ключ, в средстве конструктора таблиц.
- Щелкните правой кнопкой мыши базу данных, содержащую эту таблицу, и выберите пункт Свойства .
- В диалоговом окне «Свойства базы данных» нажмите «Отслеживание изменений» .
- Установите для элемента отслеживания изменений значение True и нажмите кнопку ОК .
- Щелкните таблицу правой кнопкой мыши и выберите пункт Свойства .
- В диалоговом окне «Свойства таблицы» нажмите «Отслеживание изменений» .
- Установите для элемента отслеживания изменений значение True и нажмите кнопку ОК .
- В меню Инструменты щелкните Параметры .
- В диалоговом окне «Параметры» нажмите «Конструкторы» .
- Установите флажок Запретить сохранение изменений, требующих повторного создания таблицы , и нажмите кнопку ОК.
- В инструменте «Дизайнер таблиц» измените параметр «Разрешить пустые значения» для существующего столбца.
- Попробуйте сохранить изменения в таблице.