преамбула
Сегодня я изменял столбец в SQL Server 2008, меняя тип данных с чего-то вроде валюты (18,0) на (19,2).
Я получил сообщение об ошибке «Внесенные вами изменения требуют удаления и повторного создания следующих таблиц» с SQL Server.
Прежде чем ответить, пожалуйста, прочитайте следующее:
Я уже знаю, что есть опция в Инструменты ► Параметры ► Дизайнер ► Дизайнеры таблиц и баз данных ► Снимите флажок «Запретить сохранение изменений, которые требуют пересоздания таблицы». ... так что не отвечай с этим!
Актуальный вопрос
Мой актуальный вопрос для чего-то другого, а именно:
Есть ли какие-либо негативные последствия / возможные недостатки этого?
Действительно ли таблица удаляется и воссоздается автоматически, если этот флажок снят?
Если да, является ли таблица точной копией 100% точной копии исходной таблицы?
источник
Ответы:
Таблица удаляется и воссоздается только в тех случаях, когда это единственный способ, которым SQL Server Management Studio был запрограммирован, чтобы знать, как это сделать.
Конечно, есть случаи, когда он будет делать это, когда в этом нет необходимости, но также будут случаи, когда изменения, которые вы вносите в Management Studio, не будут сбрасываться и пересоздаваться, потому что это не нужно.
Проблема в том, что перечислять все случаи и определять, на какую сторону линии они попадают, будет довольно утомительно.
Вот почему мне нравится использовать
ALTER TABLE
в окне запросов вместо визуальных дизайнеров, которые скрывают то, что они делают (и, откровенно говоря, есть ошибки) - я точно знаю, что произойдет, и я могу подготовиться к случаям, когда единственная возможность это удалить и заново создать таблицу (что на некоторое число меньше, чем то, как часто SSMS будет делать это с вами).источник
Сервис -> Параметры -> Узел Дизайнеры -> Снимите флажок « Запретить сохранение изменений, требующих воссоздания таблицы ».
источник
Справка. Отключение этой опции поможет избежать повторного создания таблицы, а также может привести к потере изменений. Например, предположим, что вы включили функцию отслеживания изменений в SQL Server 2008, чтобы отслеживать изменения в таблице. Когда вы выполняете операцию, которая вызывает повторное создание таблицы, вы получаете сообщение об ошибке, упомянутое в разделе «Проблема». Однако если вы отключите эту опцию, существующая информация об отслеживании изменений будет удалена при повторном создании таблицы. Поэтому Microsoft рекомендует не обходить эту проблему, отключив этот параметр.
источник
SQL Server удаляет и воссоздает таблицы, только если вы:
Использование ALTER более безопасно, так как в случае потери метаданных при повторном создании таблицы ваши данные будут потеряны.
источник
IDENTITY
Например, добавьте / удалите свойство столбца.Да, есть негативные последствия от этого:
Если вы запишите сценарий изменения, заблокированного этим флагом, вы получите что-то вроде приведенного ниже сценария (все, что я превращаю столбец идентификатора в Контакте в столбец с автоматическим номером IDENTITY, но у таблицы есть зависимости). Обратите внимание на возможные ошибки, которые могут возникнуть при выполнении следующих действий:
-
источник