При сохранении возникли ошибки некоторые объекты базы данных не сохранены sql

Всем привет! Сегодня я расскажу об ошибке «Сохранение изменений запрещено», которая возникает в среде SQL Server Management Studio при работе с конструктором таблиц, будут рассмотрены причины ее возникновения и, конечно же, способы исправления данной ошибки.

Ошибка «Сохранение изменений запрещено» в среде SSMS. Причины и способы устранения

Заметка! Обзор функционала SQL Server Management Studio (SSMS).

Содержание

  1. Ошибка «Сохранение изменений запрещено»
  2. Причины возникновения ошибки «Сохранение изменений запрещено»
  3. Способы устранения ошибки «Сохранение изменений запрещено»
  4. Использовать T-SQL
  5. Отключить параметр «Запретить сохранение изменений, требующих повторного создания таблицы»

Ошибка «Сохранение изменений запрещено»

Итак, ситуация: Вы вносите изменения в таблицу с помощью конструктора в среде SQL Server Management Studio, однако при попытке сохранить изменения Вы получаете следующую ошибку

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

Скриншот 1

Причины возникновения ошибки «Сохранение изменений запрещено»

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

Однако это действие может привести к потере метаданных и прямой потере данных во время повторного создания таблицы.

Поэтому по умолчанию в среде SQL Server Management Studio включен параметр «Запретить сохранение изменений, требующих повторного создания таблицы». И если Вы используете графический конструктор таблиц, чтобы внести изменения в таблицу, например, Вы выполняете следующие действия:

  • Меняете параметр «Разрешить значения NULL» для столбца;
  • Изменяете порядок столбцов в таблице;
  • Изменяете тип данных столбца;
  • Добавляете новый столбец.

то в этих случаях Вы будете получать именно такую ошибку.

Способы устранения ошибки «Сохранение изменений запрещено»

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

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

Использовать T-SQL

Первый, и рекомендованный – это использовать инструкции T-SQL.

Заметка! Что такое T-SQL. Подробное описание для начинающих.

В качестве примера давайте представим, что у нас есть таблица Goods, и она имеет следующие данные.

   
   CREATE TABLE Goods(
	  ProductId INT IDENTITY(1,1) NOT NULL,
	  Category INT NOT NULL,
	  ProductName VARCHAR(100) NOT NULL,
	  Price MONEY NULL
   );

   INSERT INTO Goods (Category, ProductName, Price)
	    VALUES (1, 'Системный блок', 50),
		   (1, 'Клавиатура', 30),
		   (1, 'Монитор', 100),
		   (2, 'Планшет', 150),
		   (2, 'Смартфон', 100);

   SELECT * FROM Goods;

Скриншот 2

Заметка! Если Вас интересует язык SQL, то рекомендую почитать книгу «SQL код» – это самоучитель по языку SQL для начинающих программистов. В ней очень подробно рассмотрены основные конструкции языка.

Изменяем параметр «Разрешить значения NULL»

Как видим, столбец Price на текущий момент у нас может принимать значения NULL, однако мы решили сделать этот столбец обязательным к заполнению и запретить хранение в нем значений NULL.

Курс по SQL для начинающих

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

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

   
   ALTER TABLE Goods ALTER COLUMN Price MONEY NOT NULL;

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

Изменяем тип данных столбца

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

   
   ALTER TABLE Goods ALTER COLUMN Price NUMERIC(18,2) NOT NULL;

В данном случае мы изменили тип данных столбца Price с MONEY на NUMERIC.

Добавляем новый столбец

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

   
   ALTER TABLE Goods ADD ProductDescription VARCHAR(300) NULL;

В этом примере мы добавили столбец ProductDescription с типом данных VARCHAR.

К сожалению, изменение порядка столбцов в таблице на языке T-SQL не поддерживается, это возможно только путем пересоздания таблицы.

Заметка! Транзакции в T-SQL – основы для новичков с примерами.

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

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

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

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

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

Скриншот 3

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

Заметка! Курсы по Transact-SQL для начинающих.

На сегодня это все, надеюсь, материал был Вам полезен, пока!

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

