Reporting Services Custom Authentication And Web Reportviewer - Familiar Question
Feb 20, 2007
This is a subject that has been brought up before but I have not seen a definitive answer/solution.
We have implemented a custom authentication extension (forms authentication) for reporting services and it has been working just fine under "normal" conditions; "normal" being users logging in, viewing reports, and then moving on.
Recently some reports were created by our report group and they contain Dundas gauge controls for "dashboard" style reports. These reports are meant to be up all day and they post back every few seconds because the data they present is mission critical.
This of course exposed the inability of the reportviewer control to stay in the context of Report Manager when it comes to the cookie exchange and authentication thus resulting in the following error:
<html><head><title>Object moved</title></head><body>
<h2>Object
moved to <a
href="/ReportServer/logon.aspx?ReturnUrl=%2freportserver%2fReportExecution2005.asmx">here</a>.</h2>
</body></html>
I created a quick ASP.NET web application and added the reportviewer to it, implemented IReportServerCredentials and the report came up as expected but behaved the same way as it did in Report Manager. Same with a Windows Forms application.
Increasing the cookie timeout in the forms authentication tag is an option, but not an attractive one. Extending the reportviewer control is also an option, but I don't know if that is a good candidate right now because I don't see anything extensible yet.
Is this just the nature of RS with custom authentication or is there a viable solution out there right now?
Any and all answers are much appreciated and I thank you in advance.
Hi, I€™ve an application Web which uses to reportviewer to show information. I want that all the users of the application accede to reports by means of he himself user and password. This user is a local user of report€™s server. The problem is that when attempt to show report always appear the following error: The request failed with HTTP status 401: Unauthorized. The code that use is the following one:
ReportViewer1.ServerReport.ReportServerCredentials = new ReportViewerCredentials("Usuario", "pwd", "servidor");
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using Microsoft.Reporting.WebForms; using System.Net; using System.Security.Principal; using System.Runtime.InteropServices;
/// <summary> /// Summary description for ReportViewerCredentials /// </summary> public class ReportViewerCredentials : IReportServerCredentials { [DllImport("advapi32.dll", SetLastError = true)] public extern static bool LogonUser(String lpszUsername, String lpszDomain, String lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken);
[DllImport("kernel32.dll", CharSet = CharSet.Auto)] public extern static bool CloseHandle(IntPtr handle);
[DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError = true)] public extern static bool DuplicateToken(IntPtr ExistingTokenHandle, int SECURITY_IMPERSONATION_LEVEL, ref IntPtr DuplicateTokenHandle);
public ReportViewerCredentials() { }
public ReportViewerCredentials(string username) { this.Username = username; }
public bool GetFormsCredentials(out Cookie authCookie,out string user, out string password, out string authority) { authCookie = null; user = password = authority = null; return false; // Not implemented }
public WindowsIdentity ImpersonationUser { get {
string[] args = new string[3] { this.Domain.ToString(), this.Username.ToString(), this.Password.ToString() }; IntPtr tokenHandle = new IntPtr(0); IntPtr dupeTokenHandle = new IntPtr(0);
//const int LOGON32_PROVIDER_DEFAULT = 0; ////This parameter causes LogonUser to create a primary token. //const int LOGON32_LOGON_INTERACTIVE = 2;
const int LOGON32_PROVIDER_DEFAULT = 3; //This parameter causes LogonUser to create a primary token. const int LOGON32_LOGON_INTERACTIVE = 9; const int SecurityImpersonation = 2;
tokenHandle = IntPtr.Zero; dupeTokenHandle = IntPtr.Zero; try { // Call LogonUser to obtain an handle to an access token. bool returnValue = LogonUser(args[1], args[0], args[2], LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref tokenHandle);
if (false == returnValue) { Console.WriteLine("LogonUser failed with error code : {0}",Marshal.GetLastWin32Error()); return null; }
// Check the identity. System.Diagnostics.Trace.WriteLine("Before impersonation: " + WindowsIdentity.GetCurrent().Name);
bool retVal = DuplicateToken(tokenHandle, SecurityImpersonation, ref dupeTokenHandle); if (false == retVal) { CloseHandle(tokenHandle); Console.WriteLine("Exception in token duplication."); return null; }
// The token that is passed to the following constructor must // be a primary token to impersonate. WindowsIdentity newId = new WindowsIdentity(dupeTokenHandle); WindowsImpersonationContext impersonatedUser = newId.Impersonate();
// Free the tokens. if (tokenHandle != IntPtr.Zero) CloseHandle(tokenHandle); if (dupeTokenHandle != IntPtr.Zero) CloseHandle(dupeTokenHandle);
// Check the identity. System.Diagnostics.Trace.WriteLine("After impersonation: " + WindowsIdentity.GetCurrent().Name);
I am invoking RS web services to render reports, using Apache Axis to generate stub classes from Reporting Service WSDL.
Please let me know if I can integrate Report Viewer control in the jsp where I am writing the report output. Else do I have to create my own custom tags simulating ReportViewer functionality.
I'm building a web app in c# that will consume sql rdl reports. These reports are hosted at MaxmimumASP and the physical location requires us to login with our one and only network account or to at least impersonate the authorized account in code. (Note that this all stored under SSL on a server different than our web app).
This is easy enough using the provided ReportService. However, we desire the functionality in ReportViewer that gives the toolbar and multiple export options.
So some serious work-arounds are in order.
Using ReportService, I can easily impersonate our MaximumASP account with:
ReportingService service = new ReportingService(); service.Credentials = new System.Net.NetworkCredential(user, pword, domain);
Using the ReportService leaves us with a stream of binary information. Under this set of conditions, direct rendering to PDF doesn't seem to work (or at least I can't get it to.).
Another problem is that embedded images either do not show up, require another challenge/response even though we did this in our cs page, or require us to stream them to the app's directory (see: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/rsprog/htm/rsp_ref_soapapi_service_lz_49f6.asp?frame=true)
The big question. Does anybody have a way to get ReportServices stream to display in ReportViewer without using temporary files?
I tried to open a SQL Server 2005 Reporting Service report in ASP.Net 2.0 using ReportViewer. The following is my code.
Dim param(2) As Microsoft.Reporting.WebForms.ReportParameter param(0) = New Microsoft.Reporting.WebForms.ReportParameter("ProjectID", Me.cboProject.SelectedValue) param(1) = New Microsoft.Reporting.WebForms.ReportParameter("RunBy", Session("strEmployeeName")) Me.ReportViewer1.ServerReport.SetParameters(param)
Me.ReportViewer1.ServerReport.ReportServerCredentials = New _ clsReportServerCredential(System.Configuration.ConfigurationManager.AppSettings("strReportViewUser"), _ System.Configuration.ConfigurationManager.AppSettings("strReportViewPassword")
Me.ReportViewer1.ServerReport.ReportServerUrl = New Uri(http://SQL2005/ReportServer/) Me.ReportViewer1.ServerReport.ReportPath = "/nsPortalReports/rptIssuesByRole" Me.ReportViewer1.ServerReport.Refresh()
I need help with passing multiple parameters. I got an erron on the second parameter (parm(1)). The error was
"Overload resolution failed because no accessible 'New' can be called without a narrowing conversion: 'Public Sub New(name As String, values() As String)': Argument matching parameter 'values' narrows from 'Object' to '1-dimensional array of String'. 'Public sub New(name As String, value As String)': Argument matching parameter 'value' narrow from 'Object' to 'String' "
I am trying to use a reportviewer control (processing mode = remote) to view a rdl that is hosted on a server running MOSS, the reporting services are run in "sharepoint integrated mode". When i try to set the path to the RDL on the control like i usually do for an ASP.NET ReportViewer control, i get the error message posted below. I cant find anything on google, Please HELP
I had a problem accessing our report manager via the web front... We deleted the virtual directories in IIS and then recreated them... this required us to make a change in the rsWebApplication.config file to include the URL in the ReportServerUrl tag before we could access the site again. Now we have access to the site but when we attempt to view a report that we deployed to it - the report fails to render and returns a rsReportNotReady error, even though the report doesnt use a snapshot.
Furthermore, the strange thing is that the filters for the report don't display in their own collapsable bar as they used to before... they just display on the white part of the page. Neither does the reportviewer toolbar display properly. It appears as labels and textboxes going down the page and not in a toolbar as you might expect...
any help is appreciated... we suspect that it is some kind of configuration issue, but we have no clue where to begin...
I'm trying to rertieve specific RS 2005 report by passing WebApp control value (this.VCtrlNo.Text) to "CV Report" - name of my report with the following scripts.
1) No Action - when clicked. AutoPostBack is set and properly initialized.
2) This just opened the default page instead of specific report. <a href="http://localhost/Reports/Pages/Report.aspx?ItemPath=%2fReports+Folder%2fCV+Report&rc=Render&vctrlno=10-0000037", target="_blank">Open CV Report </a>
Where "Reports" is the reportmanager, vctrlno is the parameter name (properly set) and obviously I want to open a new page.
I would be very thankful to anyone who can lead to make this work.
I have a report (stored procedure) that I have set up in SQL 2005 Reporting Services. I've designed this report (using SQL server business intelligence studio), and several other reports, thinking that running totals or summing may be the issue, but it hasn't been. The latest iteration has been just a display of product info, about 100 records, no fields formatted or summed. Very very simple, straight-forward report. If I go to the Report server & upload the rdl file, it displays fine, performs as it should, paging & exporting - everything works fine. The issue comes up when in a web app, I put a Reportviewer control on the page, and call the report.
It works, sort of.
Originally, I had written the page using ASP.NET AJAX Enabled web project, and I had been using the Tab Container on the page. What happens is when I open it on that tab (I am using AJAX Tab panels, which had been working fine without this behavior prior to finally getting the reportviewer working), and the report displays, the "e" on Internet explorer at the top of the tab now flickers, like the page is reloading. It also runs the CPU up to 100% on the computer and although I can go from tab to tab in it (I am using AJAX tab panels in the page), it will take like up to a minute to go to the next tab. I'm not doing anything really data-intensive on those tabs, and they had been functioning fine prior to putting in the report viewer (i.e. they weren't flickering & clocking the CPU).
Thinking that the Tab Container may be the issue, I created just a plain AJAX Enabled web project and put the same reportviewer on it. Same performance. It'll display the report, and then take the system up to 100% and stay there until I kill the browser.
After that, I did just a plain old ASP.Net web project and put the report viewer control on it. Same result. The report will display, but as soon as it does, the "e" on Internet Explorer tab starts flickering and you see the CPU go to 100% and stay there. I've left it for 20-30 minutes with no change. It appears as if the page is constantly refreshing.
Thinking that the issue may be related to having the reportviewer report hard coded in the app, I put a button on the page, and assigned the button to put in the report. It displays, but it again runs the CPU up to 100% and stays there.
I thought that having Asynch = True (run the report asynchronously) might be the issue, but setting it to false made no difference.
I eventually have to kill the page to do anything, because it has the system up to 100%.
The code I am using on this page follows:
Here's the code in the codefile:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If Not Page.IsPostBack Then Me.ReportViewer1.Visible = False End If ReportViewer1.ServerReport.ReportPath = ""
End Sub
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click ReportViewer1.Visible = True ReportViewer1.ServerReport.ReportPath = "/BA10listing"
.... so you can see there's a lot going on here. The report returns ~100 records or so, no calculations, no summation, no grand totals. Basically a "nothing" report, just listing product info data.
In SQL Reporting Services in the web browser, this report displays fine, no problems. It's only when I call it from the Reportviewer inside a web page that it hangs.
Any idea why reportviewer might make this act this way?
My system is running Windows XP, VS 2005, I have both SQL 2000 and SQL 2005 on this same box. I have a server that has both SQL 2000 & SQL 2005 on it as well, and the behavior is the same for both, whether I run the web page with the Reportviewer control on it with the report being on the local system, or the remote system.
Any help or advice would be very much appreciated.
We recently upgraded from ReportViewer 9.0 to 10.0 Control in our ASP.NET application, and face some strange issues after the upgrade. When we press the Back button to go to a page that was rendering a report with one or more single-select drop down lists, the selected index in the drop down is reduced by 1, and the report doesn't render until I press "View Report". I verified that exact same setup works well with ReportViewer 9.0.
I have designed plenty of reports in VS 2005 and have been deployed on the reporting server. I have been designed one web page which shows UI through which user can access which ever reports he/she wants. I have kept some buttons on UI. When button is clicked appropriate report accessed and displayed on the browser. Â Problem is that, report width is about 40 - 50 % of the screen and report viewer shows the report on the left align of the screen. I just want to show the report at the center of the screen. Also, any property I can use to set the report size in the proportion of screen in Percentage(%).
I have a report that displays fine in VS 2005 (in the Preview tab), and if I hit it via a URL in IE as a deployed report. However, when I embed it in a ReportViewer control for display on a web site, I get no data back for the report. I am using an Oracle database for the data source. None of the the logs in reporting services show anything wrong, there are no events in the event viewer to indicate any problems, Oracle logs also show no problems and no errors are returned to the page when the "View Report" button is clicked.
I am working with vs2013 and have developed ssrs report in ssdt that creates RDL files, I want to view this report in asp.net web page using vs 2013 Reportviewer control. How do I do that? What are the proper steps to configure reportviewer control.so I can view ssrs report through vs2013 ultimate edition.
We are using SharePoint 2010 integrated with Reporting Services 2008 R2. We have successfully configured RS and we are able to create RDL reports using Report Builder from the SharePoint site.
However we are getting following error message when we host same RDL report using Report Viewer control in an application page i.e. ASPX page:
<ERROR>The request failed with HTTP status 401: Unauthorized</ERROR>
We can fix this issue by setting:
1) setting impersonation to false in web.config file:
<identity impersonate="false" />
2) Setting Report server URL to _vti_bin path:
rptViewer.ServerReport.ReportServerUrl = new Uri("http://sharepointserver:1000/_vti_bin/reportserver");
If we turn impersonation to true we get the same error. Other project module requires impersonation to be enabled. Hence we cannot proceed further with this work around/fix.
For a connection string,we just use sqlconnection class in c# and try to do the open opration to test whether the connection string is valid or not.
but for reporting servics,when given a username and a password ,how can we do the authentication in c#program to see the account is valid or invalid...
Hello,My boss wants me to create a front end webpage for our ReportingServices reports that customers can log onto through a webform. I'm aPHP programmer, so I'd rather do this site and the authentication inPHP than learn .NET. The main problem I see is finding a way to passthe authentication to Reporting Services so that when a user runs areport, they are not asked to enter their password a second time.I don't even know where to start researching this problem... I've askedin PHP forums and they passed me to you guys. Any ideas?Andrew
I am using Reporting services 2005 and have enabled forms authentication using the example found in: 'C:Program FilesMicrosoft SQL Server90SamplesReporting ServicesExtension SamplesFormsAuthentication Sample' This works correctly without SSL, but when I enable SSL I get an error when logging in. The symptoms are as follows. I can login to the reporting server (in my case <server>/ReportServer2) directory, but when I login to the report manager (in my case at <server>/Reports2) I get the following error: 'The underlying connection was closed: An unexpected error occurred on a send.' Can anyone suggest why I might be getting this error?
I am new to Reporting Services. I want to use Reporting Services 2005 in our application.
My custom web application is on one machine and Reporting Services 2005 is on other machine. I am using Forms Authentication and using Single Sign On for login
If my custom web application and Reporting Services are on same machin I can get "Authentication Ticket" issued by ReportingServices2005 to the Report server.
But in this case I am not able to get "Authentication Ticket" on Report Server since it is on other machine.
I am using ReportViewer control in my web application to display Reports and using LogonUser method to get the Authentication Ticket.
How can I pass CookieAuthentication ticket from my Custom Web Application to Report Server?
Is there any work around to pass Authentication Cookie across Domain or any other solution for this?
I setup CRM 4.0 in one domain with a domain service account. SQL Reporting is located on the same machine using the same service account. SQL is on a different machine. These are in the same single domain forest which has a two way trust relation with another domain of a separate single domain forest. Both domains are W2k3 Native Mode.
The CRM application allows access to users in both domains. The reports are generated with accounts in the first domain where CRM and SQL Reports is located but not for users in the other domain. The CRM's report viewer window displays "The report cannot be displayed."
The following are events that are related to the error: On CRM server: Event Type: Warning Event Source: ASP.NET 2.0.50727.0 Event Category: Web Event Event ID: 1309 Date: 5/13/2008 Time: 6:55:19 AM User: N/A Computer: CRMSERVER Description: Event code: 3005 Event message: An unhandled exception has occurred. Event time: 5/13/2008 6:55:19 AM Event time (UTC): 5/13/2008 1:55:19 PM Event ID: cc4c29c8f4be4e82ac0eee1234a15dc6 Event sequence: 77 Event occurrence: 1 Event detail code: 0
Process information: Process ID: 3340 Process name: w3wp.exe Account name: CRM Service Account
Exception information: Exception type: CrmReportingException Exception message: An error has occurred during report processing. (rsProcessingAborted)
Request information: Request URL: http://CRMServer:5555/OrganizationDev/CRMReports/rsviewer/reportviewer.aspx Request path: /OrganizationDev/CRMReports/rsviewer/reportviewer.aspx User host address: 172.x.y.z User: OTHERDOMAIN estuser Is authenticated: True Authentication Type: Negotiate Thread account name: CRM Service Account
Thread information: Thread ID: 1 Thread account name: CRM Service Account Is impersonating: False Stack trace: at Microsoft.Crm.Web.Reporting.SrsReportViewer.ConfigurePage() at Microsoft.Crm.Application.Controls.AppUIPage.OnPreRender(EventArgs e) at System.Web.UI.Control.PreRenderRecursiveInternal() at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
Custom event details:
For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
Event Type: Error Event Source: MSCRMReporting Event Category: None Event ID: 19969 Date: 5/13/2008 Time: 6:55:19 AM User: N/A Computer: CRMSERVER Description: Web service request SetParameters to Report Server http://CRMServer/reportserver failed with SoapException. Error: An error has occurred during report processing. (rsProcessingAborted)
For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
On SQL Server: Event Type: Failure Audit Event Source: MSSQLSERVER Event Category: (4) Event ID: 18456 Date: 5/13/2008 Time: 6:55:18 AM User: NT AUTHORITYANONYMOUS LOGON Computer: SQLServer Description: Login failed for user 'NT AUTHORITYANONYMOUS LOGON'. [CLIENT: 172.a.b.c] This is the IP address for the CRM server.
The take away from the events is either the SQL Reporting or CRM is attempting to access the SQL service with the Anonymous account. I expect it's SQL reporting because the CRM application is not having problems letting in the other domain users. The problem occurs only on reports.
I tried the following: 1. Applied the steps in the CRM Planning Guide for "Taks for a native mode domain with users in a mixed-mode domain." This adds the other domain users to a domain local group. Then assigns Browser access to the SQL reports and SQL database access to the group. 2. Set the CRM server to be trusted for delegation (kerberos only) 3. Created SPNs for http/crmserver domaincrmservice and http/crmserver:5555 domaincrmservice and http/crmserver.domain.local domaincrmservice and http/crmserver.domain.local:5555 domaincrmservice
I created a class library which uses a web reference My SSRS report uses the class through its custom code I copied the dll & dll.config of the class library to the VS2005 private assembllies and the report works I copied the dll & dd.config to the reportserver bin and gave the assembly full trust by adding the necessary code group I even added a code group the give the dll.config file full trust as well Yet on Repost server, the report does not work Any ideas I suspect it is a permission problem
For custom authorization, I am overwriting the CheckAccess method.
But how do I know what I am trying to access in CheckAccess method? I need to know what report the check access method is trying to execute for our requirements.
I got authentication to work without too many problems, and it authenticates by querying my custom table. I want to also maintain my authorizations in the same manner. I want to be able to define in my own tables that user test1 has permission to view reports 1, 3, 5, and 8. User test2 can view reports 1,3,5,8, and 9. User test3 can view 1, 2, and 4. Etc.
The authorization extension, contained in my version of Authorization.cs is where I expected to be able to do this. I wanted to be able to write code that queries my own tables and says, "does this user have permission to view this item?" Getting the this user portion is easy as is obvious in the many checkAccess methods. But being able to tell what item I am currently dealing with has proved impossible from the context of Authorization.cs, which implements IAuthorizationExtension. Knowing what type of item I am dealing with is obvious, but I need to know something that uniquely identifies the exact item I am dealing with.
How can I determine in checkAccess or any of the other available methods what "thing" they are looking at? What can I examine to determine that for instance this particular authorization request is against "Report 1"? It seems that if I was allowed to completely override Authentication to use my tables, I should be able to override Authorization to do the same. Is this possible or am I missing something?
I have successfully implemented forms authentication in RS. It works great to navigate to https://myserver/Reports. I get redirected to the login-page etc. It also works great to use the ReportViewer from within my WinForms app, using the
method. I'm also able to communicate with RS through it's web services by first calling the 'LogonUser' method. However, to get that to work I had to inherit the ReportExecutionService for the cookie-handling to work.
Now over to my problem (the only thing so far I haven't got working). I'm trying to use a ReportViewer on an ASP.net web page to access the reports. I have understood that 'SetFormsCredentials' is not avaliable here. Instead, as far as I have understood, I should implement my own IReportServerCredentials . The critical method there I guess is
GetFormsCredentials(out Cookie authCookie, out string formsUser, out string formsPassword, out string formsAuthority)
, am I right?
It's here my problem starts. The examples I have seen haven't implemented this method since they use other types of authentication. So, I would need an example of what to fill that method with...
I have a web app which contains a ReportViewer control for viewing reports on hosted on my ReportsServer instance.This web app runs under the identity DOMAINWebAppAccount.
When I try to access a Report I get the following error:
The permissions granted to user €˜DOMAINChipsC€™ are insufficient for performing this operation. (rsAccessDenied)
ChipsC is the username I log into the machine I launch the browser from.
My question is how can I get the ReportViewer to access the reports based on the WebAppAccount user instead of the ChipsC user (or any other user)?
I can consume the reportingservice using credentials to get reportnames and folders and such, but when i go to use the reportviewer, after i set the reportpath and serverurl, I am always asked to authenticate when using the sample reportviewer with RS 2000. How can i prevent this? I know there is the Icredentials that can be set using the serverreport property with the new viewer in 2005, but how about doing the same type thing in 2000?
I need some help regarding Custom Colors implementation for Charts in the Reporting Services.
What we are trying to do is to make every color for every Series(see example below) to be a customized Corporate color.
For example each of the series on the Chart should be in specific Custom Color:
Series 1 - "LightBlue" Series 2 - "LightYellow"
Series 3 - "DarkBrown"
All I found from MSDN is how to do it in the Chart Properties in a Code section (right click on the report outside the chart -> Properties -> Code tab -> paste the Custom Code ).
And then to use it in the Chart color definition as:
Code Snippet=Code.GetColor( Series# )
But we are trying to do it in a separate C# class that would be updated only in one place, instead of changing 30 reports each time something is changed. So that it could be generic.
The C# class:
Code Snippet
namespace CustomColorPalette
{
public class CustomPalette
{
public CustomPalette()
{
}
public static string GetColor(string GroupingValue)
Error 303 [rsCompilerErrorInCode] There is an error on line 2 of custom code: [BC30451] Name 'CustomColorPalette' is not declared. c:developmentvoyagerreportsvoyager convert reports.rootvoyager convert reportsReport_007D.rdl 0 0
2.
Second way I tried:
Then I put a code into a Custom Code section of a report:
And after compilation I am getting an error like this:
Error 302 [rsCompilerErrorInExpression] The BackgroundColor expression for the chart €˜chart2€™ contains an error: [BC30456] 'X' is not a member of 'ReportExprHostImpl.CustomCodeProxy'. c:developmentvoyagerreportsvoyager convert reports.rootvoyager convert reportsReport_007D.rdl 0 0
Is there any workaround? Or all I can do is to make the Custom Colors manually in each report, and if something need to be changed - I will need to change it in each report separately
I have problem with SQL Reporting Services, actually i want display the 3 parameters in a single line in a report i.e. in the while preview of the report and after deploying the report (by default it is showing 2 parameter per line). for example if have 6 parameters i wanted it display it in 2 rows and 3 columns format.