我一直在思考如何改进对数据库结构更改的管理。我有一个创建夜间构建的构建服务器,所以我想我们可以通过某种方式从测试环境中创建数据库转储、备份和脚本,作为构建过程的一部分。然后,在将更新部署到客户端时,我们可以使用诸如DBDiff之类的工具来创建数据库更新脚本。
有没有人做过类似的事情?这是个好主意吗?也许有一些好的技巧可以用来在构建服务器上创建这些转储文件?
发布于 2011-07-29 20:21:43
我建议您保留一个适当的脚本,从头开始创建数据库,而不是识别其中的差异。
我们非常满意使用Liquibase来管理我们项目中的所有数据库迁移。它知道哪些“补丁”已经被应用,并确保只有那些缺失的补丁才会被应用到目标数据库。
发布于 2011-07-29 20:18:43
这是可能的。
差异是最难的部分。一旦确定了不同之处,就需要构造适当的sql,然后应用它。您可以直接应用它,也可以创建一些可以在审阅后运行的脚本。
当两端都发生更改时,您需要决定目标系统是否应该保留其更改,或者是否应该完全删除它。
请记住,当目标系统更改还包含数据时,如果您删除了一些表或列,那么您的引用完整性可能会完全损坏。
再想一想。您需要访问目标系统才能确定差异。如果这是一个通用实用程序,则需要在事后将其设置为可执行文件,而不是构建的一部分。
发布于 2011-07-29 20:24:40
你会发现可视化数据库工具在这里非常有用。
http://msdn.microsoft.com/en-us/library/y5a4ezk9.aspx
Visual Studio中内置了一个模式比较(也可以从命令行运行)。还有一个数据库项目,其中包含数据库及其包含的对象的一组完整的脚本。这可以与源代码一起签入到源代码控制中。
您可以通过单击上下文菜单来部署基于这些脚本的新数据库。
https://stackoverflow.com/questions/6872740
复制相似问题