我需要在Microsoft.AnalysisService.dll 4项目中使用AMO ( .NET )检索特定维度/属性的成员列表。我该怎么做?
我可以连接到服务器,打开数据库并查看维度,但是维度的层次结构集合通常是空的,除了手工定义一些层次结构的维度。也就是说,不包括默认层次结构。
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查询:
<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的情况下检索成员列表?
发布于 2013-08-14 17:11:12
您正在通过服务器连接(AMO)连接,这是用于管理或读取多维数据集结构的连接,就像您从投标中所做的那样。
如果您想获取数据内容而不是多维数据集结构,则必须使用客户端连接(Microsoft.AnalysisServices.AdomdClient.AdomdConnection)。如果您有一个开放的客户端连接,比如clientCon,您可以按如下方式访问像MDSCHEMA_MEMBERS这样的模式:
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
}https://stackoverflow.com/questions/18090598
复制相似问题