Deployable SSRS DataSource - reporting-services

Background
I have a suite of SSRS reports which are managed on a dev server (2017).
I keep a copy of the rdl files on a git repo so that they can be cloned directly to a prod environment.
Currently the reports are using a shared datasource.
Important note: the database names and server names will always vary.
The problem
The problem I'm facing is that I am stuck for a way to have a deployable suite, without having have every report edited to correct point to a new datasource on every deployment.
The ideal solution would be to have one datasource that can be cloned with the suite and then amended in that single place.
I have done quite a bit of research and can't see a way to make this is a solution but hoping someone can help me find a solution! TYIA

Related

Why did deploying a single report also overwrite the data source?

We had a problem earlier when deploying a single report to the production environment, when, for reasons we don't understand, SSRS decided to also overwrite the Data Source associated with the report with settings that do not even match those currently in the project.
We want to understand why/how this happens, and what we need to be doing to control it - ie, what are we missing about SSRS that we need to be aware of.
The steps we took were as follows:
Before starting: This is to update an existing report, not a new report, so the Prod report server already has the Data Source and the (old) Report Definition. The Data Source (shared) does not need to be changed at all, nor do we believe we did anything that should have prompted SSRS to do so. We only intended to overwrite the old report definition with the new one.
Data Source within project modified to point to the production Sql Server source
Deployment settings within the project modified to point to the production Report Server
The single report deployed (literally by right-clicking TheReport.rdl in the Solution Explorer and then clicking Deploy). That is everything we did. We did not deploy or change anything else.
Expected result: report definition on the prod server overwritten with the new report. Data Source completely unchanged, because why would it be? We didn't deploy that (and in any case, the one in the project is pointing to prod, so it shouldn't even matter if it did)
Actual result: Report overwritten as expected. Data Source also overwritten... with the old dev settings. Not the ones currently in the project. All the other reports sharing this data source suddenly stop working or display dev server data.
What are we doing wrong? SSRS quietly overwriting the associated Data Source on the server when deploying a single report seems dangerous (we would likely have missed that it had even happened, had the data on these particular dev and live environments been similar enough) so I presume we are missing something we should be doing/checking when deploying reports, but are at a loss as to exactly what.
That is configuration to copy your datasources and datasets to the report portal or not. You can change the configuration by right click on your report project and select properties that will open up the property pages. There is an option to overwrite default settings. Please check below image for more details
By using the above configuration it will deploy dataset and data sources on SSRS server only if it is not exists on the server.
Hope this will work.

SQL Server 2012 SSIS: Is there a way copy packages/connections/objects/etc. from old SSIS solution to new solution that won't create GUID conflicts?

I have an existing SQL Server 2012 SSIS solution, deployed and pulling data from an external (Oracle) server each day. I need to copy all connections / variables / packages from that solution and put it in a new solution I'm writing.
Once I copy it to the new solution, I will rename each package and adjust the queries in the data flow source pull object; then save, build, deploy as a whole new solution. The old one will not change or go away. I'm just trying to use the project/solution itself as a template, pulling variable/logging/metadata that's not as easily by opening a package.
Is this doable? I don't see many answers doing a quick Google search. Forgive me if this is a duplicate question, unclear or easier than it appears.
In Visual Studio click on your project and select the "Add existing package" from the context menu. This makes a copy of the dtsx file, and leaves the original intact. Then you can make edits to your new copy.

Versioning of reports in reporting services (SSRS)

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

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.

Can you map a network drive to a SSRS report directory?

We are working at getting our versioning control product to automatically push our SSRS reports to the Test (and then production) SSRS environment. When we promote changes from our development to our QA directory in the versioning control application (Surround SCM), we would like for it to also publish the report to SSRS. (This is the workflow we use for our web applications, and if possible I would like to be consistent).
Now, the directories in SSRS are not "real" directories, at least not as far as I can tell. But is there any way to map a network drive to one of these report directories? And if we do this, and Surround SCM can write changes to that directory, would they then be saved to SSRS?
Sorry in advance if this is a really esoteric question, or if I am missing a really obvious way to do this.
No, you can't directly map SSRS folders to a Windows filesystem. I haven't found a way to make what you describe as easy as I think it should be.
The easiest way to automate the deployment of reports uses of the rs.exe utility. This can execute scripts to deploy or update reports.
Alternatively, you could use the SSRS web services to deploy the reports from .NET code.