当我尝试在客户端应用程序中深入查看多维数据集时,我使用xmlaclient.Discover方法来发现SSAS元数据。当我钻到大约7级时,我得到一个系统内存异常。堆栈跟踪如下所示 - 这是在Windows 2008服务器,2008 ssas服务器上运行,应用程序在Windows 7机器上(全部64位),两台机器都有4GB的Ram。
StackTrace“at System.String.GetStringForStringBuilder(字符串 value,Int32 startIndex,Int32 length, Int32容量)\ r \ n at System.Text.StringBuilder.GetNewString(字符串 currentString,Int32 requiredLength)\ r \ n at System.Text.StringBuilder.Append(字符串 价值)\ r \ n at System.IO.StringWriter.Write(字符串 价值)\ r \ n at System.Xml.XmlTextWriter.InternalWriteEndElement(布尔 longFormat)\ r \ n at System.Xml.XmlTextWriter.WriteFullEndElement(个)\ r \ n 在 System.Xml.XmlReader.WriteNode(XmlTextWriter的 xtw,Boolean defattr)\ r \ n at System.Xml.XmlReader.ReadInnerXml(个)\ r \ n 在 Microsoft.AnalysisServices.Xmla.XmlaReader.ReadInnerXml(个)\ r \ n 在 Microsoft.AnalysisServices.Xmla.XmlaClient.SendMessageAndReturnResult(字符串&安培; 结果,布尔值skipResult)\ r \ n at Microsoft.AnalysisServices.Xmla.XmlaClient.Discover(字符串 requestType,字符串限制, 字符串属性,String&结果, Boolean skipResult,Boolean restrictionsXmlIsComplete,Boolean propertiesXmlIsComplete)\ r \ n at Meridium.XMLA.Client.XmlaClientCall.XmlaDiscover(字符串 Discover_type,字符串限制, 字符串属性,布尔值 isRestrictionsComplete,Boolean isPropertiesComplete)in C:\ MyData的\项目\ APM V3 \来源\ Meridium的\指标\ XMLA \客户\ XmlaClientCall.cs:行 44“字符串
答案 0 :(得分:0)
发现问题和解决方案:Microsoft.AnalysisServices.Xmla.dll程序集未记录和不受支持。
支持的方法是使用GetSchemaDataSet方法使用Microsoft.AnalysisServices.AdomdClient.dll程序集,并将AdomdSchemaGuid.Members作为第一个参数并将相应的限制对象作为第二个参数传递。
如果使用前面的那个,我们需要创建成员唯一名称限制和tree_op限制,以防止内存占用量进一步增长。
尼基尔