Сообщение об ошибке «Сохранение изменений не разрешено» в SSMS
Эта статья поможет вам решить проблему, при которой при попытке сохранить таблицу в SQL Server Management Studio (SSMS) отображается сообщение об ошибке.
Оригинальная версия продукта: SQL Server
Оригинальный номер базы знаний: 956176
Симптомы
При попытке сохранить таблицу после внесения изменений в таблицу с помощью конструктора в SQL Server Management Studio может появиться следующее сообщение об ошибке:
Сохранение изменений запрещено. Внесенные изменения требуют удаления и повторного создания следующих таблиц. Вы либо внесли изменения в таблицу, которую невозможно повторно создать, либо включили параметр «Запретить сохранение изменений, требующих повторного создания таблицы».
Эта проблема возникает при внесении одного или нескольких из следующих изменений в таблицу:
- Вы изменяете параметр «Разрешить значения NULL» для столбца.
- Вы изменяете порядок столбцов в таблице.
- Вы изменяете тип данных столбца.
- Вы добавляете новый столбец.
- Вы изменяете filegroup таблицы или ее text/image данные.
Причина
Эта проблема возникает из-за того, что параметр Запретить сохранение изменений, требующих повторного создания таблицы включен по умолчанию в SQL Server Management Studio.
Когда вы изменяете таблицу таким образом, что изменяете структуру метаданных таблицы, а затем сохраняете таблицу, таблица должна быть создана повторно на основе этих изменений. Это может привести к потере метаданных и прямой потере данных во время повторного создания таблицы. Если включить параметр Запретить сохранение изменений, требующих повторного создания таблицы в разделе Конструктор окна Параметры Server Management Studio (SSMS) отобразится сообщение об ошибке, упомянутое в разделе «Симптомы».
Обходной путь
Чтобы обойти эту проблему, используйте операторы ALTER TABLE Transact-SQL для внесения изменений в структуру метаданных таблицы.
Например, чтобы изменить столбец MyDate типа datetime в таблице MyTable для принятия значений NULL, можно использовать:
Настоятельно рекомендуется не отключать параметр «Запретить сохранение изменений, требующих повторного создания таблицы», чтобы обойти эту проблему. Дополнительные сведения о рисках отключения этого параметра приведены в разделе «Дополнительные сведения».
Дополнительная информация
Чтобы изменить параметр Запретить сохранение изменений, требующих повторного создания таблицы, выполните следующие действия:
Откройте Среда SQL Server Management Studio.
В меню Сервис щелкните пункт Параметры.
В области навигации окна Параметры щелкните Конструкторы.
Установите или снимите флажок Запретить сохранение изменений, требующих повторного создания таблицы, затем нажмите кнопку ОК.
Если этот параметр отключен, при сохранении таблицы не отобразится предупреждение о том, что внесенные изменения изменили структуру метаданных таблицы. В этом случае при сохранении таблицы может произойти потеря данных.
Риск отключения параметра «Запретить сохранение изменений, требующих повторного создания таблицы»
Хотя отключение этого параметра поможет избежать повторного создания таблицы, это также может привести к потере изменений. Например, предположим, что вы включаете функцию «Отслеживание изменений» в SQL Server для отслеживания изменений в таблице. При выполнении операции, которая вызывает повторное создание таблицы, отобразится сообщение об ошибке, упомянутое в разделе Симптомы. Однако если отключить этот параметр, существующие сведения об отслеживании изменений будут удалены при повторном создании таблицы. Поэтому мы рекомендуем не отключать этот параметр, чтобы обойти эту проблему.
Чтобы определить, включена ли функция «Отслеживание изменений» для таблицы, выполните следующие действия:
- В SQL Server Management Studio найдите таблицу в обозревателе объектов.
- Щелкните таблицу правой кнопкой мыши и выберите пункт «Свойства».
- В диалоговом окне «Свойства таблицы» выберите «Отслеживание изменений». Если для элемента «Отслеживание изменений» задано значение True, этот параметр включен для таблицы. Если значение — False, этот параметр отключен.
Если функция Change Tracking включена, используйте операторы Transact-SQL, чтобы изменить структуру метаданных таблицы.
Невозможно изменить дизайн таблицы в SQL Server 2008
Я создал таблицу tbl_Candidate . но я забыл установить первичный ключ в таблицу, и я сохранил его без первичного ключа.
В следующий раз, когда я собираюсь установить первичный ключ в SQL Server 2008 Express, я получаю сообщение, как будто я должен отказаться от таблицы и воссоздать, когда я собираюсь сохранить таблицу с изменениями первичного ключа.
Это сообщение появляется, когда я пытаюсь сохранить изменения в таблице.
Сохранение изменений не допускается. Изменения, которые вы внесли, требуют чтобы следующие таблицы отбрасывались и воссоздавались. Вы либо сделали изменения в таблице, которые невозможно воссоздать или включить параметр предотвратите сохранение изменений, требующих воссоздания таблиц
Я зарегистрировался на SQL Server с проверкой подлинности Windows, типа сервера в качестве механизма базы данных и имени сервера как .\SQLExpress .
Пожалуйста, дайте мне способ исправить эту проблему или способ изменить настройки SQL Server. пожалуйста, дайте мне указания.. спасибо..
ОТВЕТЫ
Ответ 1
- Добавление нового столбца в середину таблицы
- Удаление столбца
- Изменение нулевой точности столбца
- Изменение порядка столбцов
- Изменение типа данных столбца
РЕДАКТИРОВАТЬ 1:
Дополнительная полезная информация из здесь:
- Откройте SQL Server Management Studio (SSMS).
- В меню «Сервис» выберите «Параметры».
- В навигационной панели окна «Параметры» щелкните «Дизайнеры».
- Выберите или снимите флажок «Предотвратить сохранение изменений, требующих переопределение таблицы», и нажмите «ОК».

