给出以下问题: 从同事快速更改后,存储过程出错了。 (我认为这里的理论不再需要更多的信息)
我们决定在更新脚本中提供正确的版本:
如果存在程序X .... DROP PROCEDURE X .... 创建程序X ....
对于将要执行更正的DBO,我们必须(应该)准备回滚机制。我的老板来找我并要求我准备一个回滚脚本。我告诉他,我们没有:因为当主脚本失败时,没有选择。它现在完全错了,我们不能回滚到错误的。这是毫无意义的。
他告诉我,我们需要它,而不是感觉......
当我问起理由时,他就离开了。
我错了?
答案 0 :(得分:2)
你所说的有一些逻辑,但如果这个论点等于说“我们不需要备份不起作用的代码”,我就同意你的老板。
这仍然是某人的昂贵时间,而这个缺陷可能是一个小问题。如果可以想象进一步的更新可能会使某些事情变得更加错误,那么请求能够回滚到不那么破坏的状态是合理的。
答案 1 :(得分:1)
如果这是一个生产服务器,您不希望停机,那么您应该有一个回滚过程。即使该过程仅在升级之前备份数据库并在失败时从备份恢复。
您还暗示'创建程序'将起作用或不起作用。这是事实,但这并不意味着程序实际上会起作用。您可以创建一个引用不存在的表的存储过程(至少在SQL Server上),它将编译得很好。
答案 2 :(得分:0)
两个错误并不是正确的。
如果之前对SP的更改有回滚选项,那么您将不会处于这种情况。所以即使你知道任何回滚都会变成“坏”版本。它应该仍然存在。
你在这里做的更新可能比现在更容易打破。
答案 3 :(得分:0)
从同事快速更改后,存储过程出错了。 (我认为这里的理论不再需要更多的信息)
需要更多信息。
更改脚本时,您的同事做了两件事:
您是否应该编写此脚本取决于以下因素: