My most recent project involves upgrading reports that are developed in RS 2005 to RS 2012. So I was curious about what really happens when you deploy an RDL file to a Reporting Server. So here are some of the stuff that happens in the background when you deply an RDL file.
- The RDL is stored as a BLOB in the Report Server Database. It is not stored as a file.
- The Report Server alse stores a compiled version of the RDL file
Curious about the table that stores the RDL file info?
It is the Catalog table in ReportServer database.
The XML schema is stored in a field called content and you can retrieve the contents from the ‘content’ filed and convert it back to XML schema using the following SQL code.
select *,convert(varchar(max), convert(varbinary(max), content)) as xmlvalue
where content is not null
Check out the following link to get more info on catalog table and retreiving information from the catalog table,
So back to the upgradation part..
Turns out you can upgrade the RDL files in two different ways.. You can open the solution in the designer and the designer will upgrade all the reports in the solution for you.. This is mostly a painless process although there are some areas where you will find some issues..I should also mention that this is the only way to modify the actual RDL file.
The second option is to actually run the report from the report manager or the application which is accessing the reports. The first time the reports are run, they are compiled into the version of Report Server. For example if you have a RS 2005 report and you ran it on a server that has RS2012, the report is recombiled to match the 2012 version. If the upgrade was successful, the report will run as a 2012 report, if there were any issues the report will run as a 2005 report in backward combatibility mode.
One important thing to note about the section option is that the actual RDL file does not change. When you retrieve it from the report server, you’ll get the original RS 2005 RDL you published to the server. This is handy if you need to get back the original report in future.
So the question is, how does Report Server display the upgraded report if the original RDL file is unchanged? Looks like what happens in the background is that the first time the report is accessed after the upgrade the report is recompiled to match out new schema. This is done on demand. So if you have a report that is never run, its compiled format is never updated.