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

Database 如何处理多个开发人员和数据库更改?,database,process,build-process,Database,Process,Build Process,我想知道你们是如何处理由两个或更多开发人员组成的团队中的开发数据库更改的?您是否有全局db everyone访问权限,可能是本地副本并手动应用脚本更改?很高兴看到您注意到的每种方法的优点和缺点以及团队中的开发人员数量。从Martin Fowler的“”开始。这很好地概括了这一点 关于数据库开发还有其他一些问题可能也很有用,例如,我们的方法是每个人都有自己的数据库,如果需要,可以使用基本数据创建脚本来创建完整的数据库。此操作所需的所有脚本都在源代码管理中 所有脚本都是CREATE脚本,它们反映了数

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

从Martin Fowler的“”开始。这很好地概括了这一点


关于数据库开发还有其他一些问题可能也很有用,例如,我们的方法是每个人都有自己的数据库,如果需要,可以使用基本数据创建脚本来创建完整的数据库。此操作所需的所有脚本都在源代码管理中

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

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

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

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

我们使用代号为“Data Dude”(TFS和Visual Studio中的数据库功能)来处理此问题。当您“获取最新版本”并引入依赖于模式更改的代码时,您还引入了修订的模式、存储过程等。您可以右键单击数据库项目并部署;使本地架构和sp同步,但不会覆盖数据。编写脚本以使您从旧模式转换到新模式的工作由Visual Studio负责,而不是由您或DBA负责。我们也有一些“填充”脚本,比如省份列表,部署会为您运行这些脚本


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

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