Learn more about SQL Server tools

mssqltips logo
 

Tutorials          DBA          Dev          BI          Career          Categories          Webcasts          Whitepapers          Today's Tip          Join

Tutorials      DBA      Dev      BI      Categories      Webcasts

DBA    Dev    BI    Categories

 

How to launch an SSRS report in a browser window from a .NET application


By:   |   Last Updated: 2013-08-12   |   Comments (13)   |   Related Tips: > Reporting Services Development

Problem

I am working on a .NET application where we have built many reports using SQL Server Reporting Services (SSRS).  A common complaint from the business users is that they don't want to open their browser and navigate to the Report Manager (or a SharePoint document library) in order to run their reports.  Ideally they would like to launch a report from within the application by choosing it from a menu or clicking a button.  Can you provide an example of how to do this?

Solution

There are a couple of ways that you can launch an SSRS report from a .NET application; you can:

  • Call the SSRS web service to render the report

  • Use a Report Viewer control in the application to render the report

  • Execute the report using URL access where the report will render in a browser window

Since the URL access method provides exactly what you need that is what I will cover in this tip.  This is probably the simplest way to render a report from an application; you just need to put together a URL that represents a report request and launch the browser.  When Reporting Services gets a URL request for a report, the default handling is to render the report as HTML.  The report rendering is exactly the same as if you ran the report from the Report Manager web application (or a SharePoint document library).

A Simple URL Request for a Report

A URL request for a report consists of the following parts:

  • Web service URL of the report server

  • Report path (library or folder and name of report)

  • Parameters for the report, the HTML viewer, or report server commands.  Take a look at the URL Access Parameter Reference for the complete details.  It is a best practice to specify rs:Command=Render to indicate that you want to render a report.

The URL request depends on whether Reporting Services is deployed as a native instance or a SharePoint integrated instance.  Check Access Report Server Items Using URL Access for the details.

