Problem creating Reporting Services virtual directory for a named instance

  • When you install SQL Server 2005 Reporting Services as part of a named instance install and, as part of the installation, choose to allow Reporting Services to automatically be configured for you, a couple virtual directories are created in IIS for you by the installer using the name format Reports$InstanceName.

    I'm in the process of a trying to migrate this initial installation to a new server, still as a named instance. However, this time I did not have the SQL Server installer setup Reporting Services for me. I've gone into the Reporting Services Configuration Manager, and I've tried to setup the Report Server Virtual Directory and Report Manager Virtual Directory to use the format ReportServer$Instance format again, but I receive the following error:

    ReportServicesConfigUI.WMIProvider.WMIProviderException: The virtual directory specified is not valid. Make sure the specified name is not too long and doesn't contain illegal characters. (example: 😉

    at ReportServicesConfigUI.WMIProvider.RSReportServerAdmin.CreateVirtualDirectory(String virtualDirectory, String path)

    I assume this is a result of the use of the dollar sign ($) in the directory name.

    This issue occurs on my Standard Edition with SP1 install, but I've also tried connecting with an SP2 Reporting Services Configuration Manager to my SP1 Reporting Services, and the issue continues.

    I'm considering just dropping the $InstanceName part of the name, but would like to avoid doing so if at all possible because of the impact the change will have on users/applications. Any suggestions are welcome.

  • Well, I couldn't leave the problem alone, and eventually found a solution. This fix involves manual registry changes and manually modifying .config files, so beware, AND I've only given it the briefest of testing (deploying a report from BI Studio, running a report from Report Manager, etc.).

    In my instructions below I use () to indicate variables that you should replace with your own values, minus the (), of course.

    How to preserve $(InstanceName) in Virtual Directory name

    1) Via IIS on the existing Reporting Services installation, save the Reports$(InstanceName) and ReportServer$(InstanceName) virtual directories configurations to file

    Through the IIS Manager, right click on the virtual directory, All Tasks>Save Configuration to file...

    Note: I used .xml as the extension for this file

    Note: Do this for both virtual directories

    2) Migrate files to the new server, which already has Reporting Services installed. In my case I already had Reporting Services configured to use virtual directories that didn't have $(InstanceName)

    3) Import the IIS virtual directory configurations to IIS on the new server

    From IIS Manager on the new server, right click on your Default Website and select New>Virtual Directory (from file)...

    Use the Browse button to locate your .xml files from step 2, and then click Read File

    Select the Virtual Directory name that appears in the white box and click the OK button. You should see your new Virtual Directory appear with the name Reports$(InstanceName) and ReportServer$(InstanceName)

    NOTE: Because I had changed the MSSQL.# between servers, I had to modify the file path in the virtual directory's properties in order to point to the right folder.

    4) Stop Reporting Services

    5) Modify the following registry settings under HKLM\Software\Microsoft\Microsoft SQL Server\MSSQL.(instance#)\Setup\:

    RSVirtualRootApplication - Reports$(InstanceName)

    RSVirtualRootApplicationPath - IIS://(ServerName)/W3SVC/1/Root/Reports$(InstanceName)

    RSVirtualRootServer - ReportServer$(InstanceName)

    RSVirtualRootServerPath - IIS://(ServerName)/W3SVC/1/Root/ReportServer$(InstanceName)

    Also, you may need to add the $(InstanceName) to the following keys if they don't already exist:

    ApplicationPoolConfigured_RM

    ApplicationPoolConfigured_RS

    NOTE: (instance #) will of course be the instance number of your Reporting Services installation...like MSSQL.2, etc.

    6) Modify the following .config files for Reporting Services:

    1) In C:\Program Files\Microsoft SQL Server\MSSQL.(instance#)\Reporting Services\ReportManager\, modify RSWebApplication.config so that the ReportServerVirtualDirectory node contains ReportServer$(InstanceName)

    2) In C:\Program Files\Microsoft SQL Server\MSSQL.(instance #)\Reporting Services\ReportServer\, modify rsreportserver.config so that the UrlRoot node contains http://(ServerName)/reportserver$(Instance Name)

    7)Delete the old virtual directories, Reports and ReportServer, from IIS, if present

    NOTE: Like I mentioned earlier, they were for me, so I had to delete them

    8) Restart Reporting Services

    NOTE: If you're paranoid, it might not be a bad idea to restart IIS before you restart Reporting Services

    9)Via Reporting Services Configuration Manager, verify that the Report Server and Report Manager Virtual Directories contain the new values

    10) TEST!

    Aftermath: I did run into some problems in my first pass through, but I think they were unrelated to this process because of IIS settings on the new server and mistakes I made in setting up the Web Service identity on the new server.

    Good luck!

    (edited to incorporated some corrections from Phil Kapiolani)

  • Thanks for the info that was great. Had the same issue.

    Couple of notes ...

    In step 5) Modify registry settings. I also added the $(InstanceName) to the following registry keys ...

    ApplicationPoolConfigured_RM

    ApplicationPoolConfigured_RS

    Not sure if it makes a difference but I thought those values should agree with the Application Pool Name. ReportServer$(InstanceName)

    In step 6) 2) The name of the file with the URLRoot node is rsreportserver.config

  • Phil, thank you very much for the response. I went ahead and incorporated the rsreportserver.config correction, and your note about the keys in my original post.

    But, for ApplicationPoolConfigured_RM and ApplicationPoolConfigured_RS, mine already contained the $(InstanceName) in them. I wonder if when I went to look at the RS Configuration Manager sometime after setting up the application pools in IIS. Perhaps it automatically filled them in at that point?

  • Thank you so much for this, took me ages to get to the "microsoft know this is a bug in SQL Server 2005, but are not going to resolve it" message in respect to setting up the report server databases where the $ gets added.

    Stuck !

    Then I found your post.

    All working as was now 😎

    Thanks again

    Tim

  • Great post!

    I've got the same problem, and am going to use your solution.

    Much appreciated

Viewing 6 posts - 1 through 5 (of 5 total)

You must be logged in to reply to this topic. Login to reply