I always am on the look out for cool applications that use data feeds. Personally I think that it is by far the most interesting new concept in data interchangeability in many years.
So I am very sensitive and want to ensure that users become knowledgeable of its ‘quirks’ as well. Here is a good one. Recently I had an email sent to me from a user who was reporting that Reporting Services as returning a very difficult error to understand when he used a data feed. The error is:
Unable to obtain schema for data feed ‘<name>’. Please make sure this feed exists.
Here is a screen shot:
To understand the source of the problem, you have to understand how Reporting Services works. In particular, you have to understand how parameters are handled in Reporting Services. Parameters to a report allow you to change how the report is generated. For example, you could have a field called “Department” and then have a list of departments for that field. The end-user can select which departments he or she wants to report on. The problem is that these are passed on the URL to the report. The URL for a Reporting Services report looks something like:
http://<server>/Reporting/_vti_bin/ReportServer?http%3a%2f%2f<name>%2fReporting%2fHiddenReports%2f<name>.rdl&param<name>=<value>;param<name>=<value> . . .
All of the parameters are included in the URL and you will find that they are urlencoded (so they are even longer). Reporting Services (and IE) has a limit of 2048 characters. We’ve seen this problem several times and it is real easy to get into when you have long folder names, are passing many, many parameters, or if the parameters themselves have long values. Interesting, while the PowerPivot import wizard is reporting issues around obtaining the schema, if you dug deeper (with something like a http tracer) you would have seen a WebException “The remote server returned an error: (414) Request-URI Too Long.”
The Url length limit in IE is documented here: http://support.microsoft.com/kb/208427
The only workaround is to modify the report so it takes less parameters or values that shorten the resulting URL, such as using integers instead of long strings, or GUIDs that identify combinations of parameters.