Problems with SQL RS on Windows 2000

I was having problems with getting RS to work correctly on a windows 2000 server.  I would browse to the page, and it would prompt me for my credentials.  I would use the Admin loign, and it wouldn’t take, finally giving me an error like this:

Server Error in ‘/Reports’ Application.
——————————————————————————–

Access to the path “C:Program FilesMicrosoft SQL ServerMSSQLReporting ServicesReportManagerbin” is denied.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.UnauthorizedAccessException: Access to the path “C:Program FilesMicrosoft SQL ServerMSSQLReporting ServicesReportManagerbin” is denied.

ASP.NET is not authorized to access the requested resource. Consider granting access rights to the resource to the ASP.NET request identity. ASP.NET has a base process identity (typically {MACHINE}ASPNET on IIS 5 or Network Service on IIS 6) that is used if the application is not impersonating. If the application is impersonating via <identity impersonate=”true”/>, the identity will be the anonymous user (typically IUSR_MACHINENAME) or the authenticated request user.

I found someone who figured out the impersonation problem:

The problem happens when installing RS on Windows 2000 Server that is a domain controller.  RS doesn’t do the setup correctly.  The basic steps to fix the problem are

1. Grant impersonate privilege to IWAM_<machine> account (see knowledge base article 824308).  Go to domain controller security policy  in administrative tools. Click security settings -> Click local policies -> click user right assignment.  In the right pane, double click impersonate a client after authentication.  In security policy setting window, click define these policy settings.  Click add -> click browse.  In select users or groups window, select IWAM account name and click add.  Then, click Ok -> Click OK -> Click OK.  At command prompt, type the following command: secedit /refreshpolicy machine_policy /enforce.  Then, type iisreset.

2.  Remove IWAM_<machine> account from guest group.  Go to active directory users and computers in administrative tools.  Open users folder.  In right pane, double click IWAM_<machine>.  Select member of tab.  Remove guest.  Click OK.

3.  Reboot.

4.  Run rsactivate.  From command prompt, change directory to C:Program FilesMicrosoft SQL Server80ToolsBinn.  The run following command: RSActivate.exe -c “c:Program FilesMicrosoft SQL ServerMSSQLReporting ServicesReportServerRSReportServer.config” -t.

See the following link for more details http://msdn.microsoft.com/library/default.asp?url=/library/en-us/RSINSTALL/htm/gs_installingrs_v1_8k82.asp .

For now, this seems to have fixed this problem.

Getting Text To Appear In TB-LR in Reporting Services

Well, maybe it would be BT-LR, but either way, it seems reporting services gives you 2 ways to align your text.

LR-TB, and TB-RL (Left to right, top to bottom, and top to bottom, right to left).

The problem with this is of course, that no one writes (english) top to bottom, right to left.   When you write text in a vertical fashion, it is always bottom to top, left to right.

In other words, you tilt your head to the left to read it.

I found this post on the topic where it sounds like someone might have come up with a creative way to rotate the TB-RL text 180 degress.

I haven’t tried, it, but it seems like the only hope out there.

Custom Credentials for SQL Server Reporting Services 2005 Web ReportViewer

SQL Server Reporting Services 2005 allows you to connect with a web based ReportViewer control.

This control needs to provide credentials for the reporting server to authenticate the user requesting the report.  By default, the account running the asp.net worker process is used, but you can use the code in this forum posting to create you own custom credentials.

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=409854&SiteID=1

 

ReportViewer with heigh=100%

When you try to assign the web reportviewer control to a height of 100%, it displays as a very short (height wise) format.  For me, adding the style attributes to the form did the trick.

The solution to this problem was found on this page: http://msdn2.microsoft.com/en-us/library/ms252090.aspx.

Considerations for XHTML and ReportViewer Web Server Control

If you configure the ReportViewer Web server control to run in asynchronous mode in an application that is written in XHTML, you must follow specific steps to display the ReportViewer control properly. If the ReportViewer control uses relative height (for example, if the height is specified as a percentage of available space), the control collapses to a height of 0 pixels as a result of how frames and DIV tags render in containing tables in XHTML. You can avoid this problem by using one of the following workarounds:

  • Explicitly set the height on the on the ReportViewer control to an actual value rather than a percentage.

  • Add the following style setting to the head tag:

    <style>html,body,form {height:100%}</style>.

    By forcing the html, body and form tags to maximum height, the frame used in the ReportViewer control will also grow to maximum height, making it visible on the page.

  • Remove the xhtml doctype from the page.

Make Use Of Culture in SQL Reporting Services Local Reports

When using SQL Reporting services, you can format things such as dates and currency.

However, depending on the situation you might want to:

  1. Show a report with culture X on a computer running culture Y.
  2. Show a report using the same culture settings as the local computer.

To do (1), all you have to do is set the “Language” parameter of the local report in design time.

To get (2) to work, you need to set the Language parameter of the report as the expression “=User.Language”.  This will set the report culture as the culture that the hosting program is running under.

If you have a program that you need to switch between different cultures, you can do so with the following line of code (which changes the culture to “English-Ireland”)

System.Threading.Thread.CurrentThread.CurrentCulture = New Globalization.CultureInfo(“en-IE”, False)

More information can be found at: http://msdn2.microsoft.com/en-us/library/ms156493.aspx