【问题标题】:How do you deal with multiple developers and database changes?您如何处理多个开发人员和数据库更改?
【发布时间】:2011-04-06 03:58:20
【问题描述】:

我想知道你们如何处理由 2 个或更多开发人员组成的开发数据库更改?您是否有一个每个人都可以访问的全局数据库,也许是一个本地副本并手动应用脚本更改?很高兴看到您注意到每种方法的优缺点以及团队中的开发人员数量。

【问题讨论】:

  • 在我工作的一个环境中,我们编写了所有数据库更改的脚本并使用 SVN 跟踪脚本更改。但这很痛苦,而且它也不是万无一失的,因为它可以被绕过(无意中)。必须有更好的方法,所以我会对这个问题的答案感兴趣。
  • 也许这想在dba.stackexchange.com
  • @andesoj,我不确定它是否属于那里。这更多是关于开发而不是数据库管理。

标签: database process build-process


【解决方案1】:

以 Martin Fowler 的“Evolutionary Database Design”开头。总结的很好

还有其他关于数据库开发的问题也可能有用,例如Is RedGate SQL Source Control for me?

【讨论】:

    【解决方案2】:

    我们的方法是每个人都有自己的数据库,如果需要,可以通过创建带有基础数据的脚本来创建完整的数据库。为此所需的所有脚本都在源代码管理中。

    所有脚本都是CREATE 脚本,它们反映了数据库模式的当前状态。升级在单独的 SQL 文件中,可以将现有数据库从特定版本升级到较新的版本(按顺序运行)。应用所有更新后,架构必须与运行设置脚本所获得的相同。

    我们有一些工具可以做到这一点(我们使用 SQL Server 和 .NET):

    • 脚本是使用一种工具完成的,该工具也应用标准格式,以便使用文本差异工具(和 SCM)可以很好地跟踪更改
    • 运行时模块负责比较现有的数据库对象,在需要时运行更新,自动应用“非破坏性”更改,然后再次检查数据库对象以确保在提交更改之前正确迁移

    该工具集作为开源项目提供(在 LGPL 下获得许可),它被称为 bsn ModuleStore(请注意,它仅限于 SQL Server 2005/2008/Azure 和运行时部分的 .NET)。

    【讨论】:

      【解决方案3】:

      我们使用代号为“Data Dude”的东西——TFS 和 Visual Studio 中的数据库功能——来处理这个问题。当您“获取最新”并引入依赖于架构更改的代码时,您还引入了修改后的架构、存储过程等。您右键单击数据库项目并部署;使您的本地架构和 sp 同步,但不会覆盖您的数据。编写脚本以将您从旧架构转移到新架构的工作属于 Visual Studio,而不是您或您的 DBA。我们还为省份列表等内容提供“填充”脚本,并为您运行它们。

      比在压力大的时候总是崩溃的旧方法要好得多,人们检查代码然后回家,没有人知道要添加哪些列才能使代码正常工作等等。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-12
        • 1970-01-01
        • 2015-10-06
        • 1970-01-01
        • 2019-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多