Getting started with SSRS 2005

Coordinator
Aug 31, 2011 at 5:15 PM

Let me know if you give CrissCross a try, I'd be interested to hear of any successes, problems or suggestions ....

Feb 17, 2012 at 5:48 PM
Edited Feb 17, 2012 at 5:49 PM

First off, thanks for undertaking this project!  I really loathe the Reporting Services default front-end, but I wasn't looking forward to completely learning C# to code something new from scratch.  :-)

I tried installing this on our Reporting Services server; however, we're running 2005 (not my choice!) and this is where the issues started.  I installed it as per the readme, but when I tried to open it got an error which related to not being able to find ExecutionLog2.  This appears to be a 2008 and newer thing only - there might be something similar in 2005 but just named ExecutionLog.  I tried opening the solution so I could change the references and re-build, but of course it won't open in my version of VS.  I'm going to find a different machine with a newer version of VS and try again, but I figured I'd leave the initial feedback of how this works with 2005 (since you did want to know).

I'll let you know what happens if I can successfully rebuild it.

Feb 17, 2012 at 6:55 PM
Edited Feb 17, 2012 at 7:00 PM

I rebuilt and published, and that error went away, to be replaced by "Invalid column name 'ReportPath'".  I tried setting "UseReportLog" in web.config to false, and I'm properly getting to the home page now, so that definitely seems to be an issue for 2005 vs 2008.

So with that set to false, I can navigate and see the list of reports.  However, when I click on one, I get some errors thrown - "Failed to retrieve repdef object for path <report path>", then "ASP.NET session has expired".  A different report gives me the error "Object reference not set to an instance of an object".

Looks like this won't be quite so easy in 2005 after all...:-(  I'll keep testing/investigating and let you know, but if you've got any ideas I'm all ears.  Thanks!

Feb 17, 2012 at 11:20 PM

One last bit before I take off for the weekend - I managed to get it to stop throwing the "ASP.NET session has expired" error by adding mode="InProc" to the sessionState section of the web.config.  Still getting either "Failed to retrieve repdef object for path <report path>" or "Object reference not set to an instance of an object" on all reports, though.

Not sure if this where I should be putting this, but I hesitate to file a bug report as this is probably specific to this install/version...

Coordinator
Feb 18, 2012 at 9:58 AM

Hi, thanks for persevering! I'll try and check out the problems you're having over the weekend, but in the meantime a quick question - are you running CrissCross on the SSRS server or on a different server?

Feb 18, 2012 at 11:49 PM

On the SSRS server, yes.  It's running 2003 R2 with SQL 2005 and IIS 6.  Thanks!

Coordinator
Feb 20, 2012 at 10:29 AM
Edited Feb 20, 2012 at 11:22 AM

I think the 'Failed to retrieve repdef object' and 'ASP.NET Session has expired' errors might be due to 'Web Gardens' being turned on on the IIS server - I had a similar problem on an SSRS server last year, so perhaps there's something on SSRS server that turns the 'Web Gardens' feature on in IIS.

Basically 'Web Gardens' are when multiple worker processes get assigned to a single IIS Application Pool. This causes trouble for ASP.NET Sessions and caching (unless care has been taken to code round it). See here for background: http://nicholas.piasecki.name/blog/2009/02/on-web-gardens-aspnet-and-iis-60/

I fixed it by making sure that CrissCross was running in its own Application Pool, and then modifying the Application Pool settings so that on the 'Maximum number of worker processes' is set to 1. (Thats in the Application Pool properties, on the Performance tab). If 'Maximum number of worker processes' is greater than 1 then you're running 'web gardens' and the default asp.net session stuff won't work (unless you switch to more fancy ASP.NET session settings, see blog post).

Hope that helps!

edit: re: Whether CrissCross will work with SSRS 2005 - I haven't tried it, but I'm optimistic because it connects via the ReportService2005 service which (by its name) would appear to be the same between SSRS 2005 and SSRS 2008.

Feb 21, 2012 at 4:53 PM

Thanks!  That does seem to have made a difference; I can run some reports now with no errors.  Others, though, are erroring out saying that a parameter is read-only and can't be modified (but it isn't).  *sigh*  One step closer, though - thanks!

The only thing that seems to be an issue re: 2005 vs 2008 is using the logs, but I'm still unclear as to what the implications of that are.

Coordinator
Feb 21, 2012 at 5:00 PM
Edited Feb 21, 2012 at 5:01 PM

Ah, ok good.

Re: the parameter read-only errors: If you want to paste the error messages or stuff from the log (or send them to me at ian@codeulike.com) then I'll have a look and try and figure out whats happening. You can get full error messages etc from the Error Log which is accessible by browsing to CrissCross from the server machine itself and then clicking on 'About' and then 'Elmah error log'.

