【问题标题】:Nested SQL in MSBuild not failing TeamCity buildMSBuild 中的嵌套 SQL 不会失败 TeamCity 构建
【发布时间】:2017-02-15 07:33:34
【问题描述】:

我正在使用 TeamCity 9 中的 MSBuild 构建运行程序作为构建过程的一部分。

在一些 MSBuild 文件中,我通过 MSBuild.ExtensionPack.SqlServer 命名空间运行嵌套 SQL。 如果在运行 SQL 代码时发生错误,则 MSBuild 目标不会向 TeamCity 构建返回错误,因此整体构建状态是成功的,没有记录任何错误。

为了使运行它的 TeamCity 构建失败,我究竟如何得到从 SQL 返回到 MSBuild 的错误?

这里是示例代码,在 SQL 代码中存在故意错误,该代码在运行时不会向构建返回错误:

<Target Name="RunSQL">
    <MSBuild.ExtensionPack.SqlServer.SqlCmd
        TaskAction="Execute"
        CommandLineQuery="EXEC [Database1].dbo].[UpdateSomething]" />
</Target>

【问题讨论】:

    标签: sql tsql build msbuild teamcity


    【解决方案1】:

    我在SqlCmd 类的SeverityLevel 属性中找到了解决方案

    将此 SeverityLevel 属性设置为 1 会将所有错误发送到 MSBuild 任务,最终导致运行它的 TeamCity 构建失败。

    我的最终代码如下所示

    <Target Name="RunSQL">
        <MSBuild.ExtensionPack.SqlServer.SqlCmd
        TaskAction="Execute"
        SeverityLevel="1"
        CommandLineQuery="EXEC [Database1].dbo].[UpdateSomething]" />
    </Target>
    

    解决方案来自: http://www.msbuildextensionpack.com/help/4.0.9.0/html/3b72c130-7fc9-8b8a-132c-62999e5b1183.htm

    【讨论】: