目前,我们手动将更改从 DEV SQL 环境推送到测试和生产(使用 Visual Studio 中的架构比较,加上我们在更改 DEV 时创建的一些脚本),但这非常耗时且容易出错。
我们想知道是否有更好的方法来做到这一点以及我们需要如何实现这一点。
我读过有关可能使用版本控制(这将如何工作?),或者可能使用 RED GATES 的 SQL 源代码控制(但这可以用于将更改推送到测试,还是仅用于跟踪本地更改?)
我们需要一种可靠的方法来更新我们的测试和生产服务器,以便数据不会损坏/丢失...我们使用 SQL Server 2008 R2 和 Visual Studio 2012。
我们正在开始一个新项目,所以是时候做出改变了!感谢您的宝贵时间!
最佳答案
一种简单的方法是在数据库中使用简单的版本表,其中一行一列存储版本号。
现在,每次您将更改推送到开发时,创建增量sql脚本,有一个基于数据库当前版本的主脚本,将调用必要的增量sql脚本将模式升级到最新版本。
小心删除列、更改列类型或减小列大小,例如在增量脚本中将 varchar(100) 更改为 varchar(10),因为如果计划不当,可能会导致数据丢失。
增量脚本应该是幂等的,它们可以一遍又一遍地运行,以防万一处理升级过程中数据库崩溃的情况。
关于sql-server - 保持不同数据库环境同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14870349/