Saving Changes is not permitted
Чтобы исправить такое поведение, необходимо:

  1. Открыть SQL Server Management Studio
  2. В верхнем меню выбрать Tools -> Options
  3. В открывшемся окне в левом дерево выбрать Designers
  4. Убрать галочку Prevent saving changes that require table re-creation (Предотвращение сохранения изменений)
  5. Нажать OK для применения настроек

Prevent saving changes that require table re-creationПосле внесенных изменений, любое изменение структуры таблиц в дизайнере или диаграмме, при ее сохранении будет применяться на структуру базы данных, и при необходимости пересоздавать измененные объекты.

8 ответов

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

Это происходит потому, что иногда нужно отбрасывать и воссоздавать таблицу, чтобы что-то изменить. Это может занять некоторое время, поскольку все данные должны быть скопированы в временную таблицу, а затем повторно вставлены в новую таблицу. Поскольку SQL Server по умолчанию не доверяет вам, вам нужно сказать «ОК, я знаю, что я делаю, теперь позвольте мне выполнить мою работу».

Pedro
28 дек. 2009, в 12:14

Поделиться

Сервиs > Параметры

Изображение 4103

Снимите флажок выше опции

Prasanna
25 сен. 2012, в 13:11

Поделиться

Rolwin C
29 окт. 2014, в 09:05

Поделиться

Вместо того, чтобы снимать флажок (плохое решение), вы должны STOP редактировать данные таким образом. Если данные необходимо изменить, сделайте это с помощью script, чтобы вы могли легко перенести его на производство и так, чтобы он находился под контролем источника. Это также облегчает обновление тестовых изменений после того, как продукция была нажата до разработчика, чтобы разработчики могли работать с более свежими данными.

HLGEM
28 дек. 2009, в 22:27

Поделиться

Многие изменения, которые вы можете сделать очень легко и визуально в редакторе таблиц в SQL Server Management Studio, фактически требуют, чтобы SSMS удаляла таблицу в фоновом режиме и воссоздавала ее с нуля. Даже простые вещи, такие как переупорядочение столбцов, не могут быть выражены в стандартном заявлении SQL DDL — все, что может сделать SSMS, это сбросить и воссоздать таблицу.

Эта операция может быть a) очень трудоемкой на большой таблице или b) может даже завершиться по различным причинам (например, ограничения FK и прочее). Таким образом, SSMS в SQL Server 2008 представила этот новый вариант, остальные ответы уже определены.

Вначале может показаться интуитивно понятным, чтобы предотвратить такие изменения — и это, безусловно, неприятность на dev-сервере. Но на производственном сервере эта опция и ее значение по умолчанию для предотвращения таких изменений становится потенциальным спасателем!

marc_s
28 дек. 2009, в 13:13

Поделиться

Вот это видео показывает, как решить эту проблему

Ссылка на сайт

Eranga Gamagedara
23 дек. 2018, в 02:28

Поделиться