If you are working with a native instance of SSRS, you can get the web service URL of the report server from the Web Service URL page in the Reporting Services Configuration Manager (the URL below is cut off; it is http://BARLEY-LAPTOP:80/ReportServer):

Web Service URL

BARLEY-LAPTOP is the name of my laptop computer where I have a native instance of SSRS installed; 80 is the port number where the web service is running.  When the web service is using port 80 you do not have to specify the port number.

Assuming I have a report named sample in the mssqltips folder, a simple URL request (without any parameters) would be:

http://BARLEY-LAPTOP:80/ReportServer?/mssqltips/sample&rs:Command=Render

Note that the web service URL for the report server and the report folder and name are separated by "?".

If you are working with a SharePoint Integrated instance of Reporting Services, the URL request follows the same format, but there are some slight differences:

http://SP2010WFE1/_vti_bin/reportserver?http://SP2010WFE1/mssqltips/sample.rdl&rs:Command=Render

The URL details are:

  • The web service URL of the report server is http://<SharePointSite>/<Sub-site>/_vti_bin/reportserver (sub-site is optional)

  • The SharePoint document library and report name is mssqltips/sample.rdl

Launching the Browser

Launching the browser and rendering the report is easy.  We can use the Start method of the System.Diagnostics.Process class in the .NET Framework.  Here is the single line of code that we need:

Reporting Services in native mode:

System.Diagnostics.Process.Start("http://BARLEY-LAPTOP:80/ReportServer?/mssqltips/sample&rs:Command=Render")

Reporting Services in SharePoint Integrated mode:

System.Diagnostics.Process.Start("http://SP2010WFE1/_vti_bin/ReportServer?http://SP2010WFE1/mssqltips/sample.rdl&rs:Command=Render")

When this code is executed the report will be rendered in a browser window.

Adding Parameters to the URL Request

In this section I will show an example of adding parameters to the URL request.  Reports typically have parameters that are used to filter the data shown on the report.  In addition you can specify parameters to control the HTML output such as whether to show the parameters section, toolbar, etc.

The following screen shot shows a report that was run from the Report Manager web application used with a native instance of Reporting Services:

Adding Parameters to the URL Request

The following is the URL request that includes the Sales Territory Group parameter and does not show the parameter text box (must be all on one line in code):

http://BARLEY-LAPTOP:80/ReportServer?/mssqltips/sample&rc:Parameters=false&rs:Command=Render&SalesTerritoryGroup=Europe

The following screen shot shows the report rendered in the browser via the URL request (note the parameters text box isn't shown):

The following screen shot shows the report rendered in the browser via the URL request
Next Steps
  • Rendering an SSRS report in a browser from a .NET application can be a better approach than forcing users to run them from the Report Manager or a SharePoint document library.
  • Take a look at the URL Access (SSRS) to review all of the capabilities that URL access provides. 
  • Download the sample code here to experiment on your own.


Last Updated: 2013-08-12


next webcast button


next tip button



About the author
MSSQLTips author Ray Barley Ray Barley is a Principal Architect at IT Resource Partners and a MSSQLTips.com BI Expert.

View all my tips




Post a comment or let the author know this tip helped.

All comments are reviewed, so stay on subject or we may delete your comment. Note: your email address is not published. Required fields are marked with an asterisk (*).

*Name    *Email    Email me updates 


Signup for our newsletter
 I agree by submitting my data to receive communications, account updates and/or special offers about SQL Server from MSSQLTips and/or its Sponsors. I have read the privacy statement and understand I may unsubscribe at any time.



    



Tuesday, March 06, 2018 - 7:48:20 AM - Joseph M. Morgan Back To Top

 I have a specific SQL server login that is only for reports from our data mart. I use this as stored credentials in the data source and eliminate the login prompt. This works well for reports that are delivered through an application that requires authentication first. The page that serves the reports is protected--each report is not.

I wouldn't recommend this for sensitive data but it works all right for generic reports.

 

Joey

 


Tuesday, October 10, 2017 - 11:53:12 AM - Adrian Back To Top

Hi Ray,

I just did all what you suggested and I worked perfectly, but It always ask for loggin the server. How do I configure this to avoid it?

 

Thanks

 


Friday, July 14, 2017 - 12:17:22 PM - Paytonn Back To Top

 This is the single most beneficial instruction set (for ANY process)  i have come across in months.   We have always used a cumbersome "open a report viewer page and select the report you want to print" which is fine for most of our work,  but we have a couple of items that would work so much better if we could just blast it onto their screen without any fiddling.  This fills that bill perfectly.  You have made me look like a true "customer service oriented" programmer.  Two thumbs up.


Monday, November 30, 2015 - 10:20:43 AM - Ray Barley Back To Top

I do not know if you can use a tool to compare SSRS databases and generate an update script to synchronize them.  

However, take a look at this tip which walks through using a tool called Reporting Services Scripter which might work for you.

https://www.mssqltips.com/sqlservertip/2627/migrating-sql-reporting-services-to-a-new-server/

 


Wednesday, November 25, 2015 - 10:13:25 AM - Jan Siegrist Back To Top

Newbie to SSRS here - just getting started. Great article.

Is it possible to RedGate differences in an SSRS database and come up with an update script?


Friday, March 14, 2014 - 9:50:13 AM - Raymond Barley Back To Top

Take a look at this article for an example of how to execute a report and render it as a PDF:

http://www.codeproject.com/Articles/15555/Generating-PDF-reports-programmatically-using-SQL

 


Friday, March 14, 2014 - 5:13:55 AM - Palanivelrajan Back To Top

Hai 

It is good article.

 

I would like to know, how to write the output of the webservice URL to PDF/EXCEL on a specificed folder in report server / share location without rendering/responding output to the request.

 

Thanks and Regards

Palanivelrajan

 

 


Monday, March 10, 2014 - 5:17:51 PM - Ray Barley Back To Top

Did you When you launched the browser, did you right click on it on the Start page then select Run as Administrator?


Monday, March 10, 2014 - 2:01:57 PM - Sultana Back To Top
  • I have created a report in my laptop using visual studio data tool.  when I click the web service URL it shows following information
  • "The permissions granted to user 'PAR-DBA\sqldba' are insufficient for performing this operation. (rsAccessDenied) Get Online Help " I tried with administrative previledge but same result. can any body guide me how can I solve it. I am using WINDOW 8

 



Wednesday, November 06, 2013 - 7:49:01 AM - Raymond Barley Back To Top

In an ASP.NET app you could use the Report Viewer web server control; see http://msdn.microsoft.com/en-us/library/ms251671(v=vs.110).aspx

 

 


Wednesday, November 06, 2013 - 4:43:31 AM - neilj Back To Top

Would this technique work for an ASP.Net webforms application?


Monday, September 16, 2013 - 1:04:53 PM - Raymond Barley Back To Top

The data source in the report uses windows authentication. 


Sunday, September 15, 2013 - 7:12:40 PM - bbh Back To Top

Truely you can do that; however, execute report outside the authentication is not recommended for small/large business. In corporate environment, I suggested a log, who, when, where execute the report.


Learn more about SQL Server tools