I'm currently working on a SharePoint 2010 RTM environment, using Dashboard Designer against an Analysis Services 2008 R2 cube. After adding some rather large named sets to the cube, I started encountering errors in Dashboard Designer. The deployed dashboards still functioned correctly, the below issues were only encountred in Dashboard Designer when trying to modify already deployed objects.
The named set I created was a very simple set -- just a list of product numbers -- but it was very large; about 300 products total. This set, when saved as text, totalled to about 12kb of information. This fact will become important later. After deploying my cube with this new, very large set, any action in Dashboard Designer that required cube browsing failed with a simple error of "An unexpceted error as occured. Please contact an administrator for further information". Looking in the Application Event log, I was able to find the correct log entry for the error message. I've pasted the first section of the stack trace below; highlighting several important nuggets.
By looking at the stack trace, I was able to deduce that there is an 8kb limit (noted by the (8192) XML byte limit) on named sets in the cube. I was able to confirm my suspicision by commenting out my very large set and redeploying the cube. Testing the newly deployed cube in Dashboard Designer worked perfectly, I was able to browse the cube. Re-adding my large set recreated the issue. For now I ended up removing items from my set until I was below the 8kb threshold, I was able to get my cube deployed into a test environment and present a demo. However, I am curious if anyone else has experienced this issue, and if so, what workarounds have been implmented. Also, I would like to find out if there is any intention of increasing this limit to allow Dashboard Designer to handle cubes with large named sets.
See below for the stack trace of the error encountered with the large named set included in the cube.
An unexpected error occurred. Error 6559.
Exception details:
System.ServiceModel.CommunicationException: Error in deserializing body of reply message for operation 'GetCubeMetaDataForDataSource'. ---> System.InvalidOperationException: There is an error in XML document (1, 114069). ---> System.Xml.XmlException: The 'maximum bytes per Read operation' quota (8192) has been exceeded while reading XML data. Long element start tags (consisting of the element name, attribute names and attribute values) may trigger this quota. This quota may be increased by changing the MaxBytesPerRead property on the XmlDictionaryReaderQuotas object used when creating the XML reader. Line 1, position 114069.
at System.Xml.XmlExceptionHelper.ThrowXmlException(XmlDictionaryReader reader, String res, String arg1, String arg2, String arg3)
at System.Xml.XmlUTF8TextReader.ReadAttributes()
at System.Xml.XmlUTF8TextReader.ReadStartElement()
at System.Xml.XmlUTF8TextReader.Read()
at System.Xml.XmlBaseReader.ReadEndElement()
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderIBIMonitoringServiceApplication.Read134_NamedSet(Boolean isNullable, Boolean checkType)
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderIBIMonitoringServiceApplication.Read135_Cube(Boolean isNullable, Boolean checkType)
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderIBIMonitoringServiceApplication.Read215_Item()
at Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer56.Deserialize(XmlSerializationReader reader)
at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
--- End of inner exception stack trace ---
at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle)
at System.ServiceModel.Dispatcher.XmlSerializerOperationFormatter.DeserializeBody(XmlDictionaryReader reader, MessageVersion version, XmlSerializer serializer, MessagePartDescription returnPart, MessagePartDescriptionCollection bodyParts, Object[] parameters, Boolean isRequest)
--- End of inner exception stack trace ---