SAS*_*SAS 2 msbuild sql-server-data-tools
使用带有SSDT的msbuild,我尝试过IncludeTransactionalScripts,但它似乎只将每个语句放在一个单独的事务中.是否可以将多个数据库项目作为事务发布?如果没有,我是否至少可以确保每个项目都在交易中发布?
小智 5
对于发现此问题的其他人,但不知道在哪里看:
有一个发布设置"包含事务脚本",它在发布脚本的开头处开始一个事务.然后,它会在错误检查中包装脚本中的每个模式更改.出现错误时,将回滚事务并增加错误日志,但事务从头开始.如果没有错误,则事务继续未提交
BEGIN TRANSACTION
...alter object here
IF @@ERROR <> 0 @@TRANCOUNT > 0
BEGIN
ROLLBACK;
END
IF @@TRANCOUNT = 0
BEGIN
INSERT INTO #tmpErrors (Error)
VALUES (1);
BEGIN TRANSACTION;
END
Run Code Online (Sandbox Code Playgroud)
最后,如果已注册错误,则回滚整个事务:
IF EXISTS (SELECT * FROM #tmpErrors) ROLLBACK TRANSACTION
GO
IF @@TRANCOUNT>0 BEGIN
PRINT N'The transacted portion of the database update succeeded.'
COMMIT TRANSACTION
END
ELSE PRINT N'The transacted portion of the database update failed.'
GO
Run Code Online (Sandbox Code Playgroud)
注意(如上面的注释中所示)这不包括您的部署前/部署脚本,因此您应该小心地将它们单独包装起来
以下链接是Peter Schott的博客 - 我认为上面评论过的同一个人 - 谢谢:)
http://schottsql.blogspot.co.uk/2012/11/ssdt-publishing-your-project.html
他很好地解释了在使用SSMS时如何配置这些设置
使用Visual Studio 2015,我发现默认情况下未设置"包含事务脚本"设置.在[高级...]选项卡下定义发布设置([Build] >> [Publish {project name} ...])时,您必须选择此项:
| 归档时间: |
|
| 查看次数: |
1698 次 |
| 最近记录: |