Sql Server «Сохранение изменений не разрешено» ошибка ► Запретить сохранение изменений, которые требуют пересоздания таблицы - PullRequest
684 голосов
/ 25 июля 2011

Когда я создаю таблицу в SQL Server и сохраняю ее, если я пытаюсь изменить дизайн таблицы, например, изменить тип столбца с int на real, я получаю эту ошибку:

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

Почему я должен заново создать таблицу?Я просто хочу изменить тип данных с smallint на real.

Таблица пуста, и я не использовал ее до сих пор.

Ответы [ 15 ]

1336 голосов
/ 25 июля 2011

С Диалоговое окно Сохранить (не разрешено) на MSDN :

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

Для следующих действий может потребоваться повторное создание таблицы:

  • Добавление новойстолбец до середины таблицы
  • Удаление столбца
  • Изменение обнуляемости столбца
  • Изменение порядка столбцов
  • Изменение типа данных столбца <<<< </strong>

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

См. Также запись в блоге Colt Kwong:
Сохранение измененийне разрешено в SQL 2008 Management Studio

187 голосов
/ 25 июля 2011

Используете ли вы SSMS?

Если да, перейдите в меню Инструменты >> Параметры >> Дизайнеры и снимите флажок «Запретить сохранение изменений, для которых требуется повторная таблица»создание»

66 голосов
/ 01 июля 2015

Запретить сохранение изменений, требующих пересоздания таблицы

Пять быстрых кликов

Prevent saving changes that require table re-creation in five clicks

  1. Инструменты
  2. Опция
  3. Дизайнеры
  4. Запретить сохранение изменений, требующих пересоздания таблицы
  5. OK .

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

Дальнейшее объяснение

  • По умолчанию SQL Server Management Studio предотвращает удаление таблиц, поскольку при удалении таблицы ее содержимое теряется. *

  • При изменении типа данных столбца в представлении «Дизайн таблицы» при сохранении изменений база данных внутренне удаляет таблицу, а затем заново создает новую.

* Ваши конкретные обстоятельства не будут иметь последствий, поскольку ваша таблица пуста. Я предоставляю это объяснение исключительно для улучшения вашего понимания процедуры.

23 голосов
/ 18 января 2016

Чтобы изменить параметры Запретить сохранение, для которых требуется повторное создание таблицы, выполните следующие действия:

Откройте SQL Server Management Studio (SSMS). В меню Сервис выберите Параметры.

На панели навигации в окне «Параметры» нажмите «Дизайнеры».

Установите или снимите флажок Запретить сохранение изменений, для которых требуется создать таблицу заново, и нажмите кнопку ОК.

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

enter image description here

20 голосов
/ 22 января 2014

Это очень простая и простая проблема настройки, которую можно исправить за 5 секунд, выполнив следующие действия

Чтобы разрешить сохранение изменений после изменения таблицы, выполните следующие действия дляваш параметр sql:

  1. Откройте Microsoft SQL Server Management Studio 2008
  2. Нажмите Параметры меню Сервис, затем выберите Параметры
  3. Выбрать конструкторы
  4. Снять отметку "параметр «Запретить сохранение изменений, требующих пересоздания таблицы»
  5. Нажмите кнопку ОК
  6. Попробуйте изменить таблицу
  7. Ваши изменения будут выполнены по желанию
17 голосов
/ 14 апреля 2013

Перейти Инструмент расположен в верхнем меню.
Выберите options из выпадающего списка. Теперь у вас есть всплывающее окно, выберите параметр Designers , расположенный в левом блоке меню. Снимите флажок с опции Запретить сохранение изменений, которые требуют пересоздания таблицы . Нажмите на кнопку ОК.

12 голосов
/ 27 августа 2016

Снимите отметку поле Prevent saving changes that require table re-creation из Инструменты ► Параметры ► Дизайнеры * вкладка 1005 *.

Пример SQL Server 2012:

enter image description here

6 голосов
/ 21 марта 2016

И на тот случай, если кто-то здесь тоже не обращает на это внимания (например, я):

Для Microsoft SQL Server 2012 в диалоговом окне параметров есть небольшой скрытый флажок, который ВНУТРИ скрывает все остальные настройки,Хотя я должен сказать, что я все это время скучал по этому маленькому монстру !!!*sneaky_check_box_in_option

6 голосов
/ 30 сентября 2015

Скопировано с по этой ссылке «... Важно! Мы настоятельно рекомендуем вам не обходить эту проблему, отключив параметр Запретить сохранение изменений, требующий повторного создания таблицы. Дополнительные сведения о рисках отключения этой опции см. В разделе« Дополнительная информация ». . ''

"... Чтобы обойти эту проблему, используйте операторы Transact-SQL, чтобы внести изменения в структуру метаданных таблицы. Дополнительные сведения см. В следующем разделе Электронная документация по SQL Server

Например, чтобы изменить столбец MyDate типа datetime в таблице MyTable для принятия значений NULL, вы можете использовать:

изменить таблицу MyTable изменить столбец MyDate7 datetime NULL "

5 голосов
/ 05 ноября 2018

Это можно легко изменить в Microsoft SQL Server .

  1. Открыть Microsoft SQL Server Management Studio 2008
  2. Нажмите Меню инструментов
  3. Нажмите Опции
  4. Выбор дизайнеров
  5. Снимите флажок «Запретить сохранение изменений, которые требуют пересоздания таблицы»
  6. Нажмите ОК

enter image description here

...