MSBuild:自动收集db迁移脚本?

P D*_*Dub 7 svn sql-server asp.net msbuild continuous-integration

环境概要.

  • Asp.net Web应用程序(源代码存储在svn中)
  • SQL Server数据库.(存储在svn中的数据库模式(表/ sprocs))
  • db版本与Web应用程序程序集版本同步.(存储在表'CurrentVersion'中)
  • CI哈德森服务器从repo检出web应用程序并运行自定义msbuild文件发布/打包应用程序.

我的msbuild脚本在每个构建上更新Web应用程序的组装版本(Major.Minor.Revision.Build).'Revision'设置为当前检出的svn版本,并将'Build'设置为hudson内部版本号(在每个自动构建时递增).

这样我可以将应用程序与特定的主干版本匹配,也可以从hudson内部版本号获取其他构建统计信息.

我想自动收集迁移脚本(更新的sprocs等)以添加到zip包中.我想通过将尚未部署的db的svn版本与正在部署的版本进行比较,我可以找到自上次部署到该数据库/环境以来干线中哪些db文件已更改.

这可以通过手动调用svn diff -r REVNO:REVNO命令列出已更改的.sql文件来轻松实现.然后可以手动将这些文件添加到包中.如果这可以自动化将会很棒.

首先,我想我必须编写一个自定义任务来检查尚未部署到的数据库的版本.在那之后,我很不确定.有没有人对如何通过现有或自定义的msbuild任务实现这一点有任何建议?

最后,我必须自动将脚本添加到更新数据库版本表的包中,以便与应用程序保持同步.

Wal*_*eza 2

查看 SQL 数据库项目。在 VS 2010 中,它们得到了很大的增强,并且内置了部署功能,可以将您的 DEV 数据库同步到其他环境。

以下是一些关于 vs 2010 中数据库项目的好链接: http://msmvps.com/blogs/deborahk/archive/2010/05/02/vs-2010-database-project-building-and-deployment.aspx

http://weblogs.asp.net/gunnarpeipman/archive/2009/07/29/visual-studio-2010-database-projects.aspx