xmlaclient.Discover(MDSCHEMA_MODULES,...)系统内存不足异常 [英] xmlaclient.Discover(MDSCHEMA_MODULES,...) System out of memory exception

查看:99
本文介绍了xmlaclient.Discover(MDSCHEMA_MODULES,...)系统内存不足异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我尝试深入到客户端应用程序中的多维数据集时,我使用xmlaclient.Discover方法来发现SSAS元数据。当我深入到第7级时,我得到了系统内存不足的异常。堆栈跟踪如下所示:它在Windows 2008服务器,2008 ssas服务器上运行,应用程序在Windows 7计算机(全部为64位)上,并且两台计算机的RAM均为4gb。

When I try to drill down into a cube in our client application, I use xmlaclient.Discover method to discover the SSAS metadata. When I've drilled down to the about the 7th level I get a system out of memory exception. The stack trace is as below- This is running on a Windows 2008 server, 2008 ssas server and the application is on a windows 7 machine (all 64 bit) and both the machines have 4gb of Ram.


StackTrace at
System.String.GetStringForStringBuilder(String
value,Int32 startIndex,Int32 length,
Int32容量)$ r $ n
System.Text.StringBuilder.GetNewString(String
currentString,Int32
requiredLength)$ r $ n
System .Text.StringBuilder.Append(String
值)\r\n在
System.IO.StringWriter.Write(String
值)\r\n在
System.Xml.XmlTextWriter.InternalWriteEndElement(布尔
longFormat)在
处System.Xml.XmlTextWriter.WriteFullEndElement()在$ b $处
b System.Xml.XmlReader.WriteNode(XmlTextWriter
xtw,布尔值defattr)在
处System.Xml.XmlReader.ReadInnerXml()在

Microsoft.AnalysisServices.Xmla.XmlaReader.ReadInnerXml()$ r $ n
at
Microsoft.AnalysisServices.Xmla.XmlaClient.SendMessageAndReturnResult(String&
结果,布尔值skipResult ),价格为
Microsoft.Analys isServices.Xmla.XmlaClient.Discover(String
requestType,字符串限制,
字符串属性,String&结果,
布尔skipResult,布尔
限制XmlIsComplete,布尔
属性XmlIsComplete)在
处获取Meridium.XMLA.Client.XmlaClientCall.XmlaDiscover(String
Discover_type ,字符串限制,
字符串属性,布尔值
isRestrictionsComplete,布尔值
isPropertiesComplete)在
中C:\MyData\Projects\APM
V3\Source\ eriMeridium\Metrics\XMLA\Client\XmlaClientCall.cs:line
44字符串

StackTrace " at System.String.GetStringForStringBuilder(String value, Int32 startIndex, Int32 length, Int32 capacity)\r\n at System.Text.StringBuilder.GetNewString(String currentString, Int32 requiredLength)\r\n at System.Text.StringBuilder.Append(String value)\r\n at System.IO.StringWriter.Write(String value)\r\n at System.Xml.XmlTextWriter.InternalWriteEndElement(Boolean longFormat)\r\n at System.Xml.XmlTextWriter.WriteFullEndElement()\r\n at System.Xml.XmlReader.WriteNode(XmlTextWriter xtw, Boolean defattr)\r\n at System.Xml.XmlReader.ReadInnerXml()\r\n at Microsoft.AnalysisServices.Xmla.XmlaReader.ReadInnerXml()\r\n at Microsoft.AnalysisServices.Xmla.XmlaClient.SendMessageAndReturnResult(String& result, Boolean skipResult)\r\n at Microsoft.AnalysisServices.Xmla.XmlaClient.Discover(String requestType, String restrictions, String properties, String& result, Boolean skipResult, Boolean restrictionsXmlIsComplete, Boolean propertiesXmlIsComplete)\r\n at Meridium.XMLA.Client.XmlaClientCall.XmlaDiscover(String Discover_type, String restrictions, String properties, Boolean isRestrictionsComplete, Boolean isPropertiesComplete) in C:\MyData\Projects\APM V3\Source\Meridium\Metrics\XMLA\Client\XmlaClientCall.cs:line 44" string


推荐答案

找到问题和解决方案:Microsoft.AnalysisServices.Xmla.dll程序集没有文档记录并且不受支持。

Found the problem and a solution: The Microsoft.AnalysisServices.Xmla.dll assembly is both undocumented and unsupported.

支持此操作的方法是使用Microsoft.AnalysisServices.AdomdClient.dll程序集(使用GetSchemaDataSet方法),并将AdomdSchemaGuid.Members作为第一个参数,并将适当的限制对象作为第二个参数。

The supported method for doing this would be to use the Microsoft.AnalysisServices.AdomdClient.dll assembly using the GetSchemaDataSet method and pass AdomdSchemaGuid.Members as the first parameter and the appropriate restriction object as the second parameter.

如果使用较早的版本,则需要创建成员唯一名称限制和tree_op限制,以防止内存占用量进一步增加。

If using the earlier one, we need to create member unique name restriction and a tree_op restriction to prevent the memory footprint from growing further.

Nikhil

这篇关于xmlaclient.Discover(MDSCHEMA_MODULES,...)系统内存不足异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