SSRS Subscription strategies - reporting-services

I'm hoping someone with a little more experience than me will know a better way to schedule SSRS reports.
Here is my situation: I have a report on my SSRS report server which takes about a minute to run. I have about a dozen subscriptions setup on the report which cause it output into an excel file on a network drive every hour. About a dozen users check this file regularly, as it contains an queue of work that's come in from their helpdesk.
I believe the users are leaving the file open in Excel, because periodically the files starts locking and I get these errors:
Failure writing file : The process cannot access the file
'' because it is being used by another process.
Even though I've told them all to make copies of the file and only open it locally, they still are having trouble with this.
It seems like a natural way to use SSRS, but because of human tendencies, it is not really working. Is there a better way to do this?

Related

How to solve SSRS timeout problem for heavy reports

I did my best to create huge report for someone who still likes to work with 200K rows Excel file rather then to get some useful summary. Report is pretty simple SQL-wise but because of load and probably rendering time it time out on the server. I don't have any option to change time out value on server.
What is good way to solve this task: i.e. to create 40mB Excel for user via subscription or posting.
All SQL performance attempts already exhausted. Should I move to SSIS which I think can handle such task.
I'm on SSRS 2016
Thanks
Mario

Is it possible to run all the reports in a given folder from report server?

I have a folder with around 15 reports in it, these are Report Server reports. To run each report individually will take a while, so I want them to run together. So, what I want to be able to do is somehow run all the reports in this folder, is this possible?
This is somewhat of an ambiguous question. Let me explain. What are you asking specifically?
Q: Can you run multiple reports at the same time?
A: Yes, and there are several ways to accomplish this.
1. You can use SQL agents
2. Use batch files with task scheduler
3. Use an SSIS package and use an agent to run them at specific times...etc...
Hopefully one of the reports does not depend on another and another thing that you have to take in to consideration is how hard you will be hitting the SSRS or SQL server. Running them all at one time may take longer than one at a time. depending on the bandwidth of the SQL Server and what tables are going to be locked up during each of these processes.
You might want to give a little more detail in your question...
I would recommend an SSIS package, especially as it also one of the options presented by #Michael that can email the Excel workbook too which you mentioned in an earlier comment.
The following resource covers quite well the execution and export of an SSRS report using SSIS, including code you will need as a starting point: Executing an SSRS Report from an SSIS Package.
You could save some time in coding the solution by using the following custom Task that can be integrated into SSIS: SSIS ReportGenerator Task.
There is one problem in your requirements though which is merging reports into one Excel workbook where I assume you want separate sheets for each report within the same workbook?
Reporting Services can use multiple worksheets (to divide a report up into pages a.k.a pagination) but only for a single report; it can't merge reports into one Excel file. This can be accomplished with custom code however. There's a somewhat basic example here: Merging workbooks into a master workbook with separate sheet for each file.
One way to run all the reports at once is to add subscription to all of them and set same subscription start time in all of the reports. what will happen is once the start time arrived all the reports will run simultaneously and will generate excel/pdf (any format specified) file at shared location.

Crystal Reports Server - get list of currently running reports and their progress

Hope it's the right place to ask this question - usually I use SO to ask about programming...
I'm doing a project that involves Crystal Reports Server. From code, I'm able to schedule reports successfully, but when I look at the BI launch pad I don't see the report in My Recently Run Documents (I see failed reports in that list - ones that has wrong database credentials).
When I go to Central Management Console and I find my reports in folders and I go to Properties > History I see the report status as "Running" - and it has been like that for a long while (too long than it should) for 2 different reports I have sent.
How can I diagnose what the problem is? and why it is stuck? there are no error messages anywhere about it.
How can I get a full history of all reports in the system (not just one single report at a time)? and how can I see currently running reports?
How can I stop a running report?
I really hope this is the right place for these kind of questions... if not, would be very happy to get a referral.
Thanks
How can I get a full history of all reports in the system?
Open the CMC and then click on the Instance Manager. At the bottom of the page, you can filter on the object type and status. That way, you can get a full overview of all running reports on your platform.
How can I stop a running report?
If you select a running instance (either in a document's history page or in the Instance Manager), you'll notice that there is no stop button. Instead, you have to delete the running instance. It might not stop running immediately though (depending on what it's doing), but it will be removed immediately from the list of instances.
How can I diagnose what the problem is?
What I would recommend is to enable tracing on all related servers (thus your job server, processing server, etc) and then retry scheduling the report. This should generate additional logging on the server which you can use to diagnose the issue.
The trace files have the extension .glf (generic log file) and are located in the logging folder on your Crystal Server. Have a look at the command-line property of each of the servers for which you're enabling the tracing, you should find a log folder there somewhere.
Make sure to turn the tracing off again as soon as you're finished, as tracing will not only create extra strain on your servers (causing the system to slow down), but it will also result in very large log files.
Before starting with tracing, have a look at the existing log files to see if it doesn't already contain error messages that might help you diagnose the issue. Sort the log files by date, and look at the most recent one for each of the servers involved. If there's nothing in there, start with tracing, but remove the existing .glf files to minimise log contamination (some files will be locked, just ignore them).

SSRS Reports location when being deployed

I'm just helping out while our regular SSRS guy is away and having an issue.
There is currently a very large report that's being generated. The subscription settings for this report is to ftp the report. The Subscription status for the report currently says "Processing delivery...". I assume this to mean that it finished generating and is now trying to send the file to the ftp location. I can see that the file is there in the ftp folder but the size is still 0kb. It has been saying "Processing delivery..." for a long time now.
My question is: Is there a location (folder or sql table) I can check to see if ssrs is actually doing something? I assume it would create temporary file somewhere locally first before sending it on its way.
Check the ExecutionLog views in the ReportServer DB of your SQL Instance. There are three views which show everything from the requested format to start time, complete times, and parameters used. Take a look at the time difference between start and complete for previous runs and compare it to the running time of the current report whose complete time will be null if it is still processing.
For bonus points: setup a SSRS report based on the view and set a subscription for daily email delivery. This saves a TON of time when troubleshooting reports where users can't tell you the parameters they use or the morning reports are empty, etc.
Also, funny as it sounds, you might want to check the free space on the server that the report is output to. With no free space the report will show processing delivery for a long time. If it's FTP and you don't have control of the FTP server, still might be worth the quick phone call.

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:*