Visual studio 2013 将SQLProj部署前/部署后脚本设置为生成失败

Visual studio 2013 将SQLProj部署前/部署后脚本设置为生成失败,visual-studio-2013,sql-server-data-tools,sqlproj,Visual Studio 2013,Sql Server Data Tools,Sqlproj,我正在通过VS2013部署SQLProj(数据库项目),我遇到了一个问题,我需要一些反馈 发布更改时,它会对表执行CCRD(创建、复制、重命名、删除)操作。在PreDeploy脚本中创建和复制,在PostDeploy脚本中重命名和删除。我将这些语句封装在一个Try…Catch块中,并让它打印出错误消息。当部署前和部署后脚本遇到问题时,发布完成,显示发布成功。当这些脚本遇到错误时,我需要不同的行为。我希望这些脚本中遇到的任何错误都会导致发布失败。我尝试了THROW命令来抛出错误,并且在执行时尝试了

我正在通过VS2013部署SQLProj(数据库项目),我遇到了一个问题,我需要一些反馈


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

听起来你做的事情是对的,应该行得通

如果让我猜的话,我会说:

  • 您可能正在忽略错误(:on error ignore在项目中的某个位置?sqlserver或您的环境配置为将错误视为警告并忽略它们?)
  • 您可能实际上没有抛出错误-您可以将示例脚本发布到某个地方让我们查看吗

我们已经做了一些事情,就是拆分流程。我们在脚本操作中使用SQLPackage.exe。然后我们使用SQLCMD.exe执行脚本。这样,您就有了一个包含pre/main/post的脚本,并且使用SQLCMD将在出现错误时停止执行。

您可能想在dba.stackexchange.com上问这个问题