自从体会到DSO在SQL Server2005 中的险境以来,这一个多月的工作都围绕着它所进行着。不知道是不是因为国内做基于Analysis Services的产品较少的缘故,似乎对DSO之类的讨论非常少。但是对于我们Team现在,DSO十足是一个心病。

大家都认识到微软的SQL Server 2005发布的重要性,如果我们的产品不能及早支持这个平台,很快将会在队伍中消亡。DSO之所以是个心病,是因为在以前的版本中,我们太依赖它了。在基于Analysis Service 2000的平台上,我们利用DSO几乎实现了它所能实现的所有功能(我们以前的平台是ASP+COM+SQL/AS2k)。从创建数据库,维度,立方体,到Partition,Roles,Level等所有对象的创建和维护,我们在代码中都实现了。由于在 2005上面不能再使用DSO的缘故,我们列出了四条出路:

1. 借助2005中自带的Migration程序把2000的数据库迁移过来,并希望DSO仍能被迁移版本支持。
  结果是令人失望的,一是没有能成功迁移数据库(旧数据库我们实现了Virtual Cube等很多不兼容或不被支持的特性),二是由于旧版本基于Meta Data 服务的Repository的概念消失,导致DSO的功能单向不能继续使用。

2. 如果数据库不能迁移,我们自己创建一个操作AS2005的管理平台(类似Management Studio),操作2005数据的同时,像2000一样同时更新一个存在SQL Database中的Repository。
  这个任务如果采用,可行性和难度都是非常大的,而且我们不可能让用户也使用这个平台去操作他们的数据库。

3. 用托管代码操作AMO来包装DSO的所有接口,并通过CCW在COM中使用。
看似有一定难度,工作量不是很大,因为如果能实现这个DSO的Wrapper,并保证接口都不改变,那么表现层,中间层的代码我们都不需要改变。

4. 利用AMO,修改所有表现层,中间层,和数据层的代码。
第四种方案就是实现一个新的系统了,所有旧的ASP框架将被重构。工作量大,周期长。

我们的目标是要尽可能快地完成到2005的迁移,基本保持产品所有功能都能使用。最后鉴于各方面情况的考虑,我们采用了第三条方案。

现在我就在这个方案的实施中煎熬...

我们面临的第一个挑战就是.NET 2.0被COM的顺利调用,似乎很顺利,我们在VS2005的平台上的CCW论证的很成功,也具有了一定的说服性。

其次面临的问题是DSO的Wrapper,这个最艰巨的任务。我们从DSO实现接口开始,通过RCW反编译.NET代码开始,把DSO实现的所有接口都在UML类图中表示出来(如果有朋友需要的话,我可以提供该类图的Visio版本)。并罗列了系统中用到的所有DSO接口使用。这些只是一个需求工作的开始。然后我们不切实际地用DSO的架构准备作为新类库的开发。这里我遗憾地是没有提早做AMO和AS2005细节的Research,以至于这个为新类库的架构工作毫无用处。(待续)

Posted on 2005-11-16 20:37 Chagel 阅读(1086) 评论(8) 编辑 收藏

Feedback

#1楼  回复 引用 查看   

2005-11-16 20:42 by 补丁      
...惟一不明白的一点是,你们为什么要搞这种迁移
.net1.1+sql2000不能满足需求了?
为什么要再度迈向已经达到的终点呢?

#2楼[楼主]  回复 引用 查看   

2005-11-16 20:56 by Chagel      
SQL2005的发布对很多公司来说是一个商机啊!虽然我们也是微软的金牌合作伙伴,但是在产品的投入上公司做的还是明显不够,sigh..

#3楼  回复 引用 查看   

2005-11-16 22:38 by Zealot      
to 补丁 :
microsoft马上会启动sql server 2005的市场行动,以后客户购买时会优先选择sql server 2005,如果你的产品不支持它,但对手的产品支持......

#4楼  回复 引用 查看   

2005-11-16 23:29 by birdshome      
sql server 2000 + sp4 & analysis services + sp4 已经是目前比较稳定的系统,加之用户在上面做了长年的开发和积累,实际上是没有真正的客户会赶着去做升级和迁移的。微软的市场行动只是微软本来就该做的事情,就想.net,5年了也只普及到今天这个层面而已。

#5楼  回复 引用 查看   

2006-07-22 12:15 by Reeezak      
如果你们的应用现在已经用得很好的话,为什么要进行这样的迁移?有什么特殊的意义吗?就算是商机,这样做也是浪费成本的做法啊~~
我个人感觉,现在我所做的.NET2.0的应用主要是用于数据仓库,因为2005的这方面的功能和能力真的是令人激动的,别的在数据库方面的东西倒没有觉得有多大的吸引力

#6楼  回复 引用   

2006-10-08 10:06 by cx215[未注册用户]
我装了.net2.0以后,由于工作需要,现在又想针对AS2000进行操作,我发现DSO好象不能用了。知道是什么原因吗?

#7楼  回复 引用   

2006-10-08 22:16 by chagel[匿名][未注册用户]
to cx215 :
DSO以单独的MSAS组件包提供,在.net framework 2.0中是不含有相关文件的,应该不是它的问题。确认一下引用的DSO DLL是否正确,如果有可能贴出一下错误提示?

#8楼  回复 引用   

2007-05-18 16:59 by 马[未注册用户]
  我们也用到DSO,可否将你们的:“DSO实现的所有接口UML类图”发我一份,谢谢了!
  我的邮箱:mayanfei@sina.com
本作品采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。

©2005-2009. Chen Gang