views:

129

answers:

3

Right now I have a project called reports with several reports. In solution explorer it looks like this:

Shared Data Sources
 -- DEV
Reports
 -- Report1
 -- Report2
 -- Report3

I want to make it look like this and have the same structure carry over to the report manager website when I click deploy.

Shared Data Sources
 -- DEV
Folder A
 -- Report1
Folder B
 -- Report2
 -- Report3

Anyone know how to do this?

A: 

I have a BI project going in SSRS2008 with roughly 80 reports - and this is my experience with deploying reports into folders. This is my first foray into developing in Reporting Services, so any gurus please smack me if I'm out to lunch.

Initially, I used folders in source control to separate smaller reports by department to help keep me organized. That worked fine while I was initially developing my reports, however the first time I deployed the project to the report server the structure was completely flattened - so I gave up on using a folder structure to organize.

As far as I'm aware the only way you can create a folder structure in SSRS is to use the Report Manager UI and create folders on the Report Server. I'm assuming from there you would modify the path in the report properties in Visual Studio. Either that or you have to define the path when you first set up the report. I haven't tested this so YMMV.

So in conclusion: It is not possible to create the folders in BIDS and deploy your reports into folders utilizing the IDE. I hope this is addressed in 2008R2 because it's kind of a pain having all those reports thrown together in the Solution Explorer.

kkeilman
+2  A: 

I'm using SSRS 2005 - I think this part of it works in the same way as 2008.

As far as I can tell, you can't have folders within projects, but you can have multiple projects within a solution.

To create a new folder, right-click on the solution in the Solution Explorer and select Add>New Project...

Type in your new Project Name (eg. MyProject), and select Report Server Project from the list of Visual Studio installed templates. Click on OK, and your new Project should appear at the end of the list of projects in the Solution Explorer.

(There are other ways of setting up a new Reports project, but this seems to be the quickest.)

If you now right-click on your new Report Project and select Properties, you can see the TargetReportFolder, which will default to your new Project Name (eg. MyProject). When you deploy reports from SSRS, they are deployed to this location. (You can change the location, if you wish - I find it easier to keep track of what's going where by using the Project name.)

You will need to copy any data sources to be used in each project, into the data sources folder of all projects that use that data source. By default, OverwriteDataSources is set to false, so when you deploy a new report, it will use the data source already deployed to the Report Manager environment.

So to get the Report Manager structure that you want to see:

  • Create Projects called Folder A and Folder B
  • Move/copy Report1 into the Reports folder in Project Folder A
  • Move/copy Report2 and Report3 into the Reports folder in Project Folder B
  • Move/copy data source DEV into the Shared Data Sources folders in Projects Folder A and Folder B
  • Deploy your reports

Don't forget to check your changes into source control.

Mark Bannister
+2  A: 

The way do it is similar to other posters, I have one solution with multiple projects (each project is named and put into the same folder name that I want it deployed under).

Then I rigged up a script in RS which:
- Creates a single data source used by all reports, in my case
- Loops through all directories in the solution folder
-- Creates the same folder name on the RS server
-- Deploys all files in this directory to that folder on the RS server
-- Uses rs.SetItemDataSources on each report to redirect it to my main data source

And that's basically it.

Caveats are you sometimes get files uploaded you didn't want to (like deleted reports with the .RDLs still hanging around). But you can script all around that, or just blow it away in RS and re-upload again.

Doing this, I have one script but can deploy a structure under numerous different parent folders, each with different data sources, and have all the reports in a folder drawing data from a different database. This lets me run 1x RS instance but have development, testing, training, etc areas.

Cody