我想让我的数据库受版本控制.有没有人有任何建议或推荐的文章让我开始?
我总是希望在那里至少有一些数据(如alumb提到的:用户类型和管理员).我还经常需要大量生成的测试数据来进行性能测量.
跟踪和/或自动化数据库架构更改的最佳方法是什么?我们的团队使用Subversion进行版本控制,我们已经能够以这种方式自动完成一些任务(将构建推送到临时服务器,将经过测试的代码部署到生产服务器),但我们仍在手动执行数据库更新.我想找到或创建一个解决方案,使我们能够跨不同环境的服务器高效工作,同时继续使用Subversion作为后端,通过该后端将代码和数据库更新推送到各种服务器.
许多流行的软件包都包含自动更新脚本,可以检测数据库版本并应用必要的更改.这是否是即使在更大规模(跨多个项目,有时还有多种环境和语言)中实现这一目标的最佳方式?如果是这样,是否有任何现有的代码可以简化流程,或者最好只是推出我们自己的解决方案?有没有人之前实现过类似的东西并将它集成到Subversion post-commit钩子中,或者这是一个坏主意?
虽然支持多个平台的解决方案更可取,但我们肯定需要支持Linux/Apache/MySQL/PHP堆栈,因为我们的大多数工作都在该平台上.
我们在大多数项目中使用SQL Server 2000/2005和Vault或SVN.我还没有找到一个适当的解决方案来捕获源控制系统中的数据库架构/ proc更改.
我们当前的解决方案非常繁琐且难以实施(将您更改的对象编写脚本并将其提交到数据库).
我们有很多关于如何通过一些自定义开发来解决这个问题的想法,但我宁愿安装一个现有的工具(付费工具很好).
那么:您如何跟踪数据库代码更改?你有推荐的工具吗?
编辑:
感谢所有的建议.由于时间的限制,我宁愿不在这里自己动手.大多数建议都有缺陷,他们需要开发人员遵循一些程序.
相反,理想的解决方案是监视SQL数据库的更改并将任何检测到的更改提交给SCM.例如,如果SQL Server有一个附加组件可以记录任何进行更改的用户的DML更改,那么将该对象的脚本提交给SCM,我会很激动.
我们在内部讨论了两个系统:1.在SQL 2005中,使用对象权限来限制您更改对象,直到您执行"结帐".然后,签入过程会将其编入SCM.2.运行预定作业以检测任何更改并将其(匿名)提交给SCM.
如果我可以跳过用户操作部分并让系统自动处理所有这些,那就太好了.