Azure devops 使用sqlcmd实用程序回滚数据库更改

Azure devops 使用sqlcmd实用程序回滚数据库更改,azure-devops,azure-pipelines,azure-pipelines-release-pipeline,sqlcmd,invoke-sqlcmd,Azure Devops,Azure Pipelines,Azure Pipelines Release Pipeline,Sqlcmd,Invoke Sqlcmd,我有一个发布管道,它使用“SqlCmd.exe”应用数据库更改。 我正在尝试使用以下命令行实用程序执行存储过程: /opt/mssql-tools/bin/sqlcmd -S tcp:$(Server) -d $(Database) -U $(UserName) -P '$(Password)' -b -i "$(ScriptFile)" 一旦脚本文件出错,我希望SQLCMD.EXE自动回滚所有更改 我应该提到,脚本文件中没有事务管理 请帮助我了解如何解决此问题。您可能需要

我有一个发布管道,它使用“SqlCmd.exe”应用数据库更改。 我正在尝试使用以下命令行实用程序执行存储过程:

/opt/mssql-tools/bin/sqlcmd -S tcp:$(Server) -d $(Database) -U $(UserName) -P '$(Password)' -b -i "$(ScriptFile)"
一旦脚本文件出错,我希望SQLCMD.EXE自动回滚所有更改

我应该提到,脚本文件中没有事务管理


请帮助我了解如何解决此问题。

您可能需要在脚本文件中添加回滚事务。azure发布管道中没有控制回滚行为的配置。请参阅以在脚本中添加事务

如果不想在脚本文件中添加事务。您可以尝试在脚本下面的发布管道中添加poweshell任务,以将
开始事务
结束事务
附加到查询内容中

$fullbatch = @()
$fullbatch += "BEGIN TRANSACTION;"

$fullbatch += Get-Content $(ScriptFile)
 
$fullbatch += "COMMIT TRANSACTION;"

sqlcmd -S tcp:$(Server) -d $(Database) -U $(UserName) -P '$(Password)' -b -Q "$fullbatch"

请参见中的示例。

您好,您是否有机会查看下面的答案,本案例的进展如何?