Versioning of reports in reporting services (SSRS) - reporting-services

It is not the first time this question has been asked, but no solution has been found yet. The only thread I found somewhat relevant was this but it is 4 years old: SSRS Reports Versioning
Perhaps a solution has been found since then?
Back to my questions:
I have several reports in a Visual Studio solution (BIDS). From here I can deploy to several reporting servers: Test1, Test2 and Production.
1) It seems that the granularity of deployment is: Reports, Datasets and Datasources. This can be setup in Properties for the solution. But I want to be able to only deploy a single report, if I only have changes to one report. How do I do this? As it is now it seems that I have to deploy ALL reports.
2) Since I have more than 1 place to deploy there is a possibility of the reports getting out of sync. Normally the procedure would be to deploy the reports to Test until everything is fine, and thereafter deploy to Production. But since this is a manual process something can go wrong. Therefore I believe it would be nice to have some sort of versioning on the individual reports. But I can find no way of doing this? I'm thinking that it would be really nice if a timestamp and/or versionnumber could be set on the reports when they are deployed. Is there a way to do this?
Thanks in advance.

How about putting the version number of the report on the report itself? You would need to run the report to see it though.
To deploy a single report, right-click on the report name and Deploy to deploy that report (or dataset or data source).
As far as the deployment issues, you can use version control such as Visual Studio Team Foundation Server.
https://www.visualstudio.com/en-us/products/tfs-overview-vs.aspx

Related

Is there any possibility to Deploy Single Report in SSRS

I'm having problem with SSRS Report Deployment. I've 2 Hundreds of Reports in my SSRS Report Solution. When, I deploy the Report it deploy all reports which is very time consuming.
Now, what I'm looking for is, I want to re-deploy only the Report I've changed recently.
In BIDS, I didn't found anything to support the feature I'm looking for.
So, If there is any possibility to Deploy a Single Report?
You can just deploy a single report by right clicking on the report itself and selecting Deploy:
One thing to note is that it will also try to deploy any Shared Data Source the report references.
However, if the project level property OverwriteDataSources is set to False this won't affect any Data Source that was deployed previously.

How to use SSRS solution through TFS

I am using SQL server 2012. I have created one SSRS solution in SSDT (Sql sever data tools).
I want to add it in TFS Visual Studio 2010. It only used for Syncing purpose for all team members. so every one can get all reports by doing get latest every day. there is about 300 reports for different modules. I want to use SSRS solution through TFS.
previous project i was facing problem about Syncing of all my team members. because individual is created their own solutions and after completing report they are upload it on report server.
I don't want to do it again.
I want to use TFS to Syncing all teams members for all reports.
Any solution for it?
TFS will allow your team members to sync the reports locally to their machines whenever a change occurs or a report is added. Your team members will just need to get latest from TFS to their local workspace.
Sounds like you need to create a process for your team to follow and educate them on how reports should be added or modified.
For example, if you have a folder called reports in TFS then anytime a developer needs to make a change or add a report they would add it to this solution and folder. Lock down the ability to deploy reports straight to the server until approved therefore developers cannot bypass TFS.
Steps a developer would take to ensure the latest report is being updated or changed:
Developer pulls down latest report folder from TFS locally
Developer makes updates and changes
Before developer checks in any changes they again pull down the latest to ensure they will not overwrite any new changes. A possible merge may be required if the report has changed since the developer started working on it.
Developer checks in changes to TFS
Once changes to reports are approved then the report is deployed to reporting server. This could be done via a TFS build.
Hope this helps. Please let me know if I misunderstood your question or problem.
Looks like you going to need to make a custom plugin that can sync your reports to other teams when it is checked in

Using shared datasets across different projects

facts: Visual Studio 2010, SQL Server 2008 R2, SQL Server 2008 R2 Reporting Services
I have a solution that consists of several projects. This is because of the inability to create nested deploy folders.
So my solution looks like this:
Students -> reports deploy to Students
StudentsGraduated -> reports deploy to Students/Graduated
StudentsGraduatedWithHonours _> reports deploy to Students/Graduated/WithHonours
StudentsBlueEyes -> reports deploy to Students/BlueEyes
StudentsGreenEyes -> reports deploy to Students/GreenEyes
All reports should use one dataset, with proper filters.
So I set up deployment so that each project deploys its datasets in /Student/DataSets. I made sure that each project has a identical dataset so that, when deployed, they all use the same dataset.
But apparently this does not work. Only the last deployed report can use the dataset :(
If I put all reports using a dataset in the same project it works but I have manually to move all reports to their proper locations.
Setting up all projects to deploy their reports in their own DataSet folder works too, but then I have a lot of identical DataSets lying around, which kinda beats the purpose.
After deployment manually resetting the dataset using the reportmanager works but is rather a tedious exercise when you have like 7 datasets on avg in each report and 19 reports......
Is this known phenomenon? Is it possible to have reports from different projects use the same dataset? If so, how?
I really would like to know your thoughts on this......
The way I was doing it should according to this link be the right way.
So I redid it, following the steps outlined in this link by Charlie Liao:
1. create the datasets in one of your projects
2. ADD these as existing items to another project
3. Set Overwrite Datasets to TRUE.
I think it was step 2 where I went wrong. I just recreated the dataset in each project, I did not add them. I deleted all datasets in all projects (but the first) and then readded all datasets to all projects as existing items, set Overwrite to True and deployed.
MAGIC!!
:)

