sql-server - 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'
解决方案
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
推荐阅读
- mysql - 如何使用 Homebrew 在 macOS BigSur (Apple Silicon) 上安装和启动 MySQL 5.7?
- javascript - 将数组值添加为 Javascript 对象属性
- geolocation - 如何解决华为设备上的应用程序位置权限错误?
- google-apps-script - G 表:根据列值对行进行分组/分隔,使用值或条件边框格式添加行
- ios - 如何正确地将这个经典的 Swift 系列更新为更新的 Swift(与 Xcode 12 和 iOS 14 兼容)?
- javascript - Javascript - 不推荐使用事件 - 在页面上显示双倍
- swiftui - 来自 URL 的 WidgetKit 图像
- c++ - QML:带有“自带组件”的 C++ 类
- r - 使用重复事件数据测试事件聚类,最好在 R 中
- git - TYPO3 + 作曲家 + 部署