2010-09-06 56 views
3

我使用github维护版本和代码同步。 我们是两个团队,我们位于不同的地方。数据库的子版本(我想要的东西在数据库中的数据值,而不是架构)

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

更新: -

我Rails开发。但是,这些天我正在努力drupal项目(其中数据库是变化的中心)。所以我想确保团队必须有一个同步的数据库。也是各种表中的值。

我需要它使我们的数据值同步的东西。

集中式数据库是一个很好的解决方案。但是,事情变得不安,如果你使用Visual Studio,那么你可以脚本数据库表,视图,存储过程和函数从数据库解决方案.sql文件,然后检查这些版本控制,以及当有人脱机工作

+1

得挺这几个答案和与其相关联的问题:http://stackoverflow.com/questions/4952/database-version-control – serg10 2010-09-06 10:07:59

回答

1

看一看红门SQL源控制 - http://www.red-gate.com/products/SQL_Source_Control/

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

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

2

- 其我目前在做我的工作场所

在您不使用Visual Studio,那么你仍然可以在您的SQL作为.sql文件的脚本[但更多的工作],然后版本需要控制他们

+1

这是怎么VS的具体情况?如果你使用其他任何东西,你几乎可以做同样的事情:) – 2010-09-06 09:38:42

+0

+1,但马可的权利:) – 2010-09-06 09:42:15

+0

这是编辑一旦我写它说数据库解决方案的视觉工作室 - 对不起,周一早上嗜睡:) – stack72 2010-09-06 09:44:48

0

这些都是一些准备。

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

  2. 每一个变化之后,导出数据库,并将其提交到VCS。这个选项需要纪律和体力劳动。

  3. 使用模式的某种其他定义。例如,Doctrine for php有能力从一个yaml定义构建数据库,这个定义可以存储在vcs中。这可能是更容易的自动再点2

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

+0

花了我一点时间才意识到你的意思是4种选择,而不是4个步骤! – 2010-09-06 09:43:15

+0

有没有像github的解决方案。 – 2010-09-06 13:32:57

-1

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

基本上,它是一个工具,它可以让你指定所有更改数据库架构中独立于数据库的方式,然后这些更改应用到所有的数据库。

+0

我想要一些数据库中的数据值。 – 2010-09-06 12:12:58

1

您可以将Sql Source Control和Sql Data Compare一起使用,以同时用于源代码控制:模式和数据。这里是来自瑞盖特的文章:Source controlling data.

0

我感觉到你的痛苦。让SQL Server在SVN上表现出色,我遇到了很大的麻烦。最后,我选择了共享数据库解决方案。我每天运行一个扩展的脚本来将版本控制的所有模式定义(特别是存储过程)备份到文本文件中。由于这种改变的数量有限,所以效果很好。

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

0

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

0

结账OffScale DataGrove

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

关于一个集中的数据库 - 就像你不想使用相同的源代码一样,你不想在同一个数据库上工作。这意味着你会不断破坏彼此的代码,并在每次有人改变数据库中的某些内容时建立它们。

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

免责声明 - 我在超出标度工作:-)