【问题标题】:Cannot delete column with only null values when BlockOnPossibleDataLoss=true当 BlockOnPossibleDataLoss=true 时无法删除只有空值的列
【发布时间】:2020-09-21 14:30:39
【问题描述】:

我正在使用蓝绿部署策略和扩展合同数据库模式。为了在我的数据库部署架构上实现这一点,我设置了属性 BlockOnPossibleDataLoss=true 因为在 Expand 阶段 我可以修改我的数据库而无需对旧版本进行任何中断更改。

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

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

现在我需要删除此列,但即使此列的所有记录均为 NULL 值,我也无法删除,因为我收到此错误:

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

即使使用 BlockOnPossibleDataLoss=true,我如何才能删除此列?

【问题讨论】:

    标签: sql-server dacpac blue-green-deployment


    【解决方案1】:
    1. 使用临时名称创建具有新架构的表(不包含您不想删除的列)。 tmp_YourTable 之类的东西(不是临时表)
    2. 将源表中的所有数据插入到新创建的表中
    3. 删除源表
    4. 将新表重命名为旧表名。 EXEC sp_rename 'tmp_YourTable', 'YourTable';

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-21
      • 2013-04-26
      • 1970-01-01
      • 2013-08-09
      • 2021-05-25
      • 2016-07-12
      相关资源
      最近更新 更多