这是一篇自己实践后的感言,如您对下文实际操作有任何问题和缺陷,以导致任何观点上的错误请务必告诉我-这样您也挽救了许多无辜的受害者,谢谢!

我们知道在SQL Server 2005上微软使用了AMO这个Managed Lib替代了之前的COM DSO,虽然MSDN上还是在使用“Capability background”挽留过多的老顾客,而且也声明了:

“This feature will be removed in the next version of Microsoft SQL Server. Do not use this feature in new development work, and modify applications that currently use this feature as soon as possible. ”

今天部署好数据库和项目文件,进行debug时,迷惑却加深了。

代码如下:

 
Dim oServer As New DSO.Server
Dim oDb As New DSO.MDStore
oServer.Connect m_strOLAPSrvr
Set oDb = oServer.MDStores(m_strOLAPDBName)
 

当执行到Connect方法时候,系统报以下错误:

The connection string to repository needs to be specified in the 9.0 server properties (see <DSO>...</DSO> section in msmdsrv.ini file from Analysis Service 9.0).

根据提示,我们找到这个msmdsrv.ini文件,它是一个Server实例的配置文件,我们可以在SQL Server Management Studio中对AS Server 实例的Properties进行修改。



于是设置了它的RepositoryConnectionString 和RemoteRepositoryConnectionString,迁移到SQL Server的一个数据库中(为何这么做,请看下文),再回到代码,看来连接成功了!

但是在接下来一段代码获取数据库时,又出错了:

“Invalid object name 'OlapObjects'.”

OlapObjects似乎很眼熟。在AS2000时,我们操作过Migrate Repository服务,Repository存储了AS中的对象的Meta Data,默认存储在msmdRep.mdb一个Access的数据文件中。我们以往把它迁移到SQL Server的一个数据库中。当迁移成功后,会新建一个OlapObjects和Server两个表,并导入AS对象相关数据。因此,DSO会调用Repository中的一些数据进行工作。上面的错误也就是没有找到OlapObjects这个表。

但是通过MSDN和一些文章的描述,在SQL2005中,管理员已经不再需要维护Metadata Repository,不再使用SQL2000的metadata service,所有的metadata信息将由AS通过XML文件形式自己来存储管理。而且不论Process所有已存在的还是新建数据库,在我们自认为“迁移”的msmdRep数据中并没有产生任何改变,没有创建OlapObjects或是其他的表。

于是我不得不认为2005既然提供了Repository配置的接口,却没有利用它,而导致DSO已经名存实亡!

Posted on 2005-10-24 18:56  Chagel  阅读(1144)  评论(2编辑  收藏  举报
本作品采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。

©2005-2009. Chen Gang