re: UseReportLog: The report log feature does two main things: It inspects the log to see what the most popular reports are and then lists the top 5 on the homepage (across all users and for the current user). It also gives the user the ability to re-call parameters from previous report runs. But it uses parts of the SSRS database that are only semi-supported so evidently the views/fields are different for SSRS 2005. I'll see if I can fix that when I've got time ...

Feb 22, 2012 at 5:39 PM

Okay, so as per our emails (but put here for other people's reference) - the read-only errors were because I'd changed the parameter (removed the "internal" flag) in the report file itself, and republished, but that apparently doesn't actually update the parameter.  Had to do it separately in Report Manager.  (So nothing to do with this code; just a quirk of SSRS.)

Using the logs for the history features is still pending for 2005, since the execution log is different from 2008, but the rest is working (minus a small date-related bug I logged as an issue).  Thanks!

Feb 23, 2012 at 9:23 PM

For anyone else trying this on 2005, 3 things had to be changed for the history/logging stuff to work.  In CrcReportHistoryFetcher.cs, every query needs to have "executionlog2" changed to "executionlog", you have to do a join on the catalog table to get the path (it's only an ID stored in the executionlog table), and you have to compare the status to '1' instead of 'live'.  That's it!  I'll include the first one as a sample:

            string sql = "SELECT TOP (5) c.Path AS ReportPath, COUNT(*) AS Runs FROM ExecutionLog el WITH (nolock) "
            + " LEFT OUTER JOIN Catalog AS c WITH (nolock) ON el.ReportID = c.ItemID "
            + " WHERE el.Source = '1' AND el.UserName = @UserName AND c.Path IS NOT NULL" 
            + " GROUP BY c.Path ORDER BY Runs DESC";
I had to add the c.Path IS NOT NULL thing since I had some where it was - not quite sure why at the moment.  But this seems to work just fine.  :-)

Jun 20, 2013 at 8:39 AM
Hi
I downloaded the zip file and created a virtual directory on IIS server
I also changed the web.config to my url's and when browsing I recieved the following error:
<!-- Web.Config Configuration File --> <configuration>
<system.web>
    <customErrors mode="On" defaultRedirect="mycustompage.htm"/>
</system.web>
</configuration>

I changed it to "ReadOnly".
And now I recieve a different error:
Line 67: ASP.NET to identify an incoming user.
Line 68: -->
Line 69: <authentication mode="Windows"/>
Line 70: <!-- this is needed if crisscross.ImpersonateLoggedOnUser in appSettings is true -->
Line 71: <identity impersonate="true"/>

I have Windows Athentication enabled (IIS 7.5, SSRS 2008) ...
I'll be happy to get any help with this,
Thanks!
Coordinator
Jun 20, 2013 at 11:30 AM
Hi annai,

I can't tell exactly what the error is from the information you've given, but if you email the file CrissCross/App_Data/Log.txt to me at ian@codeulike.com I'll see what I can figure out

Cheers
Jul 11, 2013 at 10:16 AM
Hi,

I am trying to use the same with SSRS 2012. But it gives me the error

Server Error in '/' Application.

Runtime Error

Description: An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed.

Details: To enable the details of this specific error message to be viewable on the local server machine, please create a <customErrors> tag within a "web.config" configuration file located in the root directory of the current web application. This <customErrors> tag should then have its "mode" attribute set to "RemoteOnly". To enable the details to be viewable on remote machines, please set "mode" to "Off".
<!-- Web.Config Configuration File --> <configuration>
<system.web>
    <customErrors mode="RemoteOnly"/>
</system.web>
</configuration>

Notes: The current error page you are seeing can be replaced by a custom error page by modifying the "defaultRedirect" attribute of the application's <customErrors> configuration tag to point to a custom error page URL.
<!-- Web.Config Configuration File --> <configuration>
<system.web>
    <customErrors mode="On" defaultRedirect="mycustompage.htm"/>
</system.web>
</configuration>

first of all, does it work with SSRS 2012. If yes, what i can do to solve this.
Coordinator
Jul 15, 2013 at 3:49 PM
Hi bhupeshc89, that is a very generic ASP.NET error so I can't really tell anything from that.

From the IIS server itself, try browsing to browse to (your CrissCross virtual directory)/elmah.axd and that should give you more info about the error.

Alternatively look in the app_data folder for the Log.txt file, if you send it to me at ian@codeulike.com I might be able to help.

I havent tried CrissCross with SQL Server 2012 but generally I'd expect it to work OK.