我的公司使用虚拟机作为我们的网络/应用程序服务器。如果出现问题,这可以非常容易地回滚部署。但是,如果应用程序服务器部署还需要数据库部署,并且我们必须回滚,否则我有点茫然。如何在不丢失数据的情况下回滚数据库模式更改?我能想到的唯一的事情就是编写一个脚本,将脚本放回/恢复到原始状态。这真的是最好的方法吗?如何在不丢失新数据的情况下回滚数据库部署?
0
A
回答
1
一般来说,你不能这样做。
但是,假设这种回滚有意义,这意味着您试图保留的数据与您希望恢复的模式更改无关。对付它
一种方法是:
- 只备份数据(脚本),
- 恢复模式以旧的和
- 恢复数据
如果模式更改不会使创建的脚本无效(例如,更改列数很棘手),上述方法将很好地工作。
此question详细介绍了MS SQL中可用于生成脚本的工具。
2
但是,如果你确实删除了列,那么你将会丢失数据,因为那些列/表(据说)会包含一些数据。由于我认为任何回滚通常都是暂时的,因为发现了一个错误,所以回滚是为了在修复时进行回滚,然后重新安装或多或少相同的更改,如果用户可能会感到不安您丢失了这些数据,并且系统修复后必须重新输入。
我建议你应该只允许添加表和列,不要修改或删除,那么你可以只回滚代码并保持原样,如果你有很多回滚可能会导致一些未使用的列,但不应该经常发生这样的情况,即有人错误地添加了表/列,在这种情况下,DBA可以手动删除它们。
相关问题
- 1. 如何在不丢失数据的情况下重命名数据库?
- 2. 如何在不丢失未删除数据的情况下快照数据库?
- 3. Django - 在不丢失数据的情况下将数据添加到数据库
- 4. 如何在不丢失表格的情况下更新数据库模式
- 5. 如何在不丢失数据的情况下切换UIViews?
- 6. 如何在不丢失形状的情况下过滤数据?
- 7. 在不知道目标数据库的情况下部署数据库项目
- 8. 如何在不丢失数据的情况下更改核心数据SQLite数据库的结构
- 9. 将最新更改部署到生产数据库 - 不丢失数据
- 10. 如何在不丢失数据的情况下捕获Linux VM的映像
- 11. SQLite3:如何在不丢失数据的情况下修改fileds的类型
- 12. 有没有办法在不丢失数据的情况下更新Primefaces表单?
- 13. 在不丢失数据的情况下更新VSTS用户参考
- 14. 如何在不丢失索引的情况下转换熊猫数据框?
- 15. 如何在不丢失标签的情况下刮取网页数据
- 16. 如何在不丢失应用数据的情况下移除Crosswalk?
- 17. 如何在不丢失数据的情况下更改模型类名称?
- 18. 如何在不丢失数据的情况下减少整数数组的长度(二进制数据[0,1])?
- 19. 如何在没有数据库的情况下收集数据
- 20. 如何在数据库值更改的情况下更新ListView?
- 21. 如何进行数据库更新,创建原子,并在更新不完整的情况下回滚?
- 22. MDM在设备丢失情况下擦除数据
- 23. 在不使用数据库的情况下存储数据android
- 24. 在不修改旧数据的情况下更新数据
- 25. 在不影响数据源的情况下更新数据集
- 26. 如何在不使用数据库的情况下在datagridview中显示数据
- 27. 如何在不安装的情况下使用数据库?
- 28. 如何在不使用数据库的情况下登录
- 29. 如何在不影响现有数据库的情况下将新数据库更新到现场网站
- 30. 如何部署数据库