数据库的子版本(我想要数据库中的数据值,而不是模式)

时间:2010-09-06 09:34:04

标签: database version-control

我正在使用github来维护版本和代码同步。 我们是两个团队,我们位于不同的地方。

我们如何确保数据库同步。

更新: -

我是rails开发者。但是现在我正在开发 drupal项目(其中数据库是变体的中心)。所以我想确保团队必须有一个同步数据库。还有各种表中的值。

我需要保持数据值同步的内容。

集中式数据库是一个很好的解决方案。但是当有人离线工作时,事情会受到干扰

8 个答案:

答案 0 :(得分:2)

如果您使用visual studio,那么您可以将数据库表,视图,存储过程和函数编写为数据库解决方案中的.sql文件的脚本,然后将其检查为版本控制 - 这是我目前在我的工作场所做的事情

在你不使用visual studio然后你仍然可以将你的sql脚本编写为.sql文件[但需要更多工作],然后根据需要对它们进行版本控制

答案 1 :(得分:1)

查看Red Gate SQL源代码管理 - http://www.red-gate.com/products/SQL_Source_Control/

说实话,我从来没有用过它,但是他们的其他软件太棒了。如果您只想保持数据库架构同步(而不是完全源代码控制),那么我过去就已经非常成功地使用了它们的SQL Compare产品。

(ps。我不为他们工作!)

答案 2 :(得分:1)

您可以将Sql Source Control与Sql Data Compare一起使用来源控制:架构和数据。以下是来自redgate的文章:Source controlling data.

答案 3 :(得分:0)

这些是一些可能性。

  1. 使用相同的数据库。建立一个每个人都可以连接的中央数据库。这样你就可以确保每个人都一直使用相同的数据库。

  2. 每次更改后,导出数据库并将其提交给VCS。此选项需要纪律和体力劳动。

  3. 使用某种其他模式定义。例如,Doctrine for php能够从yaml定义构建数据库,该定义可以存储在vcs中。这可以比第2点更容易自动化。

  4. 使用其他一些更新数据库的软件/脚本。

答案 4 :(得分:0)

我感觉到你的痛苦。我很难让SQL Server与SVN玩得很好。最后,我选择了共享数据库解决方案。每天我运行一个广泛的脚本来备份我们的所有模式定义(特别是存储过程),以便将版本控制备份到文本文件中。由于更改的数量有限,这很有效。

我现在也将这项技术用于我们的主要项目和个人项目。唯一不利的是它依赖于一直连接。其他答案表明完整的数据库版本控制非常耗时,我倾向于同意。对于“实时”升级,我们使用Red Gate工具,他们同时进行模式和数据比较,效果非常好。

答案 5 :(得分:0)

http://www.red-gate.com/products/SQL_Data_Compare/。我们使用此工具在我们公司中保持数据库同步。后来我们有了一些特定的要求,所以我们必须编写自己的代码进行同步。取决于您的数据库有多复杂以及发生了多少变化。如果你有时间没有人工作并且你可以锁定数据库以进行同步,那就简单多了。

答案 6 :(得分:0)

查看OffScale DataGrove

此产品跟踪对整个数据库的更改 - 架构和数据。您可以在任何时间点标记版本,并使用简单的命令返回到DB的旧状态。它还允许您创建同一数据库的虚拟,单独副本,以便每个团队成员可以拥有自己独立的数据库。所有虚拟副本都被跟踪到同一个存储库中,因此将数据库恢复到其他人的版本非常容易(只需检查其版本,就像使用源代码控制一样)。这意味着您的所有数据库始终可以同步。

关于集中式数据库 - 就像您不想使用相同的源代码一样,您不希望在同一个数据库上工作。这意味着每次有人在数据库中更改某些内容时,您将不断打破彼此的代码并进行构建。

我建议您为每个开发人员使用单独的数据库,并使用DataGrove同步它们。

免责声明 - 我在OffScale工作: - )

答案 7 :(得分:-1)

试试Wizardby。这是我的个人项目,但我在以前的几个工作中使用它并取得了很大的成功。

基本上,它是一个工具,允许您以独立于数据库的方式指定对数据库模式的所有更改,然后将这些更改应用于所有数据库。