gpt4 book ai didi

sql - 使用 SqlPackage.exe 回滚失败的 DACPAC

转载 作者:行者123 更新时间:2023-12-04 22:22:38 25 4
gpt4 key购买 nike

我经常使用 EF 迁移来部署数据库,无论是从头开始还是为了进化。然而,我目前正在从事另一个使用 DACPAC 的团队项目,直到今天,这似乎也一样好。今天,我向缺少它的表添加了一个唯一键约束,正如您可能想象的那样,它爆炸了,导致通过 sqlpackage.exe 部署 DACPAC 失败。

我现在意识到故障绝不会回滚,所以现在我有一个处于部分转换状态的数据库,并且因为我有一个预部署脚本,该脚本指的是在预部署脚本运行后删除的列第一次,现在的状态使我无法再次运行 dacpac,因为它因此而失败。

我错误地认为 sqlpackage.exe 会将部署包装在事务中并在失败时回滚它。然后在意识到我的错误时,再次错误地假设我错过了某个地方的标志。

谁能告诉我如何在不破坏数据库的情况下安全地运行...

最佳答案

您可以使用/p:IncludeTransactionalScripts=true 让 SqlPackage.exe 作为单个事务执行主架构更改操作。但请注意,部署前和部署后脚本不包含在该事务逻辑中。建议的做法是以可以安全地重新执行(即作为幂等 T-SQL)的方式编写部署前和部署后脚本。

关于sql - 使用 SqlPackage.exe 回滚失败的 DACPAC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39707351/

25 4 0