【发布时间】:2014-10-22 07:04:45
【问题描述】:
将 msbuild 与 SSDT 一起使用,我尝试过 IncludeTransactionalScripts,但它似乎只将每个语句放在单独的事务中。 是否可以将多个数据库项目作为事务发布? 如果没有,我至少可以确保每个项目都在事务中发布吗?
【问题讨论】:
-
我认为如果您选择该选项,它现在就可以做到这一点。它在每次操作后检查错误,如果发现错误,则为架构更改部分中完成的所有操作发出 ROLLBACK。 (部署前和部署后部分是独立的,不在此范围内。)
-
你确定吗?查看脚本它会生成多个 BEGIN 和 COMMIT 事务,就像每个更改都在它自己的事务中一样。我想要一笔大交易。当然,如果有很多变化可能是不切实际的,但有时它会很有用。
-
如果出现错误,它肯定会回滚架构更改部分中的所有内容。当我依赖于尚未创建的数据库/表时,我痛苦地尝试只推送数据库项目的一部分,我知道这一点。在脚本中查找“IF @@ERROR 0”部分,您不应该看到多个提交,只是回滚。
-
谢谢,你是对的,我将不得不尝试进行“外部事务”来处理前置/后置脚本。
-
最好的办法是处理某种版本或依赖项,可能是部署前的“Begin Tran”和部署后的“提交/回滚”。我不知道如何将这三个部分联系在一起,以便 everything 本身成功或失败。 :(
标签: msbuild sql-server-data-tools