我需要在 .NET 4 项目中使用 AMO (Microsoft.AnalysisService.dll) 检索特定维度/属性的成员列表。我怎么做?
我可以连接到服务器,打开数据库并查看维度,但是维度的 Hierarchies 集合通常是空的,除了那些我们手动定义了一些层次结构的维度。也就是说,不包括默认层次结构。
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 也有空的 Hierarchies 集合。
但是,如果在 Management Studio 中发出类似于以下内容的 XMLA 查询:
<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 的情况下检索成员列表?