Ответ 2
Вы можете напрямую добавить ограничение для таблицы
Убедитесь, что в столбце первичного ключа не должно быть никаких нулевых значений.
вы можете изменить параметры SQL Management Studio, например
Чтобы изменить этот параметр, в меню «Сервис» выберите «Параметры», Дизайнеры, а затем щелкните «Дизайнеры таблиц и баз данных». Выберите или снимите флажок Запретить сохранение изменений, которые требуют, чтобы таблица была re-created.
Ответ 3
- Инструменты
- Функции
- Конструкторы
- Запретить сохранение изменений, требующих повторного создания таблицы
- OK.
Дальнейшее объяснение
По умолчанию SQL Server Management Studio предотвращает удаление таблиц, так как при отбрасывании таблицы его содержимое теряется. *
При изменении типа данных столбца в таблице «Представление дизайна» при сохранении изменений база данных удаляет таблицу внутри, а затем повторно создает новую.
* Ваши конкретные обстоятельства не будут иметь последствия, так как ваша таблица пуста. Я полностью объясняю это объяснение, чтобы улучшить ваше понимание процедуры.
Ответ 4
Просто зайдите в SQL Server Management Studio → Инструменты → Параметры → Дизайнер; и снимите флажок «не сохранять изменения, которые требуют пересоздания таблицы».
Ошибка Sql Server «Сохранение изменений запрещено» ► Запретить сохранение изменений, требующих повторного создания таблицы
Когда я создаю таблицу в SQL Server и сохраняю ее, если я пытаюсь отредактировать дизайн таблицы, например изменить тип столбца с int на real, я получаю эту ошибку:
Сохранение изменений не допускается. Внесенное вами изменение требует удаления и повторного создания следующей таблицы. Вы либо внесли изменения в таблицу, которую невозможно воссоздать, либо включили параметр, запрещающий сохранение изменений, требующих повторного создания таблицы.
Почему мне нужно заново создавать таблицу? Я просто хочу изменить тип данных с smallint в real .
Стол пуст, и до сих пор я им не пользовался.
задан 24 июля ’11, 20:07
16 ответы
- Добавление нового столбца в середину таблицы
- Удаление столбца
- Изменение допустимости значения NULL для столбца
- Изменение порядка столбцов
- Изменение типа данных столбца <<<
SSMS не должен позволять вам делать что-то небезопасное без предварительного предупреждения. Но на всякий случай имейте под рукой резервную копию. — Роберт Харви
Этот параметр сообщает SSMS, что он может продолжить и создать временную таблицу в новой схеме, скопировать в нее данные, затем удалить старую таблицу и переименовать временную таблицу обратно в исходное имя. Все в порядке, как и должно быть в транзакции, однако отношения будут разорваны и воссозданы, так что если не 100%, то может произойти что-то неожиданное. — Джастин Кинг
Не знаю, почему я не могу вспомнить эти простые шаги, чтобы раскрыть эту опцию, и мне всегда нужно искать решение. Хехехехе. Спасибо чувак! — ДмитрийБойко
Святая корова — вы можете просто выключить это, чтобы обойти эту ошибку ?? Я не знал этого, и последние 3 года я жил в страхе, что случайно спроектирую таблицу без спецификации идентичности и мне придется создать новую таблицу. Отличный совет! — Шон Дж. Моллой
Вот ПРЕДОСТЕРЕЖЕНИЕ Microsoft при отключении опции «Предотвратить сохранение изменений . »: support.microsoft.com/en-us/kb/956176. По сути, вы можете потерять метаданные, такие как отслеживание изменений, если это функция, которую вы используете. — Баодад
Вы используете SSMS?
Если да, перейдите в меню Инструменты >> Параметры >> Конструкторы и снимите флажок «Предотвратить сохранение изменений, требующих повторного создания таблицы»
ответ дан 23 мая ’16, 20:05

