sharplife


software is a artwork, also make the life better !!!
  首页  :: 联系 :: 订阅 订阅  :: 管理

敏捷数据库CI的实现

Posted on 2006-04-22 17:46  sharplife  阅读(781)  评论(2编辑  收藏  举报
看得出,大家对于CI中数据库的持续集成还是十分关心的!为早些提供稍完整的资料,让大家对其有真实的操作,我采取了提高速度的另外方法:

首先说明一下,这篇文章中介绍的方法主要是.NET Delivery一书中的实现,我的实现中并非完全如此,而且资料还未来得及整理,我在前文敏捷数据库的持续集成(CI)提到的十分关键用于数据库差异比较的工具,我的实现中我的选择相信大家看过了(若在此介绍的话,我觉得其实现不够优雅),而.NET方面的开源工具DaBCoS现在还不够成熟,其开发还未完成,而Red gate提供的工具是产品级工具,比较优秀,其试用版的安装需MDAC2.8(我实现时没采用的原因即安装过mdac2.8后仍不能安装此工具,但愿你们的可以),.NET Delivery中便是基于redgate实现的自定义Nant任务(Task),十分方便。另外您最好了解、实现过CI,可以参考这一文章(感谢coolbug的工作).

我文后提供.NET Delivery相关资源,但现在可能还找不到完整的电子书,能下到的不妨留个链接!
本文中的代码我就不贴啦,别急!我后面提供下载连接(也不浪费博客园的空间岂不更好),人家有更完整的代码!

首先是完成执行sql语句的扩展Nant任务(此不需要red-gate工具):
ManualDBTask.cs
ObjectComparer.cs
(实现集成中sql脚本的执行顺序是十分重要的)

扩展red-gate工具实现数据库差异比较及同步化脚本生成的Nant任务:
(注意:到下载red-gate试用版,如果哪位关心我的实现方式稍后讲!)
DBInfo.cs
AutoDBTask.cs

关键任务已完成了,以下便是CI工具Nant、CCNET等的用处了,以下的build文件相信有一定CI基础的你肯定可以经稍修改配置一下路径即可,有问题的话我们讨论:
系列build xml文件(下面下载)

提一下我实现中的一个应用,也许对你有用,我用SqlDmo(一个com组件)实现对特定数据库的访问,并生成所需脚本,程序代码如下(你可以Refctor以合你的需要):

数据库脚本生成

别忘了添加对sqldmo(在vs.net中添加引用,在com中选Microsoft SQLDMO Object Library即可)的引用,再编译即可于Nant中使用。

资源下载:
.NET  Delivery 数据库集成章节下载
.NET  Delivery配书源码

上文中代码可在下载中的chapter8找到,注意如果你不采用他版本的工具(我便是采用自己环境中已配置的工具,版本比较新),对于build文件中修改请细心!

参照章节后面,也认真学习一下部署的方式吧及各自的优缺点吧,在实际实现集成时也是十分重要的,另外,此中介绍的包括数据库集成的CI仅一个事例,在真正的ECI中可能更多的额外因素要考虑的,但通过此实现至少让你了解、接受其优点.希望好的经验,大家分享!