Hitting the Ground Running with Reporting Services

by Bill Wunder

Finding a balance between a Production SQL Server's well being and the never ending and always changing needs for internal  support and project development folks to easily get at the data is difficult.

In an insipient application environment you might find a frightening number of folks that have direct access to tables even though you've consciously and carefully built the application to use only stored procedure access. The extreme example here is when the "sa" password is common knowledge within the shop or when a high percentage of the affected internal users are members of the sysadmin server role or have membership in a database role such as db_owner or db_datareader or db_datawriter resulting in exposure of the dataset to any imaginable - and even some unimaginable - queries.

Ideally what should happen is that the queries folks need to monitor and manage the application and support the customer are created as a normal and planned front loaded aspect of the development process. In the real world, the time constraints on delivering the project on the committed date or the urgency of identifying and correcting a spurious problem don't lend themselves to a disciplined and full featured development process. As an extension of those realities, it is not uncommon to experience well meaning and dedicated people wrecking havoc on production systems over and over as they reuse poorly formed queries to slog through volumes of data with little or no regard to the consequences of their searches and manipulations on production systems. In fact, in far to many cases the person writing such queries has inadequate training and experience to even realize that they might be affecting the production systems.

As the application or the shop in general if it's a shop with ongoing new product development matures the natural trend is toward reducing the number of users with relatively unfettered access to the production system. Typically, the onus is placed on those folks with the best matched skills and experience to construct and execute queries for others in the shop. If those experts happen to be the same folks responsible for writing the production database queries and fulfilling the more formalized line of business reporting requirements the results in a hidden demand on the already inadequate time resources available to the expert staff. They will be tasked with requirements gathering, development, testing and supporting a layer of ad hoc reporting that is not budgeted in the planning process for their time. To make it worse, the urgency of the ad hoc needs is invariably such that what ever work is in-hand must be interrupted to service the one off needs. As we all know, an interruption that requires as little as 5 minutes can easily result in a far greater loss of productive time on planned tasks.

One thing that is helpful is to define these queries in stored procedures and deploy them to an intranet site. This allows the expert to construct and test good queries that won't clobber the production systems and at the same time empower the interested user to execute the query on demand without the need to interrupt the query developer with each request to re-run the query. What is not helpful about the approach is the extra time and resources it takes to actually get the query deployed to the intranet. From practical experience, it is frequently easier in the moment for the query developer to avoid deployment and in so doing set them self up for additional interruptions in the future. Somewhat pennywise to be sure, but in rapid application environments, who's got time to care?

If any of this sounds familiar, SQL Server 2000 has actually delivered something that can take you light years ahead in your ability to support one off and ad hoc reporting and data manipulation. It's true! Once a developer has a satisfactory query or stored procedure they can deploy the query to the intranet with an adequately formatted output in about 30 seconds by using Reporting Services. No need to modify an asp page or worry that someone might modify the query by giving it to them to run in Query Analyzer. You still want to stay with the model of using only stored procures to help anyone resist the temptation of  changing the reports rdl commandtext or sneaking into a Query Analyzer somewhere to exploit those select permissions and grant only execute permissions and only to domain groups or database roles having the interested internal users as members. If you stick with these simple rules, administration of the reports using the browser based Report Manager can be safely delegated to someone other than the database expert. This will empower those internal users to decide who should and should not have the ability to access particular reports, SQL Servers, and database.

The possibilities for using Reporting Services in on off reporting are vast and the advantages are large. Reporting Services can help you minimize the pain points for one off and ad hoc queries. Using the Report designer can be the first step in getting your T-SQL experts more familiar with Visual Studio .Net and there further your organizations preparation for SQL Server 2005. As your people gain exposure to what Reporting Services can do: the presentation formats possible from html data grids and charts to XML and .pdfs files, the role based security and securable virtual folder hierarchies, the scheduling flexibility from on demand re-query to scheduled caching to static snapshots, even the ability to schedule and deliver email subscriptions or easily place a result set on a file share I predict you will see an explosion of interest in Reporting Services for your "real" reporting needs, so be prepared. Perhaps best of all, from installation to design to deployment to administration, Reporting Services is easy and now that SP1 is at the door there should be nothing to hold you back from letting this awesome tool go to work for you. There just seems to be nothing but upside to using Reporting Services in the One Off and ad hoc niche.

Now I don't want you to think I'm saying Reporting Services will handle all your ad hoc query needs. There will still be that genre of queries that only need to be executed once or twice on a server. I can see no reason to deploy a query to the intranet reporting server if it will not be reused. In most other cases Reporting Services can simplify one off data retrieval and presentation while allowing you to maintain a stable production environment, even for queries where usage is light. The convenience will simplify the lives of those busy people around you. If you can help your co-workers simplify life a little they'll all be a little happier and so will you. How can you go wrong?