@NeilMeyer, будьте осторожны, не зря там стоит галочка. Это мера безопасности для предотвращения операций, которые могут отбросить и воссоздать таблицу (и, таким образом, потерять все его данные! Так что используйте с осторожностью! — гиперкубᵀᴹ
будут ли отношения между таблицами потеряны, если таблицы будут воссозданы таким образом? — Нил Мейер
@NeilMeyer не уверен, какой именно оператор SSMS выдаст. Вероятно, он также воссоздает любой сброшенный FK. — гиперкубᵀᴹ
Как это глупо, когда вы отключите эту опцию, даже больше не будет никаких предупреждений. — Герфрид
Это не глупо, потому что вы очень мало рискуете потерять что-нибудь важное. ypercube выше неверен, вы не потеряете никаких данных. Он удаляет старую таблицу и создает новую для вас, но гарантирует сохранение всех данных. Единственная проблема может заключаться в том, что если вы отредактировали очень большую таблицу с сотнями миллионов строк таким образом, сохранение ваших изменений может занять час или два — Джефф Грисвальд
- Инструменты
- Доступные опции
- Конструкторы
- Запретить сохранение изменений, требующих повторного создания таблицы
- OK.
Дальнейшее объяснение
По умолчанию SQL Server Management Studio предотвращает удаление таблиц, поскольку при удалении таблицы ее содержимое данных теряется. *
При изменении типа данных столбца в представлении «Дизайн» таблицы при сохранении изменений база данных внутренне удаляет таблицу, а затем повторно создает новую.
* Ваши конкретные обстоятельства не повлекут за собой последствий, поскольку ваша таблица пуста. Я даю это объяснение исключительно для того, чтобы вы лучше понимали эту процедуру.

Это не правильно. Когда вы редактируете такую таблицу и в ней есть данные, данные не теряются. Новая таблица будет создана со всеми данными из исходной таблицы внутри нее. — Джефф Грисвальд
Также будут сохранены любые индексы, значения по умолчанию, ограничения, триггеры и т. Д. Согласно документам Microsoft, единственное, что вы потеряете, — это отслеживание изменений, функция, которую очень немногие люди используют или включают. docs.microsoft.com/en-US/troubleshoot/sql/ssms/… — Джефф Грисвальд
Чтобы изменить параметр Запретить сохранение изменений, требующих повторного создания таблицы, выполните следующие действия:
Откройте SQL Server Management Studio (SSMS). В меню «Инструменты» выберите «Параметры».
В области навигации окна «Параметры» щелкните «Дизайнеры».
Установите или снимите флажок Запретить сохранение изменений, требующих повторного создания таблицы, а затем нажмите кнопку ОК.
Внимание: Если вы отключите эту опцию, вы не будете предупреждены при сохранении таблицы, что внесенные вами изменения изменили структуру метаданных таблицы. В этом случае при сохранении таблицы может произойти потеря данных.