Failing to regenerate report: ReportProcessingException on rendering extension - reporting-services

I can generate a report in SSRS 2008 but when I try to generate it again it will fail with exception below. It will however work again once after SSRS is restarted. What configuration option could be affecting this? (I have added all necessary extensions.)
processing!ReportServer_0-1!1ef4!01/28/2013-16:39:41::
ERROR: Throwing Microsoft.ReportingServices.ReportProcessing.ReportProcessingException: You have attempted to use a rendering extension that is either not registered for this report server or it is not supported in this edition of Reporting Services., ;
INFO: Microsoft.ReportingServices.ReportProcessing.ReportProcessingException: You have attempted to use a rendering extension that is either not registered for this report server or it is not supported in this edition of Reporting Services.
library!ReportServer_0-1!1ef4!01/28/2013-16:39:41::
WARN: Microsoft.ReportingServices.ReportProcessing.ReportProcessingException: You have attempted to use a rendering extension that is either not registered for this report server or it is not supported in this edition of Reporting Services.
at Microsoft.ReportingServices.ReportProcessing.ReportProcessing.CreateRenderer(String format, IRenderingExtension& newRenderer)
at Microsoft.ReportingServices.ReportProcessing.ReportProcessing.RenderSnapshot(RenderingContext rc, ProcessingContext pc, GetResource getResourceCallback)
at Microsoft.ReportingServices.Library.RenderFromSnapshot.DoRendering(ProcessingContext pc, RenderingContext rc)
at Microsoft.ReportingServices.Library.RenderFromSnapshot.CallProcessingAndRendering(ProcessingContext pc, RenderingContext rc, OnDemandProcessingResult& result)
at Microsoft.ReportingServices.Library.RenderStrategyBase.ExecuteStrategy(OnDemandProcessingResult& processingResult)

It seems SSRS is trying to load an assembly containing some report rendering functionality (maybe some charts you added)?
If this is the case, this article explains how to register a DLL with SSRS.

It turned out the problem was SQL Web Edition does not support html extensions. You need at least Standard. Why it worked once remains the question.

The problem in our case is that via API we were requesting a report and attempting to convert the report from HTML to a different rendering extension. And, unfortunately, the specific Reporting Services instance’s configuration file has not been configured\extended to support the requested rendering format.
In MS SQL Server 2008-R2, the configuration file is located in a directory structure resembling the following:
E:
\Program Files
\Microsoft SQL Server
\MSRS10_50.MSSQLSERVER_RS
\Reporting Services
\ReportServer
And, the actual file name is rsreportserver.config
In the configuration file, find the “Render” section:
< Configuration >
< Extensions >
< Render >
Within the Render section, find the corresponding “Extension” entry.
If the extension is not found, add it:

Related

Using external assembly's method's results as a dataset

