我管理一个混合数据库环境,我们的程序员可以使用一些很好的回滚选项。我正在考虑使用 SQL Compare、Red Gate Source Control 和其他一些工具,但我想不出什么是确保回滚时数据丢失最少的最佳方法。
假设我们处于边缘情况,例如当外键被添加到另一个填充有客户数据的表时,我们需要回滚对主表的更改。有哪些行业标准最佳实践可以确保在事务日志恢复、快照恢复、redgate 源代码控制等之外顺利回滚,以处理这些难以从场景中恢复的问题?
谢谢!
我管理一个混合数据库环境,我们的程序员可以使用一些很好的回滚选项。我正在考虑使用 SQL Compare、Red Gate Source Control 和其他一些工具,但我想不出什么是确保回滚时数据丢失最少的最佳方法。
假设我们处于边缘情况,例如当外键被添加到另一个填充有客户数据的表时,我们需要回滚对主表的更改。有哪些行业标准最佳实践可以确保在事务日志恢复、快照恢复、redgate 源代码控制等之外顺利回滚,以处理这些难以从场景中恢复的问题?
谢谢!
好吧,我认为拥有一个支持生产中的工作负载、数据和边缘案例的测试系统应该可以减轻回滚的需要。如果您可以在类似系统中正确测试部署,则应该很少有需要回滚的情况。
也就是说,您还可以做很多事情来使您的代码更改向后兼容。不久前,我就此写了一系列技巧,其中包括我改变关系的技巧:
http://www.mssqltips.com/sqlservertip/2074/make-your-sql-server-database-changes-backward-compatible-when-changing-a-relationship/
http://www.mssqltips.com/sqlservertip/2071/make-your-sql-server-database-changes-backward-compatible-when-renaming-an-entity/
http://www.mssqltips.com/sqlservertip/2050/make-your-sql-server-database-changes-backward-compatible-when-dropping-a-column/
http://www.mssqltips.com/sqlservertip/2035/make-your-sql-server-database-changes-backward-compatible-when-adding-a-new-column/
每个应用程序都是不同的,因此您不会找到很多“行业标准”解决方案。但是您应该能够总结出大量常识,从而减少或消除您担心它的需要。
不,我不是说你不应该有一个回滚计划,但是当更改被适当地计划和测试时,回滚计划不应该需要大量的努力来设计,并且应该很少——如果有的话——被使用。