您如何处理多个开发人员和数据库更改?

时间:2011-03-29 18:18:26

标签: database process build-process

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

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

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

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

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

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

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

答案 2 :(得分:0)

我们使用名为“Data Dude”的代码--TFS和Visual Studio中的数据库功能 - 来处理这个问题。当您“获取最新信息”并引入依赖于模式更改的代码时,您还会引入修改后的模式,存储过程等。您可以快速单击数据库项目并部署;它使您的本地架构和sp同步,但不会覆盖您的数据。制定脚本以使您从旧架构转到新架构的工作属于Visual Studio,而不是您或您的DBA。我们还有“填充”脚本,用于列出省份列表,并为您运行部署。

比在高压力时刻总是崩溃的旧方式好得多,人们检查代码然后回家,没有人知道要添加哪些列以使代码工作等。