3

目前我们手动将更改从我们的DEV SQL环境推送到测试和生产(使用Visual Studio中的架构比较,加上我们在对DEV进行更改时创建的一些脚本),但这是非常耗时且容易出错。保持不同的数据库环境同步

我们想知道是否有更好的方法来做到这一点,我们需要如何实现这一点。

我读过关于也许使用版本控制(这将如何工作?),或者可能使用RED GATES的SQL源代码控制(但可以用来将更改推送到TEST,还是仅用于保存轨道的局部变化?)

我们希望有一个可靠的方法来更新我们的测试&生产服务器,这样的数据不会被破坏/丢失......我们使用SQL Server 2008 R2和Visual Studio 2012

我们正在开始一个新项目,所以是时候进行改变了!感谢您的时间!

+0

你也可以看看SQL比较从红门。从他们的网站“比较数据库模式和部署差异” – 2013-02-14 08:37:50

+0

在[The Daily WTF](http://thedailywtf.com/Articles/Database-Changes-Done-Right.aspx)上有关于此主题的好文章。没有开玩笑,去看看! – user1429080 2013-02-14 11:48:57

回答

2

一个简单的方法就是在db中有一个简单的版本表,一行一列存储版本号。

现在,每当您将更改推向开发时,创建增量SQL脚本,请具有基于当前版本数据库的主脚本将调用必要的增量SQL脚本以将架构升级到最新版本。

小心删除列,更改列类型或减少列大小,例如您的增量脚本中的varchar(100)到varchar(10),因为如果计划不正确,可能会导致数据丢失。

您的增量脚本应该是幂等的,它们可以一遍又一遍地运行,以防在升级过程中db崩溃时处理这种情况。

0

VS中的模式比较是否有CLI?如果是这样,你可以在白天自动运行几次。如果没有,您可以尝试使用其他支持CLI的第三方工具,如用于架构的ApexSQL Diff和用于同步数据的ApexSQL Data Diff

1

尽管使用SQL源代码管理有很多好处(我希望您能够放手,因为我是产品经理!),但其目的仅限于版本控制,而不是管理和部署到你的各种环境。正确的Red Gate工具是Deployment Manager。

http://www.red-gate.com/delivery/deployment-manager/

有部署管理项目团队在这里保持了博客,这应该给你当刀具为首的一个想法:

http://thefutureofdeployment.com/

相关问题