Reporting Services combines a
mix of Microsoft technologies to create a scalable server-based
reporting architecture. You can view this as a middle-tier server in
your enterprise planning scenarios. It is one part Web server and one
part database server, with a dash of .NET managed code to bring all the
pieces together. Using Visual Studio as the base development platform is
somewhat challenging for a business user but very comfortable for the
seasoned developer. Business-savvy users are better suited using the
report model and Report Builder tools, which are also built into the
.NET Framework.
Internet Information Services
The Web server portion
of Reporting Services requires Microsoft Internet Information Services
(IIS). You will experience significantly improved performance using IIS
6.0, which is included in Windows Server 2003. You gain even more
substantial improvements using the 64-bit version of Windows Server and
SQL Server. Configure the server to support ASP.NET 2.0. (This happens
automatically during installation.) Two virtual directories are created
in the same application pool (Figure 1).
It
is a good practice to keep the Reporting Services directories in a
separate pool on IIS 6.0 so that they can be stopped and started without
affecting other Web sites on the host machine. One of the virtual
directories is the Report Manager application, which is written using
the same API and Web service capabilities available to custom
developers. The second Web site is the Web service interface, where all
the heavy lifting occurs. Encrypting report delivery with SSL is
optional but highly recommended if your reports have sensitive data.
Keep in mind that SSL has a slight performance impact.
Both virtual
directories point to folders under the Reporting Services installation.
Note that these live on the C drive by default. Some enterprises have
policies that require all applications to be installed on drives other
than the root. Reports are actually stored in a database, so these
folders do not grow much in size other than their error logs.
You can change the
virtual directory names and target site by using the Reporting Services
Configuration tool. The default names are Reports for Report Manager and
ReportServer for Web services.
SQL Server Databases
Reporting Services
creates two SQL databases. One stores reports, report models, shared
data sources, resources, and metadata managed by the server. It is
called ReportServer by default but can be changed using the Reporting
Services Configuration tool. Use this technique to move reporting from
one server to another, repoint a test instance to production, or have
multiple servers share one database for a scale-out cluster. The other
database is called ReportServerTempDB; it stores temporary tables and
data snapshots. This database can grow significantly with heavy use and
should be closely monitored.
Note that the
table structure in these databases can change over time, so writing
directly to the tables is not recommended. Use the SOAP Web services and
rendering extensions instead.
Windows Services
A single Windows
service called SQL Server Reporting Services runs unattended on the
report server. It is responsible for managing, scheduling, executing,
rendering, delivering, and granting access to reports. It should be set
to run automatically at startup and restart automatically on failure.
The service can run under the local system account or a domain-level
account.
Subscriptions rely
on the SQL Server Agent scheduled jobs function. The reporting service
polls the metadata tables in the database periodically to determine
whether a report job is ready to run. The job is actually entered into
SQL Server Agent and set to run at a scheduled time. If one of the
services fails, subscriptions might not complete. Make sure that both
services are running if you depend on the subscription feature.
All
the SQL Server services are monitored and managed through SQL Server
Configuration Manager. You can get to this through the SQL Server menus
or the Computer Management console (Figure 2).
Events and Logs
The Windows
application log contains information about general events. Look for the
Report Server, Report Manager, and Scheduling and Delivery Processor
event sources. The Performance log has counters to track number of
reports and other metrics. Use the RS Web Service counters to monitor
report server performance, and use the RS Windows Service counters to
track monitored operations and report delivery.
The report server trace
logs are text files stored in the Reporting Services installation
LogFiles folder. There are four types of files:
ReportServerService_<timestamp>.log traces worker threads.
ReportServerService_main_<timestamp>.log traces management threads.
ReportServerWebApp_<timestamp>.log details Report Manager tasks.
ReportServer_<timestamp>.log traces Web service calls.
You can customize
the tracing details in the report server configuration files. These
files are very detailed and not easy to read, but they do contain the
information needed to debug or troubleshoot execution and security
issues.
Numerous files in the
SQL database store information about report execution and delivery. You
can extract this information into a table format that is easy to query
and report. Use the supplied extract packages and sample reports in the
Report Samples.
Deployment Modes
The
Reporting Services architecture can support small workgroups or large
enterprise accounts. A single server can run the reporting engine and a
copy of SQL Server that houses the reporting databases. You can split
these over two servers by using a remote instance of SQL Server for the
database portion. You might do this for disk space, memory, or processor
usage reasons.
Combining Reporting
Services with Windows SharePoint Services or SharePoint Portal Server is
popular. If both exist on the same server, install Reporting Services
with the Files Only option. You must run the SharePoint STSADM
configuration utility to exclude the Reporting Services virtual
directories. This prevents security and ISAPI filter issues. Use the
Reporting Services Configuration tool to complete the settings for the
report services and databases. Make sure the SharePoint and Reporting
Services virtual directories run in different application pools on IIS
6.0 or later.
SQL Server
Enterprise Edition and Developer Edition support a scale-out deployment
model. Multiple report servers rely on a shared database instance on a
local or remote SQL Server. For optimum redundancy, run the SQL instance
on a Windows Server failover cluster.
Internet facing
scenarios are also supported with some custom configuration. Installing
the report server and Report Manager outside the firewall allows full
use of reporting features. There is no built-in forms-based
authentication, so you must develop a custom security processing
extension. A more secure approach is to have Report Manager live outside
the firewall but keep Reporting Services inside the firewall. This mode
does not support report drillthrough, e-mail subscription links, or
Report Builder.
Note that an SQL Server
license is required for all computers running Reporting Services. If the
database, services, and Report Manager are split over three machines,
three licenses are required.
Extensibility
Reporting Services is
designed for extensibility. You can use the .NET Framework to build
fully trusted managed code assemblies that provide delivery, data
processing, rendering, and security capabilities. Report Service is
typically managed by using the full-featured SOAP-based Web service
interface. For even more detail, consider using the WMI provider.
Delivery Extensions
Reporting
Services includes delivery extensions for SMTP e-mail and network file
shares. These are closely tied to subscriptions. When a user subscribes
to a report or runs a data-driven subscription, notifications are
generated and a delivery extension is called with the parameters set in
the subscription. The delivery extension is responsible for rendering
reports and
sending the data through some communications channel. The rendering
logic and delivery mechanism are completely controlled by the extension
developer. An XML configuration file defines the extension components on
the report server and Report Manager. Your .NET assemblies are
installed in the reportserver\bin folder.
Data Processing Extensions
Reporting
Services data processing extensions retrieve data from a connected
source. The built-in extensions connect to SQL Server, OLE DB, ODBC, and
Oracle. This covers a large percentage of the available data sources in
any organization. Some custom applications might require data sources
not handled by OLE DB and ODBC. These might include scientific or
industrial devices, older computing systems, or proprietary technology.
There are well-defined interfaces that must be coded in a managed code
assembly. The required classes include connection, command, and datareader.
The latter fills a dataset that is consumed by the rendering engine.
The XML configuration file is deployed to the report server and Report
Designer in BI Development Studio or Visual Studio.
Rendering Extensions
Reporting
Services rendering extensions create device-specific layout information
from a report definition. The built-in extensions include various HTML
flavors, Excel, PDF, TIFF, CSV, and XML, as described earlier. Consider
using variations of these built-in extensions or XSLT transforms to
create proprietary output. If your needs are more specific, you can use a
well-known set of interfaces called the Rendering Object Model, which
provides a collection of classes to an extension developer. Managed code
iterates through these classes to produce an output stream suitable for
the target device. Deploy the completed assembly to the
reportserver/bin folder and create an entry in the XML configuration
files.
Security Extensions
Reporting
Services security extensions authenticate and authorize users and
groups for report administration and delivery. The built-in extensions
work with basic Windows security providers such as Active Directory.
Consider writing a managed code extension for forms-based external Web
site access or integration with existing security providers. Implement
the LogonUser and CheckAccess methods based on the well-known interfaces.
WMI Provider
The Windows
Management Instrumentation (WMI) interfaces are the bedrock of the
Microsoft Dynamic Systems Initiative suite of products that includes
Operations Manager and Systems Management Server. Reporting Services
supports numerous WMI classes that allow discovery, control, activation,
and monitoring of Reporting Server instances. These classes are defined
in the root\Microsoft\SqlServer\ReportingServices\v8 namespace.
Report Integration
Reporting
Services is a powerful platform for report creation, delivery, and
management. As this technology matures, numerous ISVs are integrating
reports into their custom products. The SOAP-based Web service, open RDL
and RDS file formats, extension classes, and WMI support make a
wonderful foundation for the skilled developer.
Microsoft
is a leading implementer in this field. It offers reporting links to
many of its popular application products. Among the more popular ones
are the Web parts designed for the SharePoint portal suite. They make
customized Web-based report delivery a snap. Other prominent products
that use the full Reporting Services feature set include Microsoft
Operations Manager (MOM), Data Protection Manager, and some Dynamics
offerings. A new Systems Center Reporting release combines Analysis
Services cubes with Reporting Services to create a comprehensive suite
of infrastructure management reports. It marries the log and metric data
from MOM with the inventory and deployment details of Systems
Management Server. This is an excellent example of the evolutionary
integration work done by Microsoft product developers.