2010-07-29 37 views
7

版本化我的整个数据库的最佳方法是什么?使用DVCS在版本控制下获取我的数据库[Mercurial]

创建为每个数据库对象的文件(表,视图,procedsure ..)或者更确切地说,有一个文件的所有DDL脚本和任何新的变化将在一个单独的文件中提出?

如何处理数据库管理器工具中所做的更改?

我想对任何RDBMS的通用解决方案。

还有其他的选择吗?

+0

微软SQL Server可以对源安全的版本控制来把,我不会告诉其他类似的解决方案。我真的很想找到适用于其他数据库的其他解决方案。 – 2010-07-29 11:27:29

+0

@Flakron Bytyqi:** Source Safe ** ?!如果[Eric Sink](http://www.sourcegear.com/vault/)看到此消息,他将亲自前往你的房子,并用销售发票将你截至半死。 – 2010-10-27 03:12:23

回答

1

如果你需要通用的解决方案 - 摆在脚本的一切(简单的文本文件),并把下版本控制系统(可以使用任何的VCS)。

将相似的数据库对象到脚本将取决于您的要求。

所以,你可能例如:

Store表/索引/在一个或几个脚本 在单个脚本的每个过程商店或合并小程序到一个脚本。

但是需要记住一件重要的事这种做法:如果直接在数据库中更改表/视图/过程不要忘了更改脚本并没有创建/重建/编译您更改脚本后DB数据库对象。

2

看一看这个post

3

我一般和一个大的水银助推器的巨大VCS迷,但我真的想你会走上错误的道路。

VCSS不只是反复变化,“是什么”,他们也即将在回答“谁”,“何时”和“为什么”。对于一个数据库来说,这些答案对于VCS来说是不太有趣或难以提供的。如果你每晚做出口和承诺,“谁”永远是“cron”,“为什么”永远是“午夜”。

其他的事情,现代VCSS真的很好帮助你合并来自多个分支的变化。这在数据库领域不太适用。你很少会说“我想要这个表结构,但是这个数据”,如果你做文本/差异合并不会帮助你很多。

,做该做的事“是什么”和“何时”非常好是一个增量备份系统,而这可能是更好的选择。

在工作中我们使用Tivoli和在家里我使用rdiff进行备份和口是心非,但也有很多伟大的选择。

我想我的一般经验法则是“如果它是类型化的手被人那么它就是源代码控制,如果生成它/导出,然后它会在增量备份”

当然你可以使这项工作,但我认为它会买更多的传统备份解决方案。

+0

我倾向于不同意。我们与几位开发人员一起开发我们的数据库并不断发展,事情变得一团糟,因为我们无法轻松跟踪对代码的更改。数据不是问题,可以通过定期备份来处理。这是需要结构的代码。 – thomaspaulb 2012-01-23 13:32:57

1

SQL Source Control目前支持SVN和TFS,但水银请求得到迅速增长,我们希望很快有这样的故事。

我们使用UserVoice的测量需求,所以请,如果你在这个有趣的是相应的投票:http://redgate.uservoice.com/forums/39019-sql-source-control

+1

好消息 - SQL Source Control现已发布,支持Mercurial(以及具有合适命令行的任何源代码管理系统)。 – 2011-04-02 19:26:31