管理数据库脚本和为数据库进行新开发存在哪些选项:
例如,许多应用程序所使用的数据库以及使用数据库的开发人员有哪些最佳选项来保持数据库的最新变化,以及应该如何处理对生产的部署更改。
我认为有两种选择:
还有别的选择吗?如何管理数据库开发,最佳实践是什么?我上面写的选项的优缺点是什么?如何维护新的sql脚本?
我知道应该使用源代码管理系统,但是使用DB脚本并不像使用应用程序那么容易。
我相信这不是一个通用的解决方案,但至少我对DB开发人员的看法很感兴趣,因为它是如何在您的公司中实现的。
发布于 2012-04-10 22:52:23
液基是IMHO的最佳工具。它的方法非常简单,这也是它工作得这么好的原因之一。
您可以在站点上阅读它是如何工作的,但基本上它创建和管理一个简单的表,该表存储每个脚本的散列,以确定它是否运行了脚本。也有预sql和后置sql,你可以绕开条件.它能满足你想要或需要的一切。它还具有maven集成,因此它可以无缝地成为您构建的一部分。
我在一个大型(8个开发人员)项目中非常成功地使用了它,现在我不再使用其他任何东西了。
而且是免费的!
发布于 2012-04-10 21:03:02
目前,我们使用SVN,并有一个"UpgradeScripts“文件夹,所有开发人员都可以在其中提交他们的脚本。
每个脚本都有一个upg_yyyymmddhhmmss_ScriptName.sql格式的生成前缀,所以在部署它们时,它们以预定义的顺序运行;保持数据库的一致性。
这是通过以下SQL生成的,并通过预提交钩子强制执行:
select 'upg_' + convert(varchar, SYSUTCDATETIME(), 112)
+ replace(convert(varchar, SYSUTCDATETIME(), 8), ':', '')
+ '-'
+ 'MeaningfulScriptName'我们使用的另一种方便的技术是确保静态数据和非静态数据之间的区别是明确的;因此在我们的数据库中有一个标准的"dbo“模式--它表示可能在不同环境之间发生变化的非静态数据,以及一个”静态“模式。该模式中的所有表都具有静态id,因此开发人员知道他们可以在枚举中使用它们,并在脚本中引用id。
如果您正在寻找更正式的东西,Red有一个名为SQL源代码管理的实用程序。
或者您可以研究使用数据层应用框架。
发布于 2012-04-10 22:43:12
我们使用DBGhost来控制数据库的版本。创建当前数据库的脚本存储在TFS中(连同源代码),然后使用DBGhost生成增量脚本,以将环境升级到当前版本。DBGhost还可以为任何静态/引用/代码数据创建增量脚本。
它需要从传统的思维方式,但是一个奇妙的解决方案,我推荐的不够。虽然它是一个第三方产品,它无缝地适合我们的自动化构建和部署过程。
https://stackoverflow.com/questions/10096311
复制相似问题