gpt4 book ai didi

msbuild - SSDT 事务发布?

转载 作者:行者123 更新时间:2023-12-01 10:45:40 25 4
gpt4 key购买 nike

使用 msbuild 和 SSDT,我尝试了 IncludeTransactionalScripts,但它似乎只将每个语句放在一个单独的事务中。
是否可以将多个数据库项目作为事务发布?
如果没有,我至少可以确保每个项目都在交易中发布吗?

最佳答案

对于发现这个问题但不知道在哪里看的其他人:

有一个发布设置“包括事务脚本”,它在发布脚本的开头开始一个事务。然后它将脚本中的每个架构更改包装在错误检查中。出现错误时,事务会回滚并增加错误日志,但随后事务会从头开始。如果没有错误,事务继续未提交

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

最后,如果已注册错误,则整个事务将回滚:
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

请注意(如上面的评论),这不包括您的部署前/部署后脚本,因此您应该小心地将它们分开包装

下面的链接是 Peter Schott 的博客——我认为是上面评论的那个人——谢谢:)

http://schottsql.blogspot.co.uk/2012/11/ssdt-publishing-your-project.html

他很好地解释了如何在使用 SSMS 时配置这些设置

使用 Visual Studio 2015,我发现默认情况下未设置“包括事务脚本”设置。在 [Advanced...] 选项卡下定义发布设置 ([Build]>>[Publish {project name} ...]) 时,您必须选择此项:

enter image description here
enter image description here

关于msbuild - SSDT 事务发布?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26501987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com