代码之家  ›  专栏  ›  技术社区  ›  user137348

使用DVCS[Mercurial]使我的数据库处于版本控制之下

  •  7
  • user137348  · 技术社区  · 16 年前

    对整个数据库进行版本控制的最佳方法是什么?

    为每个数据库对象(table、view、procedsure..)创建一个文件,或者为所有DDL脚本创建一个文件,并且任何新的更改都将放在一个单独的文件中?

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

    我想有一个通用的解决方案,任何类型的关系数据库。

    还有其他选择吗?

    4 回复  |  直到 16 年前
        1
  •  3
  •   Ry4an Brase    16 年前

    总的来说,我是一个风投迷,也是一个善变的助推器,但我真的认为你走错了路。

    VCS不仅仅是关于迭代的变更,“什么”,它们还涉及回答“谁”、“何时”和“为什么”。对于一个数据库来说,这些答案没有那么有趣,或者很难提供给风投公司。如果您在进行夜间导出并提交“who”将始终是“cron”,而“why”将始终是“午夜”。

    做“什么”和“何时”做得很好的事情是一个增量备份系统,这可能是更好的适合。

    在工作中我们使用Tivoli,在家里我使用rdiff备份和duplicity,但是有很多很好的选择。

    当然,您可以做到这一点,但我不认为它能为您带来比传统备份解决方案更多的好处。

        2
  •  2
  •   Martin Fabik    16 年前

    看看这个 post

        3
  •  1
  •   Michael Pakhantsov    16 年前

    如果您需要通用的解决方案-把所有的东西都放在脚本(简单的文本文件)中,并放在版本控制系统下(可用于任何VCS)。

    将类似的数据库对象分组到脚本中取决于您的需求。

    例如,您可以:

    在一个或多个脚本中存储表/索引/

    不过,需要记住的一点是:如果您直接在数据库中更改了表/视图/过程,请不要忘记更改脚本,也不要在更改脚本后在数据库中创建/重新创建/编译db对象。

        4
  •  1
  •   David Atkinson    15 年前

    SQL Source Control 目前支持SVN和TFS,但是Mercurial请求正在迅速增加,我们希望很快有一个关于这个的故事。

    我们使用UserVoice来衡量需求,因此如果您对此感兴趣,请相应地投票: http://redgate.uservoice.com/forums/39019-sql-source-control