首页 > 解决方案 > Azure DevOps SQL Server 数据库部署任务中的错误未失败管道

问题描述

我正在使用 Azure DevOpsSQL Server database deploy任务来运行 SQL Server 代理作业,并使用其有效的内联 SQL 功能。

但是,如果作业失败,我有一些逻辑会从 SQL 脚本生成错误,如下所示。当脚本出错时,该错误会正确显示在任务日志中,但它不会使整个任务失败,而是返回一个succeeded状态。这让开发人员感到困惑,因为他们认为他们的更改并没有破坏工作,而事实上他们确实如此。

无论如何都要冒泡从 SQL 脚本生成的错误,以便SQL Server database deploy任务返回failed状态而不是succeeded状态。

请查看以下发布问题的屏幕截图和 YAML:

在此处输入图像描述

在此处输入图像描述

steps:
- task: SqlDacpacDeploymentOnMachineGroup@0
  displayName: 'Run SQL Agent Job'
  inputs:
    TaskType: sqlInline
    InlineSql: |
     /* SQL Agent Job Logic Here... */
     
     /* Raise error if job fails */
     
     RAISERROR('##vso[task.logissue type=error]]%s job has either failed or is not in a good state!', 16, 1, 'JobName') WITH LOG
    DatabaseName: master
    AdditionalArgumentsSql: '-QueryTimeout 1800 -IncludeSqlUserErrors -OutputSqlErrors 1 -Verbose'

标签: sql-serverazure-devopsazure-pipelines-release-pipeline

解决方案


Azure DevOps SQL Server 数据库部署任务中的错误未失败管道

您可以尝试使用日志记录命令从您的内联 Sql 脚本构建失败:

##vso[task.complete result=Failed;]DONE

##vso[task.complete]current operation

result=Succeeded|SucceededWithIssues|Failed

完成当前任务的时间线记录,设置任务结果和当前操作。当未提供结果时,将结果设置为成功。例子: ##vso[task.complete result=Succeeded;]DONE


推荐阅读