如何管理数据库优先项目

How to manage Database First Project

我们正在进行一个使用数据库优先模型的项目。

在项目开始时我们决定使用中央数据库,所有开发人员都在使用这个数据库。

但是在项目中期,开发人员决定使用自己的数据库,他们将数据库克隆到本地服务器。因此,他们在本地使用和更改,但是将数据库更改迁移到集中式数据库非常困难,我们正在手工完成。

是否有管理集中式数据库的数据库更改的好方法?

but migrating the DB changes to centralized DB is so hard, we are doing it by hand.

你从来没有想过这不会扩展?我们 运行 一个 4 人团队,现在有 9 个环境 - 手动完成是不可能的。最重要的是,你会犯错误,如果这些错误发生在生产部署期间,那就太糟糕了。

也就是说,这是 50 年前解决的问题。以史为鉴。这是我们的方法:

  • 数据库更改脚本。
  • 在按 sprint 编号的文件夹中

脚本执行的每个 db tracknig 和校验和中都有一个 table SchemaSync

Missing/changed 脚本在部署期间或通过 powershell cmdlet 手动(从 zip 文件)执行。

这真的是一个标准解决方案,早于 SSDT 和迁移,并且可能比您年长。甚至还有开源实现https://github.com/DbUp/DbUp and commercial libraries (one of them actually IN VISUAL STUDIO so you can try it out) https://www.red-gate.com/products/sql-development/sql-change-automation/

喜欢唯一的方法。

SSDT:喜欢丢弃字段。你如何处理数据库迁移?可能有多个步骤?不可能。 SSDT 更改脚本的想法对数据移动一无所知。如果你曾经做过更大规模的重构(我碰巧做了很多),那么你就会知道有时它不是 "create new field" 而是一些部分 运行 复杂代码的步骤。 SSDT完全搞不定