asp.net – MSBuild:自动收集db迁移脚本?

前端之家收集整理的这篇文章主要介绍了asp.net – MSBuild:自动收集db迁移脚本?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
环境概要.

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

我的msbuild脚本在每个构建上更新Web应用程序(Major.Minor.Revision.Build)的程序集版本. ‘Revision’设置为当前检出的svn版本和’build’到hudson内部版本号(在每个自动构建时递增).

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

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

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

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

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

解决方法

sql更改集成到自动构建/部署过程中是很困难的.我知道,因为我已经尝试了几次但收效甚微.你要做的事情大致是在正确的轨道上,但我认为它实际上有点过于复杂.在您的提案中,建议您在构建/打包时收集需要应用于数据库的特定sql脚本.相反,您应该将所有delta脚本(对于数据库的整个历史记录)打包到项目中,并计算部署时实际需要应用的增量 – 这样,可部署的包可以部署到具有数据库的环境中不同版本.您需要实现两个实现部分:

1)您需要将增量打包到可部署的包中.请注意,您应该打包增量 – 而不是以当前状态创建架构的静态文件.这些delta脚本应该在源代码管理中.将静态模式保留在源代码控制中也是可以的,但是您必须使其与增量保持同步.实际上,您可以使用Red Gate的sqlCompare或VS数据库版本等工具从静态模式生成(大多数)增量.要将增量扩展到可部署的包中,并且假设您正在使用svn – 您可能需要查看svn:externals,以将delta脚本“软链接”到您的Web项目中.然后,您的构建脚本可以简单地将它们复制到可部署的包中.

2)您需要一个系统,可以读取增量文件列表,将它们与现有数据库进行比较,确定需要将哪些增量应用于该数据库,然后应用增量(并更新簿记信息,如数据库版本) .有一个名为dbdeploy的开源项目(由ThoughtWorks赞助)实现了这一目标.我亲自用这个工具取得了一些成功.

祝你好运 – 这是一个难以破解(正确).

猜你在找的asp.Net相关文章