Ещё вопросы

  • 0Содержит вторую колонку с продуктами все в порядке
  • 1Как использовать RDKit для расчета молекулярных отпечатков пальцев и сходства списка структур SMILE?
  • 0Получение CORS node-http-proxy для ответа 200 на ОПЦИИ
  • 0Последний драйвер для tjdbc не работает — Talend
  • 0JSONExcepton: нет значения для GPS?
  • 1Eclipse — SharedClasses имеет ошибки пути сборки
  • 0addClass не работает для определенного идентификатора текстовой области
  • 0PHP обнаруживает тип запроса (GET, POST, PUT или DELETE) без использования $ _SERVER [‘REQUEST_METHOD’]
  • 0Можно ли рендерить файлы js с кодом Velocity внутри с помощью Spring MVC и Velocity-Toolbox?
  • 1Добавление изображений в ListView
  • 0QTableView, выберите и Shift + клик
  • 0ng-show не работает при использовании с пользовательскими директивами
  • 0Заголовок Angular-Tag, позволяющий дублировать значения
  • 0Visual Studio 2017 не может загрузить базу данных MySQL
  • 1поиск содержимого с метаданными в liferay
  • 1Использование AutoMapper при наличии оператора LINQ с несколькими .Include
  • 1Сделать запрос на публикацию во время промежуточного программного обеспечения
  • 0Почему фильтр не работает, когда внутри другого ng-repeat
  • 1Kivy возвращает ошибку, хотя все зависимости установлены
  • 0CanvasText на jquery flot не показывает расширенные символы ascii
  • 1Как улучшить массовую вставку Entity Framework
  • 1Android-обновление StateListDrawable проблема
  • 0Указатель в C ++ не инициализирован правильно
  • 1Преобразовать ‘Task <IList <T >>’ в ‘IList <T>’
  • 0Установить переменную для конкретной страницы в jquery
  • 1Как правильно создавать объекты, для которых требуются параметры, используя автофакт?
  • 0таблица противников. Условие
  • 0удаление анимации JavaScript
  • 0Назначение фонового изображения на панель инструментов ExtJs
  • 1Прерывание всех потоков с помощью CTRL + C [дубликаты]
  • 0Являются ли типы указателей единственным способом «предотвращения» вызова конструктора в объявлении?
  • 0C ++ Использование ASCII вместо буквы в перечислении
  • 1Как добавить `action` к элементу компонента в EmberJs?
  • 0Как проверить поля с помощью плагина проверки jquery
  • 1Доступ к защищенной WebHDFS Kerberos без SPnego
  • 1Dicom UnCompression от Dcm2dcm
  • 1Получите глубокий результат обучения между 0 и 1
  • 1Python, Pandas, чтобы соответствовать фрейму данных и указать результаты из списка
  • 0Отображать набор изображений с заголовком, сохраняя масштаб по высоте
  • 1Почему я не могу разобрать вложение javamail с помощью toString?
  • 0Ошибка на UIWebView с jQuery
  • 1Как случайным образом раскрасить сетку (каждая строка случайным цветом)
  • 1Невозможно нажать кнопку, используя элемент (by.css ()) с транспортиром на ionic2
  • 1Android: Как определить, что активность уходит в фон?
  • 0Рассчитать сумму подписки новых пользователей MySQL
  • 1Позвоните в Windows Calculator c #
  • 1Модель гауссовой смеси — Сингулярная матрица
  • 0Плагин jquery-file-upload застрял в бесконечном цикле, повторно отправляя те же данные после 2 ГБ
  • 0Серый фон
  • 0AngularJS: Задержка исчезает с $ timeout

Microsoft SQL Server Management Studio 2016

Многие, кто работал в программе Microsoft SQL Server Management Studio, сталкивался с такой ситуацией, когда при сохранении изменений в структуре таблицы возникала ошибка.

Microsoft SQL Server Management Studio. Ошибка

И что бы мы не делали, как бы мы не пытались сохранить изменения — программа нам не дает этого сделать. Можно удалить данную таблицу и создать такую же структуру заново. А если спустя несколько минут нам нужно внести еще изменения в структуру? Удалять и создавать структуру не вариант. Оказывается в программе есть параметр, отвечающий за сохранение изменений в структуре таблицы.

Для этого нам необходимо выбрать пункт меню Сервис -> Параметры.

Microsoft SQL Server Management Studio. Параметры

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

Теперь вы сможете легко изменять и сохранять изменения в ваших таблицах.

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

When I create a table in SQL Server and save it, if I try to edit the table design, like change a column type from int to real, I get this error:

Saving changes is not permitted. The change you have made requires the following table to be dropped and re-created. You have either made changes to a table that can’t be recreated or enabled the option prevent saving changes that require the table to be re-created.

Why do I have to re-create the table? I just want to change a data type from smallint to real.

The table is empty, and I didn’t use it until now.

Brian Tompsett - 汤莱恩's user avatar

asked Jul 24, 2011 at 23:22

Arash's user avatar

1

From Save (Not Permitted) Dialog Box on MSDN :

The Save (Not Permitted) dialog box warns you that saving changes is
not permitted because the changes you have made require the listed
tables to be dropped and re-created.

The following actions might require a table to be re-created:

  • Adding a new column to the middle of the table
  • Dropping a column
  • Changing column nullability
  • Changing the order of the columns
  • Changing the data type of a column <<<<

To change this option, on the Tools menu, click Options, expand
Designers, and then click Table and Database Designers.
Select or clear the Prevent saving changes that require the table to be
re-created
check box.

See Also
Colt Kwong Blog Entry:
Saving changes is not permitted in SQL 2008 Management Studio

Community's user avatar

