Azure devops 使用sqlcmd实用程序回滚数据库更改
我有一个发布管道,它使用“SqlCmd.exe”应用数据库更改。 我正在尝试使用以下命令行实用程序执行存储过程: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自动回滚所有更改 我应该提到,脚本文件中没有事务管理 请帮助我了解如何解决此问题。您可能需要
/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"
请参见中的示例。您好,您是否有机会查看下面的答案,本案例的进展如何?