【问题标题】:rolling back datbabase changes with sqlcmd utility使用 sqlcmd 实用程序回滚数据库更改
【发布时间】:2020-11-12 12:23:28
【问题描述】:

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

/opt/mssql-tools/bin/sqlcmd -S tcp:$(Server) -d $(Database) -U $(UserName) -P '$(Password)' -b -i "$(ScriptFile)"

一旦脚本文件出现问题,我希望 SQLCMD.EXE 自动回滚所有更改。

我应该提一下,脚本文件中没有 TRANSACTIONS 管理。

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

【问题讨论】:

  • 嗨,您有机会查看下面的答案吗?这个案子的情况如何?

标签: azure-devops azure-pipelines azure-pipelines-release-pipeline sqlcmd invoke-sqlcmd


【解决方案1】:

您可能必须在脚本文件中添加回滚事务。 Azure 发布管道中没有配置来控制回滚行为。请参阅example here 在脚本中添加事务。

如果您不想在脚本文件中添加事务。您可以尝试在脚本下方运行的发布管道中添加一个 poweshell 任务,以将 BEGIN TRANSACTIONEND TRANSACTION 附加到您的查询内容中。

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

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

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

参见this thread 中的示例。

【讨论】:

    猜你喜欢
    • 2022-09-28
    • 1970-01-01
    • 1970-01-01
    • 2021-10-12
    • 2016-09-07
    • 1970-01-01
    • 2012-01-22
    • 1970-01-01
    • 2013-04-24
    相关资源
    最近更新 更多