Сообщение об ошибке при попытке сохранения таблицы в SQL Server: «Сохранение изменений не разрешено»

Переводы статьи Переводы статьи
Код статьи: 956176 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Проблема

При использование языка определения данных (DDL) для изменения таблицы, при попытке сохранить эту таблицу в Microsoft SQL Server 2008 вы можете получить следующее сообщение:
Сохранение изменений не допускается. Изменения, сделанные Вами, требуют чтобы следующие таблицы были удалены и созданы заново.Вы либо сделали изменения в таблице, которая не может быть создана заново, или установлена настройка "Предотвращение записи изменений, требующих пересоздания таблицы".

Причина

Эта проблема возникает, когда включен параметр Запретить сохранение изменений, для которых требуется повторное создание таблицы и Вы сделали одно или несколько из следующих изменений в таблице:
  • Изменили параметр Разрешить значения NULL для столбца.
  • Изменили порядок столбцов в таблице.
  • Изменили тип данных столбца.
  • Добавить новый столбец.
Когда Вы изменяете таблицу таким образом, что изменяется структура метаданных таблицы, а затем пытаетесь сохранить таблицу, эта таблица должна быть пересоздана на основе этих изменений. Это может привести к потере метаданных и даже к прямой потере данных во время пересоздания таблицы. Если включен параметр Запретить сохранение изменений, требующих повторного создания таблицы в разделе Конструкторсреда SQL Server Management Studio (SSMS) параметры окна появляется сообщение об ошибке, описанное в разделе «Проблема».

Временное решение

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

http://MSDN.Microsoft.com/en-us/library/ms190273.aspx

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

alter table MyTable alter column MyDate7 datetime NULL

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

Статус

Корпорация Майкрософт подтверждает, что это является документированной ошибкой в продуктах Майкрософт, о которой упоминается в разделе «Относится к».

Дополнительная информация

Чтобы изменить параметр Запретить сохранение изменений, для которых требуется повторное создание таблицы , выполните следующие действия.
  1. Откройте SQL Server Management Studio (среда SSMS).
  2. В меню Сервис выберите пункт Параметры.
  3. В области переходов окна Параметры щелкните конструкторы.
  4. Установите или снимите флажок Запретить сохранение изменений, требующих повторного создания таблицы и нажмите кнопку ОК.
Примечание Если Вы отключите этот параметр, Вы не будете получать предупреждения при сохранении таблицы, о том, что внесенные Вами исправления изменяют структуру метаданных таблицы. В этом случае возможна потеря данных при сохранении таблицы.

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

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

Чтобы определить, включена ли функция отслеживания изменений для таблицы, выполните следующие действия.
  1. В среде SQL Server Management Studio найдите таблицу в Обозревателе объектов.
  2. Щелкните правой кнопкой мыши таблицу и выберите команду Свойства.
  3. В диалоговом окне Свойства таблицы выберите Отслеживание изменений.
Если значение элемента Отслеживания изменений имеет значение True, этот параметр включен для таблицы. Если значение равно False, то этот параметр недоступен.

Когда включена функция изменения трассировки, используйте инструкции Transact-SQL для изменения структуры метаданных таблицы.

Действия по воспроизведению проблемы

  1. В среде SQL Server Management Studio создайте таблицу, которая содержит первичный ключ в средстве конструктора таблиц.
  2. Щелкните правой кнопкой мыши базу данных, содержащую эту таблицу и выберите команду Свойства.
  3. В диалоговом окне Свойства базы данных нажмите кнопку Отслеживания изменений.
  4. Присвоено значение True,значение элемента Отслеживания изменений и нажмите кнопку ОК.
  5. Щелкните правой кнопкой мыши таблицу и выберите команду Свойства.
  6. В диалоговом окне Свойства таблицы выберите Отслеживание изменений.
  7. Присвоено значение True,значение элемента Отслеживания изменений и нажмите кнопку ОК.
  8. В меню Сервис выберите пункт Параметры.
  9. В диалоговом окне Параметры выберите конструкторы.
  10. Установите флажок Запретить сохранение изменений, которые требуется повторное создание таблицы и нажмите кнопку ОК.
  11. В режиме конструктора таблиц измените параметр Разрешить значения NULL для существующего столбца.
  12. Попробуйте сохранить изменения в таблицу.

Свойства

Код статьи: 956176 - Последний отзыв: 9 февраля 2014 г. - Revision: 8.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft SQL Server 2008 Express
  • Microsoft SQL Server 2008 Express with Advanced Services
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Web
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Express
  • Microsoft SQL Server 2008 R2 Express with Advanced Services
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2008 R2 Standard Edition for Small Business
  • Microsoft SQL Server 2008 R2 Web
  • Microsoft SQL Server 2008 R2 Workgroup
  • Microsoft SQL Server 2012 Developer
  • Microsoft SQL Server 2012 Enterprise
  • Microsoft SQL Server 2012 Express
  • Microsoft SQL Server 2012 Standard
  • Microsoft SQL Server 2012 Web
  • SQL Server 2012 Enterprise Core
Ключевые слова: 
kbtshoot kbsqlsetup sql2008relnotetools sql2008relnote kbprb kbmt KB956176 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Данная статья переведена с использованием программного обеспечения Майкрософт для машинного перевода и, возможно, отредактирована посредством технологии Community Translation Framework (CTF). Корпорация Майкрософт предлагает вам статьи, обработанные средствами машинного перевода, отредактированные членами сообщества Майкрософт и переведенные профессиональными переводчиками, чтобы вы могли ознакомиться со всеми статьями нашей базы знаний на нескольких языках. Статьи, переведенные с использованием средств машинного перевода и отредактированные сообществом, могут содержать смысловое, синтаксические и (или) грамматические ошибки. Корпорация Майкрософт не несет ответственности за любые неточности, ошибки или ущерб, вызванные неправильным переводом контента или его использованием нашими клиентами. Подробнее об CTF можно узнать по адресу http://support.microsoft.com/gp/machine-translation-corrections/ru.
Эта статья на английском языке: 956176

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com