2010-05-11 94 views
0

我的公司使用虚拟机作为我们的网络/应用程序服务器。如果出现问题,这可以非常容易地回滚部署。但是,如果应用程序服务器部署还需要数据库部署,并且我们必须回滚,否则我有点茫然。如何在不丢失数据的情况下回滚数据库模式更改?我能想到的唯一的事情就是编写一个脚本,将脚本放回/恢复到原始状态。这真的是最好的方法吗?如何在不丢失新数据的情况下回滚数据库部署?

回答

1

一般来说,你不能这样做。

但是,假设这种回滚有意义,这意味着您试图保留的数据与您希望恢复的模式更改无关。对付它

一种方法是:

  • 只备份数据(脚本),
  • 恢复模式以旧的和
  • 恢复数据

如果模式更改不会使创建的脚本无效(例如,更改列数很棘手),上述方法将很好地工作。

question详细介绍了MS SQL中可用于生成脚本的工具。

2

但是,如果你确实删除了列,那么你将会丢失数据,因为那些列/表(据说)会包含一些数据。由于我认为任何回滚通常都是暂时的,因为发现了一个错误,所以回滚是为了在修复时进行回滚,然后重新安装或多或少相同的更改,如果用户可能会感到不安您丢失了这些数据,并且系统修复后必须重新输入。

我建议你应该只允许添加表和列,不要修改或删除,那么你可以只回滚代码并保持原样,如果你有很多回滚可能会导致一些未使用的列,但不应该经常发生这样的情况,即有人错误地添加了表/列,在这种情况下,DBA可以手动删除它们。

相关问题