2011-07-29 72 views
5

我一直在想方法来改进管理对数据库结构的更改。我有一个构建夜间构建的构建服务器,所以我认为我们可以以某种方式在测试环境中创建数据库转储,备份和脚本,作为构建过程的一部分。然后,在向客户端部署更新时,我们可以使用诸如DBDiff之类的工具来创建数据库更新脚本。管理数据库更新

是否有人在做类似的事情?这是一个好主意吗?也许一些很好的技巧可以用来在构建服务器上创建这些转储?

+0

我认为,这可能是类似的问题,我问了一小会儿前:http://programmers.stackexchange.com/questions/79891/how-do-you-handle-constantly-changing -database维度 – judda

回答

2

我没有找出差异,而是建议保留一个从头开始创建数据库的正确脚本。

我们对使用Liquibase来管理项目中的所有数据库迁移感到非常满意。它知道应用了哪些“修补程序”,并确保只有那些缺少的修补程序才会应用到目标数据库。

0

这是可能的。

差异是困难的部分。一旦你找出差异,你需要构建适当的sql,然后应用它。你可以直接应用它,或者创建一些你可以在审查后运行的脚本。

当双方发生变化时,则需要确定目标系统是否应该保持其更改或者是否应该完全删除。

请记住,当目标系统更改时还包含数据,并且如果删除某些表或列,那么您的参照完整性可能会被完全破坏。

还有一个想法。您需要访问目标系统才能确定差异。如果这是一个通用实用程序,则需要在事实之后将其设置为可执行文件,而不是构建的一部分。

0

你会发现这里的Visual Database Tools非常有用。

http://msdn.microsoft.com/en-us/library/y5a4ezk9.aspx

有比较直接内置到Visual Studio(也可以在命令行中运行)的模式。还有一个数据库项目,其中包含一组完整的数据库脚本及其包含的对象。这可以与源代码一起检入源代码控制。

您可以使用上下文菜单单击来部署基于这些脚本的新数据库。

0

我们正在查看Juneau CTP版本,Visual Studio的SQL工具。它具有快照和模式比较功能。基本上,它可以为你自动生成两个模式之间的脚本。如果您针对两个版本的数据库使用此功能,它将为您提供升级脚本。

http://msdn.microsoft.com/en-us/data/gg427686