如何跟踪源代码管理中的数据库更改?

Mic*_*ren 22 svn sql-server version-control sourcegear-vault

我们在大多数项目中使用SQL Server 2000/2005和Vault或SVN.我还没有找到一个适当的解决方案来捕获源控制系统中的数据库架构/ proc更改.

我们当前的解决方案非常繁琐且难以实施(将您更改的对象编写脚本并将其提交到数据库).

我们有很多关于如何通过一些自定义开发来解决这个问题的想法,但我宁愿安装一个现有的工具(付费工具很好).

那么:您如何跟踪数据库代码更改?你有推荐的工具吗?


编辑:

感谢所有的建议.由于时间的限制,我宁愿不在这里自己动手.大多数建议都有缺陷,他们需要开发人员遵循一些程序.

相反,理想的解决方案是监视SQL数据库的更改并将任何检测到的更改提交给SCM.例如,如果SQL Server有一个附加组件可以记录任何进行更改的用户的DML更改,那么将该对象的脚本提交给SCM,我会很激动.

我们在内部讨论了两个系统:1.在SQL 2005中,使用对象权限来限制您更改对象,直到您执行"结帐".然后,签入过程会将其编入SCM.2.运行预定作业以检测任何更改并将其(匿名)提交给SCM.

如果我可以跳过用户操作部分并让系统自动处理所有这些,那就太好了.

ter*_*tyl 15

使用Visual Studio数据库版本编写数据库脚本.像魅力一样工作,你可以使用任何源代码控制系统,当然最好是有VS插件.此工具还具有许多其他有用的功能.在这篇精彩的博客文章中查看它们

http://www.vitalygorn.com/blog/post/2008/01/Handling-Database-easily-with-Visual-Studio-2008.aspx

或者查看MSDN以获取官方文档


D.B*_*sch 6

使用各种第三方工具可以直接从SSMS跟踪数据库更改.ApexSQL Source Control自动编写版本控制中包含的任何数据库对象.该工具无法自动执行提交.相反,用户需要选择要提交的更改.

从存储库获取更改时,ApexSQL Source Control会识别SQL数据库参照完整性.因此,它将创建一个同步脚本,其中包括将包含在事务中的所有依赖对象,因此,如果未遇到任何错误,或者未应用任何所选更改,则将应用所有更改.无论如何,数据库完整性不受影响.


Rob*_*ert 5

我不得不说我认为视觉工作室数据库项目也是源控制困境的合理解决方案.如果设置正确,您可以从IDE运行针对数据库的脚本.如果您的脚本是旧的,请获取最新版本,然后针对数据库运行它.如果需要,还有一个脚本可以重新创建所有对象,必须手动将新对象添加到此脚本中,但只需要一次

我喜欢每个表,proc和函数都在它自己的文件中.