4

目前我们手动将更改从我们的 DEV SQL 环境推送到测试和生产(使用 Visual Studio 中的模式比较,加上我们在更改 DEV 时创建的一些脚本),但这非常耗时且容易出错。

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

我读过可能使用版本控制(这将如何工作?),或者可能使用 RED GATES 的 SQL 源代码控制(但这可以用于将更改推送到 TEST,还是仅用于跟踪本地更改? )

我们想要一种可靠的方式来更新我们的测试和生产服务器,这样数据就不会损坏/丢失......我们使用 SQL Server 2008 R2 和 Visual Studio 2012。

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

4

3 回答 3

2

一种简单的方法是在数据库中有一个简单的版本表,其中一行一列存储版本号。

现在每次将更改推送到 dev 时,创建增量 sql 脚本,拥有一个基于当前 db 版本的主脚本,将调用必要的增量 sql 脚本将架构升级到最新版本。

请注意在增量脚本中删除列、更改列类型或减小列大小,例如 varchar(100) 到 varchar(10),因为如果计划不当,可能会导致数据丢失。

您的增量脚本应该是幂等的,它们可以一遍又一遍地运行,以防万一升级期间数据库崩溃的情况。

于 2013-02-14T08:32:02.533 回答
1

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

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

部署管理器项目团队在这里维护了一个博客,它应该让您了解该工具的发展方向:

http://thefutureofdeployment.com/

于 2013-02-23T18:27:01.320 回答
0

VS 中的模式比较是否有 CLI?如果是这样,您可能可以自动化它在一天中运行几次。如果不是,您可以尝试使用其他一些支持 CLI 的 3rd 方工具,例如用于模式的 ApexSQL Diff 和用于同步数据的ApexSQL Data Diff 。

于 2013-02-14T10:21:00.570 回答