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

5

我正在尝试通过VS2013部署SQLProj(数据库项目),但遇到了问题,希望能得到一些反馈。

当我发布更改时,它会执行CCRD(创建,复制,重命名,删除)操作以进行表格。在PreDeploy脚本中进行创建和复制,在PostDeploy脚本中进行重命名和删除。我已将这些语句封装在Try...Catch块中,并打印出错误消息。当Pre和Post deploy脚本遇到问题时,发布会顺利完成并显示为成功。然而,当这些脚本遇到错误时,我需要有不同的行为方式。我希望在这些脚本中遇到任何错误时都能导致发布失败。我尝试使用THROW命令来抛出错误,还尝试使用RAISERROR命令在其执行时设置严重性为20,根据BOL应该终止连接,但是发布仍以“成功”的状态完成。


你可能想在dba.stackexchange.com上提出这个问题。 - blueberryfields
2个回答

2

我们所做的一件事是将流程分解。我们使用带有脚本操作的SQLPackage.exe。然后,我们使用SQLCMD.exe执行该脚本。这样,您就拥有一个包含预处理/主要/后处理的脚本,并且使用SQLCMD会在出现错误时停止执行。


0

听起来你在做正确的事情,它应该可以工作。

如果我猜的话:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接