我认为有几个不同的角度来处理这个问题。我相信,“工具优先”的角度会因平台和个人喜好而异。恰当的例子:我在 MS Visual Studio 中使用了一个数据库项目,但我不确定这是否是 MySQL 的一个很好的解决方案。我还认识一些人,他们非常喜欢 Redgate、Erwin、Embarcadero 等他们最喜欢的工具。
这个主题的明确答案最终看起来像一本书,所以它可能值得从参考一本书开始:Redgate 最近出版了一本名为“ The Red Gate Guide to SQL Server Team-based Development ”的免费电子书,虽然有那里有很多要辩论的地方,这是一个开始辩论的好地方,IMO。与名称相反,本书中的大部分材料都足以适用于任何数据库(不仅仅是 SQL Server)和任何工具集(不仅仅是 Redgate)。如果你还没有看过这个,至少它绝对值得一读。
就在几分钟前,我正在检查这个:一个应该存在于所有项目中的表,它看起来很简单,可以付诸实践,检查一下:
我认为最好的方法是将数据库作为构建过程的一部分生成。将所有脚本与其余代码一起保存在源代码控制中,每个人都对自己的环境负责。
如果做不到这一点,RedGate 有一个工具可以将源代码控制集成到 SSMS中,而SQL Compare可用于比较/同步 MS SQL Server 模式。Visual Studio 数据库版还有一个内置的架构比较工具。
另一个SO 问题将我引向Migrator Dot Net,我将在我丰富的空闲时间开始调查。这看起来是一个不错的方法,但它可能比你愿意做的更多的时间/开销投资。
eiefa 已经提到了一个表,应该存在于所有项目中的数据库中。这是一篇很棒的博客文章,但在 IMO 中,它只是实现数据库修订控制工作解决方案的一部分。我认为在现实世界中“回答”这个问题的任何尝试都需要考虑有关 VCS 和数据库的其他一些信息:
我认为有几个不同的角度来处理这个问题。我相信,“工具优先”的角度会因平台和个人喜好而异。恰当的例子:我在 MS Visual Studio 中使用了一个数据库项目,但我不确定这是否是 MySQL 的一个很好的解决方案。我还认识一些人,他们非常喜欢 Redgate、Erwin、Embarcadero 等他们最喜欢的工具。
这个问题还有一个“流程优先”的角度,将(希望)在后续问题中在此站点上重新讨论。此过程的关键是让您的架构处于源代码控制之下并管理更改,以便您可以根据需要应用从版本“x”到版本“y”的架构更改。
这个主题的明确答案最终看起来像一本书,所以它可能值得从参考一本书开始:Redgate 最近出版了一本名为“ The Red Gate Guide to SQL Server Team-based Development ”的免费电子书,虽然有那里有很多要辩论的地方,这是一个开始辩论的好地方,IMO。与名称相反,本书中的大部分材料都足以适用于任何数据库(不仅仅是 SQL Server)和任何工具集(不仅仅是 Redgate)。如果你还没有看过这个,至少它绝对值得一读。
最后,可能值得在stackoverflow 的“遗留答案”中链接。
SchemaCrawler是我用来生成包含所有数据库模式对象的文本文件的工具。我将此文本输出设计为人类可读的,并且可以与来自另一台服务器的类似输出进行比较。
在实践中,我发现在构建过程中输出数据库模式的文本文件很有用。通过这种方式,您可以将文本文件签入源代码控制系统,并了解架构如何随时间演变的版本历史。SchemaCrawler 也被设计为从命令行自动执行此操作。