我一直在想方法来改进管理对数据库结构的更改。我有一个构建夜间构建的构建服务器,所以我认为我们可以以某种方式在测试环境中创建数据库转储,备份和脚本,作为构建过程的一部分。然后,在向客户端部署更新时,我们可以使用诸如DBDiff之类的工具来创建数据库更新脚本。管理数据库更新
是否有人在做类似的事情?这是一个好主意吗?也许一些很好的技巧可以用来在构建服务器上创建这些转储?
我一直在想方法来改进管理对数据库结构的更改。我有一个构建夜间构建的构建服务器,所以我认为我们可以以某种方式在测试环境中创建数据库转储,备份和脚本,作为构建过程的一部分。然后,在向客户端部署更新时,我们可以使用诸如DBDiff之类的工具来创建数据库更新脚本。管理数据库更新
是否有人在做类似的事情?这是一个好主意吗?也许一些很好的技巧可以用来在构建服务器上创建这些转储?
我没有找出差异,而是建议保留一个从头开始创建数据库的正确脚本。
我们对使用Liquibase来管理项目中的所有数据库迁移感到非常满意。它知道应用了哪些“修补程序”,并确保只有那些缺少的修补程序才会应用到目标数据库。
这是可能的。
差异是困难的部分。一旦你找出差异,你需要构建适当的sql,然后应用它。你可以直接应用它,或者创建一些你可以在审查后运行的脚本。
当双方发生变化时,则需要确定目标系统是否应该保持其更改或者是否应该完全删除。
请记住,当目标系统更改时还包含数据,并且如果删除某些表或列,那么您的参照完整性可能会被完全破坏。
还有一个想法。您需要访问目标系统才能确定差异。如果这是一个通用实用程序,则需要在事实之后将其设置为可执行文件,而不是构建的一部分。
你会发现这里的Visual Database Tools非常有用。
http://msdn.microsoft.com/en-us/library/y5a4ezk9.aspx
有比较直接内置到Visual Studio(也可以在命令行中运行)的模式。还有一个数据库项目,其中包含一组完整的数据库脚本及其包含的对象。这可以与源代码一起检入源代码控制。
您可以使用上下文菜单单击来部署基于这些脚本的新数据库。
我们正在查看Juneau CTP版本,Visual Studio的SQL工具。它具有快照和模式比较功能。基本上,它可以为你自动生成两个模式之间的脚本。如果您针对两个版本的数据库使用此功能,它将为您提供升级脚本。
这里红门我们接近释放出解决了使用SQL源控制和SQL精确比较的问题的解决方案。我们有一个早期的访问程序,可以让你尝试一下。请访问以下链接了解注册详情。
http://www.red-gate.com/MessageBoard/viewtopic.php?p=46951#46951
我认为,这可能是类似的问题,我问了一小会儿前:http://programmers.stackexchange.com/questions/79891/how-do-you-handle-constantly-changing -database维度 – judda