I have a report with a list of customers passed in as a parameter. This list has become quite large and found it hit the limit imposed by MaxHttpCollectionKeys. I've found this documented in several posts, but I now have a more specific issue.
I have set this a lot higher in the SSRS web.config file which has solved the problem when I access the report via the report manager (ServerName/Reports). However this doesn't solve the problem when I render via the report server (ServerName/ReportServer).
I do need to access these reports via the report server as we pass some hidden parameters through from our App, as well as having some user selectable parameters. Searching for the solution only gives me posts related to the original solution which I've found.
Does anyone else have any ideas on solutions for this.
Many thanks.
Ok found solution.
I didn't realise there are two web.config files. One for the manager, one for the server. These both needed to have the mod made. Needed to add the following code to the web.config file in
C:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting Services\ReportServer
Between the < system.web > and < runtime > tags.
<appSettings>
<add key="aspnet:MaxHttpCollectionKeys" value="20000" />
</appSettings>
Related
Can someone happen to let me know what the maximum value that can be set for maxRequestLength in the SSRS web.config file. I currently have it set to 2097151 but if I increase it any further the SSRS Reports homepage stops working and just displays "Error" I have restarted SSRS through the service as well as the config manager but nothing seems to work, can anyone assist? The location of the file that I am editing is "C:\Program Files\Microsoft SQL Server\MSRS12.MSSQLSERVER\Reporting Services\ReportServer"
Thanks
I have found what was the issue, though I had set the maxRequestLength within the relevant config files in SSRS, I had to also amend the Limit Size set in IIS for the SMTP, once I had increased the size here everything worked fine.
I think there was some initial confusion on the error message due to getting a similar one before based on the config file.
Hi,
I have an issue on NLB production environment where two application servers are configured. Both have a virtual directory of ReportViewer that renders SSRS reports in an iframe using an .aspx page.
After the "ASP.NET session has expired or could not be found" error, i changed the sessionState mode=SQLServer with custom database, still the error is there. I can see session entries in the DB table as well.
What else could be missing?
-I have read somewhere that having an _ (underscore) in domain name can cause this. I have checked the URLs, there is an underscore in querystring parameter but not the domain name itself, and the querystring is auto-generated by ReporViewer ScriptResource.axd itself.
-KeepSessionAlive is also true & AsyncRendering is also true, checked these in both states, issue did not get resolved.
-cookieless is set to "false"
-ReportViewer version is following :
<add assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=xx" />
<add assembly="Microsoft.ReportViewer.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=xx" />
Any help to point me in the right direction would be appreciated. Thanks :)
The main thing you need to think about in an NLB scenario with SSRS is ViewState. If a user is hitting a load balanced URL, their traffic could go to any of the SSRS servers in the load balancer pool. You need to set up the same machinekey on all SSRS servers to allow their session to be picked up by any of the servers.
I wrote about all the required steps in the below SQLShack post. As long as SSRS is setup like this, the front end doesn't know/care beyond the fact you are giving it a (load balanced) URL to hit. Hope that helps!
https://www.sqlshack.com/scaling-out-reporting-services-changes-in-sql-server-2016/
When trying to export an SSRS report to excel, I am getting a runtime error. I have looked at the logs and see the following:
ERROR: Throwing Microsoft.ReportingServices.Diagnostics.Utilities.ReportServerStorageException: , An error occurred within the report server database. This may be due to a connection failure, timeout or low disk condition within the database.;
The report displays fine in Report Manager, and has run successfully in the past.
The report is only not very complex, and is approx 40 columns wide. When I run the query in SSMS I get 27,628 records, and it takes 3 seconds to run (again, im SSMS). The report runs fairly quickly in Report Manager also, and exporting the results to .scv format works as expected.
If any additional information is needed to help with resolving this, please let me know and I will provide it. Thanks for you help in advance!
Additionally, report has been set to not timeout. Report runs in VS2010 and exports to Excel as expected.
Your connection might be timing out. Try changing the timeout length by:
1.Open the rsreportserver.config with Text Editior(e.g. Visual Studio, NotePad). By default, it is hosted in C:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting Services\ReportServer
2.Change the value for 'DatabaseQueryTimeout'. Valid values range from 0 to 2147483647. A value of 0 specifies an unlimited wait time and therefore is not recommended.
3.Save the file, and then restart the Reporting Services to apply the changing.
http://msdn.microsoft.com/en-us/library/ms157273.aspx
This tip is for anyone struggling with SSRS Excel export runtime error:
I got this error when I had a typo in my .rdl-file, namely in Language-element I had culture written wrong. Replacing it with value: =User.Language, fixed my case.
Try adding the config below on your web.config (main app). This change resolved my issue.
<location path="Reserved.ReportViewerWebControl.axd">
<system.web>
<!-- adjust the timeout value accordingly -->
<httpRuntime executionTimeout="3600"/>
</system.web>
</location>
I'm dynamically generating RDL files for SSRS 2008, assembling my reports from "building blocks" which I defined as reports on Report Server, and which I use as subreports on my generated report.
On my Report Server, I have a single, shared data source which does work as long as I run stuff directly on the report server.
What I'm trying to accomplish is this:
my generated main report should reference that shared data source
my subreports contained on the generated main report should also use the same data source
after I deploy the report to report server using the webservice interface, I'd like to be able to actually see the report right away
For now, I can generate and validate my RDL just fine, I can deploy it to the report server just fine, too - it shows up and all, great.
But when I try to view the report, I get an error that my data source is invalid or has been removed or something.......
What am I missing?? I am pretty sure I have the right data source - GUID for it and all - and the names do match. How do I tell a generated RDL to use the shared data source already present on the server??
Answering my own question here, hoping someone else might find this useful:
I was under the (false) impression that the unique "DataSourceID" given to a data source on the server would be sufficient to identify it uniquely.
So in my generated RDL, I had something like :
<DataSources>
<DataSource Name="MyDataSource">
<Transaction>true</Transaction>
<DataSourceReference>MyDataSource</DataSourceReference>
<rd:DataSourceID>6ba7c588-e270-4de9-988c-d2af024f10e1</rd:DataSourceID>
<rd:SecurityType>None</rd:SecurityType>
</DataSource>
</DataSources>
Now this worked once, when my data source was indeed called "MyDataSource" and located in the same directory as my report which I published through the RS WebService API.
As soon as I moved the data source elsewhere, it stopped working.
THE SOLUTION:
This may sound silly, but I really didn't "get it" at first: the DataSourceReference needs to have the full and complete "path" on the Reporting Server to that data source I want to reference. Just specifying the unique ID won't do....
So once I changed my RDL to:
<DataSources>
<DataSource Name="MyDataSource">
<Transaction>true</Transaction>
<DataSourceReference>/MyProject/DataSources/MyDataSource</DataSourceReference>
<rd:DataSourceID>6ba7c588-e270-4de9-988c-d2af024f10e1</rd:DataSourceID>
<rd:SecurityType>None</rd:SecurityType>
</DataSource>
</DataSources>
(notice the <DataSourceReference>/MyProject/DataSources/MyDataSource</DataSourceReference>)
since that moment it works like a charm.
Hope someone might find this useful some day!
I am using SSRS 2008. Currently everything works find so long as I put all reports in the Reports folder of the Report Server Project in Visual Studio.
I attempted a work-around, which is to have multiple Report Server projects, each pointing to a different folder on the report server. This has the side effect of not letting me reference the sub report from another project.
So, is there a way of referencing a sub-report from another project and still have the ability to preview?
Is there a way to get sub-folders in Report Server project?
it's not built-in to SSRS; but there is a workaround. Simply keep the reports under one project (to allow the reference) and manualy control the deployment location per report.
If you go this route, you may want to look automating this by creating a deployment script using rs.exe
rs.exe
There are also some attempts at solving this on codeplex; but I haven't had a chance to take a look at this yet:
rsbuild
I know it's a long time since the question was first asked but, if anyone is looking for an answer these days like me here's what I was able to do.
Move all your reports into whatever folder structure you want.
Then edit your .rptproj file and find where your report item group is. It will look something like:
<ItemGroup>
<Report Include="Report1.rdl" />
<Report Include="Report2.rdl" />
</ItemGroup>
Just update those file names to be the full path like this:
<ItemGroup>
<Report Include="Folder1/Report1.rdl" />
<Report Include="Folder2/Report2.rdl" />
</ItemGroup>
Reload your report project and it works.... (well it does for me!)
So far everything seems to work for me.
When deploying your SSRS Report to SubFolders do the following:
TargetReportFolder => /Institutional Statements/Monthly Statements
Institutional Statements being the master folder for your solution
and Monthly Statements being the child folder within them.