我的公司为我们的网络/应用服务器使用虚拟机。如果出现问题,这可以非常容易地回滚部署。但是,如果应用服务器部署也需要数据库部署,我们必须回滚,我有点不知所措。如何在不丢失数据的情况下回滚数据库架构更改?我唯一能想到的是编写一个脚本,将表/列恢复/恢复到原始状态。这真的是最好的方式吗?
答案 0 :(得分:2)
但是如果你确实删除了列,那么你将丢失数据,因为那些列/表(据说)将包含一些数据。而且由于我认为任何回滚通常都是暂时的,因为发现了一个错误,所以回滚是为了让它在修复时继续进行,然后重新安装或多或少相同的更改,如果用户可能会非常沮丧你丢失了这些数据,他们必须在系统修复后重新输入数据。
我建议您只允许添加表和列,不进行任何更改或删除,然后您可以回滚代码并保留数据,如果您有大量的回滚,可能会导致一些未使用的列,但这不应该发生,因为有人经常错误地添加了一个表/列,在这种情况下,DBA可以手动删除它们。
答案 1 :(得分:1)
一般来说,你不能这样做。
但是假设这样的回滚有意义,它意味着您尝试保留的数据独立于您想要还原的架构更改。
处理它的一种方法是:
如果架构更改不会使创建的脚本无效(例如更改列数会很棘手),上面的工作就会很好。
此question详细介绍了MS SQL中用于生成脚本的工具。