Using SQL2008R2:
I am trying to create a dataset that is simply the result of an external assembly's return method(s), but everything I can find regarding using custom/external assemblies just has a textbox's value set to the external assembly's method's result via an expression.
I simply want Report Server to do the data processing in the external assembly and bind that result to a very simple report.
I found some references to something about MDX but they seem to be a few years outdated and needed to know if this is possible.
Assuming you already have a .dll - Place your dll in the report designer folder (where your RDL is) and the report server folder, somewhere around here:
Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies
Program Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportServer\bin
Now add a reference to your dll from your report.
With your report open go to Report, Report Properties, References, Add reference, browse to your dll and add it.
Now in a text box properties Value call a method of your dll. It should look something like this:
=MyDllName.ClassName.MyMethodOrSubOrWhatever
This is a great article that can walk you through this:
Assuming you already have a .dll - Place your dll in the report designer folder (where your RDL is) and the report server folder, somewhere around here:
Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies
Program Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportServer\bin
Now add a reference to your dll from your report.
With your report open go to Report, Report Properties, References, Add reference, browse to your dll and add it.
Now in a text box properties Value call a method of your dll. It should look something like this:
=MyDllName.ClassName.MyMethodOrSubOrWhatever
This is a great article that can walk you through this: http://support.microsoft.com/kb/920769
P.S. Another option, if you don't want the web server doing the heavy lifting, is to use stored procedures. However, in our experience with very large database systems, it is much easier to scale up the web servers than it is to scale up the database servers so we do much of the heavy lifting on the web servers.
If you need a data set that is generated by custom .NET code, you can either set up a web service (here's a good tutorial), or you can set up a custom "data processing extension".
A data processing extension will allow you to choose a new data source in the SSRS report designer, and this data source will run custom .NET code. The full description is on MSDN, but here are the basic steps:
Create a new class library project
Implement all of the required extensions (and any desired optional ones)
Copy the DLL to the SSRS bin folder
Edit the SSRS config file to register your extension (by specifying the fully qualified name of your IDbConnection class)
You can find working examples from both CodePlex and Microsoft.

SSRS - different data depending on whether previewing report or using report viewer

I'm using SQL Server 2008 R2 Reporting Services. I'm seeing different data in a dropdown that's on the report, depending on whether I'm running the report in 'preview' mode from VS2008, or whether I'm running it from the report viewer at http://localhost/ReportServer_SQL2008. Any suggestions?
I'm using SSRS via SQL Server 2008 R2 Report Server
When I preview my report (originally created by another developer) in VS2008 I see correct data in one of the dropdowns for my report:
When I run the report via the report viewer on my machine at http://localhost/ReportServer_SQL2008, I see an incorrect GUID displaying in place of some recently added items in the dropdown
I've re-built the report in VS2008, and I've manually re-uploaded the .rdl file to my report server using the Report Manager at http://local-machine-name/Reports_SQL2008/, but I still see the incorrect data when using the IE report viewer.
I've looked at where the data is coming from that's used for populating the dropdown, using Query Analyser - when both viewing the report preview and viewing the report through the report viewer, the data is coming from the same database, using exactly the same stored procedure call
The 'raw' data being pulled from SQL gets some processing before it's used in the relevant data field in the report - it gets processed by using a custom .NET assembly, to pull back a 'friendly' string based on the report user's locale. This uses .resx files held in the VS2012 project for the custom assembly , that transpose the data. The entries in the .resx all seem to be correct.
I've manually deployed a debug version of the custom assembly that does this locale translation to C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PublicAssemblies (my own default location for custom assemblies)
When I debug against this assembly in VS2012 by attaching VS2008 to the debug process and running the report preview in VS2008, the correct program name e.g. 'GRIT CARDIO' is returned
So the question is 'why is this not being returned when I run the report in the IE report viewer'?

Unbale to preview the Report in Visual studio SSRS

I have created the custom data source Provider. I have edited the config file RSReportDesigner.config and RSPreviewPolicy.config. I am able to see my custom data source provider in data source list while creating the data source in SSRS (Visual Studio). While creating dataset, iam able to execute query and get data.
But, when i try to preview the report it display following error: An attempt has been made to use Data Extension 'CUSTOM_DATASOURCE' that is either not registered for this report server or is not supported in this edition of Reporting Services
See: https://support.microsoft.com/en-us/kb/2750044
and as the article instructs, be sure to also add the same xml snippet provided as the solution in the article, to the PreviewProcessingService.exe.config file that is located in %Program Files%\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies folder.
This file does not have existing entries like the devenv.exe.config, but you will see an <assemblyBinding> </assemblyBinding>section and you can insert the xml from the article between these tags.
You may have to relaunch SQL Data Tools for the changes to take affect.
Are you using Sql Server Express? Express doesn't support the full feature set of Reporting Services. There is a list of the unsupported features on MSDN, one of which is:
The Reporting Services API extensible platform for delivery, data processing, rendering, and security is not supported

SSRS 2012 not rendering charts in a PDF (A generic error occurred in GDI+)

I have a data driven subscription that renders the report in PDF. SSRS 2012, Win 2008 R2 (on Hyper-V) is used.
I have looked in ExecutionLog3, the shared data sets all successfully refresh, the reports successfully render and are output to the correct folder.
I did read somewhere that when rendering the reports in IE that the user needed permissions to the Temporary Internet Files folder, however I don't know if this is valid for data driven subscriptions? I did add the execution account (a local user) to have read/write permissions on the ReportServer temp internet folder.
Apart from this I have no idea what to look for to troubleshoot this issue? Any suggestions will be welcomed.
EDIT - 2012-11-19
Have found the following unhandled exception error in the ReportServer log:
ERROR: Throwing Microsoft.ReportingServices.ReportProcessing.RenderingObjectModelException: , Microsoft.ReportingServices.ReportProcessing.RenderingObjectModelException: A generic error occurred in GDI+. ---> System.Runtime.InteropServices.ExternalException: A generic error occurred in GDI+.
at System.Drawing.Image.Save(Stream stream, ImageCodecInfo encoder, EncoderParameters encoderParams)
at Microsoft.Reporting.Chart.WebForms.Chart.Save(Stream imageStream, ChartImageFormat format)
at Microsoft.ReportingServices.OnDemandReportRendering.ChartMapper.GetImage(ImageType imageType)
--- End of inner exception stack trace ---;
It turns out that the GDI+ drivers needed updating on Windows 2008 R2 Server and is a known issue. If you want to know what version of GDI+ you have then do a file search for gdiplus.dll.
I posted the same question here and got a response saying to update the drivers via a hotfix, which can be found at this link, and it provides the version of the gdiplus.dll that will be installed with the hotfix, so you can compare if there is a version change necessary.
You need to request the hotfix, and an email will be sent to you giving you the download location.
This also solved the issue of images not rendering as well as charts

Report Builder 3.0 - Dataset Credentials Do Not Work

I am using SSRS 2008 R2 and Report Builder 3.0. I set up a shared data source via the browser (http://myserver/reports/) wherein the "credentials are stored securely in the report server" to use with multiple reports. Testing the connection via the browser works.
Now, I fire up Report Builder 3.0. I start a new report and "Add Data Source". I select the "Use a shared connection", browse to the server, and select the above data source. Click "Test Connection" and all is well.
I then try to "Add Dataset". In the dialog, I select "Use a dataset embedded in my report", I select my data source added above, type in the SQL string and click OK. The "Enter Data Source Credentials" appears. No matter what permutation of valid domain (like the domain admin account and others) or SQL Server (like the 'sa' account) credentials plus checkboxes I use, I get an "Unable to connect to data source".
Security settings on the shared data source allow BUILTIN\administrators and domain\administrator all roles. The data source does work, as some legacy migrated reports run fine. Report Builder says the data source connects okay. But, I cannot create new reports, nor modify existing ones.
Any suggestions?
After much gnashing and wailing seems like Report Builder uses information in definitions in Report Server to then run queries locally by itself, and not through Reporting Services.
My mistaken belief was that when I did something like Refresh Fields when setting up a Dataset, Report Builder was going through Report Services to get the relevant output and/or metadata. This seems to not be the case.
I had defined the connection string of the shared data source as Data Source=(local);Initial Catalog=<database name>. Now, this works when you are in Reporting Services' browser interface, but Report Builder seems to read the connection string and use it for itself. Reporting Services on my local development machine does not have any of the setup on the target server running these reports, so anything I would use will fail.
Changing the connection string to Data Source=<server name>;Initial Catalog=<database name>, instead of localhost, allowed Report Builder to work properly. (RB still popped up "Enter Data Source Credentials". I used my Windows credentials, which is a valid login on the target server.)
To accomplish what you are attempting, it sounds like you will need to use windows integrated security.
According to MSDN stored credentials are not passed to client applications. They are for use only by the report server for things like scheduled reports.
http://msdn.microsoft.com/en-us/library/ms159736.aspx
I can tell you that the prompt "Enter Data Source Credentials" is looking for SQL authentication, not domain accounts.
Outstanding question and answer. I really appreciate your careful description. I had the same problem. In my case the problem was that I was accessing Report Builder from a machine connected to my home office by VPN. I guess because I was outside of the Windows network of the home office, RB couldn't authenticate me. Working with a Remote Desktop connected to a machine at the office allowed me to side-step the problem. Your and #RichShealer's answers reminded me that when running the reports from the browser, they're being served up by an inside server machine. This is not the case when running RB, a desktop app.