【发布时间】:2011-09-25 08:07:42
【问题描述】:
是否可以(廉价或 FLOSS)对 SQL Server 2008 数据库架构进行版本控制?
【问题讨论】:
-
我添加了一个指向 SO 帖子的链接,该帖子解释了通过 svn 进行版本控制...在我编辑的答案中查看
标签: sql-server sql-server-2008 schema
是否可以(廉价或 FLOSS)对 SQL Server 2008 数据库架构进行版本控制?
【问题讨论】:
标签: sql-server sql-server-2008 schema
这是 Jeff Atwood 在database version control 上的一篇不错的文章
您可以为此使用Team edition for database professionals
这是一个list of tools,您可以购买也可以使用:
Red Gate SQL Compare from $295.
SQL 变更管理器每个实例 995 美元。
SQL Effects Clarity 标准版。 139 美元起
SQLSourceSafe 129 美元起。
sqlXpress Diff 联系价格。 :-(
Embarcadero Change Manager 联系价格。 :-(
2003 年 SQL 源代码控制 199 美元起
SASSI v2.0 professional 180 美元起
Evorex Source # 共享软件或 299 美元以上(有冲突的报告!)
编辑刚刚发现这篇解释通过svn进行版本控制的帖子:Versioning SQL Server database
【讨论】:
根据我的经验,在企业环境中没有简单的选择。
以下三种方法是主要选择(与使用的工具集无关)。
1) 将整个模式转储到文件中并将文件存储在存储库中
优点:简单
缺点:大文件 - 难以手动编辑 - 很难看到自上一个版本以来发生了什么变化 - 无法部署它,因此需要一些机制来准备开发和测试/实时系统之间的 DIFF 脚本
2) 将每个数据库对象转储到一个单独的文件中,存储在存储库中。
优点:很容易看出发生了什么变化。可以轻松地为大多数对象生成部署脚本(尽管有些事情仍然需要 DIFF 脚本,例如列定义更改)
缺点:必须以特定顺序运行脚本 - 管理该过程可能非常困难。
3) 将每个更改视为一个单独的操作,使用它自己的顺序编号的 SQL 脚本。
优点:开发人员可以轻松创建脚本,可以在每个平台上运行相同的脚本(理论上)
缺点:管理的噩梦 - 排序可能会成为一个问题,很难看到版本中发生了什么变化,或者给定对象何时发生变化。
在运行了所有 3 个选项后,我想说 2 很适合使用,但首先设置需要很长时间 - 以正确的顺序执行所有脚本需要很长时间 - 而且它仍然需要使用用于为 UAT/Live 生成脚本的数据库差异工具。所以我现在推荐 1 和 2 之间的混合。
【讨论】:
在 Visual Studio 中为数据库创建一个数据库项目。将该项目签入库系统,例如 SVN 或 Team Foundation Server。
【讨论】: