sql-server - 保持不同数据库环境同步

标签 sql-server project-management development-environment change-management

目前,我们手动将更改从 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/

相关文章:

linux - 如何在我的开发环境中使用共享库?

sql-server - 如何将一个大数据库表拆分为多个数据库表

testing - 如何在同一个 Eclipse/CDT 项目中构建库和测试可执行文件?

ASP.NET核心: Calling web api returns 500

svn - 在线协作环境(不仅面向开发)

project-management - 你如何处理 Bugzilla 中的相关错误?

development-environment - 单个开发人员完成所有 SDLC 事件——我应该如何进一步进行?

sql-server - 在 SQL Server 2008 中将 NVARCHAR 转换为 INT 数据类型

sql - 在 TSQL 中检查两个日期时间是否在同一日历日的好方法是什么?

sql - 在日期不同时加入日期表