answered Jul 24, 2011 at 23:26

Robert Harvey's user avatar

Robert HarveyRobert Harvey

178k47 gold badges332 silver badges499 bronze badges

14

If you are using SSMS:

Go to the menu Tools >> Options >> Designers and uncheck Prevent Saving changes that require table re-creation

Mohammadreza Khedri's user avatar

answered Jul 24, 2011 at 23:27

ypercubeᵀᴹ's user avatar

ypercubeᵀᴹypercubeᵀᴹ

113k19 gold badges173 silver badges234 bronze badges

5

Prevent saving changes that require table re-creation

Five swift clicks

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

  1. Tools
  2. Options
  3. Designers
  4. Prevent saving changes that require table re-creation
  5. OK.

After saving, repeat the proceudure to re-tick the box. This safe-guards against accidental data loss.

Further explanation

  • By default SQL Server Management Studio prevents the dropping of tables, because when a table is dropped its data contents are lost.*

  • When altering a column’s datatype in the table Design view, when saving the changes the database drops the table internally and then re-creates a new one.

*Your specific circumstances will not pose a consequence since your table is empty. I provide this explanation entirely to improve your understanding of the procedure.

answered Jul 1, 2015 at 10:42

WonderWorker's user avatar

WonderWorkerWonderWorker

8,4694 gold badges61 silver badges74 bronze badges

2

This can be changed easily in Microsoft SQL Server.

  1. Open Microsoft SQL Server Management Studio 2008
  2. Click Tools menu
  3. Click Options
  4. Select Designers
  5. Uncheck «Prevent saving changes that require table re-creation»
  6. Click OK

enter image description here

answered Nov 5, 2018 at 14:05

Irshad Ahmed Akhonzada's user avatar

0

To change the Prevent saving changes that require the table re-creation option, follow these steps:

Open SQL Server Management Studio (SSMS).
On the Tools menu, click Options.

In the navigation pane of the Options window, click Designers.

Select or clear the Prevent saving changes that require the table re-creation check box, and then click OK.

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. In this case, data loss may occur when you save the table.

enter image description here

Martijn Pieters's user avatar

answered Jan 18, 2016 at 10:15

Tabish Usman's user avatar

Tabish UsmanTabish Usman

3,1102 gold badges17 silver badges15 bronze badges

1

It is very easy and simple setting problem that can be fixed in 5 seconds by following these steps

To allow you to save changes after you alter table, Please follow these steps for your sql setting:

  1. Open Microsoft SQL Server Management Studio 2008
  2. Click Tools menu options, then click Options
  3. Select Designers
  4. Uncheck «prevent saving changes that require table re-creation» option
  5. Click OK
  6. Try to alter your table
  7. Your changes will performed as desired

answered Jan 22, 2014 at 11:03

Rizwan Gill's user avatar

Rizwan GillRizwan Gill

2,1831 gold badge17 silver badges29 bronze badges

1

Go on Tool located at top menu.
Choose options from dropdown.You have a popup now select Designers option located on left hand block of menus. Uncheck the option Prevent saving changes that require table re-creation. Click on OK Button.

Andrew Barber's user avatar

Andrew Barber

39.5k20 gold badges94 silver badges123 bronze badges

answered Apr 14, 2013 at 15:39

FIFO BIZSOL's user avatar

FIFO BIZSOLFIFO BIZSOL

7296 silver badges6 bronze badges

Un-tick the Prevent saving changes that require table re-creation box from Tools ► Options ► Designers tab.

SQL Server 2012 example:

enter image description here

WonderWorker's user avatar

WonderWorker

8,4694 gold badges61 silver badges74 bronze badges

answered Aug 27, 2016 at 5:44

Pedram's user avatar

PedramPedram

6,21610 gold badges65 silver badges87 bronze badges

Copied from this link
» … Important We strongly recommend that you do not work around this problem by turning off the Prevent saving changes that require table re-creation option. For more information about the risks of turning off this option, see the «More information» section. »

» …To work around this problem, use Transact-SQL statements to make the changes to the metadata structure of a table. For additional information refer to the following topic in SQL Server Books Online

For example, to change MyDate column of type datetime in at table called MyTable to accept NULL values you can use:

alter table MyTable alter column MyDate7 datetime NULL «

