0

几分钟前我和我的老板讨论过,现在想要更多的意思,如果我错了,或者他错了。

给出了以下问题:在同事快速更改后,存储过程出错。(我认为这里的理论不需要更多信息)

我们决定在更新脚本中提供正确的版本:

IF EXIST PROCEDURE X .... DROP PROCEDURE X .... CREATE PROCEDURE X ....

对于将要执行更正的 DBO,我们必须(应该)准备一个回滚机制。我的老板来找我,要我准备一个回滚脚本。我告诉他,我们没有:因为当主脚本失败时,别无选择。它现在完全错了,我们不能回滚到错误的那个。这是没有意义的。

他告诉我,我们需要它,它不是无意义的..

当我问原因时,他就走了。

我错了?

4

4 回答 4

2

你所说的有一些逻辑,但如果这个论点等同于说“我们不需要备份不起作用的代码”,我可以同意你的老板

这仍然是某人的昂贵时间,而且这个缺陷可能是一个小缺陷。如果可以想象进一步的更新可能会以某种方式使事情变得更加错误,那么请求能够回滚到损坏较少的状态是合理的。

于 2009-07-14T10:26:50.637 回答
1

如果这是一个生产服务器,您不希望停机,您应该有一个回滚过程。即使该过程只是在升级之前备份数据库并在失败时从备份恢复。

您还暗示“创建过程”将起作用或不起作用。这是真的,但这并不意味着该程序将真正起作用。您可以创建一个引用不存在的表的存储过程(至少在 SQL Server 上),并且可以正常编译。

于 2009-07-14T10:38:27.150 回答
0

两个错误不等于一个正确。

如果之前对 SP 的更改有回滚选项,那么您就不会遇到这种情况。因此,即使您知道任何回滚都会转到“坏”版本。它应该仍然存在。

您在此处所做的更新可能会比现在更糟。

于 2009-07-14T10:31:41.923 回答
0

在同事快速更改后,存储过程出错了。(我认为这里的理论不需要更多信息)

需要更多信息。

更改脚本时,您的同事做了两件事:

  1. 他确实(或没有)改进了他修复的存储过程
    • 他在这个存储过程中引入了一个错误

您是否应该编写此脚本,取决于以下因素:

  1. 改进的显着程度(如果有)
    • 错误有多严重,以及
    • 写这个剧本有多难。
于 2009-07-14T10:35:55.300 回答