Невозможно удалить столбец только с нулевыми значениями, если BlockOnPossibleDataLoss = true

Я использую стратегию сине-зеленого развертывания с шаблоном расширения базы данных контрактов. Для этого в моей схеме развертывания базы данных я установил свойство BlockOnPossibleDataLoss = true, потому что на этапе расширения я могу изменить свою базу данных без каких-либо изменений в старой версии. введите описание изображения здесь

У меня был столбец, который больше не нужен, поэтому я выполнил следующие шаги:

  1. Я изменил этот столбец, чтобы разрешить нулевые значения
  2. Тогда мои новые записи больше не заполняют этот столбец
  3. Я запустил сценарий, который установил значение null для этого столбца для всех записей таблицы

Теперь мне нужно удалить этот столбец, но даже со всеми записями со значением NULL для этого столбца я не могу, потому что я получил эту ошибку:

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

Как я могу удалить этот столбец даже с помощью BlockOnPossibleDataLoss = true?


person Matheus Xavier    schedule 17.09.2020    source источник


Ответы (1)


  1. Создайте таблицу с новой схемой (без столбца, который вы не хотите отбрасывать) с временным именем. Что-то вроде tmp_YourTable (не временная таблица)
  2. Вставить все данные из исходной таблицы во вновь созданную таблицу
  3. Отбросить исходную таблицу
  4. Переименуйте новую таблицу в старое имя таблицы. EXEC sp_rename 'tmp_YourTable', 'YourTable';
person Preben Huybrechts    schedule 21.09.2020