Panther's user avatar

Panther

3,3029 gold badges27 silver badges50 bronze badges

answered Sep 30, 2015 at 5:25

Panagiotis's user avatar

PanagiotisPanagiotis

1311 silver badge2 bronze badges

4

And just in case someone here is also not paying attention (like me):

For Microsoft SQL Server 2012, in the options dialogue box, there is a sneaky little check box that APPARENTLY hides all other setting. Although I got to say that I have missed that little monster all this time!!!

After that, you may proceed with the steps, designer, uncheck prevent saving blah blah blah…

sneaky_check_box_in_option

answered Mar 21, 2016 at 7:47

Gellie Ann's user avatar

Gellie AnnGellie Ann

4391 gold badge6 silver badges10 bronze badges

1) Open tool which is on top.
2) Choose options from Picklist.
3) Now Comes the popup and you can now select designers option from the list of menus on the left side.
4) Now prevent saving changes need to be unchecked that needed table re-creation. Now Click OK.

answered Dec 18, 2015 at 10:54

Rishabh Seth's user avatar

From the Tools menu, click on Options, select Designers from the side menu and untick prevent changes that can lead to recreation of a table. Then save the changes

If you use sql server Management studio go to
Tools >> Options >> Designers and uncheck “Prevent Saving changes that require table re-creation”
It works with me

answered Aug 9, 2018 at 11:24

Taher Chtaywi's user avatar

1

If you can not see the «Prevent saving changes that required table re-creation» in list like that
The image

You need to enable change tracking.

  • Right click on your database and click Properties
  • Click change tracking and make it enable
  • Go Tools -> Options -> Designer again and uncheck it.

answered May 14, 2018 at 15:51

Emre Karataşoğlu's user avatar

Emre KarataşoğluEmre Karataşoğlu

1,6491 gold badge16 silver badges25 bronze badges

Actually, You are blocked by SSMS not the SQL Server.

The solution are either change setting of SSMS or use a SQL query.

Using SQL Query you could do the update freely.
Example you want to add a new column to a table, you could do like this :

ALTER TABLE Customers ADD Email varchar(255) NOT NULL DEFAULT ‘OK’;

Other option is changing SSMS setting. Please refer to other answer, as many has explain it.

answered Sep 8, 2020 at 15:07

Ahmad Pujianto's user avatar

Ahmad PujiantoAhmad Pujianto

1891 gold badge2 silver badges10 bronze badges

2

Microsoft SQL Server Management Studio 2016

Многие, кто работал в программе Microsoft SQL Server Management Studio, сталкивался с такой ситуацией, когда при сохранении изменений в структуре таблицы возникала ошибка.

Microsoft SQL Server Management Studio. Ошибка

И что бы мы не делали, как бы мы не пытались сохранить изменения — программа нам не дает этого сделать. Можно удалить данную таблицу и создать такую же структуру заново. А если спустя несколько минут нам нужно внести еще изменения в структуру? Удалять и создавать структуру не вариант. Оказывается в программе есть параметр, отвечающий за сохранение изменений в структуре таблицы.

Для этого нам необходимо выбрать пункт меню Сервис -> Параметры.

Microsoft SQL Server Management Studio. Параметры

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

Теперь вы сможете легко изменять и сохранять изменения в ваших таблицах.

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

If you have found a spelling error, please, notify us by selecting that text and tap on selected text.

В процессе взаимодействия с программным обеспечением компании Майкрософт  «SQL Server Management Studio», а конкретно при желании определить какие-либо корректировки  в табличном структурировании, бывают случаи, когда выскакивает предупреждающее диалоговое окно с оповещением, что  сохранение изменений в SQL запрещено. Полное полученное уведомление  выглядит так:

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

Когда появляется похожее сообщение в  MS SQL, тогда программное обеспечение не даст вам возможность внести и сохранить какие-то изменения. Как видно, сообщение довольно внушительное. Поэтому не все его внимательно читают до конца. Обычно на слове «удалить» внимательность пользователей притупляется. Естественно, удалить имеющуюся таблицу и структуру можно, а потом воссоздать ее заново. Но представьте, что вы удалили и воссоздали новую таблицу, а через какое-то время опять ее структурное представление нужно немного отредактировать. В такой ситуации опять выскочит предупреждающее сообщение. Это ограничение можно исключить довольно простыми способами.

