2010-07-13 5 views
0

Lorsque j'essaie d'explorer un cube dans notre application cliente, j'utilise la méthode xmlaclient.Discover pour découvrir les métadonnées SSAS. Quand j'ai atteint le niveau 7 environ, j'ai une exception de mémoire système. La trace de la pile est comme ci-dessous: elle fonctionne sur un serveur Windows 2008, le serveur ssas 2008 et l'application est sur une machine Windows 7 (toutes 64 bits) et les deux machines ont 4 Go de Ram.xmlaclient.Discover (MDSCHEMA_MODULES, ...) Exception du système de mémoire insuffisante

StackTrace " à System.String.GetStringForStringBuilder (String valeur , Int32 startIndex, longueur Int32, capacité Int32) \ r \ n à System.Text.StringBuilder.GetNewString (String CurrentString, Int32 requiredLength) \ r \ n à System.Text.StringBuilder.Append (String valeur ) \ r \ n à System.IO.StringWriter.Write (String valeur ) \ r \ n à System.Xml.XmlTextWriter. InternalWriteEndElement (Boolean longFormat) \ r \ n à System.Xml .XmlTextWriter.WriteFullEndElement() \ r \ n à System.Xml.XmlReader.WriteNode (XmlTextWriter XTW, defattr Boolean) \ r \ n à System.Xml.XmlReader.ReadInnerXml() \ r \ n à Microsoft.AnalysisServices.Xmla.XmlaReader.ReadInnerXml() \ r \ n à Microsoft.AnalysisServices.Xmla.XmlaClient.SendMessageAndReturnResult (String & résultat, Boolean skipResult) \ r \ n à Microsoft.AnalysisServices.Xmla.XmlaClient. Discover (String requestType, Restrictions de chaîne, Propriétés de chaîne, Chaîne & résultat, Booléen skipResult, Booléen restrictionsXmlIsComplete, Boolean propertiesXmlIsComplete) \ r \ n à Meridium.XMLA.Client.XmlaClientCall.XmlaDiscover (String Discover_type, les restrictions à cordes propriétés de chaîne, booléen isRestrictionsComplete, booléens isPropertiesComplete) dans C: \ mydata \ Projects \ APM V3 \ Source \ Meridium \ Metrics \ XMLA \ client \ XmlaClientCall.cs: ligne 44" string

Répondre

0

trouvé le problème et une solution: l'assemblée Microsoft.AnalysisServices.Xmla.dll est à la fois sans papier et non pris en charge. La méthode prise en charge pour ce faire consiste à utiliser l'assembly Microsoft.AnalysisServices.AdomdClient.dll à l'aide de la méthode GetSchemaDataSet et à transmettre AdomdSchemaGuid.Members en tant que premier paramètre et l'objet de restriction approprié en tant que second paramètre. Si vous utilisez le précédent, nous devons créer une restriction de nom unique pour les membres et une restriction tree_op pour éviter que l'empreinte mémoire ne se développe davantage.

Nikhil

Questions connexes