如何进行数据库模式的版本控制?

时间:2011-06-29 16:44:49

标签: sql-server sql-server-2008 schema

是否有(Cheap或FLOSS)对SQL Server 2008数据库架构进行版本控制?

3 个答案:

答案 0 :(得分:7)

以下是Jeff Atwood在database version control

上发表的精彩文章

您可以将Team edition for database professionals用于此目的

以下是您可以购买的list of tools,也可以使用:

Red Gate SQL Compare from $295.

DB Ghost from $195

SQL Change Manager每个实例995美元。

SQL Effects Clarity standard ed。来自$ 139

SQLSourceSafe来自$ 129。

sqlXpress Diff联系价格。 : - (

Embarcadero Change Manager联系价格。 : - (

Apex SQL Diff from $399

SQL Source Control 2003起价199美元

SASSI v2.0 professional来自$ 180

Evorex Source#shareware或$ 299 +(相互矛盾的报告!)

修改刚刚发现这篇文章通过svn解释版本控制:Versioning SQL Server database

答案 1 :(得分:1)

在Visual Studio中为数据库创建数据库项目。将项目检入库系统,例如SVN或Team Foundation Server。

答案 2 :(得分:1)

根据我的经验,在企业环境中没有简单的选择。

以下三种方法是主要选择(无论使用何种工具组)。

  

1)将整个模式转储到文件中并将文件存储在存储库

PROS:轻松

缺点:大文件 - 难以手动编辑 - 很难看到自上一版本以来发生的变化 - 无法部署它所以需要一些机制来在Dev和Test / Live系统之间准备DIFF脚本

  

2)将每个数据库对象转储到一个单独的文件中,存储在存储库中。

PROS:很容易看出发生了什么变化。可以轻松地为大多数对象生成部署脚本(尽管有些事情仍然需要DIFF脚本,例如列定义更改)

缺点:必须按特定顺序运行脚本 - 管理该过程可能非常困难。

  

3)将每个更改视为一个单独的操作,使用它自己的顺序编号的SQL脚本。

PROS:开发人员可以轻松创建脚本,可以针对每个平台运行相同的脚本(理论上)

缺点:要管理的梦魇 - 排序可能会成为一个问题,很难看出发布中的变化,或者某个特定对象发生了变化。

运行所有3个选项后,我会说2可以使用,但是首先需要花费很长时间才能设置 - 以正确的顺序执行所有脚本需要花费很长时间 - 并且它仍然需要使用一个Database diff工具,用于为UAT / Live生成脚本。所以我现在建议1和1之间的混合2。