5

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

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

4

2 回答 2

2

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

于 2016-09-15T12:27:19.633 回答
0

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

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

  • 您可能会忽略错误(:在您的项目中的某个地方发生错误忽略?sqlserver 或您的环境被配置为将错误视为警告并忽略它们?)
  • 您可能实际上并没有抛出错误 - 您可以在某处发布示例脚本供我们查看吗?
于 2014-06-19T01:13:49.540 回答