将SQLProj Pre / PostDeploy脚本设置为失败构建

时间:2014-05-29 17:02:06

标签: visual-studio-2013 sql-server-data-tools sqlproj

我正在努力通过VS2013部署SQLProj(数据库项目),我遇到了一个问题,我可以使用一些反馈。

当我发布更改时,它会对表执行CCRD(创建,复制,重命名,删除)操作。在PreDeploy脚本中创建和复制,在PostDeploy脚本中重命名,删除。我将这些语句封装在Try ... Catch块中并让它打印出错误消息。当Pre和Post部署脚本遇到问题时,发布完成,表明发布成功。当这些脚本遇到错误时,我需要将行为区别开来。我想在这些脚本中遇到的任何错误都会导致发布失败。我已经尝试过THROW命令抛出一个错误,并且我已经尝试将RAISERROR命令设置的严重性设置为20,当它执行时,根据BOL应该终止连接,但是发布仍然完成状态为"成功"。

2 个答案:

答案 0 :(得分:2)

我们所做的就是分裂这个过程。我们将SQLPackage.exe与脚本操作一起使用。然后我们使用SQLCMD.exe来执行脚本。这样你就有一个包含pre / main / post的脚本,并且在发生错误时使用SQLCMD将停止执行。

答案 1 :(得分:0)

听起来你正在做正确的事,它应该有效。

如果我不得不猜,我会说:

  • 您可能忽略了错误(:出现错误时忽略项目中的某个地方?sqlserver或您的环境配置为将错误视为警告并忽略它们?)
  • 你可能实际上并没有抛出错误 - 你可以在某个地方发布样本脚本供我们查看吗?