SSRS Create development environment from Live server

I've inherited a live SSRS server and have been asked to amend a lot of reports that are on there.
Is there a quick way I can "export" all of the reports/data sources to a local instance so I can develop against it using BIDS?
e.g. Can I copy the ReportServer database from Production?
What else would I need to do?
I'd like to be able to have a Development copy of everything, with DataSources pointing to copies of the production databases but with the same names. Therefore I could re-write the report and re-define any SP's required locally, and then just deploy the new RDL to the server along with the ALTER SP scripts.
Is that possible or even sensible!?
Personally, with the volume you mentioned in the comments (30 RDL's and 3 databases) I wouldn't recommend some automated cloning of the entire Reporting setup from production to local. Instead, I'd suggest the following:
Reports
Go to the web front-end for your reportserver (typically http://yourserver/reports). Find each report, open it, and on the Properties tab click the Edit button. This button does not do what you might expect (edit the report inside the browser), but instead offers you a download of the RDL file. Save all the RDL files in one folder on disk.
With 30 reports manually downloading the reports may take you maybe an hour, max. This will probably beat most automated approaches. And since you should only need to do this step once...
Databases
It's not entirely clear from the question, but if you only have production databases and no DTAP setup yet, now may be a good time to start with that. You could host clones of the 3 production databases on a test server or possibly on your dev environment. Note that the schema's important here (should be the same as production), the data doesn't have to be entirely up to date.
Alternatively you can skip this bit and develop your reports against the production databases, assuming you can create connections from your dev machine to the production databases. Up to you.
Visual Studio / BIDS
This bit has a few parts to it:
Create a new reports project and solution in Visual Studio.
Add the existing RDL files you've downloaded earlier.
Depending on how the reports were set up, you may need to add shared data sources in your project, to get your reports up and running.
After all this, you should be able to preview your reports from Visual Studio (either with data coming from the "cloned" databases, or directly from production).
At this point you should also be able to safely make changes and preview/test them before deploying them.
Be sure to add the solution, reports, etc. to your version control system of choice.
Deployment
Once you've made changes you want to deploy to the reportserver, you have two basic options:
Deploy them using BIDS (see also the deployment properties MSDN page)
Go back to the web front-end, find the report, open the Properties tab again, click the Update button. This allows you to re-upload the RDL file with the changes you've made.
From now on you can just rinse and repeat on making updates and deploying the reports. No need for cloning/exporting the entire SSRS instance to keep things in sync.

How can I report on files with pending changes in TFS?

I'd like to create a simple report that shows files that currently have pending changes (checked out) from a TFS 2008 server. I know that I can use the "Find in Source Control" option from Team Explorer, but I would rather generate a reporting services report. Ideally, I'd be able to show when the file was checked out and the user that checked it out, but that's not imperative.
If the data isn't pushed to the TFS data warehouse by default, then I'd like to find the relational table(s) in the SQL Server instance that would need to be queried.
I've spent some time digging around the TFS data warehouse and looking at all of the canned Reporting Services reports that I can get my hands on, but everything seems to be geared towards work items, check-ins associated with work items, etc...
If you're looking for some easy to read data and not too worried about print outs, have a look at the TFS sidekick application by Attrice. Very helpful and if you have the correct permissions, you'll be able to see all the checked out files.
http://www.attrice.info/cm/tfs/
I doubt the information you're looking for is in the data warehouse and even if it was it might not be fresh enough for your purposes. By default the warehouse is updated once an hour.
You could use SSRS to report directly against the TFSVersionControl database but I would not recommend going this route. The database is not documented and chances are very good that it will change in the next version. It could also have performance implications if your queries are not written correctly.
A better solution would be to use the TFS web services as your SSRS data source. There are services you can call to get all files that are checked out. This iformation is always current and the queries it runs are highly optimized.
Example command line (Studio 2008):
"C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\tf.exe" status /recursive /user:*