作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我经常使用 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/
我是一名优秀的程序员,十分优秀!