我经常使用 EF 迁移来部署数据库,无论是从头开始还是为了演进。然而,我目前正在从事另一个使用 DACPAC 的团队项目,直到今天,这似乎还不错。今天,我在缺少唯一键约束的表中添加了唯一键约束,正如您可能想象的那样,它爆炸了,导致通过 sqlpackage.exe 进行 DACPAC 部署失败。
我现在意识到的是,故障绝不会回滚,所以现在我有一个处于部分转换状态的数据库,并且因为我有一个预部署脚本引用在预部署脚本运行后删除的列第一次,现在的状态是我不能再次运行 dacpac,因为它会因为这个原因而失败。
我错误地认为 sqlpackage.exe 会将部署包装在事务中并在失败时将其回滚。然后在意识到我的错误时,再次错误地假设我在某个地方错过了一个标志。
谁能告诉我如何在不破坏数据库的情况下安全地运行...