Снимаем ограничение в MS SQL «Сохранение изменений запрещено»

Важно отметить, что такое ограничение активируется, когда пользователь решает внести корректировки в табличную структуру, а не просто внести какую-то информацию в уже созданные табличные ячейки. Уведомление «Сохранение изменений запрещено» в MS SQL появляется в следующих случаях:

  •  когда пользователь хочет переопределить параметр «запретить использование Nulls» для табличных колонок;

  •  если пользователь пытается перестроить структуру табличных колонок;

  •  когда пользователь пытается редактировать типаж информации, сохраняемой в колонке;

  •  когда пользователь хочет обозначить новую табличную колонку;

  •  и др.

На самом деле, такое оповещение появляется по одной простой причине — в табличных настройках MS SQL активирован параметр, предотвращающий внесение изменений в структурное оформление таблиц.

Снять это ограничение  в MS SQL «Сохранение изменений запрещено» возможно двумя способами:

  •  применить команду «ALTER TABLE»;

  •  отключить параметр, предотвращающий внесение изменений в табличное структурирование.

Снимаем ограничение MS SQL «Сохранение изменений запрещено» при помощи «ALTER TABLE»

Команда «ALTER TABLE» — это специальная SQL-команда, которая используется для редактирования структуры SQL-таблиц. При помощи этой команды можно «обойти» ограничивающий параметр и модифицировать таблицу по своему вкусу.

Например, чтобы добавить новую колонку в нашу таблицу, можно воспользоваться таким синтаксисом:

ALTER TABLE<наименование_таблицы>

{ADD<наименование_добавляемой_колонки><тип_данных_колонки> [атрибуты_колонки]}

 Другие инструкции, доступные в «ALTER TABLE»:

  •  «DROP COLUMN» — используется для удаления любой колонки таблицы;

  •  «ALTER COLUMN» — используется для изменения типа данных, сохраняемого в определенной колонке;

  •  «ADD CHEK» — применяется, когда нужно добавить какое-то ограничение к информации в колонке таблицы;

  •  «ADD FOREIGN KEY» — используется, когда колонке нужно добавить внешний ключ;

  •  «ADD PRIMARY KEY» — применяется, когда колонке нужно добавить первичный ключ;

  •  и др.

Решаем проблему MS SQL «Сохранение изменений запрещено», отключая ограничивающий параметр

Разрешить редактирование табличной структуры можно, если деактивировать ограничивающий параметр. Чтобы его деактивировать, следуйте алгоритму:

  1.  Запустите программное обеспечение Майкрософт SQL Server Management Studio.

  2.  В основном меню программы найдите подпункт «Сервис».

  3.  В этом подпункте  найдите раздел «Параметры».

  4.  В  этом разделе настроек отыщите подпункт «Конструкторы».

  5.  В этом подпункте настроек отыщите раздел «Конструкторы таблиц и баз данных».

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

  7.  После этого вам осталось только сохранить настройки, нажав кнопку «Ок».

Деактивация данного параметра исключает появление уведомления в MS SQL «Сохранение изменений запрещено». Опытные пользователи MS SQL уже давно знают об этой функции. Но они также знают, что в некоторых случаях отключение этого параметра может привести к потере информации. Поэтому использовать данное решение нужно с осторожностью.

Заключение

Сегодня мы рассказали, как решается проблема MS SQL «Сохранение изменений запрещено». Решить ее можно одним из предложенных способов. Лучший способ — это отключение ограничивающего параметра в настройках программы.


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

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

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

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


Ответы:


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

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

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

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

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

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







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

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







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

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

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

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

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

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

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

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

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


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

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

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

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

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

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



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

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

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


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


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

Пример SQL Server 2012:

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


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

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

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


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

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

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

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




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

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

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

sneaky_check_box_in_option


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

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


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


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


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

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

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

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

  • При сохранении были обнаружены ошибки однако существует возможность минимально сохранить файл
  • При создании нового тома выдает ошибку недостаточно памяти
  • При создании эпл айди выдает ошибку
  • При создании нового подключения ошибка 691
  • При создании точки восстановления ошибка 0х8000203