Single location for shared datasets common to multiple report projects
I am trying to find a more efficient way to access shared dataset across projects (create a single location for shared datasets that are common to multiple report projects)
I detailed the what I am trying to do & the workaround that I am using; however I am hoping there is a better way to accomplish the same thing. Any and all suggestions will be appreciated.
Overview: Create a single location for shared datasets that are common to multiple report projects (e.g. datasets used to create input parameters). Datasets
that are unique to a project will be deployed to a subfolder of that project called Datasets; however for the sake of simplicity these types of datasets will not be discussed.
Test Project Setyp: There are 2 projects, which are deployed to the root level of the Reporting Services instance (e.g. the Home page in Report Manager).
The folder structures for the 2 projects as seen in Report Manager and in the local file system are as follows:
Common Data Project - Datasets common to multiple projects (no reports); in this example I will focus on a shared dataset named Divisions
Report Manager: …/Common Data/Datasets/Divisions Local File System: C:\…\Common Data\Datasets\Divisons.rsd
Sales Reports Project - Reports and shared datasets contained in the Common Data/Datasets folder of the Common Data project
Report Manager: …/Sales Reports/<project reports> Local File System: C:\…\Sales Reports\<project reports> Local File System: C:\…\Sales Reports\bin\Common Data\Datasets\Divisons.rsd
Notice how the folder structure containing the Divisions.rsd file from the Common Data project is recreated in the bin directory of the Sales Report project (bold text in the last bullet above). This
is necessary for development and testing in BIDS, along with modifications to the RDL of any report in the Sales Report project that uses the Divisions shared dataset from the Common Data project (sees the 2<sup>nd</sup> table below).
Modify RDL: The last step is to modify the Sales Reports RDL by opening using the View Code option (see table below). There are 2 changes that need to
be made so that a report in the Sales Reports project can use a shared dataset from the Common Data project:
The value contained in the <SharedDataSetReference> element contains a qualified path to the Divisions dataset
The <rd:ReportServerUrl> element has been added directly below he
<SharedDataSetReference> element
Unmodified RDL Snippet (typical shared dataset)
Modified RDL Snippet (referenced shared dataset is external to the project)
…
<DataSets>
<DataSet
Name="Divisions">
<SharedDataSet>
<SharedDataSetReference>Divisions</SharedDataSetReference>
</SharedDataSet>
<Fields>
<Field
Name="division_cd">
<DataField>division_cd</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field
Name="division_name">
<DataField>division_name</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
</Fields>
</DataSet>
…
</DataSets>
…
<DataSets>
<DataSet
Name="Divisions">
<SharedDataSet>
<SharedDataSetReference>/Common Data/Datasets/Divisions</SharedDataSetReference>
<rd:ReportServerUrl>http://localhost/ReportServer</rd:ReportServerUrl>
</SharedDataSet>
<Fields>
<Field
Name="division_cd">
<DataField>division_cd</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field
Name="division_name">
<DataField>division_name</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
</Fields>
</DataSet>
…
</DataSets>
Report Project Properties
Data Project Properties
Sales Reports Project Properties
Property
Property Value
Property
Property Value
OutputPath
bin\
OutputPath
bin\
Datasets
Common Data/Datasets
Datasets
Sales Reports/Datasets
Data Sources
Data Sources
Data Sources
Data Sources
Reports
Common Data
Reports
Sales Reports
Report Parts
Common Data/Report Parts
Report Parts
Sales Reports/Report Parts
TargetServerURL
http://localhost/ReportServer
TargetServerURL
http://localhost/ReportServer
Thanks,
Shane
September 6th, 2011 8:55am
Hi Shane,
Thank you for your question. I am currently looking into this issue and will give you an update as soon as possible.
Thank you for your understanding and support.
Regards,
Bin Long
TechNet
Subscriber Supportin
forum
If you have any feedback on our support, please contact
tnmff@microsoft.comPlease remember to mark the replies as answers if they help and unmark them if they provide no help.
Free Windows Admin Tool Kit Click here and download it now
September 9th, 2011 11:02pm
Hi Bin Long,
Thank for looking into this for me. I considered managing shared data sets using the technique you suggested (I use this method for shared data sources, but I only have a small number of data source to manage) , but there were a couple of draw backs
to using this method.
The reports I work on are organized into multiple projects (w/ new projects added all of the time); this is done to make reports easier to find (especially for the users), as each project is a logical grouping of reports that deal with the same subject
area If I set the OverwriteDatasets property to true & the Datasets property for all of the project to the same target on the Report Server, the organization provided by separate report projects is no longer there (at least for the shared
data sets), which can make it difficult for the user to locate shared data set for use in Report Builder. Although this method prevent duplication of data sets shared among project, you end up with all of the data sets from all of the project in a single
location on the Report Server (i.e. Report Manager & Report Builder), which is an organization mess.
The other option is to copy the data sets that are used by multiple projects to each project (not such a big deal), but if I need to make a change to a data set or multiple data sets (not uncommon), then I have to make the
change(s) and copy the modified data set to all of the project for testing & any future development. In this case the same data sets have to be maintained in multiple places.
When I noticed that reports authored in Report Builder could use shared data set regardless of where they are located on the Report Server, I realized that it is possible to a) keep shared data sets common to multiple projects in a single location (removing
the need to maintain multiple instances of the same data sets) and b) organize data sets that are unique to a give project using the standard project-folder structure. The problem is doing this in BIDS w/o manually modifying the RDL & re-constructing
folder structures in the bin directory of each project...and that is the motivation behind my post.
If I have misunderstood your solution please let me know, or if you have any other suggestions I'd appreciate it.
Thanks again,
Shane
September 10th, 2011 12:04am
Hi st_reed,
If we need to use a shared dataset for multiple Report Projects, we can directly add the existing shared dataset to each report project. After that, we can set the “OverwriteDatasets” property to “True” in the Report Project properties
window. When deploy the Report Projects to Report Server, there is only one shared dataset for many Reports.
For more information about Managing Shared Dataset, please see:
http://msdn.microsoft.com/en-us/library/ee636147.aspx
Regards,
Bin Long
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
Free Windows Admin Tool Kit Click here and download it now
September 10th, 2011 2:26am
Hi Shane,
You are absolutely right. If I have any other suggestions, I will let you know as soon as possible.
Regards,
Bin Long
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
September 12th, 2011 9:10pm