SSRS Scale out deployment, force different server for some reports

  • Hello,

    I have a large set of reports on our server. One set of reports is required to update every 30 seconds and is typically running on 15-20 different computers at all times. We were getting frequent errors and I can't recall the exact error but, based on limited information on other forums, I have made adjustments to the service itself which has helped, mostly. We still occasionally see the errors and now I'm being asked to put more on the server. This particular set of reports I have set up to write data back into our application database and since this particular set of users no longer has rights to the application, I need to have them on a different server so nothing else impacts their stuff.

    -- BACKSTORY --

    I am the DBA for one of the largest animal shelters in the nation. We have hundreds of volunteers that walk our dogs who are currently residents of our shelter until they are adopted out to their forever homes. When I started here, volunteers had unrestricted access to our sheltering application which I opposed from the start. Last summer, a volunteer changed critical information which adversely affected treatment of one of our dogs. Thankfully, the dog was ok in the end and the application logs everything so we could find out who did it. This was the point where leadership finally saw my point and agreed to limit access. 

    Most volunteers don't need access to our sheltering application. In fact, out of nearly 1,500 volunteers, only about 200 really needed access so I setup those users with only what they needed. However, for the hundreds who walk our dogs, they still needed access to see the dogs needing a walk and record information required by the state for each time a dog is walked. I built a series of reports in SSRS that take care of our dog walkers. We just need to keep it stable since they no longer have application access.

    -- END OF BACKSTORY --

    I started by installing a new instance of SSRS on a different server. I followed the scale-out deployment process to join the new instance to the existing SSRS database and it works as expected. Now, I need to know how to direct users to the new instance. Here is how I have it setup now:

    1. User opens an Operations Dashboard. At the bottom, there is a graph with dog walking summary information and I have the graph title textbox setup with an action link to go to the "Dog Walk" dashboard (the action link passes the location parameter to the Dog Walk dashboard). The Dog Walk dashboard refreshes every 30 seconds so volunteers at any computer can see who is already out on a walk so they don't spend time going to a kennel. This keeps the service busy.

    2. The volunteer will click on the name of the dog they wish to take on a walk. This has an action link to a "Start Walk" report which passes the animal ID number. This report first asks for the volunteer's initials as an additional parameter. It then displays information about the dog they selected. There is a question to ask if this is the correct animal and a Yes box and a No box on the report. The No box has an action link back to the Dog Walk dashboard. The Yes box links to another report, passing the animal ID and volunteer's initials. This report runs a stored procedure which records the start of the walk and returns the volunteer back to the main Dog Walk dashboard.

    3. At the end of the walk, the volunteer follows similar steps, just with different links to record walk information.

    There are more details I won't bore you with at this point (unless desired). Step 1 is where I need the help. From our main Operations Dashboard (on server 1), when the volunteer clicks on the link to go to the Dog Walk dashboard, this is the point where I want them transferred to the new server (server 2). All other operations staff can stay on the original server. I did find documentation where I can put a link in something like this:

    ="void(window.open('http://[server2]/ReportServer?/Operations%20Dashboard/Dog%20Walk&rc:parameters=Collapsed&Location=[shelter location]" + "','_blank'))"

    The problem I have found is that while this "does" work, to open the Dog Walk dashboard in a new tab in the browser, passing the location in is problematic. For one, I lose the "Go back to the parent report" button and I can't find a way to keep it there. Second problem is that with the location passed on the URL instead of "behind the scenes" with the report on the same server, moving around to different reports resets my location if I change it. For example, I have another field on each row where the user can click to open another report with animal details. Since I don't have the "Go back to parent report" button, I have to use the browser's back button which resets my location to what I originally passed in.

    Thoughts?

    My only other idea was to setup pseudo load balancing (two DNS entries with the same name but different IP addresses) since we don't have the budget for an official load balancer. I did this at my previous employer for a large web application and it kept the load on both servers relatively balanced.

  • Based on feedback from elsewhere, we are going to run with pseudo load balancing to see what happens. I am wondering if anyone is aware of a way to see how much traffic is hitting each server?

  • Hi,

    Maybe you could check the Report Server ExecutionLog ?

    https://docs.microsoft.com/en-us/sql/reporting-services/report-server/report-server-executionlog-and-the-executionlog3-view?view=sql-server-2017

    I can see the following field:

    InstanceNameName of the report server instance that handled the request.

Viewing 3 posts - 1 through 2 (of 2 total)

You must be logged in to reply to this topic. Login to reply