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


749

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

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

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

Стол пуст, и я не использовал его до сих пор.


Ответы:


1467

От Save (недопустима) Диалоговое окно на MSDN :

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

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

  • Добавление нового столбца в середину таблицы
  • Отбрасывание столбца
  • Изменение обнуляемости столбцов
  • Изменение порядка столбцов
  • Изменение типа данных столбца <<<<

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

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


7
SSMS не должна позволять вам делать что-то небезопасное без предварительного предупреждения. Но на всякий случай имейте под рукой резервную копию.
Роберт Харви

40
Эта опция сообщает SSMS, что она может продолжить и создать временную таблицу в новой схеме, скопировать в нее данные, затем удалить старую таблицу и переименовать временную таблицу обратно в исходное имя. Все в порядке, как должно быть в транзакции, однако отношения будут нарушены и воссозданы, так что если не 100%, то может сделать что-то неожиданное.
Джастин Кинг,

13
Не знаю, почему я не могу вспомнить эти простые шаги, чтобы раскрыть эту опцию, и я всегда должен искать решение. Hehehehehe. Спасибо чувак!
Разработчик

8
Святая корова - ты можешь просто отключить это, чтобы обойти эту ошибку ?? Я не знал этого, и в течение последних 3 лет жил из-за страха непреднамеренного проектирования таблицы без Спецификации идентичности и необходимости создания новой таблицы. Отличный совет!
нокарьер

4
Вот Microsoft CAVEAT об отключении опции «Запретить сохранение изменений ...»: support.microsoft.com/en-us/kb/956176 . По сути, вы можете потерять метаданные, такие как отслеживание изменений, если вы используете эту функцию.
Baodad

205

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

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


Инструменты >> Параметры и т. Д., А не «Меню» (только с точки зрения ssms 2014, который, как я полагаю, в старых версиях одинаков)
Том Стиккель

@ TomStickel Я думаю, я имел в виду перейти в меню: «Инструменты»
ypercubeᵀᴹ

: P Да, я подумал, просто подумал, что прокомментирую любого, кто на самом деле «застрянет», я знаю, это страшно, но я полагаю, что некоторые люди могут быстро
вскинуть

2
@NeilMeyer остерегайтесь того, что флажок установлен там по причине. Это мера безопасности, предотвращающая операции, которые удаляют и воссоздают таблицу (и, следовательно, теряют все ее данные ! Так что используйте с осторожностью!
ypercubeᵀᴹ

будут ли потеряны связи между таблицами, если таблицы будут воссозданы следующим образом?
Нил Мейер

78

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

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

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

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

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

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

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

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

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


27

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

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

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

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

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

введите описание изображения здесь


Дизайнер столов удобен, но вы не можете достичь всего с ним
Sitecore Sam

22

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

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

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

8
как это добавляет к принятому ответу каким-либо образом?
Бессмертный синий

17

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


12

Un-тик в Prevent saving changes that require table re-creationкоробку из Автомата ► Функции ► Дизайнеров вкладки.

Пример SQL Server 2012:

введите описание изображения здесь


12

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

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

введите описание изображения здесь


7

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

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

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

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


2
С таким большим количеством ответов, говорящих об одном и том же, это был ответ, который я искал, так как в моей таблице были живые данные, которые я не хотел потерять. Мне нужно было обновить десятичный столбец с 0 десятичных разрядов до 2 десятичных разрядов, и простой оператор alter работал отлично!
Stitz

Трагедия здесь заключается в том, что SSMS должна делать именно это под капотом и, следовательно, не требовать опускания стола
m12lrpv

6

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

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

После этого вы можете приступить к выполнению шагов, дизайнер, снимите флажок, чтобы предотвратить сохранение бла-бла-бла ...

sneaky_check_box_in_option


5

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

Описание в формате фото


2

1) Откройте инструмент, который находится сверху.
2) Выберите параметры из списка выбора.
3) Появилось всплывающее окно, и теперь вы можете выбрать вариант дизайнеров из списка меню слева.
4) Теперь для предотвращения сохранения изменений необходимо отменить проверку, что требовало пересоздания таблицы. Теперь нажмите ОК.


1

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


0

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

Вам необходимо включить отслеживание изменений.

  • Щелкните правой кнопкой мыши по вашей базе данных и выберите Свойства
  • Нажмите отслеживание изменений и включите его
  • Перейдите Сервис -> Параметры -> Дизайнер снова и снимите флажок.

0

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.