首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SSAS/AMO:如何获取属性的成员列表

SSAS/AMO:如何获取属性的成员列表
EN

Stack Overflow用户
提问于 2013-08-06 21:12:52
回答 1查看 2K关注 0票数 1

我需要在Microsoft.AnalysisService.dll 4项目中使用AMO ( .NET )检索特定维度/属性的成员列表。我该怎么做?

我可以连接到服务器,打开数据库并查看维度,但是维度的层次结构集合通常是空的,除了手工定义一些层次结构的维度。也就是说,不包括默认层次结构。

代码语言:javascript
复制
using Microsoft.AnalysisServices;

var server = new Server();
server.Connect("Data Source=myserver");

var db = server.Databases.FindByName("My Warehouse");
var instrumentDimension = db.Dimensions.FindByName("Instrument");
Console.WriteLine(instrumentDimension.Hierarchies.Count); // prints 0

转到多维数据集级别没有帮助,大多数CubeDimensions也有空的层次结构集合。

但是,如果在Management中发出类似于以下内容的XMLA查询:

代码语言:javascript
复制
<Discover xmlns="urn:schemas-microsoft-com:xml-analysis">
  <RequestType>MDSCHEMA_MEMBERS</RequestType>
  <Restrictions>
    <RestrictionList xmlns="urn:schemas-microsoft-com:xml-analysis">
      <CATALOG_NAME>My Warehouse</CATALOG_NAME>
      <CUBE_NAME>My Cube</CUBE_NAME>
      <DIMENSION_UNIQUE_NAME>Instrument</DIMENSION_UNIQUE_NAME>
    </RestrictionList>
  </Restrictions>
  <Properties />
</Discover>

我确实用一个相当庞大的XML列出了所有成员,从而得到了答案。因此,问题是:如何在不解析XMLA的情况下检索成员列表?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-14 17:11:12

您正在通过服务器连接(AMO)连接,这是用于管理或读取多维数据集结构的连接,就像您从投标中所做的那样。

如果您想获取数据内容而不是多维数据集结构,则必须使用客户端连接(Microsoft.AnalysisServices.AdomdClient.AdomdConnection)。如果您有一个开放的客户端连接,比如clientCon,您可以按如下方式访问像MDSCHEMA_MEMBERS这样的模式:

代码语言:javascript
复制
AdomdRestrictionCollection restrColl = new AdomdClient.AdomdRestrictionCollection();
restrColl.Add("CATALOG_NAME", "My Warehouse");
restrColl.Add("CUBE_NAME", "My Cube");
restrColl.Add("HIERARCHY_UNIQUE_NAME", "[MyDim].[MyHierarchyName]");
DataSet ds = clientCon.GetSchemaDataSet("MDSCHEMA_MEMBERS", restrColl);
foreach(var row in ds.Tables[0].Rows) {
    // do something with the data
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18090598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档