目前我们手动将更改从DEV SQL环境推送到TEST和生产(使用Visual Studio中的Schema compare,加上我们在更改DEV时创建的一些脚本),但这非常耗时并且容易出错。
我们想知道是否有更好的方法可以做到这一点,我们将如何实现这一点。
我已经读过可能使用版本控制(这将如何工作?),或者可能使用RED GATES的SQL Source控件(但是这可以用来推动对TEST的更改,或者它只用于跟踪当地的变化?)
我们想要一种可靠的方式来更新我们的TEST&生产服务器,以便数据不会被损坏/丢失......我们使用SQL Server 2008 R2和Visual Studio 2012。
我们正在开始一个新项目,所以是时候改变了!谢谢你的时间!
答案 0 :(得分:2)
执行此操作的一种简单方法是在db中使用简单版本表,其中包含一行和一列存储版本号。
现在每次将更改推送到dev时,创建增量sql脚本,拥有一个基于当前db版本的主脚本,将调用必要的增量sql脚本将架构升级到最新版本。
小心删除列,更改列类型或减小列大小,例如增量脚本中的varchar(100)到varchar(10),因为如果没有正确规划,可能会导致数据丢失。
增量脚本应该是幂等的,它们可以反复运行,以防万一在db升级过程中崩溃时处理这种情况。
答案 1 :(得分:1)
虽然使用SQL源代码控制有很多好处(我很乐意为您提供帮助,因为我是产品经理!),但其目的仅限于版本控制,而不是管理和部署到您的各种环境。正确的Red Gate工具是Deployment Manager。
http://www.red-gate.com/delivery/deployment-manager/
此处有一个由Deployment Manager项目团队维护的博客,可以让您了解该工具的发展方向:
答案 2 :(得分:0)
VS中的架构比较是否有CLI?如果是这样,你可以自动将它在白天运行几次。如果没有,您可以尝试使用支持CLI的其他第三方工具,例如ApexSQL Diff用于架构,ApexSQL Data Diff用于同步数据。