Как отключить параметр запретить сохранение изменений в sql
Перейти к содержимому

Как отключить параметр запретить сохранение изменений в sql

  • автор:

SQL: Saving Changes is not permitted

Те, кто регулярно выполняют создание и развертывание новых баз данных на основе Microsoft SQL Server, активно используют в своей работе такой инструмент, как Microsoft SQL Server Management Studio (SSMS). Он позволяет выполнить практически все операции, что требуются при обслуживании СУБД. В его составе, есть функционал, дизайнера таблиц и диаграмм структуры базы данных, с автоматическим созданием и обновлением таблиц в базе данных, их структуры, индексов и ключей.
При этом, по умолчанию, Microsoft SSMS настроен так, что не позволяет сохранять какие-либо изменения в диаграмме или дизайнере, которые могут повлиять на структуру таблиц, если нельзя внести изменения в структуру таблиц без их пересоздания. Это вполне объяснимо, тк у вас в таблицах могут быть данные, а пересоздание таблицы и уничножит. При это на экране будет появляться сообщение подобное тому что показано ниже: Saving Changes is not permitted (Сохранение изменений не допускается):

"Prevent saving changes that require the table to be re-created" negative effects

I was modifying a column in SQL Server 2008 today, changing the datatype from something like currency(18,0) to (19,2).

I got the error «The changes you have made require the following tables to be dropped and re-created» from SQL Server.

Before you scramble to answer, please read the following:

I already know there is the option in Tools ► Options ► Designer ► Table and Database Designers ► Uncheck the box «Prevent saving changes that require table re-creation.» . so do not answer with that!

Actual question

My actual question is for something else, as follows:

Are there any negative effects / possible drawbacks of doing this?

Does the table actually get dropped and recreated automatically when this box is unchecked?

If so, is the table copy a 100% exact replica of the source table?

Brian Tompsett - 汤莱恩's user avatar

5 Answers 5

Tools —> Options —> Designers node —> Uncheck « Prevent saving changes that require table recreation «.

Antoine Meltzheim's user avatar

The table is only dropped and re-created in cases where that’s the only way SQL Server’s Management Studio has been programmed to know how to do it.

There are certainly cases where it will do that when it doesn’t need to, but there will also be cases where edits you make in Management Studio will not drop and re-create because it doesn’t have to.

The problem is that enumerating all of the cases and determining which side of the line they fall on will be quite tedious.

This is why I like to use ALTER TABLE in a query window, instead of visual designers that hide what they’re doing (and quite frankly have bugs) — I know exactly what is going to happen, and I can prepare for cases where the only possibility is to drop and re-create the table (which is some number less than how often SSMS will do that to you).

Are there any negative effects / possible drawbacks of doing this?

Sure. If you can script the change yourself without rebuilding the whole table, that’s better — consider the case where the table is 10TB, and the database is heavily logged (think sync AG, change tracking, replication, poorly-written triggers), and the table is highly accessed — that’s a potential recipe for disaster. If your change is something where you can apply an ONLINE hint or add a column and copy the data over in batches instead of all-or-nothing the GUI will do, this is better.

Does the table actually get dropped and recreated automatically when this box is unchecked?

It might. There is a laundry list of scenarios and the outcome is dependent on the version of SSMS, the version of SQL Server, and sometimes the edition. You can check by checking the box and trying to apply the change on a meaningless copy of the database first, but using actual ALTER TABLE scripts instead of the pointy-clicky GUI is the way to go IMHO.

If so, is the table copy a 100% exact replica of the source table?

Yes, if SSMS has to rebuild the table, it will be a 100% exact replica after it’s done (except for the change of course), but that could be next Wednesday. The process creates a new version of the table, copies all the data to it, then drop the old table and renames the new one.

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

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

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

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

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

15 ответов

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Note: If you disable this option, you are not warned when you save the table that the changes that you made have changed the metadata structure of the table. В этом случае потеря данных может произойти при сохранении таблицы.

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

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

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

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

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

Пример SQL Server 2012:

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

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

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

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

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

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

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

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

Для Microsoft SQL Server 2012 в диалоговом окне параметров есть небольшой скрытый флажок, который НАСТОЯЩИМ скрывает все остальные настройки. Хотя я должен сказать, что я скучал по этому маленькому монстру все это время.

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

Как отключить параметр запретить сохранение изменений в sql

Рис.1. Невозможно внести изменения в таблицу

При сохранении редактируемой таблицы через дизайнер MS SQL management studio иногда получаешь сообщение: «Saving changes is not permitted. The changes you have made require the following table to be dropped and re-created … » (Рис. 1). И изменения никак не получается сохранить. Причина этого – необходимость пересоздания таблицы. Пересоздание таблиц может быть критично для продуктивных сред, но для тестовых сред или сред разработки вполне допустимо.

Рис.1. Невозможно внести изменения в таблицу

Рис.1. Невозможно внести изменения в таблицу

Для того, чтобы разрешить пересоздание таблиц, нужно изменить одну настройку в MS SQL Management studio. Для этого зайдите в меню «Tools / Options / Designers / Table and Database Designers» и уберите галочку «Prevent saving changes that require table re-creation» (Рис.2).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *