Friday, March 30, 2012

Report Parameter Limitation

Hi all,

I create one report with one report parameter call “Report_Parameter_0”.I access this report though HTML Form.Ex

<FORM action=http://hodb04/reportserver?/report/Report12 method="post">

<INPUT type="hidden" value="Render" name="rs:Command" ID="Hidden1">

<INPUT type="hidden" value="HTML4.0" name="rs:Format" ID="Hidden2">

<INPUT type="hidden" value="true" name="rc:Toolbar" ID="Hidden3">

<INPUT type="hidden" value="true" name="rcStick out tonguearameters" ID="Hidden4">

<INPUT type="hidden" value="request " name="Report_Parameter_0" ID="Hidden5"> <inputtype="Submit>

</FORM>

If I update the Report_Parameter_0 value from “request” to the string with more then 2000 characters, then I will receive the follow error message from the Internet Explorer

“res://C:\WINDOWS\system32\shdoclc.dll/dnserror.htm#http://hodb04/reportserver?/DmReport/Report12”

My question is what it the limitation on the parameter passing thought HTML.What are the max characters I call pass to the report parameter?

Thanks,

tomas

In IE you can have a maximum of 2083 characters, of which no more than 2048 (2KB) can be in the path (the bit after the host). You will also have to watch out for characters that get url encoded, as these don't use up one character position, they use up three (i.e. a space gets url encoded from " " to "%20").

Other browsers have different (and generally much higher) limits.

|||Thanks for your respond. This is not good since all our reports access thought IE, and we require to pass the parameter more than 2083 characters. How can I solve this limitaion? Sould I use Web Service?|||

A web service could work, as those limitations are for IE, not IIS. Alternatively, you could redesign the HTML form or the report - 2KB of parameters is a lot!

|||Thanks, what do you means to redesign the HTML form. Is there a way to remove the 2083 characters limitation. The reason is we need to pass the SQL query to the report parameter to generate the report. Some of the SQL queries have more than 2083 characters.|||

Could you pass the SQL query to a field in a table in the database before you run the report, and use an identifier to retrieve the query afterwards?

Here is another posting that may help.

http://openacs.org/forums/message-view?message_id=110868

cheers,

Andrew

|||

TomasLeung wrote:

Thanks, what do you means to redesign the HTML form. Is there a way to remove the 2083 characters limitation.

There is no way to remove the limitation - it is a limitation with IE. Other browsers have much larger limits. Other technologies don't have those limits. But as i said before, 2KB of query string parameters is a lot.

TomasLeung wrote:

The reason is we need to pass the SQL query to the report parameter to generate the report. Some of the SQL queries have more than 2083 characters.

Maybe i am missing something here, but i find it incredible that you are passing SQL in this way - it is a big security hole and you are asking for trouble. What happens when someone changes their query string to read "delete from products"? I would change the design so that you are only passing *parameters* to the report, which are then passed to a stored procedure to get the data.

|||thanks for your advise, actually the query we passing to the parameter is the MDX query. Futhermore, the MDX query is create by another set of controls for example time and product control. So we know what kind of MDX we passing in. But the MDX query can be exceed 2083 characters.|||

There is no reason why you cannot use another browser to view the HTML form that puts together the MDX, this will get around the 2083 character limitation (did you eliminate unneccessary characters like whitespace?). But i have no idea how the report will render in that browser (i have never tried using a non IE browser to access a report - why don't you give it a try?).

Another option would be to use something like an ASP.Net page, and using either Ajax or postbacks you could build up the query string on the server, then do a call from the server to RS to generate the report, then redirect the client to the generated report.

These are just some ideas i'm throwing around - they may or may not work. Like i said back at the start, the only real way to fix your problem is to redesign the process you are using (unless the change of browser works).

No comments:

Post a Comment