2

我正在使用具有扩展合同数据库模式的蓝绿色部署策略。为了在我的数据库部署模式上实现这一点,我设置了属性BlockOnPossibleDataLoss=true因为在展开阶段我可以修改我的数据库而无需对旧版本进行任何中断更改。 在此处输入图像描述

我有一个不再需要的专栏,所以我按照以下步骤操作:

  1. 我已更改此列以允许空值
  2. 然后我的新记录不再填充此列
  3. 我运行了一个脚本,将此列的 null 设置为所有表记录

现在我需要删除此列,但即使该列的所有记录都具有 NULL 值,我也不能因为我收到此错误:

检测到行。架构更新正在终止,因为可能会发生数据丢失。

即使使用BlockOnPossibleDataLoss=true如何删除此列?

4

1 回答 1

0
  1. 使用临时名称创建具有新架构的表(没有您不想删除的列)。像tmp_YourTable(不是临时表)
  2. 将源表中的所有数据插入到新创建的表中
  3. 删除源表
  4. 将新表重命名为旧表名。EXEC sp_rename 'tmp_YourTable', 'YourTable';
于 2020-09-21T06:30:39.130 回答