You are on page 1of 2524

Contents

What is SQL Server Reporting Services (SSRS)?


Welcome to SQL Server >
Overview
What's new in Reporting Services
Release notes for SSRS 2017 and later
Reporting Services Concepts (SSRS)
Reporting Services Features and Tasks
Backward Compatibility
Deprecated features in 2019
Deprecated features in 2017
Deprecated features in 2016
Discontinued functionality in 2019
Discontinued functionality in 2016
Breaking changes in 2016
Behavior changes in 2016
Tutorials
Report Designer tutorials
Report Designer tutorials overview
Create a Basic Table Report (SSRS Tutorial)
Lesson 1: Creating a Report Server Project
Lesson 2: Specifying Connection Information
Lesson 3: Defining a Dataset for the Table Report
Lesson 4: Adding a Table to the Report
Lesson 5: Formatting a Report
Lesson 6: Adding Grouping and Totals
Create a Data-Driven Subscription (SSRS Tutorial)
Lesson 1: Creating a Sample Subscriber Database
Lesson 2: Modifying the Report Data Source Properties
Lesson 3: Defining a Data-Driven Subscription
Create a Drillthrough (RDLC) Report with Parameters using ReportViewer (SSRS
Tutorial)
Lesson 1: Create a New Web Site
Lesson 2: Define a Data Connection and Data Table for Parent Report
Lesson 3: Design the Parent Report using the Report Wizard
Lesson 4: Define a Data Connection and Data Table for Child Report
Lesson 5: Design the Child Report using the Report Wizard
Lesson 6: Add a ReportViewer Control to the Application
Lesson 7: Add Drillthrough Action on Parent Report
Lesson 8: Create a Data Filter
Lesson 9: Build and Run the Application
Report Builder Tutorials
Tutorial: Create a Quick Chart Report Offline
Prerequisites for Tutorials
Alternative Ways to Get a Data Connection (Report Builder)
Tutorial: Creating a Basic Table Report
Tutorial: Creating a Matrix Report
Tutorial: Creating a Free Form Report
Tutorial: Format Text (Report Builder)
Tutorial: Add a Column Chart to Your Report (Report Builder)
Tutorial: Add a Pie Chart to Your Report (Report Builder)
Tutorial: Add a Bar Chart to Your Report (Report Builder)
Tutorial: Add a Sparkline to Your Report (Report Builder)
Tutorial: Adding a KPI to Your Report
Tutorial: Map Report
Tutorial: Add a Parameter to Your Report (Report Builder)
Tutorial: Creating Drillthrough and Main Reports
Tutorial: Introducing Expressions
Planning
Choosing BI tools for analysis and reporting
Browser support for Reporting Services and Power View
Plan for report design and report deployment
Planning a Report
Report Design Tips
Reporting Services features in editions of SQL Server
Install Reporting Services versions
Install Reporting Services
Find the product key for Reporting Services
Install Reporting Services 2016 in native mode
Perform a Files-Only Installation of Reporting Services
Install Reporting Services and Internet Information Services Side-by-Side (SSRS
Native Mode)
Host a Report Server Database in a SQL Server Failover Cluster
Report Server Configuration Manager (Native Mode)
Configure the Report Server Service Account
Configure Report Server URLs
About URL Reservations and Registration
Configure a URL
URL Reservation Syntax
URLs in Configuration Files
URL Reservations for Multi-Instance Report Server Deployments
Create a Database
Create a Native Mode Database
Configure a Report Server Database Connection
E-Mail Settings - Reporting Services Native mode (Configuration Manager)
Configure the Unattended Execution Account
SSRS Encryption Keys - Manage Encryption Keys
SSRS Encryption Keys - Initialize a Report Server
SSRS Encryption Keys - Store Encrypted Report Server Data
SSRS Encryption Keys - Back Up and Restore
SSRS Encryption Keys - Delete and Re-create
SSRS Encryption Keys - Add and Remove for Scale-Out Deployment
Subscription Settings and a File Share Account (Configuration Manager)
Configure a Native Mode Report Server Scale-Out Deployment
Power BI Integration
Install Reporting Services 2016 in SharePoint Mode
Supported Combinations of SharePoint and Reporting Services Server and Add-in
(SQL Server 2016)
Where to find the SSRS add-in for SharePoint
Install The First Report Server in SharePoint Mode
Install or Uninstall the Reporting Services Add-in for SharePoint
Add an Additional Report Server to a Farm (SSRS Scale-out)
Add an Additional Reporting Services Web Front-end to a Farm
Configure E-mail for a Reporting Services Service Application
Provision Subscriptions and Alerts for SSRS Service Applications
Claims to Windows Token Service (c2WTS) and SSRS
Install Reporting Services at the Command Prompt
Install Report Builder
Uninstall Report Builder
Verify a Reporting Services Installation
Troubleshoot a Reporting Services Installation
Upgrade and Migrate Reporting Services
Migrate a Reporting Services Installation (Native Mode)
Migrate a Reporting Services Installation (SharePoint Mode)
Native to SharePoint Migration (SSRS)
Upgrade a Report Server Database
Upgrade Reports
Backup and Restore Operations for Reporting Services
Web portal
Branding the web portal
Working with shared datasets
Working with paginated reports
Working with snapshots
Working with subscriptions
Working with KPIs
My Settings for Power BI Integration
Report Server Native Mode
Report Server Native Mode Overview
Comparing SSRS report servers
Configure and Administer a Report Server (SSRS Native Mode)
Configure a Report Server
Configure the web portal
Manage a Reporting Services Native Mode Report Server
Configure a Firewall for Report Server Access
Configure a Native Mode Report Server for Local Administration (SSRS)
Configure a Report Server for Remote Administration
Configure a Report Server on a Network Load Balancing Cluster
Enable Remote Errors (Reporting Services)
Register a Service Principal Name (SPN) for a Report Server
Turn Reporting Services Features On or Off
Enable a report server for Power BI Mobile access
Report Server Content Management (SSRS Native Mode)
Create, Delete, or Modify a Folder
Move or Delete an Item
Upload Files to a Folder
Update a Resource
Start and Stop the Report Server Service
Application Domains for Report Server Applications
Enable and Disable Client-Side Printing for Reporting Services
Enable and Disable My Reports
Rename a Report Server Computer
Report Server Database (SSRS Native Mode)
Administer a Report Server Database (SSRS Native Mode)
Moving the Report Server Databases to Another Computer (SSRS Native Mode)
Configuration Files
RsReportServer.config Configuration File
ReportingServicesService Configuration File
RSReportDesigner Configuration File
Modify a Reporting Services Configuration File (RSreportserver.config)
Reporting Services Log Files and Sources
Report Server ExecutionLog and the ExecutionLog3 View
SharePoint ULS Logs
Report Server Service Trace Log
Report Server HTTP Log
Windows Application Log
Verifying a Report Run
Performance, Snapshots, Caching (Reporting Services)
Monitoring Report Server Performance
Performance Counters, MSRS 2016 Web Service & MSRS 2016 Windows Service
Performance Objects (Native Mode)
Performance Counters, MSRS 2016 Web Service SharePoint Mode & MSRS 2016
Windows Service SharePoint Mode Performance Objects
Performance Counters, ReportServer:Service & ReportServerSharePoint:Service
Performance Objects
Set Report Processing Properties
Configure Available Memory for Report Server Applications
Setting Time-out Values for Report and Shared Dataset Processing (SSRS)
Process Large Reports
Report and Snapshot Size Limits
Caching Reports
Cache Shared Datasets
Preload the Cache
Cache a Shared Dataset
Cache a Report
Create, Modify, and Delete Snapshots in Report History
Add a Snapshot to Report History
Create Report History
Report Server SharePoint mode
Report Server SharePoint overview
SharePoint Service and service applications
Manage a Reporting Services SharePoint service application
Back up and restore Reporting Services SharePoint service applications
PowerShell cmdlets for Reporting Services SharePoint mode
Configuration and administration (SharePoint mode)
Site collection features - Reporting Services
Site collection features - Reporting Services
Site collection features - Report Server and Power View
Site settings and features - Reporting Services
Site settings and features - Server File Sync in SharePoint
Add Reporting Services content types to a SharePoint library
Local mode vs. connected mode reports in the Report Viewer
Upload documents to a SharePoint library
Set processing options
High availability
Enable and disable RDL sandboxing
Report Viewer web part on a SharePoint site
Deploy the Report Viewer web part
Add Report Viewer web part to a web page
Connect Filter or Documents web part
Customize the Report Viewer web part
SharePoint site settings for the Report Viewer web part
Pin to Power BI
Report Builder in Reporting Services (SSRS)
Report Builder in SQL Server Overview
Start Report Builder
Set default options for Report Builder
Configure Report Builder Access
Report Design View
Previewing Reports in Report Builder
Shared Dataset Design View
Keyboard Shortcuts
Saving Reports
Save Reports to a Report Server
Save a Report to a SharePoint Library
Finding, Viewing, and Managing Reports
Finding and Viewing Reports in the web portal
Finding and Viewing Reports with a Browser
Convert CRI Dialog Box
Report design
Hide an Item (Report Builder and SSRS)
Reports, Report Parts, and Report Definitions
Data Regions and Maps
Tables, Matrices, and Lists
Tables
Create a Matrix
Create Invoices and Forms with Lists
Tablix Data Region
Tablix Data Region Areas
Tablix Data Region Cells, Rows, and Columns
Preparing Data for Display in a Tablix Data Region
Adding Data to a Tablix Data Region
Exploring the Flexibility of a Tablix Data Region
Controlling the Tablix Data Region Display on a Report Page
Controlling Row and Column Headings
Understanding Groups
Creating Recursive Hierarchy Groups
Add a Details Group
Add a Total to a Group or Tablix Data Region
Change an Item Within a Cell
Change Row Height or Column Width
Insert or Delete a Column
Insert or Delete a Row
Merge Cells in a Data Region
Create a Recursive Hierarchy Group
Add or Delete a Group in a Data Region
Display Headers and Footers with a Group
Create a Stepped Report
Add, Move, or Delete a Table, Matrix, or List
Report Parts
Report Parts Introduction
Publish and Republish Report Parts (Report Builder and SSRS)
Browse for Report Parts and Set a Default Folder (Report Builder and SSRS)
Report Parts in Report Designer
Managing Report Parts
Charts
Add a Chart to a Report (Report Builder and SSRS)
Chart Types (Report Builder and SSRS)
Change a Chart Type (Report Builder and SSRS)
Area Charts (Report Builder and SSRS)
Bar Charts (Report Builder and SSRS)
Column Charts (Report Builder and SSRS)
Line Charts (Report Builder and SSRS)
Pie Charts (Report Builder and SSRS)
Polar Charts (Report Builder and SSRS)
Range Charts (Report Builder and SSRS)
Scatter Charts (Report Builder and SSRS)
Shape Charts (Report Builder and SSRS)
Stock Charts (Report Builder and SSRS)
Tree Map and Sunburst Charts in Reporting Services
Formatting a Chart (Report Builder and SSRS)
Formatting Series Colors on a Chart (Report Builder and SSRS)
Specify Consistent Colors across Multiple Shape Charts (Report Builder and
SSRS)
Define Colors on a Chart Using a Palette (Report Builder and SSRS)
Highlight Chart Data by Adding Strip Lines (Report Builder and SSRS)
Formatting Axis Labels on a Chart (Report Builder and SSRS)
Format Axis Labels as Dates or Currencies (Report Builder and SSRS)
Position Labels in a Chart (Report Builder and SSRS)
Specify an Axis Interval (Report Builder and SSRS)
Add or Remove Margins from a Chart (Report Builder and SSRS)
Specify a Logarithmic Scale (Report Builder and SSRS)
Chart Legend - Formatting
Chart Legend - Hide Items
Chart Legend - Change Item Text
Formatting Data Points on a Chart (Report Builder and SSRS)
Show ToolTips on a Series (Report Builder and SSRS)
Display Data Point Labels Outside a Pie Chart (Report Builder and SSRS)
Display Percentage Values on a Pie Chart (Report Builder and SSRS)
Chart Effects - 3D, Bevel, and Other
Chart Effects - Add 3D Effects
Chart Effects - Add Bevel, Emboss, or Texture
Add a Border Frame to a Chart (Report Builder and SSRS)
Start Pie Chart Values at the Top of the Pie (Report Builder and SSRS)
Empty and Null Data Points in Charts (Report Builder and SSRS)
Add Empty Points to a Chart (Report Builder and SSRS)
Displaying a Series with Multiple Data Ranges on a Chart (Report Builder and SSRS)
Add Scale Breaks to a Chart (Report Builder and SSRS)
Multiple Series on a Chart (Report Builder and SSRS)
Specify a Chart Area for a Series (Report Builder and SSRS)
Plot Data on a Secondary Axis (Report Builder and SSRS)
Linking Multiple Data Regions to the Same Dataset (Report Builder and SSRS)
Display the Same Data on a Matrix and a Chart
Add or Delete a Group in a Chart (Report Builder and SSRS)
Add a Moving Average to a Chart (Report Builder and SSRS)
Collect Small Slices on a Pie Chart (Report Builder and SSRS)
Troubleshoot Charts (Report Builder and SSRS)
Sparklines and Data Bars
Add Sparklines and Data Bars (Report Builder and SSRS)
Align the Data in a Chart in a Table or Matrix (Report Builder and SSRS)
Gauges
Formatting Scales on a Gauge
Formatting Pointers on a Gauge
Formatting Ranges on a Gauge
Add a Gauge to a Report
Set a Minimum or Maximum on a Gauge
Indicators
Add or Delete an Indicator
Change Indicator Icons and Indicator Sets
Set and Configure Measurement Units
Set Synchronization Scope
Specify the Size of an Indicator Using an Expression
Include Indicators and Gauges in a Gauge Pane
Maps
Plan a Map Report
Map Wizard and Map Layer Wizard
Customize the Data and Display of a Map or Map Layer
Vary Polygon, Line, and Point Display by Rules and Analytical Data
Add, Change, or Delete a Map or Map Layer
Change Map Legends, Color Scale, and Associated Rules
Add Custom Locations to a Map
Troubleshoot Reports: Map Reports
Images, Text Boxes, Rectangles, and Lines
Text Boxes (Report Builder)
Add, Move, or Delete a Text Box (Report Builder)
Set Text Box Orientation (Report Builder)
Allow a Text Box to Grow or Shrink (Report Builder)
Rectangles and Lines (Report Builder)
Add a Rectangle or Container (Report Builder and SSRS)
Add and Modify a Line (Report Builder and SSRS)
Add a Border to a Report (Report Builder and SSRS)
Images (Report Builder)
Add an External Image (Report Builder)
Embed an Image in a Report (Report Builder)
Add a Background Image (Report Builder)
Add a Data-Bound Image (Report Builder)
Formatting Report Items
Formatting Text and Placeholders (Report Builder and SSRS)
Format Text in a Text Box (Report Builder and SSRS)
Importing HTML into a Report (Report Builder and SSRS)
Add HTML into a Report (Report Builder and SSRS)
Formatting Numbers and Dates (Report Builder and SSRS)
Formatting Lines, Colors, and Images (Report Builder and SSRS)
Set the Locale for a Report or Text Box
Report Parameters
Report Parameters Overview
Report Parameters Concepts
Add, Change, or Delete a Report Parameter
Add, Change, or Delete Available Values for a Report Parameter
Add, Change, or Delete Default Values for a Report Parameter
Change the Order of a Report Parameter
Add Cascading Parameters to a Report
Add a multi-value parameter to a Report
Set Parameters on a Published Report
Customize the Parameters Pane in a Report
Filter, Group, and Sort Data
Group Expression Examples
Filter Equation Examples
Add Dataset Filters, Data Region Filters, and Group Filters
Add a Filter
Sort Data in a Data Region
Commonly Used Filters
Grouping Pane
Drillthrough, Drilldown, Subreports, and Nested Data Regions
Drillthrough Reports (Report Builder and SSRS)
Add a Drillthrough Action on a Report (Report Builder and SSRS)
Subreports (Report Builder and SSRS)
Add a Subreport and Parameters (Report Builder and SSRS)
Drilldown Action (Report Builder and SSRS)
Add an Expand or Collapse Action to an Item (Report Builder and SSRS)
Nested Data Regions (Report Builder and SSRS)
Specifying Paths to External Items (Report Builder and SSRS)
Expressions
Add an Expression
Expression Examples
Expression Uses in Reports
Expression Scope for Totals, Aggregates, and Built-in Collections
Custom Code and Assembly References in Expressions in Report Designer
Add an Assembly Reference to a Report
Add Code to a Report
Expression Reference
Report Builder Functions - Aggregate Functions Reference
Report Builder Functions - Aggregate Function
Report Builder Functions - Avg Function
Report Builder Functions - Count Function
Report Builder Functions - CountDistinct Function
Report Builder Functions - CountRows Function
Report Builder Functions - First Function
Report Builder Functions - InScope Function
Report Builder Functions - Last Function
Report Builder Functions - Level Function
Report Builder Functions - Lookup Function
Report Builder Functions - LookupSet Function
Report Builder Functions - Max Function
Report Builder Functions - Min Function
Report Builder Functions - Multilookup Function
Report Builder Functions - Previous Function
Report Builder Functions - RowNumber Function
Report Builder Functions - RunningValue Function
Report Builder Functions - StDev Function
Report Builder Functions - StDevP Function
Report Builder Functions - Sum Function
Report Builder Functions - Union Function
Report Builder Functions - Var Function
Report Builder Functions - VarP Function
Data Types in Expressions
Constants in Expressions
Operators in Expressions
Built-in Collections in Expressions
Built-in Collections - Globals and Users References
Built-in Collections - Parameters Collection References
Built-in Collections - Dataset Fields Collection References
Built-in Collections - DataSources and DataSets References
Built-in Collections - Report and Group Variables References
Built-in Collections - ReportItems Collection References
Interactive Sort, Document Maps, and Links
Interactive Sort (Report Builder and SSRS)
Add Interactive Sort to a Table or Matrix (Report Builder and SSRS)
Add a Hyperlink to a URL (Report Builder and SSRS)
Add a Bookmark to a Report (Report Builder and SSRS)
Create a Document Map (Report Builder and SSRS)
Page Layout and Rendering
Rendering Behaviors
Rendering Data Regions
Rendering Report Items
Rendering Data
Pagination in Reporting Services
Page Headers and Footers
Controlling Page Breaks, Headings, Columns, and Rows
Add a Page Break
Display Row and Column Headers on Multiple Pages
Add or Remove a Page Header or Footer
Keep Headers Visible When Scrolling Through a Report
Display Page Numbers or Other Report Properties
Hide a Page Header or Footer on the First or Last Page
Reporting Services reports
Reporting Services Reports Overview
Publishing Data Sources and Reports
Previewing Reports
Publishing Reports to a Report Server
Publish a Report to a SharePoint Library
Publish a Shared Data Source to a SharePoint Library
Report Definition Language
Find the Report Definition Schema Version
Find Text, Numbers, or Dates in a Report
Configure Execution Properties for a Report
Limit Report History
Upload a File or Report
Create a Linked Report
Export Reports
Interactive Functionality for Report Rendering Extensions
Exporting to a CSV File
Exporting to Microsoft Excel
Exporting to Microsoft Word
Rendering to HTML
Exporting to an Image File
Exporting to a PDF File
Exporting to XML
Generating Data Feeds from Reports
Generate Data Feeds from a Report
Work Around the Excel 2003 Row Limitation
Print Reports
Print Reports from a Browser with the Print Control
Print Reports from Other Applications
Print a Report
Print a Report (Reporting Services in SharePoint Mode)
Report data in SSRS
Intro to Report Data
Supported Data Sources
Create connection strings
Add and Verify a Data Connection
Specify Credential and Connection Information
Compare Shared and Embedded Data Sources
Create and Modify Shared Data Sources
Create and Modify Embedded Data Sources
Convert Data Sources
Data from external sources
Add Data from External Data Sources
SQL Server Connection Type
Analysis Services Connection Type for MDX
Extended Field Properties for an Analysis Services Database
Power Pivot Connection Type
SharePoint List Connection Type
Azure SQL Connection Type
OLE DB Connection Type
SQL Server Parallel Data Warehouse Connection Type
Teradata Connection Type
Oracle Connection Type
SAP NetWeaver BI Connection Type
Hyperion Essbase Connection Type
ODBC Connection Type
XML Connection Type
XML Query Syntax for XML Report Data
Element Path Syntax for XML Report Data
Analysis Services Connection Type for DMX
Retrieve Data from a Data Mining Model (DMX)
Data Processing Extensions and .NET Framework Data Providers
Register a Standard .NET Framework Data Provider
Report datasets
Report Dataset overview
Query Design Tools
Build a Query in the Relational Query Designer
Associate a Query Parameter with a Report Parameter
Define Parameters in the MDX Query Designer for Analysis Services
Analysis Services DMX Query Designer User Interface
Analysis Services MDX Query Designer User Interface
Graphical Query Designer User Interface
Relational Query Designer User Interface
Hyperion Essbase Query Designer User Interface
SAP NetWeaver BI Query Designer User Interface
SharePoint List Query Designer
Text-based Query Designer User Interface
Embedded and Shared Datasets
Create a Shared Dataset or Embedded Dataset
Report Parts and Datasets in Report Builder
Manage Shared Datasets
Add, Edit, Refresh Fields in the Report Data Pane
Add a Filter to a Dataset
Show Hidden Datasets for Parameter Values for Multidimensional Data
Set a No Data Message for a Data Region
Dataset Fields Collection
Dataset Properties Dialog Box, Options
Dataset Properties Dialog Box, Parameters
Dataset Properties Dialog Box, Query
Report Embedded Datasets and Shared Datasets
SQL Server mobile reports
Create mobile reports with SQL Server Mobile Report Publisher
SQL Server mobile reports End-to-end walk-through
Create a Reporting Services mobile report
Design first or data first when creating in Reporting Services mobile reports
Data for Reporting Services mobile reports
Work with simulated data
Get data from shared datasets
Prepare data for Reporting Services mobile reports
Prepare Excel data for Reporting Services mobile reports
Retain date formatting for Analysis Services in mobile reports
Add parameters to a mobile report
Open a mobile report with specific query string parameters
Add drillthrough from a mobile report to other mobile reports or URLs
Create a tabbed mobile report by using drillthrough | Reporting Services mobile
reports
Add navigators to mobile reports
Add visualizations to mobile reports
Group data by columns or rows in a mobile report
Add data grids (tables) to mobile reports
Add gauges to mobile reports | Reporting Services
Lay out a mobile report for phone or tablet
Maps in Reporting Services mobile reports
Custom maps in Reporting Services mobile reports
Add a custom map to a Reporting Services mobile report
Reporting Services Security and Protection
Security
Reporting Services Security and Protection Overview
Extended Protection for Authentication with Reporting Services
Authentication with the Report Server
Configure Windows Authentication on the Report Server
Configure Basic Authentication on the Report Server
Configure Custom or Forms Authentication on the Report Server
Configure the Web Portal to Pass Custom Authentication Cookies
Roles and Permissions
Grant User Access to a Report Server
Granting Permissions on a Native Mode Report Server
Securable Items
Tasks and Permissions
Tasks and Permissions - Item-Level Tasks
Tasks and Permissions - System-Level Tasks
Create and Manage Role Assignments
Secure Folders
Secure Reports and Resources
Secure Shared Data Source Items
Secure Shared Dataset Items
Secure My Reports
Create the RSExecRole
Role Definitions
Role Definitions - Create, Delete, or Modify
Role Definitions - Predefined Roles
Role Assignments
Role Assignments - Modify or Delete
Granting Permissions on Report Server Items on a SharePoint Site
Use Built-in Security in Windows SharePoint Services for Report Server Items
Compare Roles and Tasks in Reporting Services to SharePoint Groups and
Permissions
SharePoint Site and List Permission Reference for Report Server Items
Set Permissions for Report Server Operations in a SharePoint Web Application
Set Permissions for Report Server Items on a SharePoint Site
Configure SSL Connections on a Native Mode Report Server
Configure Reporting Services to use a subject alternative name
Report subscriptions
SSRS Schedules Overview
Create, Modify, and Delete Schedules
Pause and Resume Shared Schedules
Change Time Zones and Clock Settings on a Report Server
Manage a Running Process
Subscriptions and Delivery
E-Mail Delivery in Reporting Services
Create and Manage Subscriptions for SharePoint Mode Report Servers
SharePoint Library Delivery in Reporting Services
Create and Manage Subscriptions for Native Mode Report Servers
Use My Subscriptions (Native Mode Report Server)
File Share Delivery in Reporting Services
Disable or Pause Report and Subscription Processing
Data-Driven Subscriptions
Create, Modify, and Delete Data-Driven Subscriptions
Use an External Data Source for Subscriber Data
Monitor Reporting Services Subscriptions
Change the Default Reporting Services Delivery Extension
Use PowerShell to Change and List Reporting Services Subscription Owners and
Run a Subscription
Reporting Services tools
Reporting Services Tools Overview
Reporting Services in SQL Server Data Tools
Design Reports with Report Designer
Add a New or Existing Report to a Report Project
Deployment and Version Support in SQL Server Data Tools
URL Examples for Published Report Items on a Report Server in SharePoint Mode
(SSRS)
Set Deployment Properties
Dock the Report Data Pane in Report Designer
Report Designer F1 Help
Document Outline
Design View
Preview View
Grouping Pane
Project Property Pages Dialog Box
Reporting Services Login Dialog Box (SSRS)
Reporting Services in SQL Server Management Studio
Set Report Server Properties
Connect to a Report Server in Management Studio
Delete an Item
Report Server in Management Studio F1 Help
Cancel Report Server Jobs
Delete Catalog Items
Job Properties
New Shared Schedule
New System Role
New User Role
Schedule Properties (General Page)
Schedule Properties (Reports Page)
Server Properties (General Page)
Server Properties (Execution Page)
Server Properties (History Page)
Server Properties (Logging Page)
Server Properties (Security Page)
Server Properties (Advanced Page)
System Role Properties
User Role Properties
Report Builder authoring environment
Scripting and PowerShell with Reporting Services
Script with the rs.exe Utility and the Web Service
Format a Reporting Services Script File
Run a Reporting Services Script File
Script Deployment and Administrative Tasks
Sample Reporting Services rs.exe Script to Copy Content between Report Servers
Access the Reporting Services WMI Provider
Report Server Command Prompt Utilities
rskeymgmt Utility
rsconfig Utility
RS.exe Utility (SSRS)
How to Locate and Start Reporting Services Tools
Data Alerts (SharePoint)
Data Alert Designer
Data Alert Manager for SharePoint Users
Data Alert Manager for Alerting Administrators
Data Alert Messages
Create a Data Alert in Data Alert Designer
Edit a Data Alert in Alert Designer
Manage All Data Alerts on a SharePoint Site in Data Alert Manager
Manage My Data Alerts in Data Alert Manager
Grant Permissions to Users and Alerting Administrators
Extensions
Customize Rendering Extension Parameters in RSReportServer.Config
URL Access
Access Report Server Items Using URL Access
Pass a Report Parameter Within a URL
URL Access Parameter Reference
Set the Language for Report Parameters in a URL
Specify Device Information Settings in a URL
Export a Report Using URL Access
Search a Report Using URL Access
Render a Report History Snapshot Using URL Access
Relational Databases
How To Manage Logins, Users, and Schemas
Dynamic Data Masking
SQL Server Express LocalDB Reference
SqlToolsVSNativeHelpers
SqlToolsVSNativeHelpers - FrameWindowVisible
sp_enum_sqlagent_subsystems
sysmail_delete_principalprofile_sp
Tuning Recommendations
Enum SQL Agent Subsystems
Delete Principal Profile
WMI Provider library reference
WMI Provider Library Reference Overview
MSReportServer_Instance Class
MSReportServer_Instance Members
MSReportServer_Instance Properties
MSReportServer_Instance Properties - EditionID
MSReportServer_Instance Properties - EditionName
MSReportServer_Instance Properties - InstanceID
MSReportServer_Instance Properties - InstanceName
MSReportServer_Instance Properties - IsSharePointIntegrated
MSReportServer_Instance Properties - Version
MSReportServer_Instance Methods
MSReportServer_Instance Methods - GetReportServerUrls
MSReportServer_ConfigurationSetting Class
MSReportServer_ConfigurationSetting Members
MSReportServer_ConfigurationSetting Properties
ConfigurationSetting Property - ConnectionPoolSize
ConfigurationSetting Property - DatabaseLogonAccount
ConfigurationSetting Property - DatabaseLogonTimeout
ConfigurationSetting Property - DatabaseLogonType
ConfigurationSetting Property - DatabaseName
ConfigurationSetting Property - DatabaseQueryTimeout
ConfigurationSetting Property - DatabaseServerName
ConfigurationSetting Property - InstallationID
ConfigurationSetting Property - InstanceName
ConfigurationSetting Property - IsInitialized
ConfigurationSetting Property - IsSharePointIntegrated
ConfigurationSetting Property - IsWebServiceEnabled
ConfigurationSetting Property - IsWindowsServiceEnabled
ConfigurationSetting Property - MachineAccountIdentity
ConfigurationSetting Property - PathName
ConfigurationSetting Property - SecureConnectionLevel
ConfigurationSetting Property - SenderEmailAddress
ConfigurationSetting Property - SendUsingSMTPServer
ConfigurationSetting Property - SMTPServer
ConfigurationSetting Property - UnattendedExecutionAccount
ConfigurationSetting Property - Version
ConfigurationSetting Property - VirtualDirectoryReportManager
ConfigurationSetting Property - VirtualDirectoryReportServer
ConfigurationSetting Property - WindowsServiceIdentityActual
ConfigurationSetting Property - WindowsServiceIdentityConfigured
ConfigurationSetting Property - RSWindowsExtendedProtectionLevel
ConfigurationSetting Property - RSWindowsExtendedProtectionScenario
MSReportServer_ConfigurationSetting Methods
ConfigurationSetting Method - BackupEncryptionKey
ConfigurationSetting Method - CreateSSLCertificateBinding
ConfigurationSetting Method - DeleteEncryptedInformation
ConfigurationSetting Method - DeleteEncryptionKey
ConfigurationSetting Method - GenerateDatabaseCreationScript
ConfigurationSetting Method - GenerateDatabaseRightsScript
ConfigurationSetting Method - GenerateDatabaseUpgradeScript
ConfigurationSetting Method - GetAdminSiteUrl
ConfigurationSetting Method - GetDatabaseVersionDisplayName
ConfigurationSetting Method - InitializeReportServer
ConfigurationSetting Method - ListInstalledSharePointVersions
ConfigurationSetting Method - ListIPAddresses
ConfigurationSetting Method - ListReportServersInDatabase
ConfigurationSetting Method - ListReservedURLs
ConfigurationSetting Method - ListSSLCertificateBindings
ConfigurationSetting Method - ListSSLCertificates
ConfigurationSetting Method - ReencryptSecureInformation
ConfigurationSetting Method - RemoveSSLCertificateBinding
ConfigurationSetting Method - RemoveUnattendedExecutionAccount
ConfigurationSetting Method - RemoveURL
ConfigurationSetting Method - ReserveURL
ConfigurationSetting Method - RestoreEncryptionKey
ConfigurationSetting Method - SetDatabaseConnection
ConfigurationSetting Method - SetDatabaseLogonTimeout
ConfigurationSetting Method - SetDatabaseQueryTimeout
ConfigurationSetting Method - SetEmailConfiguration
ConfigurationSetting Method - SetSecureConnectionLevel
ConfigurationSetting Method - SetServiceState
ConfigurationSetting Method - SetUnattendedExecutionAccount
ConfigurationSetting Method - SetVirtualDirectory
ConfigurationSetting Method - SetWindowsServiceIdentity
ConfigurationSetting Method - SetExtendedProtectionSettings
Troubleshoot Reporting Services
Errors and Events Reference
Cause and Resolution of Reporting Services Errors
rsAccessedDenied - Reporting Services Error
rsInternalError - Reporting Services Error
rsModelGenerationError - Reporting Services Error
rsProcessingError - Reporting Services Error
rsServerConfigurationError - Reporting Services Error
rrRenderingError - Reporting Services Error
Report Server Windows Service (MSSQLServer) 107
Troubleshoot Reporting Services Report Issues
Troubleshoot Reporting Services Subscriptions and Delivery
Troubleshoot Report Design Issues with Reporting Services
Troubleshoot Data Retrieval issues with Reporting Services Reports
Troubleshoot Processing of Reporting Services Reports
Troubleshoot Reporting Services Report Rendering Issues
Troubleshoot Publishing or Viewing a Report on a Native Mode Report Server
Troubleshoot Server and Database Connection Problems with Reporting Services
Developer
REST API
REST API samples >>
Integrating Reporting Services into Applications
Integrating using the Report Viewer controls
Getting Started
Integrating Reporting Services using the Report Viewer controls
Integrating Reporting Services using the WebForms Report Viewer control
Integrating Reporting Services using the WinForms Report Viewer control
Report Viewer control data collection
Report Viewer support
Release Notes for the Report Viewer controls of SSRS
Integrating Reporting Services directly
Choosing Between URL Access and SOAP
Integrating Reporting Services using SOAP
Integrating Reporting Services using SOAP - Web Application
Integrating Reporting Services using SOAP - Windows Application
Integrating Reporting Services using URL Access
Integrating Reporting Services using URL Access - Web Application
Integrating Reporting Services using URL Access - Windows Application
Report Server Web Service
Accessing the SOAP API
The Role of SOAP in Reporting Services
Report Server Web Service Methods
Authorization Methods
Data Sources and Connection Methods
Linked Reports Methods
Model Methods - Report Server Web Service
Rendering and Execution Methods
Report History Methods
Report Parameters Methods
Report Server Namespace Management Methods
Report Server Web Service Endpoints
Scheduling Methods
Subscription and Delivery Methods
Building Applications Using the Web Service and the .NET Framework
Introducing Exception Handling in Reporting Services
Handling Exceptions in Reporting Services
Best Practices for Reporting Services Exception Handling
Handling Warnings and Cases That Do Not Cause Exceptions
Preventing Invalid Requests
Using the Detail Property to Handle Specific Errors
Using Try and Catch Blocks
Reporting Services SoapException Class
Detail Property
HelpLink Element
SoapException Errors Table
Using Reporting Services SOAP Headers
Batching Methods
Identifying Execution State
Setting the Item Namespace for the GetProperties Method
Calling Web Service Methods
Creating the Web Service Proxy
Omitting Values for Optional Web Service Objects
Passing Device Information Settings to Rendering Extensions
Reporting Services Delivery Extension Settings
Reporting Services Properties - Report Server Item Properties
Reporting Services Properties - Report Server System Properties
Reporting Services Properties
Setting the Url Property of the Web Service
Supplying Web Service Method Arguments
Using Secure Web Service Methods
Using the RSClientPrint Control in Custom Applications
Web Service Authentication
Reporting Services Extension Library
Creating a Data Processing Extension Library
Data Processing Extensions Overview
Debugging Data Processing Extension Code
Deploying a Data Processing Extension to a Report Server
Deploying a Data Processing Extension to Report Designer
Deploying a Data Processing Extension
Implementing a Command Class for a Data Processing Extension
Implementing a Connection Class for a Data Processing Extension
Implementing a Data Processing Extension
Implementing a DataReader Class for a Data Processing Extension
Preparing to Implement a Data Processing Extension
Using an External Dataset with Reporting Services
Creating a Delivery Extension Library
Debugging Delivery Extension Code
Delivery Extensions Overview
Deploying a Delivery Extension
Implementing a Delivery Extension
Implementing the IDeliveryExtension Interface for a Delivery Extension
Preparing to Implement a Delivery Extension
Removing a Delivery Extension
Using a Notification Class for a Delivery Extension
Using the RenderedOutputFile Class for a Delivery Extension
Using the Report Class for a Delivery Extension
Using the Setting Class for a Delivery Extension
Deploying a Rendering Extension
Implementing a Rendering Extension
Implementing the IRenderingExtension Interface
Removing a Rendering Extension
Rendering Extensions Overview
Authentication in Reporting Services
Authorization in Reporting Services
How to install custom security extensions
Implementing a Security Extension
Security Extensions Overview
Code Access Security in Reporting Services
Secure Development (Reporting Services)
Understanding Security Policies
Using Reporting Services Security Policy Files
Reporting Services Extensions
Security Considerations for Extensions
Creating a Custom Report Item Design-Time Component
Creating a Custom Report Item Run-Time Component
Custom Report Item Architecture
Custom Report Item Class Libraries
Custom Report Item Implementation Requirements
Custom Report Items
How to: Deploy a Custom Report Item
Accessing Custom Assemblies Through Expressions
Asserting Permissions in Custom Assemblies
Deploying a Custom Assembly
How to: Debug Custom Assemblies
Initializing Custom Assembly Objects
Referencing Assemblies in an RDL File
Using Custom Assemblies with Reports
Using Strong-Named Custom Assemblies
Technical Reference
Feature Reference
Device Information Settings for Rendering Extensions
ATOM Device Information Settings
CSV Device Information Settings
Excel Device Information Settings
HTML Device Information Settings
Image Device Information Settings
MHTML Device Information Settings
PDF Device Information Settings
PPTX Device Information Settings
XML Device Information Settings
Word Device Information Settings
RGDI Device Information Settings
HTML Viewer and the Report Toolbar
What is SQL Server Reporting Services (SSRS)?
3/5/2021 • 4 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server 2016 Reporting Services and later ❌ Power BI Report Server
Looking for Power BI Report Server? See What is Power BI Report Server?.
SQL Server Reporting Services (SSRS) provides a set of on-premises tools and services that create, deploy, and
manage mobile and paginated reports.

Create, deploy, and manage mobile and paginated reports


The SSRS solution flexibly delivers the right information to the right users. Users can consume the reports via a
web browser, on their mobile device, or via email.
SQL Server Reporting Services offers an updated suite of products:
"Traditional" paginated repor ts brought up to date, so you can create modern-looking reports, with
updated tools and new features for creating them.
New mobile repor ts with a responsive layout that adapts to different devices and the different ways you
hold them.
A modern web por tal you can view in any modern browser. In the new portal, you can organize and
display mobile and paginated Reporting Services reports and KPIs. You can also store Excel workbooks on
the portal.
Read on for more about each.
What's new in Reporting Services
These sources will keep you up to date on new features in SQL Server Reporting Services.
What's New in Reporting Services
SQL Server Reporting Services Team Blog
The Guy in a Cube YouTube channel

Paginated reports
Reporting Services is associated with "traditional" paginated reports, ideal for fixed-layout documents optimized
for printing, such as PDF and Word files.
That core BI workload still exists today, so we've modernized it. Now you can create modern-looking reports
with updated new features, using Report Builder, or Report Designer in SQL Server Data Tools (SSDT).
We updated all the default styles and color palettes, so by default you create reports with a new minimalist
modern style.
We updated the Parameter pane, so you can arrange parameters however you want.
You can export to new formats such as PowerPoint. Reporting Services visualizations in PowerPoint are live
and editable, not just screenshots.
You can create a hybrid Power BI/Reporting Services experience: Rather than recreating your on-premises
Reporting Services reports in Power BI, you can pin visuals from those reports to your Power BI dashboards.
Then you can monitor everything in one place on your Power BI dashboard.

Mobile reports

Mobile computing has shifted the devices we need to work, meaning people today have a different reporting
need. The fixed-layout report experience doesn't work well when you introduce tablets and phones. Something
designed for a wide PC screen isn't the optimal experience on a small phone screen that's not just smaller but a
portrait or landscape orientation.
What you need with these widely different screen form factors is a responsive layout that adapts to these
different screen sizes and orientations. For that we've added a new report type: mobile reports, based on the
Datazen technology we acquired about a year ago and integrated into the product. You can migrate your
existing Datazen reports to Reporting Services with the SQL Server Migration Assistant for Datazen.
You create these mobile reports in the new Mobile Report Publisher app. Then in the native Power BI apps for
mobile devices for Windows 10, iOS, Android, and HTML5, you can access the data you have in Power BI, the
cloud, or SSRS.
As you create visualizations, Mobile Report Publisher automatically generates sample data. This feature allows
you to see how the visualization will look with your data, and what kind of data works well in each visualization.

Web portal

For end users of native-mode Reporting Services, the front door is a modern web portal you can view in most
browsers. You can access all your Reporting Services mobile, paginated reports, and KPIs in the new portal. KPIs
can surface key business metrics at a glance in the browser, without having to open a report.
The new web portal is a complete rewrite of Report Manager. Now it's a single-page, standards-based HTML5
app, which modern browsers are optimized for: Microsoft Edge, Internet Explorer 10 and 11, Chrome, Firefox,
Safari, and all the major browsers.
The content on the web portal is organized by type:
paginated reports
mobile reports
KPIs
Excel workbooks
shared datasets
shared data sources
You can store and manage them securely here, in the traditional folder hierarchy. Tag your favorites reports for
quick access. Those with appropriate permissions are able to manage and administer SSRS content.
And you can still schedule report processing, access reports on demand, and subscribe to published reports in
the new web portal.
More about the Web portal.

Reporting Services in SharePoint integrated mode


You publish reports to Reporting Services in SharePoint integrated mode. You can schedule report processing,
access reports on demand, subscribe to published reports, and export reports to other applications such as
Microsoft Excel. Create data alerts on reports published to a SharePoint site and receive email messages when
report data changes.
More about Reporting Services Report Server in SharePoint integrated mode.

Reporting Services programming features


Take advantage of Reporting Services programming features so you can extend and customize your reporting
functionality. Use the SSRS APIs to integrate or extend data and report processing in custom applications.
More Reporting Services Developer Documentation.

Next steps
Install Reporting Services
Download SQL Server Data Tools (SSDT)
Install Report Builder
More questions? Try asking the Reporting Services forum
What's new in SQL Server Reporting Services
(SSRS)
8/27/2021 • 9 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server 2016 Reporting Services and later ❌ Power BI Report Server
Learn about what's new in the different versions of SQL Server Reporting Services. This article covers the major
feature areas and is updated as new items are released.
For information about Power BI Report Server, see What is Power BI Report Server?

SQL Server 2019 Reporting Services


Download
SQL Server 2019 Reporting Services is available for download from the Microsoft Download Center.
Azure SQL Managed Instance support
You can now host a database catalog used for SQL Server Reporting Services (SSRS) in an Azure SQL Managed
Instance (MI) that's hosted either in a VM or in your data center. Support is limited to using database credentials
for the connection to SQL MI.
Power BI Premium dataset support
You can connect to Power BI datasets using either Microsoft Report Builder or SQL Server Data Tools (SSDT).
Then you can publish those reports to SSRS 2019 using SQL Server Analysis Services connectivity. Users need
to use a stored Windows user name and password to enable the scenario.
AltText (alternative text) support for report elements
When authoring reports, you can use tooltips to specify text for each element on the report. Screen reader
technology identifies these tooltips properly.
Azure Active Directory Application Proxy support
With Azure Active Directory Application Proxy, you no longer need to manage your own web application proxy
in order to allow secure access via the web or mobile apps.
Custom headers
Sets header values for all URLs matching the specified regex pattern. Users can update the custom header value
with valid XML to set header values for selected request URLs. Admins can add any number of headers in the
XML. See Custom headers in the Ser ver Proper ties Advanced Page article for details.
Transparent Database Encryption
SQL Server 2019 now supports Transparent Database Encryption for the SSRS catalog database for Enterprise
and Standard editions.
Microsoft Report Builder update
The newly released version of Report Builder is fully compatible with the 2016, 2017, and 2019 versions of
Reporting Services. It's also compatible with all released and supported versions of Power BI Report Server.

SQL Server 2017 Reporting Services


Download
To download SQL Server 2017 Reporting Services, go to the Microsoft Download Center .
Comments on reports
Comments are now available for reports, to add perspective, and collaborate with others. You can also include
attachments with comments.

For more information, see Add comments to a report in a report server.


REST API support
To enable development of modern applications and customization, SQL Server Reporting Services now
supports a fully OpenAPI compliant RESTful API. The full API specification and documentation can now be found
on SwaggerHub.
Query designer support for DAX now in Report Builder and SQL Server Data Tools
In Report Builder and SQL Server Data Tools, you can now create native DAX queries against supported SQL
Server Analysis Services tabular data models. You can use the query designer in both tools to drag and drop the
fields you want. The DAX query is then generated for you.
Read more on the Reporting Services blog.
Download SQL Server Report Builder.
Download SQL Server Data Tools - Release Candidate.

NOTE
You can only use the query designer for DAX with SSAS tabular data sources built in SQL Server 2016+.

SSRS 2016
Reporting Services web portal
A new Reporting Services web portal is available. The updated web portal includes
KPIs
Mobile Reports
Paginated Reports
Excel files
Power BI Desktop files
The web portal replaces Report Manager from previous releases.
To create Mobile Reports, you need the Mobile Report Publisher.
For more information about the web portal, see Web portal (SSRS Native Mode).

Custom branding for the web portal


You can customize the web portal with your organization's logo and colors by using a branding pack.
For more information about custom branding, see Branding the web portal
Key performance indicators (KPI) in the web portal
You create KPIs directly in the web portal that are contextual to the current folder. When creating KPIs, you can
choose dataset fields, and summarize their values. You can also select related content to drill-through to expose
more details.

For more information, see Working with KPIs in the web portal
Mobile Reports
Reporting Services mobile reports are dedicated reports optimized for a wide variety of form factors and
provide an optimal experience for users accessing reports on mobile devices. Mobile reports feature an
assortment of visualizations, from time, category, and comparison charts, to tree maps and custom maps.
Connect your mobile reports to a range of data sources, including on-premises SQL Server Analysis Services
multidimensional and tabular data. You can place fields for mobile reports on a design surface with adjusting
grid rows and columns. The flexible mobile report elements automatically scale to fit any screen size. You save
the mobile reports to a Reporting Service server, and can view and interact with them in a browser, or the Power
BI mobile app. Devices supported include:
iPad
iPhones
Android phones
or any Windows 10 device
Mobile Report Publisher
The SQL Server Mobile Report Publisherallows you to create and publish SQL Server mobile reports to your
Reporting Services web portal.

For more information, see Create mobile reports with SQL Server Mobile Report Publisher.
SQL Server mobile reports hosted in Reporting Services available in Power BI Mobile app
The Power BI Mobile app for iOS on iPad and iPhone can now display SQL Server mobile reports hosted on your
local report server.

You can't connect by default without some configuration changes. For more information on how to allow the
Power BI Mobile app to connect to your report server, see Enable a report server for Power BI Mobile access.
Support of SharePoint mode and SharePoint 2016
SQL Server 2016 (13.x) Reporting Services supports integration with SharePoint 2013 and SharePoint 2016.
For more information, see:
Supported Combinations of SharePoint and Reporting Services Server and Add-in (SQL Server 2016)
Where to find the Reporting Services add-in for SharePoint Products
Install Reporting Services SharePoint Mode
Microsoft .NET Framework 4 Support
SQL Server 2016 Reporting Services or later (SSRS) supports the current versions of Microsoft .NET Framework
4, including version 4.0 and 4.5.1. If a 4.x version of .Net Framework isn't already installed, SQL Server setup
installs .NET 4.0 during the feature installation step.
Report improvements
HTML 5 Rendering Engine: A new HTML5 rendering engine that targets modern web "full" standards mode
and modern browsers. The new rendering engine no longer relies on quirks mode used by a few older
browsers.
For more information on browser support, see Browser Support for Reporting Services and Power View.
Modern paginated repor ts: Design beautifully modern paginated reports with new, modern styles for charts,
gauges, maps, and other data visualizations.

Tree Map and Sunburst Char ts: Enhance your reports with Tree Map and Sunburst charts,
great ways to display hierarchical data. For more information, see Tree Map and Sunburst Charts in Reporting
Services.
Repor t embedding: You can now embed mobile and paginated reports in other web pages, and applications
by using an iframe, along with URL parameters.
Pin Repor t Items to a Power BI Dashboard: While viewing a report in the web portal, you can select report
items and pin them to a Power BI dashboard. The items you can pin are charts, gauge panels, maps, and images.
You can:
1. Select the group that contains the dashboard you want to pin to.
2. Select the dashboard you want to pin the item to.
3. Select how frequently you want the tile updated in the dashboard.

The refresh is managed by Reporting Services subscriptions and after the item is pinned, you can edit the
subscription and configure a different refresh schedule.

For more information, see Power BI Report Server Integration (Configuration Manager) and Pin Reporting
Services items to Power BI Dashboards.
PowerPoint Rendering and Expor t: The Microsoft PowerPoint (PPTX) format is a new SQL Server 2016
Reporting Services or later (SSRS) rendering extension. You can export reports in the PPTX format from the
usual applications; Report Builder, Report Designer (in SSDT), and the web portal. For the example, the following
image shows the export menu from the web portal.
You can also select the PPTX format for subscription output and use Report Server URL access to render and
export a report. For example, the following URL command in your browser exports a report from a named
instance of the report server.

https://servername/ReportServer_THESQLINSTANCE/Pages/ReportViewer.aspx?
%2freportfolder%2freport+name+with+spaces&rs:Format=pptx

For more information, see Export a Report Using URL Access.


PDF Replaces ActiveX for Remote Printing: The report viewer toolbar now prints Via PDF instead of ActiveX
controls. The new report viewer is supported by most modern browsers, including Microsoft Edge. No more
ActiveX controls to download! Depending on the browser you use and the PDF viewing applications and
services you've installed, Reporting Services either a print dialog box opens to print your report, or you are
prompted to download a .PDF file. As an administrator, you can still disable client-side printing from
Management Studio.
For more information, see Enable and Disable Client-Side Printing for Reporting Services.

Subscription Improvements
F EAT URE SUP P O RT ED SERVER M O DE

Enable and disable subscriptions . New user interface Native mode


options to quickly disable and enable subscriptions. The
disabled subscriptions maintain their other configuration
properties such as schedule and can be easily enabled.

For more information, see Disable or Pause Report and


Subscription Processing.

Subscription description . When you create a new SharePoint and Native mode
subscription, you can now include a description of the report
as part of the subscription properties. The description is
included on the subscription summary page.
F EAT URE SUP P O RT ED SERVER M O DE

Change subscription owner . Enhanced user interface to SharePoint and Native mode
quickly change the owner of a subscription. Previous
versions of Reporting Services allow administrators to
change subscription owners using script. Starting with the
SQL Server 2016 (13.x) release, you can change subscription
owners using the user interface or script. Changing the
subscription owner is a common administrative task when
users leave or change roles in your organization.

Shared credential for file share subscriptions . Two Native mode


workflows now exist with Reporting Services file share
subscriptions:

New in this release, your Reporting Services administrator


can configure a single file share account, that can be used for
multiple subscriptions. The file share account is configured in
the Reporting Services native mode configuration manager
Specify a file share account . On the subscription
configuration page, users select Use file share account .

You configure individual subscriptions with specific


credentials for the destination file share.

You can also mix the two approaches and have some file
share subscriptions use the central file share account while
other subscriptions use specific credentials.

SQL Server Data Tools (SSDT )


The new release of SSDT includes the project templates for SQL Server 2016 Reporting Services or later (SSRS):
Report Server Project Wizard and Report Server Project. For information about downloading SSDT, see SQL
Server Data Tools for Visual Studio 2015.
Report Builder improvements
New Repor t Builder User Interface: The core Report Builder user interface is now a modern look and feel
with streamlined UI elements.

N EW P REVIO US

Custom Parameters Pane: You can now customize the parameters pane. Using the design surface in Report
Builder, you can drag a parameter to a specific column and row in the parameters pane. You can add and remove
columns to change the layout of the pane. For more information, see Customize the Parameters Pane in a Report
(Report Builder).
High DPI Suppor t: Report Builder supports High DPI (Dots Per Inch) scaling and devices. For more
information on High DPI, see the following:
Windows 8.1 DPI Scaling Enhancements
High DPI and Windows 8.1

Next steps
What's New in Analysis Services
Backward Compatibility
Reporting Services Features supported by the Editions of SQL Server
Upgrade and Migrate Reporting Services
Reporting Services
More questions? Try asking the Reporting Services forum
Release notes for SQL Server Reporting Services
(SSRS) 2017 and later
8/10/2021 • 5 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services (2017 and later)
This article describes changes in SQL Server Reporting Services (SSRS), for versions 2017 and later.
For the release notes for Report Viewer controls, see Release Notes for the Report Viewer controls for
WebForms and WinForms of SSRS.

SQL Server 2019 Reporting Services


15.0.7842.32355, 2021/06/24
(Product Version: 15.0.1102.911)

F IXED ISSUE DETA IL S

Fixed an issue for registering Report Server instance to


enable Pin to Power BI feature

Fixed an issue screen readers reading extra rows and


columns for a tablix when exported to MHTML using new
HTML DOCTYPE

15.0.7765.17516, 2021/04/7
(Product Version: 15.0.1102.896)

F IXED ISSUE DETA IL S

Fixed an issue screen readers reading extra rows and


columns for a tablix when exported to MHTML

Fixed an issue with Teradata based datasources have NULL


value

Fixed an issue with SSRS MHTML renderer using an older


HTML DOCTYPE

15.0.7545.4810, 2020/08/31
(Product Version: 15.0.1102.861)

F IXED ISSUE DETA IL S

Security updates
F IXED ISSUE DETA IL S

Constrained Comment attachment support to no longer


allow PDF documents

Fixed filename truncation when exporting reports containing


a period in the name

Fixed an issue related to Subscriptions and the zh-TW


culture that resulted in invalid date format errors

Fixed an issue with certain reports where accessing the


parameters option leads to indefinite spinny

Fixed issues relating to single quotes in report names

Fixed an issue in URL Access causing FindString to not locate


matches

Fixed an issue where alt text for PDF export were not
correctly encoded for multi-byte characters

Fixed unwanted appearance of an empty image under a


linear element

Fixed erroneous Unsupported error for Custom


Authentication in Web Edition

Fixed an issue where a screen reader was reading an extra


row and extra column in a Tablix

Fixed an image truncation issue with fit to size when zoomed


to whole page

Command line upgrade no longer requires EULA flag

15.0.7243.37714, 2019/11/01
(Product Version: 15.0.1102.675)
Initial release.

SQL Server 2017 Reporting Services


14.0.600.1763, 2021/06/28
(Product Version: 14.0.600.1763)

F IXED ISSUE DETA IL S

Fixed an issue for registering Report Server instance to


enable Pin to Power BI feature

14.0.600.1669, 2020/08/31
F IXED ISSUE DETA IL S

Security updates

Constrained Comment attachment support to no longer


allow PDF documents

Fixed filename truncation when exporting reports containing


a period in the name

Fixed an issue related to Subscriptions and the zh-TW


culture that resulted in invalid date format errors

14.0.600.1572, 2020/04/06
F IXED ISSUE DETA IL S

Updated JQuery UI to 1.12

Fixed URL case-sensitivity

Fixed Parameter placement when there are many parameters

Fixed FindString not working in HTML5 rendering

Analysis Services Client Libraries updated to address TLS


1.0/1.1 deprecation

14.0.600.1451, 2019/11/13
F IXED ISSUE DETA IL S

Security updates

Paginated reports didn't work properly with filter parameters


when snapshot is enabled

Users with Browser role and default settings didn't have


permissions to download Excel files

Upgrading to Power BI Report Server from SQL Server 2016


Reporting Services failed during upgrade

After upgrading from SQL Server 2012 Reporting Services,


subscriptions failed with “An invalid character was found in
the mail header: ','” message

Configuration tool: canceling modal windows in Database


section would restart the Reporting Services service

BorderStyle property expression of Textbox controls weren't


rendered to Excel format
F IXED ISSUE DETA IL S

Pagination issue that could get certain reports stuck with


rendering the same page without ever reaching the last
page of the report

14.0.600.1274, 2019/07/01
F IXED ISSUE DETA IL S

Security updates

Unable to select weekdays when creating a shared weekly


schedule

Report does not display carriage returns properly in Word


format

System Center Operations Manager(SCOM) 2019 no longer


works with recent SSRS 2017 upgrades

An error occurred when invoking the authorization extension


for shared Dataset

Logic changed on stored procedure GetAllProperties in SSRS


2017 and PBIRS, which causes the Web service endpoint
ReportingService2010.GetProperties method unable to get
any data for linked report

Simple Grid Row Header in Mobile Report disappears when


an Item within the Grid is clicked

Unable to use date field in Data Driven Subscription


parameter

Nested tablix shows small font or partial font in SSRS 2016


and later

Subscriptions with DateTime Parameter error out after user


with different Locale edits the Subscription

Creating a Data-driven Subscription with Null Delivery


Extension is failing with "A delivery error has occurred"

URL encoding is incorrect when setting the value in


Excel\Word format

14.0.600.1109, 2019/02/12
F IXED ISSUE DETA IL S

Cache report snapshot schedules changes to "Report-specific


schedule" after modifying subscription.
F IXED ISSUE DETA IL S

rc:Toolbar=false is not working in Express edition.

Certain Thai characters render incorrectly when exporting


paginated reports to PDF.

Deadlock during notification of completed data-driven


subscriptions.

Embedded images are not displayed in certain circumstances


when the rc:Toolbar=False parameter used.

Unable to create data driven subscriptions for reports that


use cascading parameters.

Unable to edit subscriptions that are configured with an


invalid interval.

Security updates.

Linked reports UI is not showing.

Certain paginated reports with nested tablix controls have


incorrect fonts.

Whitespace is incorrectly added to certain paginated reports


that contain tablix data regions.

Header rows disappear when expanding the simple data


grids of a mobile report.

14.0.600.906, 2018/09/12
The following issue has been fixed:

F IXED ISSUE DETA IL S

Custom Authentication is not returning correct cookie


information.

14.0.600.892, 2018/08/31
F IXED ISSUE DETA IL S

Textbox inside Rectangle causes the rectangle to not grow


vertically when rc:Toolbar=False and it has long text.

Text size is not scaling if pageHeight is less than 0.5 inches.


F IXED ISSUE DETA IL S

Deadlock occurs in the SSRS catalog database when it is


used with CRM.

Vertically aligned column headers displayed incorrectly when


scrolling down in report.

Users added to System Center Operations Manager


Reporting Role have access blocked to SSRS web portal.

Thai character is not exported correctly into the PDF.

Browser Role Behavior Change.

rc:Toolbar=false does not work in Express edition.

Missing the vertical scrollbar in the parameter prompt area.

Updated Mobile Report Runtime.

14.0.600.744, 2018/04/25
F IXED ISSUE DETA IL S

Data Driven Subscription page does not show the Delivery


Option once it is created.

Upgrading SSRS 2012 to SSRS 2017 results in


RSManagement throwing an exception every few seconds.

Cannot change defaults values for multi-value parameters in


IE11.

Schedules are empty whenever shared schedule is executed.

14.0.600.689, 2018/02/28
F IXED ISSUE DETA IL S

Report Parameter visibility in a linked report is reverted after


editing its properties.

URL Parameter rc:Toolbar=false does not work in Express


edition.

Having expressions in a Textbox with the CanGrow property


set to false results in values not displaying.
F IXED ISSUE DETA IL S

Added Learn more link for product key in setup.

Web portal with custom forms authentication ignores sliding


expiration cookie.

Export to Word creates unequal row height if row content is


empty.

14.0.600.594, 2018/01/09
Some security updates were implemented.
14.0.600.490, 2017/11/01
Resolved the issues with SKU upgrade.

14.0.600.451, 2017/09/30
Initial release.

Next steps
What's New in Reporting Services (SSRS)?
More questions? Try asking the Reporting Services forum.
Reporting Services Concepts (SSRS)
11/2/2020 • 19 minutes to read • Edit Online

This topic provides a brief summary of SQL Server Reporting Services concepts.
Applies to: Reporting Services Native mode | Reporting Services SharePoint mode

Report server concepts


A report server is a computer that has an instance of Reporting Services installed. A report server internally
stores items such as paginated and mobile reports, report-related items and resources, schedules, and
subscriptions. A report server can be configured as a stand-alone single server or as a scale out farm, or it can
be integrated with SharePoint Server. You interact with report server items through the Reporting Services Web
service, WMI provider, URL access, or programmatically through scripts. The way that you interact with a report
server depends on the deployment topology and the configuration.
Native mode report servers
A report server configured in native mode is a computer that has SQL Server Reporting Services installed and
configured as a stand-alone server. You interact with the report server, reports, and report related items by
using a browser with the web portal or URL access commands, SQL Server Management Studio, or
programmatically through scripts. For more information, see Reporting Services Report Server (Native Mode).
SharePoint mode report servers
A report server integrated with SharePoint has two possible configurations. In SQL Server 2016 Reporting
Services or later (SSRS), Reporting Services is installed with SharePoint Server as a SharePoint shared service. In
earlier releases, the report server integrates with SharePoint Server by installing the Reporting Services
SharePoint Add-in. In both cases, you interact with the report server, reports, and report related items by using
application pages on the SharePoint site. You use the SharePoint document library and other libraries that you
create to store the content types related to reports. For more information, see Reporting Services Report Server
(SharePoint Mode).
Report server items
Report server items include paginated and mobile reports, KPIs, shared data sources, shared datasets, and other
items that you can publish, upload, or save to a report server. Organize items in the report server hierarchical
folder structure on a native report server, or in SharePoint content libraries on a SharePoint site. For more
information, see Report Server Content Management (SSRS Native Mode).
Folders
On a native report server, folders provide the hierarchical navigation structure and path of all addressable items
stored in a report server. You use the folder hierarchy and site and folder permissions to help control access to
report server items, known as item-level security. By default, role assignments that you define for specific
folders are inherited by child folders in the folder hierarchy. If you assign specific roles to a folder, the
inheritance rules no longer apply. The folder structure consists of a root node named Home , and reserved
folders that support the optional My Repor ts feature. In a browser, the root node is the name of the report
server virtual directory, for example, https://myreportserver/reports . For more information, see Folders.
On a SharePoint site, use SharePoint folders in document libraries and content libraries to organize items.
Roles and Permissions
On a native report server, the report server system administrator manages access permissions, configures the
report server to process report requests, maintain snapshot histories, and manage permissions for reports, data
sources, datasets, and subscriptions. For example, a published report is secured through role assignments using
the Reporting Services role-based security model. For more information, see Roles and Permissions (Reporting
Services).
On a SharePoint site, use the SharePoint site administrators page to manage access permissions on reports and
report-related site content.
Schedules
On a native report server, you can schedule paginated reports, shared datasets, and subscriptions to retrieve
data and deliver reports and dataset queries at specific times or during off-peak hours. Schedules can run once
or on a continuous basis at intervals of hours, days, weeks, or months. For more information, see Schedules.
Subscriptions and delivery
A subscription is a standing request to deliver a report at a specific time or in response to an event, and in an
application file format that you specify in the subscription. Subscriptions provide an alternative to running a
report on demand. On-demand reporting requires that you actively select the report each time you want to
view the report. In contrast, subscriptions can be used to schedule and then automate the delivery of a report.
You can deliver reports to an e-mail inbox or a file share. For more information, see Subscriptions and Delivery
(Reporting Services).
Extensions
SQL Server Reporting Services provides an extensible architecture that you can use to customize report
solutions. The report server supports custom authentication extensions, data processing extensions, report
processing extensions, rendering extensions, and delivery extensions, and the extensions that are available to
the users are configurable in the RSReportServer.config configuration file. For example, you can limit the export
formats the report viewer is allowed to use. Delivery and report processing extensions are optional, but
necessary if you want to support report distribution or custom controls. For more information, see Reporting
Services Extensions (SSRS).
Report access
On-demand access allows users to select the reports from a report viewing tool. Depending on your report
server configuration, you can use the web portal, a Microsoft SharePoint 2.0 Web part, a SharePoint library
when Reporting Services is installed in SharePoint integrated mode, an embedded ReportViewer control, or a
browser using URL access. For more information about on-demand access to reports, see Finding, Viewing, and
Managing Reports (Report Builder and SSRS ).
Subscriptions provide an alternative to running a report on demand. For more information, see Subscriptions
and Delivery (Reporting Services).
For the list of tools to use to interact with the report server, see Reporting Services Tools.

Reports and related item concepts


Reports and report definitions
RDL
A report definition is an XML file that conforms to an XML grammar called Report Definition Language (RDL). In
Reporting Services, you create a report definition in a tool such as Report Builder or Report Designer. It includes
elements that define data source connections, queries used to retrieve data, expressions, parameters, images,
text boxes, tables, and any other design-time layout. For more information, see Report Definition Language
(SSRS).
RSMOBILE
You create Reporting Services mobile reports (.rsmobile files) in SQL Server Mobile Report Publisher. They're
optimized for mobile devices and connected to on-premises data, with an assortment of data visualizations.
Read more about Reporting Services mobile reports.
RDLC
The Visual Studio Report Designer produces client report definition (.rdlc) files in XML format for use with the
ReportViewer control.
Report data connections and data sources
Reports use data connections to retrieve data for a report when a query runs or when the report is processed. In
a report definition, a data connection is the same as a data source. You choose from a list of built-in data
connection types to connect to a relational database, a multidimensional database, a Web service, or some other
source of data. The following terms are used when describing data connections.
Data connection. Also known as a data source. A data connection includes a name and connection
properties that are dependent on the connection type. By design, a data connection does not include
credentials. A data connection does not specify which data to retrieve from the external data source. To do
that, you specify a query when you create a dataset.
Data source definition. A file that contains the XML representation of a report data source. When a
report is published, its data sources are saved on the report server or SharePoint site as data source
definitions, independently from the report definition. For example, a report server administrator might
update the connection string or credentials. On a native report server, the file type is .rds. On a SharePoint
site, the file type is .rsds.
Connection string. A connection string is a string version of the connection properties that are needed
to connect to a data source. Connection properties differ based on data connection type.
Shared data source. A data source that is available on a report server or SharePoint site to be used by
multiple reports.
Shared data sources are useful when you have data sources that you use often. It is recommended that
you use shared data sources as much as possible. They make reports and report access easier to manage,
and help to keep reports and the data sources they access more secure. If you need a shared data source,
ask your system administrator to create one for you.
In Report Builder, you cannot create a shared data source. You can browse to and select a shared data
source from the report server.
In Report Designer, you cannot browse to a shared data source on the report server. You can create
shared data sources as part of a project in Solution Explorer and choose whether to deploy them to a
report server. You might choose to use them locally only because of differences in credentials required
from your computer or from the report server.
Embedded data source. Also known as a report-specific data source, an embeddeddata source is
defined in a report and used only by that report.
An embedded data source is a data connection that is saved in the report definition. Embedded data
source connection information can be used only by the report in which it is embedded.
Credentials. Credentials are the authentication information that must be provided to allow you access to
external data.
Credentials are used to create an embedded data source, to run a query, or to retrieve data during report
processing. The owner of the data source determines the type of credentials that you must use to access
the data. Credentials are managed independently from the data connection on a report server, a
SharePoint site, or on a local computer in a report authoring environment. Depending on the type of data
source, credentials can be saved to avoid prompting or set to prompt each user. The credentials that you
need might differ depending on whether you are connecting to the data source from your computer or
from the report server. For more information, see Specify Credentials in Report Builder.
Report Datasets
In a report, a dataset represents report data that is returned from running a query on an external data source.
The dataset depends on the data connection that contains information about the external data source. The data
itself is not included in the report definition. The dataset contains a query command, a field collection,
parameters, filters, and data options that include case sensitivity and collation. There are two types of datasets:
Shared datasets. A shared dataset is published on a report server and can be used by multiple reports.
A shared dataset must be based on a shared data source. A shared dataset can be cached and scheduled
by creating a cache refresh plan.
Embedded datasets. Embedded datasets are defined in and used by a single report.
For more information, see Report Embedded Datasets and Shared Datasets (Report Builder and SSRS).
Report parameters
Report parameters are a part of a report definition. You can add parameters to Reporting Services paginated
and mobile reports to link related reports, to control the report appearance, to filter report data, or to narrow
the scope of a report to specific users or locations. When a paginated report is published to a native report
server or SharePoint site, report parameters are saved as a separate report server item. Parameters can be
managed independently from the report definition. To create multiple sets of parameters for the same report,
create linked reports.
Report items
A report item is an internal but basic concept in a Reporting Services paginated report definition. Properties of a
report item apply to data regions, maps, text boxes, images, and other design elements that you add to a report.
Understanding the properties of a report item can help you to design customized report content and
appearance. For example, all report items have a Hidden property to control visibility.
Data regions and maps
A data region is a layout element that displays data from a single dataset in a Reporting Services paginated
report. Data region types include tablix, chart, gauge, and indicator. Map is a special type of data region because
it can display data from two datasets: one that contains spatial data and one that contains analytical data.
Use data regions to enable common data visualizations: numbers and text in a table, matrix, or list; graphical
displays in a chart or gauge; and geographic displays against a map. Tables, matrices, and lists are all based on
the tablix data region, which expands as needed to display all the data from the dataset. A tablix data region
supports multiple row and column groups and both static and dynamic rows and columns. A chart displays
multiple series and category groups in a variety of chart formats. A gauge displays a single value or an
aggregated value for a dataset. A map displays spatial data as map elements that can vary in appearance based
on aggregated data from a dataset.
Table. A table is a data region that presents data row by row. Table columns are static: you determine the
number of columns when you design your report. Table rows are dynamic: they expand downwards to
accommodate the data. You can add groups to tables, which organize data by selected fields or
expressions. For more information, see Tables, Matrices, and Lists (Report Builder and SSRS).
Matrix. A matrix is also known as a crosstab. A matrix data region contains both dynamic columns and
rows: they expand to accommodate the data. A matrix can have dynamic columns and rows and static
columns and rows. Columns or rows can contain other columns or rows, and can be used to group data.
For more information, see Tables, Matrices, and Lists (Report Builder and SSRS).
List. A list is a data region that presents data arranged in a freeform fashion. You can arrange report
items to create a form with text boxes, images, and other data regions placed anywhere within the list. For
more information, see Tables, Matrices, and Lists (Report Builder and SSRS).
Char t. A chart presents data graphically. Examples of charts include bar, pie, and line charts, but many
more styles are supported. For more information, see Charts (Report Builder and SSRS).
Gauge. A gauge presents data as a range with an indicator pointing to a specific value within the range.
Gauges are used to display key performance indicators (KPIs) and other metrics. Examples of gauges
include linear and circular. For more information, see Gauges (Report Builder and SSRS).
Map. A map enables you to present data against a geographical background. Map data can be spatial
data from a SQL Server query, an ESRI shapefile, or Microsoft Bing map tiles. Spatial data consists of sets
of coordinates that define polygons that represent shapes or areas, lines that represent routes or paths,
and points represented by markers. You can associate aggregate data with map elements to automatically
vary their color and size. For example, you can vary the marker type for a store based on sales amount or
the color for a road based on speed limit. For more information, see Maps (Report Builder and SSRS).
You can also include values from datasets that are not linked to the data region in the following ways:
Expressions that include calls to aggregate functions that specify a different dataset as the scope
parameter, for example, =Max(Fields!Sales.Value, "AnnualSales") .
Use the function Lookup to look up values from name/value pairs in a different dataset.
Report parts
A report part definition (.rsc) is a report server item that is an XML fragment of a report definition file. You
create report parts by creating a report definition, and then selecting report items in the report to publish
separately as report parts. Report parts include data regions, rectangles and their contained items, and images.
You can save a report part with its dependent datasets and shared data source references so it can be reused in
other reports. For more information, see Report Parts in Report Designer (SSRS).
Data alerts
A data alert is an item stored internally in an alerting database. A data alert definition includes which data to use
from existing report data feeds, the conditions to be met, a schedule, and recipients for the alert. Data alerts are
available only on reports published to a report server integrated with SharePoint Server. Data alerts are not
available on a native report server installation. For more information, see Reporting Services Data Alerts.

Types of Reporting Services paginated reports


In Reporting Services, the term report can apply to a specific type of report server item, a layout design, or a
solution design. A single Reporting Services paginated report can have characteristics from more than one type;
for example, a report can be, at the same time, a stand-alone report, a subreport referenced by a main report,
the target of a drillthrough report in a different main report, and a linked report.
Drilldown reports
A drilldown report is a layout design that at first hides complexity and enables the user to toggle conditionally
hidden report items to control how much detail data they want to see. Drilldown reports must retrieve all
possible data that can be shown in the report. For reports that use large amounts of data, consider drillthrough
reports instead. For more information, see Drilldown Action (Report Builder and SSRS).
Subreports
A subreport is a report item that you add to a report as a layout element. A subreport points to a different
report and displays inside the body of a main report as an subreport instance. The subreport can use different
data sources than the main report. Although a subreport can be repeated in data regions by using a parameter
to filter data in each instance of the subreport, subreports are typically used with a main report as a briefing
book or as a container for a collection of related reports. Each instance of a subreport switches context for
report processing between the main report and the subreport. For reports that use many instances of
subreports, consider using drillthrough reports instead. For more information, see Subreports (Report Builder
and SSRS).
Main/detail reports and drillthrough reports
A main/detail report solution includes a main report that displays summary information with hyperlinks to one
or more reports that display detailed information. The detail report runs only if a report reader clicks a link to it.
The drillthrough report opens separately from the main report. A hyperlink can be defined on any report item
that has an Action property, for example, text box, placeholder text, or chart series. For more information, see
Drillthrough Reports (Report Builder and SSRS).
Linked reports
A linked report is a report server item that contains a pointer to the report definition but has its own set of
report properties and settings. These include security, parameters, location, subscriptions, and schedules.
Because parameters are managed independently on the server, republishing a main report that uses new
parameter settings does not overwrite the existing parameters settings for either the main report or the linked
report.
For more information, see Create a Linked Report.
History reports
Report history is a collection of report snapshots. You can use report history to maintain a record of a report
over time. Report history is not intended for reports that contain confidential or personal data. For this reason,
report history can include only those reports that query a data source using a single set of credentials.
Alternatively, you can create a history of a report by defining a schedule and subscription to deliver the report in
an exported file format to a file share. For more information, see Performance, Snapshots, Caching (Reporting
Services).
Cached reports
A cached report is a saved copy of a compiled report and report data. Cached reports are used to improve
performance by reducing the number of processing requests to the report processor and by reducing the time
that is required to retrieve large report datasets. They have a mandatory expiration period, usually in minutes.
For more information about how to use cached reports, see Caching Reports (SSRS).
You can also cache query results for a shared dataset. For more information, see Cache Shared Datasets (SSRS).
Snapshots
A report snapshot is a report that contains layout information and query results that were retrieved at a specific
point in time. Unlike on-demand reports, which get up-to-date query results when you view the report, the
report server retrieves the compiled report and report data that were current for the report at the time the
snapshot was created. Report snapshots are not saved in a particular rendering format. Instead, report
snapshots are rendered in a final viewing format (such as HTML) only when a user or an application requests it.
For more information, see Performance, Snapshots, Caching (Reporting Services).
Saved reports
A saved paginated report is a report definition (.rdl) file. A report definition can be saved locally or uploaded to a
report server. If you upload a report definition instead of publishing it, no version validation or expression
validation occurs. You will not see errors until the report runs. For more information, see Save and Deploy
Reporting Services Reports.
Published reports
A published report is a report server item that you publish to a report server from a Reporting Services tool. On
a native report server, you publish the report to a folder that you have permissions to. On a SharePoint report
server, you can publish the report to a document library that is enabled with report content type. To share the
report that uses others, they must have been granted permission to view the report. For more information, see
Save and Deploy Reporting Services Reports.
Upgraded reports
An upgraded report is a published report definition that is converted to a newer schema when a report server is
upgraded from one version of Reporting Services to a later version. The original report definition is preserved.
The report is upgraded in memory, compiled, and the compiled version is saved internally. For more
information, see Upgrade Reporting Services Reports.

Stages of Reporting Services paginated reports


A report definition can be created, published or saved, compiled, processed, cached, rendered, viewed, exported,
and saved as history. When you run a report, the report server processes a report in three steps: report
processing, data processing, and rendering. Data and report processing are performed on a report definition;
the results are in an internal intermediate format. Reports that are in intermediate format are subsequently
rendered to a specific viewing format. The following diagram shows the stages and elements of report
processing.

Report processing diagram


Report definition
The report definition file (.rdl) stored on a report server. For more information, see Report Definition Language
(SSRS).
Compiled report and intermediate report format
The report that uses evaluated expressions, parameters and parameter properties evaluated.
Snapshot or Report History
A snapshot is the set of report data at a specific point in time plus the intermediate format that contains report
layout information. For more information, see Performance, Snapshots, Caching (Reporting Services).
Processed report
A fully processed report that contains both data and layout information.
Rendered report
A fully processed report is sent to a report renderer to combine the data and layout on each page of the
targeted rendering format. Rendering extensions are customizable and extensible. The default rendering format
for a report is HTML 4.0. For more information, see Page Layout and Rendering (Report Builder and SSRS) and
Extensions (SSRS).
Exported report
An exported report is a fully paged report saved in a specific file format. Export formats depend on installed
rendering extensions and can be customized. By default, export formats include Excel, Word, XML, PDF, TIFF, and
CSV. For more information, see Export Reports (Report Builder and SSRS).

See Also
Reporting Services Features and Tasks (SSRS)
Technical Reference (SSRS)
Reporting Services (SSRS)
Reporting Services Features and Tasks (SSRS)
11/2/2020 • 2 minutes to read • Edit Online

Reporting Services foundational content is organized by reports and report features, report server features, and
Reporting Services product features.

In This Section
Create mobile reports with SQL Server Mobile Report Publisher
Reporting Services Report Server
Reporting Services Reports (SSRS)
Report Data (SSRS)
Report Parameters (Report Builder and Report Designer)
Report Parts in Report Designer (SSRS)
Schedules
Subscriptions and Delivery (Reporting Services)
Reporting Services Data Alerts
Reporting Services Security and Protection
URL Access (SSRS)
Extensions (SSRS)
Reporting Services Tools

See Also
Reporting Services (SSRS)
What's New in Reporting Services (SSRS)
Reporting Services Backward Compatibility
11/2/2020 • 2 minutes to read • Edit Online

Learn about changes in behavior of SQL Server Reporting Services. This covers features that are no longer
available or are scheduled to be removed in a future release.
It also describes fundamental changes to the product that are known to break a custom application that includes
Reporting Services functionality.

In This Section
TO P IC DESC RIP T IO N

Discontinued functionality to SQL Server Reporting Services Describes features that existed in earlier versions of
in SQL Server 2016 Reporting Services but that have been removed in later
versions.

Deprecated features in SQL Server Reporting Services in SQL Describes features that exist this release of Reporting
Server 2016 Services for backward compatibility, but which will be
removed in a future version of SQL Server.

Breaking Changes in SQL Server Reporting Services in SQL Describes issues that you might encounter when you
Server 2016 upgrade Reporting Services.

Behavior changes to SQL Server Reporting Services in SQL Describes features that have changed in Reporting Services.
Server 2016

See Also
Backward Compatibility | Analysis Services
Deprecated features in SQL Server 2019 Reporting
Services
3/5/2021 • 2 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services (2019 and later) ✔
️ Power BI Report Server
When we mark a feature as deprecated, it means:
The feature is in maintenance mode only. We'll make no new changes, including changes related to
interoperability with new features.
We strive not to remove a deprecated feature from future releases, to make upgrades easier. However, in rare
situations, we may choose to permanently remove the feature from Reporting Services if it limits future
innovations.
For new development work, we don't recommend using deprecated features.
Features deprecated in a future version of SQL Ser ver
SQL Server Reporting Services supports the following features in the next version of SQL Server, but will
deprecate them in a later version. The specific version of SQL Server hasn't been determined.

C AT EGO RY DEP REC AT ED F EAT URE REP L A C EM EN T

Report Server Report Part Gallery None

Report Server Mobile Reports and Mobile Report Power BI reports in Power BI Report
Publisher Server offer mobile capabilities.

Report Server XLS and DOC render formats XLSX and DOCX formats are available
and supported.

Report Server Atom Data Feed oData feed support is available for
shared datasets in SSRS and Power BI
Report Server.

Report Server Pin to Power BI Paginated report support is now


available directly in the Power BI
service.

See also
Discontinued functionality in SQL Server 2019 Reporting Services (SSRS)
More questions? Try asking the Reporting Services forum
Deprecated features in SQL Server 2017 Reporting
Services
3/5/2021 • 2 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services (2017) ❌ Power BI Report Server
When we mark a feature as deprecated, it means:
The feature is in maintenance mode only. We'll make no new changes, including changes related to
interoperability with new features.
We strive not to remove a deprecated feature from future releases, to make upgrades easier. However, in rare
situations, we may choose to permanently remove the feature from Reporting Services if it limits future
innovations.
For new development work, we don't recommend using deprecated features.

Features deprecated in the next version of SQL Server


The following SQL Server 2017 Reporting Services features will be deprecated in the next version of SQL Server.
Don't use these features in new development work, and modify applications that currently use these features as
soon as possible.

NOTE
This list is identical to the SQL Server 2016 Reporting Services (13.x) list. There are no new deprecated or discontinued
features announced for SQL Server 2017 Reporting Services (14.x).

C AT EGO RY DEP REC AT ED F EAT URE REP L A C EM EN T

Report Server HTML 4.0 Renderer. HTML 5 renderer

See also
Discontinued functionality in SQL Server Reporting Services (SSRS)
More questions? Try asking the Reporting Services forum
Deprecated features in SQL Server 2016 Reporting
Services
11/2/2020 • 2 minutes to read • Edit Online

APPLIES TO: ✔ ️ SQL Server Reporting Services (2016) ❌ SQL Server Reporting Services (2017) ❌ Power BI
Report Server
For content related to previous versions of SQL Server Reporting Services (SSRS), see SQL Server 2014
Reporting Services.
This article describes the deprecated SQL Server 2016 Reporting Services features. The features are still
available in the release in which they are deprecated; however the features are scheduled to be removed in a
future release of SQL Server. Don't use deprecated features in new applications.

Features Not Supported in the Next Version of SQL Server Reporting


Services
The following SQL Server Reporting Services features won't be supported in the next version of SQL Server.
Don't use these features in new development work, and modify applications that currently use these features as
soon as possible.

C AT EGO RY DEP REC AT ED F EAT URE

Report Server HTML4.0 renderer. Use the HTML5 renderer.

Features Not Supported in Previous Versions of SQL Server Reporting


Services
SQL Server 2014 Reporting Services Deprecated Features
SQL Server 2014 Reporting Services Deprecated Features

Next steps
What's New in Reporting Services Backward Compatibility | Reporting Services
Behavior Changes to SQL Server Reporting Services in SQL Server 2016
Discontinued Functionality to SQL Server Reporting Services in SQL Server 2016
More questions? Try asking the Reporting Services forum
Discontinued functionality in SQL Server 2019
Reporting Services (SSRS)
3/5/2021 • 2 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services (2019 and later) ❌ Power BI Report Server
This article describes features that SQL Server Reporting Services no longer supports in SQL Server 2019. It
doesn't include announcements about discontinued support for specific versions of the operating system or
Microsoft Internet Information Services (IIS).
A discontinued feature is one that Reporting Services no longer supports. It might also be physically removed
from the product. Reporting Services has discontinued the following features.

C AT EGO RY DEP REC AT ED F EAT URE REP L A C EM EN T

Report Server HTML 4.0 Renderer HTML 5 renderer

Report Server Customized style sheets for HTML You can still brand the web portal.
Viewer and Report Manager

See also
Deprecated features in SQL Server 2019 Reporting Services
Deprecated features in SQL Server 2016 Reporting Services
What's new in Reporting Services
More questions? Try asking the Reporting Services forum
Discontinued Functionality in SQL Server 2016
Reporting Services (SSRS)
11/2/2020 • 2 minutes to read • Edit Online

APPLIES TO: ✔ ️ SQL Server Reporting Services (2016) ❌ SQL Server Reporting Services (2017) ❌ Power BI
Report Server
For content related to previous versions of SQL Server Reporting Services (SSRS), see SQL Server 2014
Reporting Services.
This article describes SQL Server Reporting Services features that are no longer available in SQL Server 2016. It
doesn't include announcements about discontinued support for specific versions of the operating system or
Microsoft Internet Information Services (IIS). For more information about system prerequisites, see Hardware
and Software Requirements for Installing SQL Server 2016.
A discontinued feature is one that is no longer supported. It might also be physically removed from the product.
The following features are discontinued.

F EAT URE REP L A C EM EN T O R W O RK A RO UN D

Customized style sheets for HTML Viewer and Report You can still brand the web portal.
Manager

Next steps
What's New in Reporting Services
Behavior Changes to SQL Server Reporting Services in SQL Server 2016
Deprecated features in SQL Server Reporting Services in SQL Server 2016
More questions? Try asking the Reporting Services forum
Breaking changes in SQL Server Reporting Services
in SQL Server 2016
11/2/2020 • 2 minutes to read • Edit Online

APPLIES TO: ✔ ️ SQL Server Reporting Services (2016) ❌ SQL Server Reporting Services (2017) ❌ Power BI
Report Server
For content related to previous versions of SQL Server Reporting Services (SSRS), see SQL Server 2014
Reporting Services.
This topic describes breaking changes in Reporting Services. These changes might break applications, scripts, or
functionalities that are based on earlier versions of SQL Server. You might encounter these issues when you
upgrade, or in custom scripts or reports.

Security Extensions
Custom security extensions need some modification to work with the new web portal. Security extensions need
to use the IAuthenticationExtension2 interface.

WMI Provider
The web portal application name changes from "ReportManager" to "ReportServerWebApp".

Next steps
Behavior changes to SQL Server Reporting Services in SQL Server 2016
What's New in Reporting Services (SSRS)
Deprecated features in SQL Server Reporting Services in SQL Server 2016
Discontinued functionality to SQL Server Reporting Services in SQL Server 2016
More questions? Try asking the Reporting Services forum
Behavior changes to SQL Server Reporting Services
in SQL Server 2016
11/2/2020 • 2 minutes to read • Edit Online

APPLIES TO: ✔ ️ SQL Server Reporting Services (2016) ❌ SQL Server Reporting Services (2017) ❌ Power BI
Report Server
For content related to previous versions of SQL Server Reporting Services (SSRS), see SQL Server 2014
Reporting Services.
This topic describes behavior changes in Reporting Services. Behavior changes affect how features work or
interact in SQL Server 2016 as compared to previous versions of SQL Server.
There are no behavior changes.

Next steps
What's New in Reporting Services
Deprecated features in SQL Server Reporting Services in SQL Server 2016
Discontinued functionality to SQL Server Reporting Services in SQL Server 2016
Breaking changes in SQL Server Reporting Services in SQL Server 2016
More questions? Try asking the Reporting Services forum
Reporting Services Tutorials (SSRS)
11/2/2020 • 2 minutes to read • Edit Online

APPLIES TO: SQL Server 2016 Power BI Report Server


Explore the capabilities of SQL Server 2016 Reporting Services or later (SSRS), SQL Server Data Tools (SSDT),
and Report Builder with sample data in these tutorials.

Create a Basic Table Report


Follow the steps in this tutorial to learn how to create your first report. This tutorial shows you how to work with
SQL Server Data Tools (SSDT) to create a data connection (data source), define a simple query (dataset), and
configure a data region to contain your data.

Create a Data-Driven Subscription


Reporting Services provides data-driven subscriptions so that you can customize the distribution of a report
based on dynamic list of subscribers that will receive the report. Data-driven subscriptions are typically created
and maintained by report server administrators. The ability to create data-driven subscriptions requires
expertise in building queries, knowledge of data sources that contain subscriber data, and elevated permissions
on a report server.

Create a Drillthrough (RDLC) Report with Parameters using


ReportViewer
Follow the steps in this tutorial to learn how to create a drillthrough report with parameters and a filter using
the ReportViewer control.

Report Builder Tutorials


These tutorials introduce you a variety of visualizations you can create in Report Builder, such as maps and
sparklines, as well as tutorials on how to use parameters and expressions.

See Also
AdventureWorks sample databases
Reporting Services Samples on the TechNet wiki
TechNet Wiki: SQL Server 2012 Samples
Create a Basic Table Report (SSRS Tutorial)
11/2/2020 • 2 minutes to read • Edit Online

In this tutorial, you use the Report Designer tool in Visual Studio / SQL Server Data Tools (SSDT). You create a
SQL Server Reporting Services (SSRS) paginated report. The report contains a query table, created from data in
the AdventureWorks2016 database.
As you progress in this tutorial, you're going to learn how to:
create a report project.
set up a data connection.
define a query.
add a table data region.
format the report.
group and total fields.
preview the report.
optionally publish the report.

Requirements
Your system must have the following components installed to take this tutorial:
Microsoft SQL Server database engine.
SQL Server 2016 Reporting Services or later (SSRS).
The AdventureWorks2016 database. For more information, see Adventure Works Sample Databases.
SQL Server Data Tools for Visual Studio along with the Reporting Services extension installed to enable
access to the Report Designer.
You must also have read-only permissions to retrieve data from the AdventureWorks2016 database.
Estimated time to complete the tutorial: 30 minutes.

Next steps
Lesson 1: Creating a Report Server Project (Reporting Services)
Lesson 2: Specifying Connection Information (Reporting Services)
Lesson 3: Defining a Dataset for the Table Report (Reporting Services)
Lesson 4: Adding a Table to the Report (Reporting Services)
Lesson 5: Formatting a Report (Reporting Services)
Lesson 6: Adding Grouping and Totals (Reporting Services)

See also
Reporting Services Tutorials More questions? Try asking the Reporting Services forum
Lesson 1: Create a Report Server Project (Reporting
Services)
11/2/2020 • 2 minutes to read • Edit Online

In this lesson, you create a report server project and a report definition (.rdl) file using Report Designer.

NOTE
SQL Server Data Tools (SSDT) is a Microsoft Visual Studio environment for creating business intelligence solutions. SSDT
features the Report Designer authoring environment, where you can open, modify, preview, save, and deploy Reporting
Services paginated report definitions, shared data sources, shared datasets, and report parts.

When you create reports with Report Designer, it creates a report server project that contains the report files
and other resource files used by the report(s).

To create a report server project


1. From the File menu, select New > Project .

2. In the left-most column under Installed , select Repor ting Ser vices . In some cases, it may be under the
group Business Intelligence .
IMPORTANT
For VS, if you don't see Reporting Services in the left column, add the Report Designer by installing the SSDT
workload. From the Tools menu, select Get Tools and Features... and select the SQL Ser ver Data Tools from
the workloads displayed. If you don't see the Report Services objects in the center column, add the Reporting
Services extensions. From the Tools menu, select Extensions and Updates > Online . In the center column,
select Microsoft Repor ting Ser vices Projects > Download from the displayed extensions. For SSDT, See
Download SQL Server Data Tools (SSDT). In Visual Studio 2019, if previous steps didn't work, try installing
Microsoft Reporting Service Project extension.

3. Select the Repor t Ser ver Project icon in the center column of the New Project dialog box.
4. In the Name text box, type "Tutorial" for the project name. By default, the Location text box displays the
path to your "Documents\Visual Studio 20xx\Projects" folder. Report Designer creates a folder named
Tutorial below this path, and creates the Tutorial project in this folder. If the project doesn't belong to a VS
solution, then VS also creates a solution file (.sln).
5. Select OK to create the project. The Tutorial project is displayed in the Solution Explorer pane on the
right.

Creating a report definition file (RDL)


1. In the Solution Explorer pane, right-click on the Repor ts folder. If you don't see the Solution Explorer
pane, select View menu > Solution Explorer .
2. Select Add > New Item .

3. In the Add New Item window, select the Repor t icon.


4. Type "Sales Orders.rdl" into the Name text box.
5. Select the Add button on the lower right side of the Add New Item dialog box to complete the process.
Report Designer opens and displays the Sales Orders report file in Design view.
Next steps
So far you've created the Tutorial report project and the Sales Orders report. In the remaining lessons, you're
going to learn how to:
Configure a data source for the report.
Create a dataset from the data source.
Design and format the report layout.
Continue with Lesson 2: Specifying Connection Information (Reporting Services).
Lesson 2: Specifying Connection Information
(Reporting Services)
11/2/2020 • 2 minutes to read • Edit Online

In lesson 1, you added a Reporting Services paginated report to your Tutorial project.
In this lesson, you're going to define a data source, connection information the report uses to access data from a
relational database or other sources.
For this report, you're going to add the AdventureWorks2016 sample database as your data source. This tutorial
assumes that the database is located in the default instance of SQL Server Database Engine and installed on
your local computer.

To set up a connection
1. In the Repor t Data pane, select New > Data Source . If the Repor t Data pane isn't visible, then select
View menu > Repor t Data .

The Data Source Proper ties dialog box opens with the General section displayed.
2. In the Name text box, type "AdventureWorks2016".
3. Select the Embedded connection radio button.
4. In the Type dropdown selection box, select "Microsoft SQL Server".
5. In the Connection string text box, type the following string:
Data source=localhost; initial catalog=AdventureWorks2016

NOTE
This connection string assumes that SQL Server Data Tools (SSDT), the report server, and the
AdventureWorks2016 database are all installed on the local computer.
Change the connection string and replace "localhost" with the name of your database server/instance if the
assumption isn't true. If you're using SQL Server Express or a SQL Server named instance, you need to modify
your connection string to include instance information. For example:
Data source=localhost\SQLEXPRESS; initial catalog=AdventureWorks2016

For more information about connection strings, you can refer to the See also section below.

6. Select the Credentials tab, and under the section Change the credentials used to connect to the
data source , select the Use Windows Authentication (integrated security) radio button.
7. Select OK to complete the process.
Report Designer adds the data source AdventureWorks2016 to the Repor t Data pane.

Next steps
In this lesson, you've successfully defined a connection to the AdventureWorks2016 sample database. Continue
with Lesson 3: Defining a Dataset for the Table Report (Reporting Services) to define a dataset for the report.

See also
Create data connection strings - Report Builder & SSRS
Lesson 3: Define a Dataset for the Table Report -
SQL Server Reporting Services
11/2/2020 • 2 minutes to read • Edit Online

After you define the data source for the paginated report, you need to define a dataset. In Reporting Services,
data that you use in reports is contained in a dataset. A dataset includes a pointer to a data source and a query
to be used by the report, calculated fields, and variables.
Use the Query Designer in Report Designer to define the dataset. For this tutorial, you're going to create a query
that retrieves sales order information from the AdventureWorks2016 database.

Define a Transact-SQL query for report data


1. In the Repor t Data pane, select New > Dataset.... The Dataset Proper ties dialog box opens with the
Quer y section displayed.

2. In the Name text box, type "AdventureWorksDataset".


3. Below that, select the Use a dataset embedded in my repor t radio button.
4. From the Data source dropdown box, select AdventureWorks2016.
5. For the Quer y type , select the Text radio button.
6. Type, or copy and paste, the following Transact-SQL query into the Quer y text box.
SELECT
soh.OrderDate AS [Date],
soh.SalesOrderNumber AS [Order],
pps.Name AS [Subcat],
pp.Name as [Product],
SUM(sd.OrderQty) AS [Qty],
SUM(sd.LineTotal) AS [LineTotal]
FROM Sales.SalesPerson sp
INNER JOIN Sales.SalesOrderHeader AS soh
ON sp.BusinessEntityID = soh.SalesPersonID
INNER JOIN Sales.SalesOrderDetail AS sd
ON sd.SalesOrderID = soh.SalesOrderID
INNER JOIN Production.Product AS pp
ON sd.ProductID = pp.ProductID
INNER JOIN Production.ProductSubcategory AS pps
ON pp.ProductSubcategoryID = pps.ProductSubcategoryID
INNER JOIN Production.ProductCategory AS ppc
ON ppc.ProductCategoryID = pps.ProductCategoryID
GROUP BY ppc.Name, soh.OrderDate, soh.SalesOrderNumber, pps.Name, pp.Name,soh.SalesPersonID
HAVING ppc.Name = 'Clothing'

7. (Optional) Select the Quer y Designer button. The query is displayed in the text-based Query Designer.
View the results of the query by selecting the run button on the Quer y Designer toolbar. The
dataset displayed contains six fields from four tables in the AdventureWorks2016 database. The query
makes use of Transact-SQL functionality such as aliases. For example, the SalesOrderHeader table is
called soh.
8. Select OK to exit the Quer y Designer .
9. Select OK to exit the Dataset Proper ties dialog box.
The Repor t Data pane displays the AdventureWorksDataset dataset and fields.

Next steps
You've successfully specified a query that retrieves data for your report. Next, you're going to create the report
layout. Continue with Lesson 4: Adding a Table to the Report (Reporting Services).

See also
Query Design Tools (SSRS) SQL Server Connection Type (SSRS) Tutorial: Writing Transact-SQL Statements
Lesson 4: Add a Table to the Report (Reporting
Services)
11/2/2020 • 3 minutes to read • Edit Online

After you define the dataset, you can start designing the paginated report. You create a report layout by
dragging and dropping report objects from the Toolbox pane to the Design surface . Some of the types of
report objects include:
Table
Text Box
Image
Line
Rectangle
Chart
Map
Items that contain repeated rows of data from underlying datasets are called data regions. After you add a data
region, you can add fields to the data region. A basic report will have only one data region. You can add
additional ones to display more information such as a chart.

Add a table data region and fields to a report layout


1. Select the Toolbox tab in the left pane of the Report Designer. With your mouse, select the Table object
and drag it to the report design surface. Report Designer draws a table data region with three columns in
the center of the design surface. If you don't see the Toolbox tab, select View menu > Toolbox .

You can also add a table to the report from the design surface. Right-click the design surface and select
Inser t > Table .
2. In the Repor t Data pane, expand the AdventureWorksDataset to display the fields.
3. Drag the [Date] field from the Repor t Data pane to the first column in the table.

IMPORTANT
When you drop the field into the first column, two things happen. First, Report Designer displays the field name,
known as the field expression, in brackets: [Date] in the data cell. Second, it adds a column label to the header
row, just above the field expression. By default, the column label is the name of the field. You can select the column
label and type a new value if you want to change it.
4. Drag the [Order] field from the Repor t Data pane to the second column in the table.
5. Drag the [Product] field from the Repor t Data pane to the third column in the table.
6. Drag the [Qty] field to the right edge of the third column until you get a vertical cursor and the mouse
pointer displays a plus sign [+]. When you release the mouse button, a fourth column is created for the
[Qty] field expression.

7. Add the [LineTotal] field in the same way, creating a fifth column. The column label is added as "Line
Total". Report Designer automatically creates a friendly name for the column by splitting "LineTotal" into
two words.
The following diagram shows a table data region that has been populated with these fields: Date, Order, Product,

Qty, and Line Total.

Preview your report


Previewing a report enables you to view the rendered report without having to first publish it to a report server.
Preview your report frequently while designing it. By doing so, you validate the design and data connections
allowing you to correct errors and issues as you go.
To preview a report
Select the Preview tab. Report Designer runs the report and displays it in the Preview view.

The following diagram shows part of the report in Preview view.

Look at the Date and Line Total values. In the next lesson, you're going to learn how to format them to display
more neatly.

NOTE
From the File menu, select Save All to save the report.

Next steps
You've successfully added a table data region to your report, added fields to the data region, and previewed your
report. In the next lesson, you're going to learn how to format column headers and field expressions. Next,
continue with Lesson 5: Formatting a Report (Reporting Services).
See also
Tables (Report Builder and SSRS)
Dataset Fields Collection (Report Builder and SSRS)
Lesson 5: Formatting a report (Reporting Services)
11/2/2020 • 2 minutes to read • Edit Online

Now that you've added a data region and some fields to the Sales Orders report, you can format the date and
currency fields and the column headers.

Format the Date


The Date field expression displays date and time information by default. You can format it to display only the
date.
1. Select the Design tab.
2. Right-click the cell with the [Date] field expression and then select Text Box Proper ties .
3. Select Number , and then in the Categor y field, select Date .
4. In the Type box, select Januar y 31, 2000 .
5. Select OK to apply the format.
6. Preview the report to see the change to the [Date] field formatting, and then change back to design view.

Format the Currency


The LineTotal field expression displays a general number. You can format it to display the number as currency.
1. Right-click the cell with the [LineTotal] expression, and select Text Box Proper ties .
2. Select Number in the left-most column list box, and Currency from the Categor y list box.
3. If your regional setting is English (United States), the defaults in the Type list box should be:
Decimal places: 2
Negative numbers: ($12345.00)
Symbol: $ English (United States)
4. Select Use 1000 separator (,) . If the sample text displays $12,345.00 , then your settings are correct.
5. Select OK to apply the format.
6. Preview the report to see the change to the [LineTotal] expression column and then change back to design
view.

Change Text Style and Column Widths


You can add other formatting to your report by highlighting the header row, and adjusting the widths of the
data columns.
To format header rows and table columns
1. Select the table so that column and row handles appear above and next to the table. The gray bars along
the top and side of the table are the column and row handles.
2. Point to the line between column handles so that the cursor changes into a double arrow. Drag the

columns to the size you want.


3. Select the row containing column header labels and from the Format menu, select Font > Bold .
4. Preview your report. It should display as below:

5. From the File menu, select Save All to save the report.

Next steps
In this lesson, you successfully formatted column headers and field expressions. Next, you're going to add
grouping and totals to your report. Continue with Lesson 6: Adding Grouping and Totals (Reporting Services).

See also
Formatting Numbers and Dates (Report Builder and SSRS) Rendering Behaviors (Report Builder and SSRS)
Lesson 6: Adding Grouping and Totals (Reporting
Services)
11/2/2020 • 4 minutes to read • Edit Online

In the final tutorial lesson, you're going to add grouping and totals to your Reporting Services report to organize
and summarize your data.

To group data in a report


1. Select the Design tab.
2. If you don't see the Row Groups pane, right-click the design surface and select View >Grouping .
3. From the Repor t Data pane, drag the [Date] field to the Row Groups pane. Place it above the row
displayed as = (Details) .

NOTE
Note that the row handle now has a bracket in it, to indicate a group. The table now also has two [Date]
expression columns, one on both sides of a vertical dotted line.

4. From the Repor t Data pane, drag the [Order] field to the Row Groups pane. Place it below Date and
above = (Details) .

NOTE

Note that now the row handle has two brackets in it, to indicate two groups. The table now also has two
[Order] expression columns.

5. Delete the original [Date] and [Order] expression columns to the right of the double line. Select the
column handles for the two columns, right-click and select Delete Columns . Report Designer removes
the individual row expressions, so that only the group expressions are displayed.
6. To format the new [Date] column, right-click the data region cell that contains the [Date] expression,
and select Text Box Proper ties .
7. Select Number in the left-most column list box, and Date from the Categor y list box.
8. In the Type list box, select Januar y 31, 2000 .
9. Select OK to apply the format.
10. Again, preview the report. It should look as below:

Adding totals to a report


1. Switch to the Design view.
2. Right-click the data region cell that contains the [LineTotal] expression, and select Add Total . Report
Designer adds a row with a sum of the dollar amount for each order.
3. Right-click the cell that contains the field [Qty] , and select Add Total . Report Designer adds a sum of
the quantity for each order to the totals row.
4. In the empty cell to the left of the Sum[Qty] cell, type the string "Order Total".
5. You can add a background color to the totals row. Select the two sum cells and the label cell.
6. From the Format menu, select Background Color > Light Gray square.
7. Select OK to apply the format.

Add the daily total to the report


1. Right-click the [Order] expression cell, and select Add Total > After . Report Designer adds a new row
containing sums of the [Qty] and [Linetotal] values for each day, and the string "Total" to the bottom
of the [Order] expression column.
2. Type the word "Daily" before the word "Total" in the same cell, so it reads "Daily Total".
3. Select that cell and the two adjacent total cells to the right and the empty cell in between them.
4. From the Format menu, select Background Color > Orange square.
5. Select OK to apply the format.
Add the grand total to the report
1. Right-click the [Date] expression cell, and select Add Total > After . Report Designer adds a new row
containing sums of the [Qty] and [LineTotal] values for the entire report, and the string "Total" to the
bottom of the [Date] expression column.
2. Type the string "Grand" before the word "Total" in the same cell, so it reads "Grand Total".
3. Select the cell with "Grand Total", the two Sum() expression cells and the empty cells between them.
4. From the Format menu, select Background Color > Light Blue square.
5. Select OK to apply the format.

Preview the report


To preview the format changes, select the Preview tab. In the Preview toolbar, select the Last Page button,
which looks like . The results should display as below:

Publishing the report to the Report Server (Optional)


An optional step is to publish the completed report to the Report Server so you can view the report in the web
portal.
1. Select Project menu > Tutorial Proper ties...
2. In the TargetSer verURL , type the name of your report server, for example:
http:/<servername>/reportserver or
https://localhost/reportserver works if you're designing the report on the report server.
3. The TargetRepor tFolder is named Tutorial from the name of the project. Report Designer deploys the
report to this folder.
4. Select OK .
5. Select Build menu > Deploy Tutorial .
If you see a message like below in the Output window, it indicates a successful deployment.

------ Build started: Project: tutorial, Configuration: Debug ------


Skipping 'Sales Orders.rdl'. Item is up to date.
Build complete -- 0 errors, 0 warnings
------ Deploy started: Project: tutorial, Configuration: Debug ------
Deploying to https://[server name]/reportserver
Deploying report '/tutorial/Sales Orders'.
Deploy complete -- 0 errors, 0 warnings
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========
========== Deploy: 1 succeeded, 0 failed, 0 skipped ==========

If you see an error message similar to below, verify you've the appropriate permissions on the report
server and you've started SQL Server Data Tools with administrator privileges.

"The permissions granted to user 'XXXXXXXX\[your user name]' are insufficient for performing this
operation"

6. Open a browser with administrator privileges. For example, right-click the icon for Internet Explorer and
select Run as administrator .
7. Browse to the web portal URL.
https://<server name>/reports .
https://localhost/reports works if you're designing the report on the report server.

8. Select the Tutorial folder, and then select the "Sales Orders" report to view the report.

You've successfully completed the Creating a Basic Table Repor t tutorial .

See also
Filter, Group, and Sort Data (Report Builder and SSRS)
Create a Data-Driven Subscription (SSRS Tutorial)
11/2/2020 • 3 minutes to read • Edit Online

This Reporting Services tutorial teaches you the concepts of data-driven subscriptions by walking you through a
simple example that creates a data-driven subscription to generate and save filtered report output to a file
share. Reporting Services data-driven subscriptions allow you to customize and automate the distribution of a
report based on dynamic subscriber data. Data-driven subscriptions are intended for the following kinds of
scenarios:
Distributing reports to a large recipient pool whose membership may change from one distribution to
the next. For example, email a monthly report to all current customers.
Distributing reports to a specific group of recipients based on predefined criteria. For example, send a
sales performance report to all of the sales managers in an organization.
Automate the generation of reports in a wide variety of formats, for example .xlsx and .pdf.

What You Will Learn


This tutorial is divided into three lessons:

L ESSO N C O M M EN T S

Lesson 1: Create a Sample Subscriber Database In this lesson you will create a table local SQL Server
database that contains subscriber information. the
information Order Numbers to use for filtering and output
file formats.

Lesson 2: Configure Report Data Source Properties In this lesson, you will configure a report data source so that
the report can run unattended on a schedule. Unattended
processing requires stored credentials. You will also modify
the report dataset to include a parameter that is supplied by
the subscriber data. This parameter is used to filter the
report data based on order number.

Lesson 3: Define a Data-Driven Subscription In this lesson you will create a data-driven subscription. This
lesson guides you through each page in the Data-Driven
Subscription Wizard.

The following diagram illustrates the basic workflow of the tutorial:

ST EP DESC RIP T IO N

(1) The subscription configuration notes the source report,


schedule, and the field mapping to the subscribers Database.

(2) The OrderInfo table contains 4 order numbers to use for


filtering, 1 per file. The table also contains the file formats for
the generated reports.

(3) Information from the Adventureworks database is filtered


and return in the report.
ST EP DESC RIP T IO N

(4) The reports are created in the file formats specified in the
Orderinfo table.

Requirements
Data-driven subscriptions are typically created and maintained by report server administrators. The steps to
create data-driven subscriptions require building queries, knowledge of data sources that contain subscriber
data, and elevated permissions on a report server.
The tutorial uses the Sales order report created in the tutorial Create a Basic Table Report (SSRS Tutorial) and
data from the sample database AdventureWorks2014 .
Your computer must have the following installed to use this tutorial:
An edition of SQL Server that supports data-driven subscriptions. For more information, see Editions and
Features of SQL Server 2017.
The report server must be running in native mode. The user interface described in this tutorial is based
on a native mode report server. Subscriptions are supported on SharePoint mode report servers but the
user interface will be different than what is described in this tutorial.
SQL Server Agent service must be running.
A report that includes parameters. This tutorial assumes the sample report, Sales Orders you create
using the tutorial Create a Basic Table Report (SSRS Tutorial).
The AdventureWorks2014 sample database, which provides data to the sample report.
A Reporting Services role assignment that includes the Manage all subscriptions task on the sample
report. This task is required for defining a data-driven subscription. If you are an administrator on the
computer, the default role assignment for local administrators provides the permissions necessary for
creating data-driven subscriptions. For more information, see Granting Permissions on a Native Mode
Report Server.
A shared folder for which you have write permissions. The shared folder must be accessible over a
network connection.
Estimated time to complete the tutorial: 30 minutes. An additional 30 minutes if you have not completed
the basic report tutorial.

See Also
Data-Driven Subscriptions
Create a Basic Table Report (SSRS Tutorial)
Lesson 1: Creating a Sample Subscriber Database
11/2/2020 • 2 minutes to read • Edit Online

In this Reporting Services tutorial lesson, you create a small "subscriber" database to store subscription data that
will be used by a data-driven subscription. When the subscription is processed, the report server retrieves this
data and uses it to customize report output. For example, the rows of data include specific order numbers to use
for filters and what file format generated reports will be in when they are created.
This lesson assumes you are using SQL Server Management Studio to create a SQL Server database.
To create a sample Subscriber database
1. Start Management Studio, and open a connection to an instance of the SQL Server Database Engine.
2. Right-click on Databases, select New Database....
3. In the New Database dialog box, in Database Name , type Subscribers.
4. Click OK .
5. Click the New Quer y button on the toolbar.
6. Copy the following Transact-SQL statements into the empty query:

Use Subscribers
CREATE TABLE [dbo].[OrderInfo] (
[SubscriptionID] [int] NOT NULL PRIMARY KEY ,
[Order] [nvarchar] (20) NOT NULL,
[FileType] [bit],
[Format] [nvarchar] (20) NOT NULL ,
) ON [PRIMARY]
GO

INSERT INTO [dbo].[OrderInfo] (SubscriptionID, [Order], FileType, Format)


VALUES ('1', 'so43659', '1', 'IMAGE')
INSERT INTO [dbo].[OrderInfo] (SubscriptionID, [Order], FileType, Format)
VALUES ('2', 'so43664', '1', 'MHTML')
INSERT INTO [dbo].[OrderInfo] (SubscriptionID, [Order], FileType, Format)
VALUES ('3', 'so43668', '1', 'PDF')
INSERT INTO [dbo].[OrderInfo] (SubscriptionID, [Order], FileType, Format)
VALUES ('4', 'so71949', '1', 'Excel')
GO

7. Click ! Execute on the toolbar.


8. Use a SELECT statement to verify that you have three rows of data. For example: select * from OrderInfo

Next Steps
You have successfully created the subscription data that will drive report distribution and vary the report
output for each subscriber.
Next, you will modify the data source properties of the report to use stored credentials.
You will also modify the report design to include a parameter that the subscription will use with the
subscriber data. Lesson 2: Modifying the Report Data Source Properties.

Next steps
Create a Data-Driven Subscription
Create a Database
Create a Basic Table Report
More questions? Try asking the Reporting Services forum
Lesson 2: Modifying the Report Data Source
Properties
11/2/2020 • 3 minutes to read • Edit Online

In this Reporting Services tutorial lesson, you use web portal to select a report that will be delivered to
recipients. The data-driven subscription that you will define will distribute the Sales Order report created in the
tutorial Create a Basic Table Report (SSRS Tutorial). In the steps that follow, you will modify the data source
connection information used by the report to get data. Only reports that use stored credentials to access a
report data source can be distributed through a data-driven subscription. Stored credentials are necessary for
unattended report processing.
You will also modify the dataset and report to use a parameter to filter the report on the [Order] so the
subscription can output different instances of the report for specific orders and rendering formats.

To Modify the Data Source to use stored credentials


1. Browse to the Reporting Services web portal with administrator privileges, for example, right-click the
icon for Internet Explorer and click Run as administrator .
2. Browse to the web portal URL. For example:
https://<server name>/reports .
https://localhost/reports Note: The web portal URL is "Reports", not the Report Server URL of
"Reportserver".
3. Browse to the folder containing the Sales Orders report and in the context menu of the report, click
Manage .

3. Click Data Sources in the left pane.


4. Verify the Connection Type is Microsoft SQL Ser ver .
5. Verify the connection string is the following and it assumes that the sample database is on a local
database server:

Data source=localhost; initial catalog=AdventureWorks2014

6. Click Use the following credentials .


7. In the Type of credentials , select Windows user name and password
8. Type your user name (use the format domain\user) and password. If you do not have permission to
access the AdventureWorks2014 database, specify a login that does.
9. Click Test Connection to verify you can connect to the data source.
10. Click Save .
11. Click Cancel
12. View the report to verify that the report runs with the credentials you specified. .

To Modify the AdventureWorksDataset


In the following steps you will modify the dataset to use a parameter to filter the data set based an order
number.
1. Open the Sales Orders report in SQL Server Data Tools
2. Right-click the dataset AdventureWorksDataset and click Dataset Proper ties .

3. Add the statement WHERE (UPPER(SalesOrderNumber) =UPPER(@OrderNumber) or @OrderNumber IS NULL) before


the Group By statement. The full query syntax is the following:

SELECT soh.OrderDate AS Date, soh.SalesOrderNumber AS [Order], pps.Name AS Subcat, pp.Name AS


Product, SUM(sd.OrderQty) AS Qty, SUM(sd.LineTotal) AS LineTotal
FROM Sales.SalesPerson AS sp INNER JOIN
Sales.SalesOrderHeader AS soh ON sp.BusinessEntityID = soh.SalesPersonID INNER JOIN
Sales.SalesOrderDetail AS sd ON sd.SalesOrderID = soh.SalesOrderID INNER JOIN
Production.Product AS pp ON sd.ProductID = pp.ProductID
INNER JOIN
Production.ProductSubcategory AS pps ON pp.ProductSubcategoryID = pps.ProductSubcategoryID
INNER JOIN
Production.ProductCategory AS ppc ON ppc.ProductCategoryID = pps.ProductCategoryID

WHERE (UPPER(SalesOrderNumber) =UPPER(@OrderNumber) or @OrderNumber IS NULL)

GROUP BY ppc.Name, soh.OrderDate, soh.SalesOrderNumber, pps.Name, pp.Name, soh.SalesPersonID


HAVING (ppc.Name = 'Clothing')

4. Click OK
In the following steps you will add a parameter to the report. The report parameter feeds the dataset
parameter.

To Add a Report Parameter and Republish the Report


1. In the Repor t Data pane expand the parameters folder and double-click the Ordernumber parameter. It
was created automatically as part of the previous steps when you added the parameter to the dataset.
click New and then click Parameter...
2. Verify the Name is OrderNumber .
3. Verify the Prompt is OrderNumber .
4. Select Allow blank value ("") .
5. Select Allow null value .
6. Click OK .
7. Click the Preview tab to run the report. Note the parameter input box at the top of the report. You can
either:
Click View Report to see the full report without using a parameter.
Unselect the Null option and type an order number, for example so71949, then click View Repor t
to view only the one order in the report.

Re-deploy the Report


1. Re-deploy the report so the subscription configuration in the next lesson can utilize the changes you
made in this lesson. For more information on the project properties used in the table tutorial, see section
'To Publish the Report to the Report Server (Optional)' of Lesson 6: Adding Grouping and Totals
(Reporting Services).
2. On the toolbar click Build and then click Deploy tutorial .

Next Steps
You successfully configured the report to get data using stored credentials and the data can be filtered with a
parameter.
In the next lesson, you configure the subscription using the web portal Data-Driven Subscription pages. See
Lesson 3: Defining a Data-Driven Subscription.

See Also
Manage Report Data Sources
Specify Credential and Connection Information for Report Data Sources
Create a Data-Driven Subscription (SSRS Tutorial)
Create a Basic Table Report (SSRS Tutorial)
Lesson 3: Defining a Data-Driven Subscription
11/2/2020 • 3 minutes to read • Edit Online

In this Reporting Services tutorial lesson, you use the Reporting Services web portal's data-driven subscription
pages to connect to a subscription data source, build a query that retrieves subscription data, and map the result
set to report and delivery options.

NOTE
Before you start, verify that SQL Ser ver Agent service is running. If it is not running, you cannot save the subscription.
One method for verification is to open the SQL Server Configuration Manager. This lesson assumes you completed
Lesson 1 and Lesson 2 and that the report data source uses stored credentials. For more information, see Lesson 2:
Modifying the Report Data Source Properties

Start the Data-Driven Subscription Wizard


1. In Reporting Services web portal, click Home , and navigate to the folder containing the Sales Orders
report.

2. In the context menu of the report, click Manage , and then click Subscriptions in the left pane.
3. Click + New Subscription . If you do not see this button, you do not have Content Manager
permissions.

Define a description
1. Type Sales Order deliver y in description.

Type
1. click Data-driven subscription ..

Schedule
1. In the schedule section click Repor t-specific schedule .
2. Click Edit schedule .
3. In Schedule Details , click Once .
4. Specify a start time that is a few minutes ahead of the current time.
5. Specify the Star t and end dates .
6. Select Apply .

Destination
1. In the Destination section, Select Windows File Share for the method of delivery.

Dataset
1. click Edit Dataset .
2. Select A custom data source .
3. Select Microsoft SQL Ser ver as the data source Connection type.
4. In Connection string, type the following connection string. Subscribers is the database you created in
lesson 1.

data source=localhost; initial catalog=Subscribers

Credentials
1. Select Using the following credentials .
2. Select Windows user name and password .
3. In User Name and Password , type your domain user name and password. Include both the domain and
user account when specifying User Name .

NOTE
Credentials used to connect to a subscriber data source are not passed back to Management Studio. If you modify the
subscription later, you must retype the password used to connect to the data source.

Query
1. In the query box, type the following query:

Select * from OrderInfo

2. Specify a time-out of 30 seconds.


3. Click Validate quer y , and then click Apply .

Delivery Options
Fill in the following values:

PA RA M ET ER SO URC E O F VA L UE VA L UE/ F IEL D

File name Get value from dataset Order

Path Enter value In the Value, type the name of a public


file share for which you have write
permissions (for example,
\\mycomputer\public\myreports ).

Render Format Get value from dataset Format

Enter value Autoincrement

File Extension Enter value True

User Name Enter value Type your domain user account. Enter
it in this format: <domain>\
<account>. The user account needs to
have permissions to the path you
configured.
PA RA M ET ER SO URC E O F VA L UE VA L UE/ F IEL D

Password Enter value Type your password

Use file share account Enter value False

Report parameters
1. In the OrderNumber field , select Get value from dataset . In Value, select Order .
2. Select Create Subscription .

Next steps
When the subscription runs, four report files will be delivered to the file share you specified, one for each order
in the Subscribers data source. Each delivery should be unique in terms of data (the data should be order-
specific), rendering format, and file format. You can open each report from the shared folder to verify that each
version is customized based on the subscription options you defined.

The subscription page in the web portal will contain the Last Run date and Status of the subscription.

NOTE
Refresh the page after the subscription runs to see the updated information.

This step concludes the tutorial "Define a Data-Driven Subscription".

See Also
Subscriptions and Delivery (Reporting Services)
Data-Driven Subscriptions
Create, Modify, and Delete Data-Driven Subscriptions
Use an External Data Source for Subscriber Data (Data-Driven Subscription)
Create Drillthrough (RDLC) Report with Parameters
- ReportViewer
11/2/2020 • 2 minutes to read • Edit Online

A drillthrough report is a report that a user opens by clicking a link within another report. Drillthrough reports
commonly contain details about an item that is contained in an original summary report. This tutorial will walk
you through the following lessons of creating a drillthrough report with parameters and a query, in local mode
reporting.

Requirements
To use this walkthrough, you must have access to the AdventureWorks2014 sample database. For more
information about how to get the AdventureWorks2014 sample database, see AdventureWorks sample
databases.
This walkthrough assumes that you are familiar with Transaction-SQL queries and ADO.NET DataSet and
DataTable objects.
Use Visual Studio 2015, and the ASP.NET Web Application, to create an ASP.NET webpage with a ReportViewer
control. The control is configured to view a report that you create. For this walkthrough, you create the
application in Microsoft Visual C#.

Tasks
Lesson 1: Create a New Web Site
Lesson 2: Define a Data Connection and Data Table for Parent Report
Lesson 3: Design the Parent Report using the Report Wizard
Lesson 4: Define a Data Connection and Data Table for Child Report
Lesson 5: Design the Child Report using the Report Wizard
Lesson 6: Add a ReportViewer Control to the Application
Lesson 7: Add Drillthrough Action on Parent Report
Lesson 8: Create a Data Filter
Lesson 9: Build and Run the Application

See Also
Reporting Services Tutorials (SSRS)
Design Reports with Report Designer (SSRS)
Lesson 1: Create a new website
11/2/2020 • 2 minutes to read • Edit Online

In this lesson you'll learn how to create a new website project using the ASP.NET website template for Visual C#.

To create a new website


1. Open Microsoft Visual Studio 2015.
2. On the File menu, point to New , and select Web Site .
3. In the New Web Site dialog box, in the Installed Templates pane, select Visual C# and then choose
ASP.NET Repor ts Web Site .
4. In the Location box, specify a project directory and select OK .
The website project opens and will launch the Repor t Wizard . Cancel out of the Data Source and Report
Wizard as we will create a custom dataset in the next step.

Next task
You've successfully created a new website project. Next, you will create a data connection and a data table for the
parent report. See Lesson 2: Define a Data Connection and Data Table for Parent Report.
Lesson 2: Define a Data Connection and Data Table
for Parent Report
11/2/2020 • 2 minutes to read • Edit Online

After you create a new website project using the ASP.NET website template for Visual C#, your next step is to
create a data connection and a data table for the parent report. In this tutorial the data connection is to the
AdventureWorks2014 database.

To define a data connection and Data Table by adding a DataSet (for


parent report)
1. On the Website menu, select Add New Item .
2. In the Add New Item dialog box, select DataSet and select Add . When prompted you should add the
item to the App_Code folder by selecting Yes .
This adds a new XSD file DataSet1.xsd to the project and opens the DataSet Designer.
3. From the Toolbox window, drag a TableAdapter control to the design surface. This launches the
TableAdapter Configuration Wizard.
4. On the Choose Your Data Connection page, select New Connection .
5. If this is the first time you've created a data source in Visual Studio, you will see the Choose Data
Source page. In the Data Source box, select Microsoft SQL Ser ver .
6. In the Add Connection dialog box, perform the following steps:
a. In the Ser ver name box, enter the server where the AdventureWorks2014 database is located.
The default SQL Server Express instance is (local)\sqlexpress .
b. In the Log on to the ser ver section, select the option that provides you access to the data. Use
Windows Authentication is the default.
c. From the Select or enter a database name drop-down list, select AdventureWorks2014 .
d. Select OK , and then select Next .
7. If you selected Use SQL Ser ver Authentication in the Step 6 (b), select the option whether to include
the sensitive data in the string or set the information in your application code.
8. On the Save the Connection String to the Application Configuration File page, type in the name
for the connection string or accept the default AdventureWorks2014ConnectionString . Select Next .
9. On the Choose a Command Type page, select Use SQL Statements , and then select Next .
10. On the Enter a SQL Statement page, enter the following Transact-SQL query to retrieve data from the
AdventureWorks2014 database, and then select Next .

SELECT ProductID, Name, ProductNumber, SafetyStockLevel, ReorderPoint FROM Production.Product Order


By ProductID

You can also create the query by selecting Quer y Builder , and then verify the query by selecting
Execute Quer y . If the query does not return the expected data, you might be using an earlier version of
AdventureWorks. For more information about how to get the AdventureWorks2014 sample database,
see AdventureWorks sample databases.
11. On the Choose Methods to Generate page, be sure to uncheck Create methods to send updates
directly to the database (GenerateDBDirectMethods) , and then select Finish .

WARNING
Be sure to uncheck Create methods to send updates directly to the database
(GenerateDBDirectMethods)

You have now completed configuring the ADO.NET DataTable object as the data source for your report.
On the DataSet Designer page in Visual Studio, you should see the DataTable object you added, listing the
columns specified in the query. DataSet1 contains the data from the Product table, based on the query.
12. Save the file.
13. To preview the data, select Preview Data on the Data menu, and then select Preview .

Next Task
You have successfully created a data connection and a data table for the parent report. Next, you will design the
parent report using the Report Wizard. See Lesson 3: Design the Parent Report using the Report Wizard.
Lesson 3: Design the Parent Report using the
Report Wizard
11/2/2020 • 2 minutes to read • Edit Online

After you create a data connection and a data table for the parent report, your next step is to design the parent
report using the Report Wizard in Report Designer. For more information about Report Designer, see Design
Reports with Report Designer (SSRS).
To design the parent report using the Report Wizard
1. Make sure that the top-level website is selected in Solution Explorer .
2. Right-click on the website and select Add New Item .
3. In the Add New Item dialog box, select Repor t Wizard , enter a name for the report file, and then select
Add .
This launches the Report Wizard.
4. On the Dataset Proper ties page, in the Data source box, select the DataSet1 you created in Lesson 2:
Define a Data Connection and Data Table for Parent Report.
The Available datasets box is automatically updated with the DataTable you created above.
5. Select Next .
6. In the Arrange Fields page do the following:
a. Drag ProductID , Name , ProductNumber , SafetyStockLevel , and ReorderLevel from
Available fields to the Values box.
b. Select the arrow next to Sum(ProductID) , Sum(SafetyStockLevel) , Sum(ReorderLevel) and
clear the Sum selection.
7. Select Next twice, then select Finish to close the Repor t Wizard .
You've now created the .rdlc file. The file opens in Report Designer. The tablix you designed is now
displayed in the design surface.
8. Save the .rdlc file.

Next Task
You have successfully designed the parent report using the Report Wizard. Next, you will create a data
connection and a data table for the child report. See Lesson 4: Define a Data Connection and Data Table for Child
Report.
Lesson 4: Define a Data Connection and Data Table
for Child Report
11/2/2020 • 2 minutes to read • Edit Online

After you design the parent report, you next step is to create a data connection and a data table for the child
report. In this tutorial the data connection is to the AdventureWorks2014 database.
To define a data connection and DataTable by adding a DataSet (for child report)
1. On the Website menu, select Add New Item .
2. In the Add New Item dialog box, select DataSet and then select Add . When prompted, you should add
the item to the App_Code folder by selecting Yes .
This adds a new XSD file DataSet2.xsd to the project and opens the DataSet Designer.
3. From the Toolbox window, drag a TableAdapter control to the design surface. This launches the
TableAdapter Configuration Wizard.
4. On the Choose Your Data Connection page, you can select the connection you created in Lesson 2. If
you did, select Next and go to step 8. Otherwise, select New Connection .
5. In the Add Connection dialog box, perform the following steps:
a. In the Ser ver name box, enter the server where the AdventureWorks2014 database is located.
The default SQL Server Express instance is (local)\sqlexpress .
b. In the Log on to the ser ver section, select the option that provides you access to the data. Use
Windows Authentication is the default.
c. From the Select or enter a database name drop-down list, select AdventureWorks2014 .
d. Select OK , and then select Next .
6. If you selected Use SQL Ser ver Authentication in Step 5 (b), select the option whether to include the
sensitive data in the string or set the information in your application code.
7. On the Save the Connection String to the Application Configuration File page, type in the name
for the connection string or accept the default AdventureWorks2014ConnectionString . Select Next .
8. On the Choose a Command Type page, select Use SQL Statements , and then select Next .
9. On the Enter a SQL Statement page, enter the following Transact-SQL query to retrieve data from the
AdventureWorks2014 database, and then select Next .

SELECT PurchaseOrderID, PurchaseOrderDetailID, OrderQty, ProductID, ReceivedQty, RejectedQty,


StockedQty FROM Purchasing.PurchaseOrderDetail

You can also create the query by selecting Quer y Builder , and then verify the query by selecting
Execute Quer y button. If the query does not return the expected data, you might be using an earlier
version of AdventureWorks. For more information about how to get the AdventureWorks2014 sample
database, see AdventureWorks sample databases.
10. On the Choose Methods to Generate page, uncheck Create methods to send updates directly to
the database (GenerateDBDirectMethods) , and then select Finish .

WARNING
Be sure to uncheck Create methods to send updates directly to the database
(GenerateDBDirectMethods)

You have now completed configuring the ADO.NET DataTable as a data source for your report. On the
DataSet Designer page in Visual Studio, you should see the DataTable you added, listing the columns
specified in the query. DataSet2 contains the data from the PurhcaseOrderDetail table, based on the
query.
11. Save the file.
12. To preview the data, select Preview Data on the Data menu, and then select Preview .

Next Task
You have successfully created a data connection and data table for the child report. Next, you will design the
child report using the Report Wizard. See Lesson 5: Design the Child Report using the Report Wizard.
Lesson 5: Design the Child Report using the Report
Wizard
11/2/2020 • 2 minutes to read • Edit Online

After you create a data connection and data table for the child report, your next step is to design the child report
using the Report Wizard in Report Designer. For more information about Report Designer, see Design Reports
with Report Designer (SSRS).
To design the child report using the Report Wizard
1. Make sure that the top-level website is selected in Solution Explorer .
2. Right-click on the website and select Add New Item .
3. In the Add New Item dialog box, click Repor t Wizard , enter a name for the report file, and then select
Add .
This launches the Report Wizard.
4. In the Dataset Proper ties page, in the Data source box, select DataSet2 .
The Available datasets box is automatically updated with the DataTable you created.
5. Select Next .
6. In the Arrange Fields page do the following:
a. Drag ProductID , PurchaseOrderID , PurchaseOrderDetailID , OrderQty , ReceivedQty ,
RejectedQty , and StockedQty from Available Fields to the Values box.
b. Select the arrow next to Sum(ProductID) , Sum(PurchaseOrderID) ,
Sum(PurchaseOrderDetailID) , Sum(OrderQty) , Sum(ReceivedQty) , Sum(RejectedQty) ,
and Sum(StockedQty) and clear the Sum selection.
7. Select Next twice, then Select Finish to close the Repor t Wizard .
You've now created the .rdlc file. The file opens in Report Designer. The tablix you designed is now
displayed in the design surface.
8. With the .rdlc file open, add a parameter by doing the following:
a. Right-click Parameters in the Repor t Data pane, and then select Add Parameters .
b. Enter productid in the Name box.
c. Confirm that Integer is selected in the Data Type list box.
d. Click OK .
9. Save the .rdlc file.

Next Task
You have successfully designed the child report by using the Report Wizard. Next, you will add a ReportViewer
control to the website application. See Lesson 6: Add a ReportViewer Control to the Application.
Lesson 6: Add a ReportViewer Control to the
Application
11/2/2020 • 2 minutes to read • Edit Online

After you design the child report by using the Report Wizard, your next step is to add a ReportViewer control to
the website application. If you are using the ASP.NET Reports Web Site, it will have added the ReportViewer
control to the default.aspx page.
To add a ReportViewer control to the application
1. In Solution Explorer , right-click Default.aspx , and then click View Designer .
2. If default.aspx already has the ReportViewer Control on it, skip to Step 4 . Otherwise, From the AJAX
Extensions group in the Toolbox window, drag a ScriptManager control to the design surface.
3. From the Repor ting group, drag a Repor tViewer control to the design surface below the
ScriptManager control.
4. Open the Repor tViewer Tasks window by clicking the arrow in the top right-hand corner of the
Repor tViewer control.
5. In the Choose Repor t box, select the parent report you created.
When you select a report, instances of data sources used in the report are created automatically. Code is
generated to instantiate each DataTable (and its DataSet container). An ObjectDataSource control is added
to the design surface, corresponding to each data source used in the report. This data source control is
configured automatically.
6. On the Build menu, click Build website.
The report is compiled and any errors such as a syntax error in a report expression appear in the Error
List area. Click Error List at the bottom of the Visual Studio window to display the Error List area.

Next Task
You have successfully added a ReportViewer control to the website application. Next, you will add a drillthrough
action on the parent report. See Lesson 7: Add Drillthrough Action on Parent Report.
Lesson 7: Add Drillthrough Action on Parent Report
11/2/2020 • 2 minutes to read • Edit Online

After you add a ReportViewer control to the website application, your next step is to add a drillthrough action on
the parent report.
To add drillthrough action on the parent report
1. Go to the parent report.
2. Select the textbox that holds the value of Name .
3. Right-click the textbox, and then select Text Box Proper ties .
4. Go to the Action tab, and then select the Go to repor t option.
5. Enter the name of the child report in the Specify a repor t section.

NOTE
Do not include the file extension for the report name.

6. Select Add under Use these parameters to run the repor t section.
7. Type productid in the name box, and then select ProductID in the Value drop-down list.
8. Select Ok to finish.

Next Task
You have successfully added a drillthrough action on the parent report. Next, you will create a data filter for the
data table that you defined for the child report. See Lesson 8: Create a Data Filter.
Lesson 8: Create a Data Filter
11/2/2020 • 7 minutes to read • Edit Online

After you add a drillthrough action on the parent report, your next step is to create a data filter for the data table
that you defined for the child report.
You can create a table-based filter or a query filter for the drillthrough report. This lesson provides instructions
for both options.

Table-Based Filter
You need to complete the following tasks to implement a table-based filter.
Add a filter expression to the tablix in the child report.
Create a function that selects unfiltered data from the PurchaseOrderDetail table.
Add an event handler that binds the PurchaseOrderDetail DataTable to the child report.
To add a filter expression to the tablix in the child report
1. Open the child report.
2. Select a column heading in the tablix, right-click the gray cell that appears above the column heading, and
then select Tablix Proper ties .
3. Select on the Filters page, and then select Add .
4. In the Expression filed, select ProductID from the drop-down list. This is the column to which you apply
the filter.
5. Select the equal (= ) operator in the Operator drop-down list.
6. Select the expression button next to the Value field, select Parameters in the Categor y area, and then
double-click productid in the Values area. The Set expression for : Value field should now contain
expression similar to =Parameters!productid.Value .
7. Select OK, and OK again in the Tablix Proper ties dialog box.
8. Save the .rdlc file.
To create a function that selects unfiltered data from the PurchaseOrdeDetail table
1. In Solution Explorer, expand Default.aspx, and then double click Default.aspx.cs.
2. Create a new function that accepts a parameter, productid , of type Integer and returns a datatable
object, and does the following.
a. Creates an instance of the dataset, DataSet2 , which was created in Step 2 of Lesson 4: Define a
Data Connection and Data Table for Child Report.
b. Create a connection to the SqlServer database to execute the query defined in Lesson 4: Define
a Data Connection and DataTable for Child Repor t .
c. The query will return unfiltered data.
d. Fill the DataSet instance with the unfiltered data by executing the query.
e. Return the PurchaseOrderDetail DataTable.
The function will look similar to the one below, (This is just for your reference. You can follow any
pattern that you want, to fetch the necessary data for child report).

/// <summary>
/// Function to query PurchaseOrderDetail table, fetch the
/// unfiltered data and bind it with the Child report
/// </summary>
/// <returns>A dataTable of type PurchaseOrderDetail</returns>
private DataTable GetPurchaseOrderDetail()
{
try
{
//Create the instance for the typed dataset, DataSet2 which will
//hold the [PurchaseOrderDetail] table details.
//The dataset was created as part of the tutorial in Step 4.
DataSet2 ds = new DataSet2();

//Create a SQL Connection to the AdventureWorks2008 database using Windows


Authentication.
using (SqlConnection sqlconn = new SqlConnection("Data Source=.;Initial
Catalog=Adventureworks2014;Integrated Security=SSPI"))
{
//Building the dynamic query with the parameter ProductID.
SqlDataAdapter adap = new SqlDataAdapter("SELECT PurchaseOrderID,
PurchaseOrderDetailID, OrderQty, ProductID, ReceivedQty, RejectedQty, StockedQty FROM
Purchasing.PurchaseOrderDetail ", sqlconn);
//Executing the QUERY and fill the dataset with the PurchaseOrderDetail table
data.
adap.Fill(ds, "PurchaseOrderDetail");
}

//Return the PurchaseOrderDetail table for the Report Data Source.


return ds.PurchaseOrderDetail;
}
catch
{
throw;
}
}

To add an event handler that binds the PurchaseOrderDetail DataTable to the child report
1. Open Default.aspx in designer view.
2. Right-click the ReportViewer control, and then select Proper ties .
3. On the Proper ties page, select the Events icon.
4. Double-click the Drillthrough event.
This will add an event handler section in the code, which will look similar to the below block.

protected void ReportViewer1_Drillthrough(object sender,


Microsoft.Reporting.WebForms.DrillthroughEventArgs e)
{
}

5. Complete the event handler. It should include the following functionalty.


a. Fetch the child report object reference from the DrillthroughEventArgs parameter.
b. Call the function, GetPurchaseOrderDetail
c. Bind the PurchaseOrderDetail DataTable with the report's corresponding data source.
The completed event handler code will look similar to the following.

protected void ReportViewer1_Drillthrough(object sender,


Microsoft.Reporting.WebForms.DrillthroughEventArgs e)
{
try
{
//Get the instance of the Target report.
LocalReport report = (LocalReport)e.Report;

//Binding the DataTable to the Child report dataset.


//The name DataSet1 which can be located from,
//Go to Design view of Child.rdlc, Click View menu -> Report Data
//You'll see this name under DataSet2.
report.DataSources.Add(new ReportDataSource("DataSet1",
GetPurchaseOrderDetail()));
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
}

6. Save the file.

Query Filter
You need to complete the following tasks to implement a query filter.
Create a function that selected filtered data from the PurchaseOrderDetail table.
Add an event handler that retrieves parameter values and binds the PurchaseOrdeDetail DataTable to
the child report.
To create a function that selects filtered data from the PurchaseOrderDetail table
1. In Solution Explorer, expand Default.aspx, and then double click Default.aspx.cs.
2. Create a new function that accepts a parameter, productid , of type Integer and returns a datatable
object and does the following.
a. Creates an instance of the dataset, DataSet2 , which was created in Step 2 of Lesson 4: Define a
Data Connection and Data Table for Child Report.
b. Create a connection to the SqlServer database to execute the query defined Lesson 4: Define a
Data Connection and DataTable for Child Repor t .
c. The query will include a parameter, productid , to make sure the data returned is filtered based on
the ProductID selected in the parent report.
d. Fill the DataSet instance with the filtered data by executing the query.
e. Return the PurchaseOrderDetail DataTable.
The function will look similar to the one below, (This is just for your reference. You can follow any
pattern that you want, to fetch the necessary data for child report).
/// <summary>
/// Function to query PurchaseOrderDetail table and filter the
/// data for a specific ProductID selected in the Parent report.
/// </summary>
/// <param name="productid">Parameter passed from the Parent report to filter data.
</param>
/// <returns>A dataTable of type PurchaseOrderDetail</returns>
private DataTable GetPurchaseOrderDetail(int productid)
{
try
{
//Create the instance for the typed dataset, DataSet2 which will
//hold the [PurchaseOrderDetail] table details.
//The dataset was created as part of the tutorial in Step 4.
DataSet2 ds = new DataSet2();

//Create a SQL Connection to the AdventureWorks2008 database using Windows


Authentication.
using (SqlConnection sqlconn = new SqlConnection("Data Source=.;Initial
Catalog=Adventureworks2014;Integrated Security=SSPI"))
{
//Building the dynamic query with the parameter ProductID.
SqlCommand cmd = new SqlCommand("SELECT PurchaseOrderID,
PurchaseOrderDetailID, OrderQty, ProductID, ReceivedQty, RejectedQty, StockedQty FROM
Purchasing.PurchaseOrderDetail where ProductID = @ProductID", sqlconn);

// Sets the productid parameter.


cmd.Parameters.Add((new SqlParameter("@ProductID", SqlDbType.Int)).Value =
productid);

SqlDataAdapter adap = new SqlDataAdapter(cmd);


//Executing the QUERY and fill the dataset with the PurchaseOrderDetail table
data.
adap.Fill(ds, "PurchaseOrderDetail");
}

//Return the PurchaseOrderDetail table for the Report Data Source.


return ds.PurchaseOrderDetail;
}
catch
{
throw;
}
}

To add an event handler that retrieves parameter values and binds the PurchaseOrdeDetail DataTable to the
child report
1. Open Default.aspx in designer view.
2. Right-click the ReportViewer control, and then select Proper ties .
3. On the Proper ties pane, select the Events icon.
4. Double-click the Drillthrough event.
This will add an event handler section in the code that will look similar to the following.

protected void ReportViewer1_Drillthrough(object sender,


Microsoft.Reporting.WebForms.DrillthroughEventArgs e)
{
}

5. Complete the event handler. It should include the following functionality.


a. Fetch the Child report object reference from the DrillthroughEventArgs parameter.
b. Get the child report parameter list from the child report object fetched.
c. Iterate through the parameter's collection and retrieve the value for the parameter, ProductID ,
passed from the parent report.
d. Call the function, GetPurchaseOrderDetail , and pass the value for parameter ProductID .
e. Bind the PurchaseOrderDetail DataTable with the Report's corresponding data source.
The completed event handler code will look similar to the following.

protected void ReportViewer1_Drillthrough(object sender,


Microsoft.Reporting.WebForms.DrillthroughEventArgs e)
{
try
{
//Variable to store the parameter value passed from the MainReport.
int productid = 0;

//Get the instance of the Target report.


LocalReport report = (LocalReport)e.Report;

//Get all the parameters passed from the main report to the target report.
//OriginalParametersToDrillthrough actually returns a Generic list of
//type ReportParameter.
IList<ReportParameter> list = report.OriginalParametersToDrillthrough;

//Parse through each parameters to fetch the values passed along with them.
foreach (ReportParameter param in list)
{
//Since we know the report has only one parameter and it is not a multivalued,
//we can directly fetch the first value from the Values array.
productid = Convert.ToInt32(param.Values[0].ToString());
}

//Binding the DataTable to the Child report dataset.


//The name DataSet1 which can be located from,
//Go to Design view of Child.rdlc, Click View menu -> Report Data
//You'll see this name under DataSet2.
report.DataSources.Add(new ReportDataSource("DataSet1",
GetPurchaseOrderDetail(productid)));
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
}

6. Save the file.

Next Task
You have successfully created a data filter for the data table that you defined for the child report. Next, you will
build and run the website application. See Lesson 9: Build and Run the Application.
Lesson 9: Build and Run the Application
11/2/2020 • 2 minutes to read • Edit Online

After you create a data filter for the data table, your next step is to build and run the website application.
To build and run the application
1. Press CTRL+F5 to run the Default.aspx page without debugging, or press F5 to run the page with
debugging.
As part of the build process, the report is compiled and any errors found (such as a syntax error in an
expression used in the report) are added to the Task List that is located at the bottom of the Visual
Studio window.
The webpage appears in the browser. The ReportViewer control displays the report. You can use the
toolbar to browse through the report, zoom, and export the report to Excel.
2. Hover the mouse over any of the rows under Name column. The mouse cursor will display a Hand
symbol.
3. Select a value in the Name column. The child report is shown with the corresponding filtered data.
4. Select the icon, Go back to parent repor t , in the Repor tViewer tool bar to navigate back to the
Parent report.
5. Close the browser to exit.
Report Builder Tutorials
11/2/2020 • 2 minutes to read • Edit Online

APPLIES TO: SQL Server 2016 Power BI Report Server


Use the following Report Builder tutorials to learn how to create basic Reporting Services paginated reports.
Prerequisites for Tutorials (Report Builder)
To use these tutorials, you must have read-only access to a SQL Server database and permissions to access a
SQL Server 2016 Reporting Services or later (SSRS) report server.
For help with these prerequisites, contact your report server administrator.
Alternative Ways to Get a Data Connection (Report Builder)
Most of these tutorials use embedded data sources. If you have access to shared data sources you can use them
instead. This topic provides the steps for using shared data sources.
Tutorial: Creating a Basic Table Report (Report Builder)
Follow the steps in this tutorial to learn how to create your first report. This tutorial shows you how to work with
Report Builder to create a data source connection, define a simple query, build a layout to contain your data,
format your report, and add grouping and totals.
Tutorial: Creating a Matrix Report (Report Builder)
Follow the steps in this tutorial to learn how to add and configure a matrix. You will use the Table or Matrix
Wizard to create the report data source, dataset, and layout, and then enhance the matrix within the Design
view of Report Builder.
Tutorial: Creating a Free Form Report (Report Builder)
Follow the steps in this tutorial to learn how to create a free-form report from scratch. This report resembles a
newsletter.
Tutorial: Format Text (Report Builder)
Follow the steps in this tutorial to learn some of the many ways you can format text in your reports.
Tutorial: Add a Column Chart to Your Report (Report Builder)
Follow the steps in this tutorial to learn how to add a column chart with a moving average to a report.
Tutorial: Add a Pie Chart to Your Report (Report Builder)
Follow the steps in this tutorial to learn how to add a pie chart to a report.
Tutorial: Add a Bar Chart to Your Report (Report Builder)
Follow the steps in this tutorial to learn how to add a bar chart to a report.
Tutorial: Add a Sparkline to Your Report (Report Builder)
Follow the steps in this tutorial to learn how to create a matrix and then add a set of sparkline charts to the
matrix.
Tutorial: Adding a KPI to Your Report (Report Builder)
Follow the steps in this tutorial to learn how to add a key performance indicator (KPI) to a report.
Tutorial: Map Report (Report Builder)
Follow the steps in this tutorial to learn how to add a map to a report.
Tutorial: Add a Parameter to Your Report (Report Builder)
Follow the steps in this tutorial to learn how to customize the appearance and content of a report by using
parameters.
Tutorial: Creating Drillthrough and Main Reports (Report Builder)
Follow the steps in this tutorial to learn how to create reports for a drillthrough scenario based on an Analysis
Services cube. You will create the main report and enable it for drillthrough and the report that is the target of
the drillthrough action.
Tutorial: Introducing Expressions
Follow the steps in this tutorial to learn how to use expressions to concatenate, calculate, and lookup field values
and show them a report. You will also learn how to conditionally display different images and indicator states
using expressions.

Next steps
Report Design View
Report Builder in SQL Server
Tutorial: Create a Quick Chart Report Offline
More questions? Try asking the Reporting Services forum
Tutorial: Create a Quick Chart Report Offline
(Report Builder)
3/25/2020 • 8 minutes to read • Edit Online

In this tutorial, you use a wizard to create a pie chart in a Reporting Services paginated report in Report Builder.
Then you add percentages and modify the pie chart a little.
You can do this tutorial two different ways. Both methods have the same outcome-a pie chart like the one in this
illustration:

Prerequisites
Whether you use XML data or a Transact-SQL query, you need to have access to Report Builder. You can start
Report Builder from a Reporting Services report server in native mode or in SharePoint integrated mode, or you
can download Report Builder from the Microsoft Download Center. For more information, see Install Report
Builder.

Two Ways To Do This Tutorial


Create the pie chart with XML data
Create the pie chart with a Transact-SQL query that contains data
Using XML data for this tutorial
You can use XML data that you copy from this topic and paste into the wizard. You don't need to be connected to
a Reporting Services report server in native mode or in SharePoint integrated mode, and you don't need access
to an instance of SQL Server.
Create the pie chart with XML data
Using a Transact-SQL query that contains data for this tutorial
You can copy a query with data included in it from this topic and paste it into the wizard. You will need the name
of an instance of SQL Server and credentials sufficient for read-only access to any database. The dataset query
in the tutorial uses literal data, but the query must be processed by an instance of SQL Server to return the
metadata that is required for a report dataset.
The advantage of using the Transact-SQL query is that all the other Report Builder tutorials use the same
method, so when you do the other tutorials, you will already know what to do.
The Transact-SQL query does require a few other prerequisites. For more information, see Prerequisites for
Tutorials (Report Builder).
Create the pie chart with a Transact-SQL query that contains data

Creating the pie chart with XML data


1. Start Report Builder from the Reporting Services web portal, or the report server in SharePoint
integrated mode, or from your computer.
The Getting Star ted dialog box appears.

If the Getting Star ted dialog box does not appear, click File >New . The New Repor t or Dataset
dialog box has most of the same contents as the Getting Star ted dialog box.
2. In the left pane, verify that New Repor t is selected.
3. In the right pane, click Char t Wizard , and then click Create .
4. In the Choose a dataset page, click Create a dataset , and then click Next .
5. In the Choose a connection to a data source page, click New .
The Data Source Proper ties dialog box opens.
6. You can name a data source anything you want. In the Name box, type MyPieChar t .
7. In the Select connection type box, click XML .
8. Click the Credentials tab, select Use current Windows user. Kerberos delegation might be
required , and then click OK .
9. In the Choose a connection to a data source page, click MyPieChar t , and then click Next .
10. Copy the following text and paste it in the large box in the top of the Design a quer y page.
<Query>
<ElementPath>Root /S {@Sales (Integer)} /C {@FullName} </ElementPath>
<XmlData>
<Root>
<S Sales="150">
<C FullName="Jae Pak" />
</S>
<S Sales="350">
<C FullName="Jillian Carson" />
</S>
<S Sales="250">
<C FullName="Linda C Mitchell" />
</S>
<S Sales="500">
<C FullName="Michael Blythe" />
</S>
<S Sales="450">
<C FullName="Ranjit Varkey" />
</S>
</Root>
</XmlData>
</Query>

11. (Optional) Click the Run button (! ) to see the data your chart will be based on.

12. Click Next .


13. In the Choose a char t type page, click Pie , and then click Next .
14. In the Arrange char t fields page, double-click the Sales field in the Available fields box.
Note that it automatically moves to the Values box, because it is a numerical value.
15. Drag the FullName field from the Available fields box to the Categories box (or double-click it; it will
go to the Categories box), and then click Next .
The Preview page shows your new pie chart with representational data. The legend reads Full Name 1,
Full Name 2, etc., rather than the salespeople's names, and the size of the slices of pie are not accurate.
This is just to give you an idea of what your report will look like.

16. Click Finish .


Now you see your new pie chart report in Design View, still with representational data.
17. To see your actual pie chart, click Run on the Home tab of the Ribbon.

18. To continue modifying your pie chart, go to After You Run the Wizard in this article.

Creating the pie chart with a Transact-SQL query


1. Start Report Builder from the Reporting Services web portal, from the report server in SharePoint
integrated mode, or from your computer.
The Getting Star ted dialog box appears.
NOTE
If the Getting Star ted dialog box does not appear, click File >New . The New Repor t or Dataset dialog box
has most of the same contents as the Getting Star ted dialog box.

2. In the left pane, verify that New Repor t is selected.


3. In the right pane, click Char t Wizard , and then click Create .
4. In the Choose a dataset page, click Create a dataset , and then click Next .
5. In the Choose a connection to a data source page, select an existing data source or browse to the
report server and select a data source, and then click Next . You may need to enter a user name and
password.

NOTE
The data source you choose is unimportant, as long as you have adequate permissions. You will not be getting
data from the data source. For more information, see Prerequisites for Tutorials (Report Builder).

6. On the Design a Quer y page, click Edit as Text .


7. Paste the following query into the query pane:

SELECT 150 AS Sales, 'Jae Pak' AS FullName


UNION SELECT 350 AS Sales, 'Jillian Carson' AS FullName
UNION SELECT 250 AS Sales, 'Linda C Mitchell' AS FullName
UNION SELECT 500 AS Sales, 'Michael Blythe' AS FullName
UNION SELECT 450 AS Sales, 'Ranjit Varkey' AS FullName

8. (Optional) Click the Run button (! ) to see the data your chart will be based on.
9. Click Next .
10. In the Choose a char t type page, click Pie , and then click Next .
11. In the Arrange char t fields page, double-click the Sales field in the Available fields box.
Note that it automatically moves to the Values box, because it's a numerical value.
12. Drag the FullName field from the Available fields box to the Categories box (or double-click it; it will
go to the Categories box), and then click Next .
13. Click Finish .
You're now looking at your new pie chart report on the design surface. What you see is representational.
The legend reads Full Name 1, Full Name 2, etc., rather than the salespeople's names, and the size of the
slices of pie are not accurate. This is just to give you an idea of what your report will look like.
14. To see your actual pie chart, click Run on the Home tab of the Ribbon.

After You Run the Wizard


Now that you have your pie chart report, you can play with it. On the Run tab of the Ribbon, click Design , so
you can continue modifying it.

Make the chart bigger


You may want the pie chart to be bigger.
Click the chart, but not on any element in the chart, to select it and drag the lower-right corner to resize it.
Notice the design surface gets larger as you drag.

Add a report title


1. Select the words Char t title at the top of the chart, and then type a title, such as Sales Pie Char t .
2. With the title selected, in the Properties pane, change Color to Black and FontSize to 12pt .

Add percentages
1. Right-click the pie chart and select Show Data Labels . The data labels appear within each slice on the
pie chart.
2. Right-click the labels and select Series Label Proper ties . The Series Label Proper ties dialog box
appears.
3. In the Label data box, type #PERCENT{P0} .
The {P0} gives you the percentage without decimal places. If you type just #PERCENT , your numbers will
have two decimal places. #PERCENT is a keyword that performs a calculation or function for you; there
are many others.
4. Click Yes to confirm you want to set UseValueAsLabel to False .
5. On the Font tab, select Bold and change Color to White .
6. Click OK .
For more information about customizing chart labels and legends, see Display Percentage Values on a Pie Chart
(Report Builder and SSRS) and Change the Text of a Legend Item (Report Builder and SSRS).

What's Next?
Now that you have created your first report in Report Builder, you are ready to try the other tutorials and to
start creating reports from your own data. To run Report Builder, you need permission to access your data
sources, such as databases, with a connection string, which actually connects you to the data source. Your
system administrator will have this information and can set you up.
To work through the other tutorials, you need the name of an instance of SQL Server and credentials sufficient
for read-only access to any database. Your system administrator can also set that up for you.
Finally, to save your reports to a report server or a SharePoint site that is integrated with a report server, you
need the URL and permissions. You can run any report you create directly from your computer, but reports have
more functionality when run from the report server or SharePoint site. You need permissions to run your
reports or others from the report server or SharePoint site where they are published. Talk to your system
administrator to obtain access.
It may help to read about some of the concepts and terms before you get started. See Reporting Services
Concepts (SSRS). Also, spend some time planning, before you create your first report. It will be time well spent.
See Planning a Report (Report Builder).

Next steps
Report Builder Tutorials
Report Builder in SQL Server
More questions? Try asking the Reporting Services forum
Prerequisites for Tutorials (Report Builder)
11/2/2020 • 2 minutes to read • Edit Online

To do the Report Builder tutorials, you need to be able to view and save SQL Server 2016 Reporting Services or
later (SSRS) paginated reports on a report server or SharePoint site that is integrated with a report server. For
data, all tutorials use literal queries that must be processed by an instance of SQL Server.
If you do not have access to a report server or site or to a data source, you can learn about Report Builder by
building an offline report. See Tutorial: Create a Quick Chart Report Offline (Report Builder).

Requirements
You must have the following prerequisites to complete Report Builder tutorials:
Access to Report Builder. You can run Report Builder from a Reporting Services report server or a
Reporting Services report server in SharePoint integrated mode. Only the first step, how to open Report
Builder, is different on the different servers.
On a report server, select New > Paginated Repor t .
On a report server in SharePoint integrated mode, on the Documents tab, select New Document , and
from the drop-down list, select Repor t Builder Repor t . For example,
https://<servername>/sites/mySite/reports . The SharePoint administrator must enable the Report Builder
Report feature for each document library.
The URL to a Reporting Services report server or a SharePoint site that is integrated with a Reporting
Services report server. You must have permission to save and view reports, shared data sources, shared
datasets, report parts, and models. By default, the URL for a report server is
https://<servername>/reportserver . By default, the URL for a SharePoint site is https://<sitename> or
https://<server>/site .

The name of a SQL Server instance and credentials sufficient for read-only access to any database. The
dataset queries in the tutorials use literal data, but each query must be processed by a SQL Server
instance to return the metadata that is required for a report dataset. For example, the following
connection string specifies only a server: data source=<servername> . You must have read access to the
default database that is assigned to you by the system administrator who grants you permission to
access the server. You can also specify a database, as shown in the following connection string:
data source=<servername>;initial catalog=<database> .

For the Tutorial: Map Report (Report Builder), the report server must be configured to support Bing maps
as a background. For more information, see Plan for Map Report Support.
The Tutorial: Creating Drillthrough and Main Reports (Report Builder) tutorial requires access to the
Contoso Sales cube. See the tutorial for more information.
The report server administrator must grant you the necessary permissions on the report server, configure
Reporting Services folder locations, and configure Report Builder default options. For more information, see
Install Report Builder.

Next steps
Report Builder tutorials
More questions? Try asking the Reporting Services forum
Alternative Ways to Get a Data Connection (Report
Builder)
11/2/2020 • 2 minutes to read • Edit Online

A data connection contains the information to connect to an external data source such as a SQL Server database.
Usually, you get the connection information and the type of credentials to use from the data source owner.
To specify a data connection, you can use a shared data source from the report server or create an embedded
data source that is used only in a specific report.
In most tutorials you use embedded data sources, but if you have access to shared data sources, then you can
use them instead.

Getting a Data Connection From a Shared Data Source


If the report server has available shared data sources that you have permission to use, you can use them instead
of an embedded data source. The following procedures tell how to locate the shared data sources and provide
any credentials needed to use them.
To use a shared data source, you browse to a report server and select one. Usually, you get the report server
URL from the report server administrator.
To specify a data connection from a list of shared data sources
1. In the New Table or Matrix or the New Chart Wizard, on the Choose a dataset page, select Create a
dataset , and then click Next . The Choose a connection to a data source page opens.
2. From the list of data sources, select a data source that you have permission to access.
3. To verify that you can connect to the data source, click Test Connection . The message "Connection
created successfully" appears. Click OK .
4. Click Next .
If necessary, enter your credentials. To save the credentials locally, select Save password with
connection . If you don't select this option, you will be prompted for credentials every time that you run
the report
5. Click OK .
To specify a data connection by browsing to a shared data source on a report server
1. In the New Table or Matrix or the New Chart Wizard, on the Choose a dataset page, select Create a
dataset , and then click Next . The Choose a connection to a data source page opens.
2. Click Browse . The Select Data Source dialog box opens.
3. From the Look in drop-down list, select Recent Sites and Ser vers . In the data source pane, click the
URL for your server, and then click Open .
The list of data sources or models appears.
4. Alternatively, in Name , type the URL to the report server. Click Open .
Report Builder connects to the report server and loads the data sources that are available at the root
folder.
5. Navigate to a folder that contains a data source that you have sufficient permissions to connect to, select
the data source, and then click Open .
You are back on the Choose a connection to a data source page.
6. To verify that you can connect to the data source, click Test Connection .
The message "Connection created successfully" appears. Click OK .
7. Click Next .
8. If you are prompted for a user name and password, enter your credentials. To save the credentials locally,
select Save password with connection .
9. Click OK .

See Also
Report Datasets (SSRS)
Report Builder Tutorials
Tutorial: Creating a Basic Table Report (Report
Builder)
3/5/2021 • 13 minutes to read • Edit Online

This tutorial teaches you to create a basic table report based on sample sales data. The following illustration
shows the report you will create.

Estimated time to complete this tutorial: 20 minutes.

Requirements
For more information about requirements, see Prerequisites for Tutorials (Report Builder).

1. Create a Report using a wizard


Create a table report with the Table or Matrix wizard. There are two modes: report design and shared dataset
design. In report design mode, you specify data in the Report Data pane and the report layout on the design
surface. In shared dataset design mode, you create dataset queries to share with others. In this tutorial, you will
be using report design mode.
To create a report
1. Start Report Builder either from your computer, the Reporting Services web portal, or SharePoint
integrated mode.
The New Repor t or Dataset dialog box opens.
If you don't see the New Repor t or Dataset dialog box, on the File menu > New .
2. In the left pane, verify that New Repor t is selected.
3. In the right pane, select Table or Matrix Wizard .

1a. Specify a Data Connection in the Table Wizard


A data connection contains the information to connect to an external data source such as a SQL Server database.
Usually, you get the connection information and the type of credentials to use from the data source owner. To
specify a data connection, you can use a shared data source from the report server or create an embedded data
source that is used only in this report.
In this tutorial, you will use an embedded data source. To learn more about using a shared data sources, see
Alternative Ways to Get a Data Connection (Report Builder).
To create an embedded data source
1. On the Choose a dataset page, select Create a dataset , and then click Next . The Choose a
connection to a data source page opens.
2. Click New . The Data Source Proper ties dialog box opens.
3. In Name , type Product_Sales a name for the data source.
4. In Select a connection type , verify that Microsoft SQL Ser ver is selected.
5. In Connection string , type the following text, where <servername> is the name of an instance of SQL
Server:

Data Source=<servername>

Because you will use a query that contains the data instead of retrieving the data from a database, the
connection string does not include the database name. For more information, see Prerequisites for
Tutorials (Report Builder).
6. Click the Credentials tab. Enter the credentials that you need to access the external data source.
7. Click the General tab again. To verify that you can connect to the data source, click Test Connection .
The message "Connection created successfully" appears.
8. Click OK .
You are back on the Choose a connection to a data source page, with your new data source selected.
9. Click Next .

1b. Create a Query in the Table Wizard


In a report, you can use a shared dataset that has a predefined query, or you can create an embedded dataset
for use only in this one report. In this tutorial, you will create an embedded dataset.

NOTE
In this tutorial, the query contains the data values, so that it does not need an external data source. This makes the query
quite long. In a business environment, a query would not contain the data. This is for learning purposes only.

To create a query
1. On the Design a quer y page, the relational query designer is open. For this tutorial, you will use the
text-based query designer.
Click Edit As Text . The text-based query designer displays a query pane and a results pane.
2. Paste the following Transact-SQL query into the blank upper box.

SELECT CAST('2009-01-05' AS date) as SalesDate, 'Accessories' as Subcategory,


'Carrying Case' as Product, CAST(9924.60 AS money) AS Sales, 68 as Quantity
UNION SELECT CAST('2009-01-06' AS date) as SalesDate, 'Accessories' as Subcategory,
'Tripod' as Product, CAST(1350.00 AS money) AS Sales, 18 as Quantity
UNION SELECT CAST('2009-01-11' AS date) as SalesDate, 'Accessories' as Subcategory,
'Lens Adapter' as Product, CAST(1147.50 AS money) AS Sales, 17 as Quantity
UNION SELECT CAST('2009-01-05' AS date) as SalesDate, 'Accessories' as Subcategory,
'Mini Battery Charger' as Product, CAST(1056.00 AS money) AS Sales, 44 as Quantity
UNION SELECT CAST('2009-01-06' AS date) as SalesDate, 'Accessories' as Subcategory,
'Telephoto Conversion Lens' as Product, CAST(1380.00 AS money) AS Sales, 18 as Quantity
UNION SELECT CAST('2009-01-06' AS date) as SalesDate,'Accessories' as Subcategory,
'USB Cable' as Product, CAST(780.00 AS money) AS Sales, 26 as Quantity
UNION SELECT CAST('2009-01-08' AS date) as SalesDate, 'Accessories' as Subcategory,
'Budget Movie-Maker' as Product, CAST(3798.00 AS money) AS Sales, 9 as Quantity
UNION SELECT CAST('2009-01-09' AS date) as SalesDate, 'Camcorders' as Subcategory,
'Business Videographer' as Product, CAST(10400.00 AS money) AS Sales, 13 as Quantity
UNION SELECT CAST('2009-01-10' AS date) as SalesDate, 'Camcorders' as Subcategory,
'Social Videographer' as Product, CAST(3000.00 AS money) AS Sales, 60 as Quantity
UNION SELECT CAST('2009-01-11' AS date) as SalesDate, 'Digital' as Subcategory,
'Advanced Digital' as Product, CAST(7234.50 AS money) AS Sales, 39 as Quantity
UNION SELECT CAST('2009-01-07' AS date) as SalesDate, 'Digital' as Subcategory,
'Compact Digital' as Product, CAST(10836.00 AS money) AS Sales, 84 as Quantity
UNION SELECT CAST('2009-01-08' AS date) as SalesDate, 'Digital' as Subcategory,
'Consumer Digital' as Product, CAST(2550.00 AS money) AS Sales, 17 as Quantity
UNION SELECT CAST('2009-01-05' AS date) as SalesDate, 'Digital' as Subcategory,
'Slim Digital' as Product, CAST(8357.80 AS money) AS Sales, 44 as Quantity
UNION SELECT CAST('2009-01-09' AS date) as SalesDate, 'Digital SLR' as Subcategory,
'SLR Camera 35mm' as Product, CAST(18530.00 AS money) AS Sales, 34 as Quantity
UNION SELECT CAST('2009-01-07' AS date) as SalesDate, 'Digital SLR' as Subcategory,
'SLR Camera' as Product, CAST(26576.00 AS money) AS Sales, 88 as Quantity

3. On the query designer toolbar, click Run (! ).


The query runs and displays the result set for the fields SalesDate, Subcategory, Product, Sales, and
Quantity.
In the result set, the column headings are based on the names in the query. In the dataset, the column
headings become the field names, and are saved in the report. After you complete the wizard, you can
use the Report Data pane to view the collection of dataset fields.
4. Click Next .

1c. Organize Data into Groups in the Table Wizard


When you select fields to group on, you design a table that has rows and columns that display detail data and
aggregated data.
To organize data into groups
1. On the Arrange fields page, drag Product to Values .
2. Drag Quantity to Values and place below Product.
Quantity is automatically aggregated by the Sum function, the default aggregate for numeric fields. The
value is [Sum(Quantity)].
Select the arrow next to [Sum(Quantity)] to view the other aggregate functions available. Do not change
the aggregate function.
3. Drag Sales to Values and place below [Sum(Quantity)].
Sales is aggregated by the Sum function. The value is [Sum(Sales)].
Steps 1, 2, and 3 specify the data to display in the table.
4. Drag SalesDate to Row groups .
5. Drag Subcategory to Row groups and place below SalesDate.
Steps 4 and 5 organize the values for the fields first by date, and then by product subcategory for that
date.
6. Click Next .

1d. Add Subtotal and Total Rows in the Table Wizard


After you create groups, you can add and format rows on which to display aggregate values for the fields. You
can choose whether to show all the data or to let a user expand and collapse grouped data interactively.
To add subtotals and totals
1. On the Choose the layout page, under Options , verify that Show subtotals and grand totals is
selected.
2. Verify that Blocked, subtotal below is selected.
The wizard Preview pane displays a table with five rows. When you run the report, each row will display
in the following way:
a. The first row will repeat once for the table to show column headings.
b. The second row will repeat once for each line item in the sales order and display the product
name, order quantity, and line total.
c. The third row will repeat once for each sales order category to display subtotals per category.
d. The fourth row will repeat once for each order date to display the subtotals per day.
e. The fifth row will repeat once for the table to display the grand totals.
3. Clear the option Expand/collapse groups . In this tutorial, the report you create does not use the
drilldown feature that lets a user expand a parent group hierarchy to display child group rows and detail
rows.
4. Click Next to preview the table, then click Finish .
The table is added to the design surface. The table has 5 columns and 5 rows. The Row Groups pane shows three
row groups: SalesDate, Subcategory, and Details. Detail data is all the data that is retrieved by the dataset query.

2. Format Data as Currency


By default, the summary data for the Sales field displays a general number. Format it to display the number as
currency.
To format a currency field
1. To see formatted text boxes and placeholder text as sample values in Design View, on the Home tab, in
the Number group, click the arrow next to the Placeholder Styles icon > Sample Values .
2. Click the cell in the second row (under the column headings row) in the Sales column and drag down to
select all cells that contain [Sum(Sales)] .
3. On the Home tab, in the Number group, click the Currency button. The cells change to show the
formatted currency.
If your regional setting is English (United States), the default sample text is [$12,345.00 ]. If you do not
see an example currency value, on the Home tab, in the Number group, click the arrow next to the
Placeholder Styles icon > Sample Values .
4. Click Run to preview your report.
The summary values for Sales display as currency.

3. Format Data as Date


By default, the SalesDate field displays both date and time. You can format them to display only the date.
To format a date field as the default format
1. Click Design to return to design view.
2. Click the cell that contains [SalesDate] .
3. On the Ribbon, on the Home tab, in the Number group, click the arrow and select Date .
The cell displays the example date [1/31/2000] . If you do not see an example date, on the Home tab, in
the Number group, click the arrow next to the Placeholder Styles icon > Sample Values .
4. Click Run to preview the report.
The SalesDate values display in the default date format.
To change the date format to a custom format
1. Click Design to return to design view.
2. Select the cell that contains [SalesDate] .
3. On the Home tab, in the Number group, click the arrow in the lower-right corner to open the dialog box.
The Text Box Proper ties dialog box opens.
4. In the Category pane, verify that Date is selected.
5. In the Type pane, select Januar y 31, 2000 .
6. Click OK .
The cell displays the example date [Januar y 31, 2000] .
7. Click Run to preview your report.
The SalesDate value displays the name of the month instead of the number for the month.

4. Change Column Widths


By default, each cell in a table contains a text box. A text box expands vertically to accommodate text when the
page is rendered. In the rendered report, each row expands to the height of the tallest rendered text box in the
row. The height of the row on the design surface has no affect on the height of the row in the rendered report.
To reduce the amount of vertical space each row takes, expand the column width to accommodate the expected
contents of the text boxes in the column on one line.
To change the width of table columns
1. Click Design to return to design view.
2. Click the table so that column and row handles appear above and next to the table.
The gray bars along the top and side of the table are the column and row handles.
3. Point to the line between column handles so that the cursor changes into a double arrow. Drag the
columns to the width you want. For example, expand the column for Product so that the product name
displays on one line.
4. Click Run to preview your report.

5. Add a Report Title


A report title appears at the top of the report. You can place the report title in a report header or if the report
does not use one, in a text box at the top of the report body. In this tutorial, you will use the text box that is
automatically placed at the top of the report body.
The text can be further enhanced by applying different font styles, sizes, and colors to phrases and individual
characters of the text. For more information, see Format Text in a Text Box (Report Builder and SSRS).
To add a report title
1. On the design surface, click Click to add title .
2. Type Product Sales , and then click outside the text box.
3. Right-click the text box that contains Product Sales and click Text Box Proper ties .
4. In the Text Box Proper ties dialog box, click Font .
5. In the Size list, select 18pt .
6. In the Color list, select Cornflower Blue .
7. Select Bold .
8. Click OK .

6. Save the Report


Save the report to a report server or your computer. If you do not save the report to the report server, a number
of Reporting Services features such as report parts and subreports are not available.
To save the report on a report server
1. Click File > Save As .
2. Click Recent Sites and Ser vers .
3. Select or type the name of the report server where you have permission to save reports.
The message "Connecting to report server" appears. When the connection is complete, you see the
contents of the report folder that the report server administrator specified as the default location for
reports.
4. In Name , replace Untitled with Product_Sales .
5. Click Save .
The report is saved to the report server. The name of report server that you are connected to appears in the
status bar at the bottom of the window.
To save the report on your computer
1. Click File > Save As .
2. Click Desktop , My Documents , or My computer , and browse to the folder where you want to save the
report.
3. In Name , replace Untitled with Product Sales .
4. Click Save .

7. Export the Report


Reports can be exported to different formats such Microsoft Excel and comma separated value (CSV) files. For
more information, see Export Reports (Report Builder and SSRS).
In this tutorial, you will export the report to Excel and set a property on the report to provide a custom name for
the workbook tab.
To specify the workbook tab name
1. Click Design to return to design view.
2. Click anywhere on the design surface, outside the report.
3. In the Properties pane, locate the InitialPageName property and type Product Sales Excel .

NOTE
If the Properties pane is not visible, on the View tab, select Proper ties .
If you don't see a property in the Properties pane, try selecting the Alphabetical button at the top of the pane
to order all the properties alphabetically.

To export a report to Excel


1. Click Run to preview the report.
2. On the ribbon, click Expor t > Excel .
The opens.
3. In Save As dialog box, browse to where you want to save the file.
4. In the File name box, type Product_Sales_Excel .
5. Verify that the file type is Excel (*.xlsx) .
6. Click Save .
To view the report in Excel
1. Open the folder where you save the workbook and double-click Product_Sales_Excel.xlsx .
2. Verify that the name of the workbook tab is Product Sales Excel .

Next Steps
This concludes the walkthrough for how to create a basic table report. For more information about tables, see
Tables, Matrices, and Lists (Report Builder and SSRS).

See Also
Report Builder Tutorials
Report Builder in SQL Server
Tutorial: Creating a Matrix Report (Report Builder)
11/2/2020 • 14 minutes to read • Edit Online

This tutorial teaches you to create a Reporting Services paginated report with a matrix of sample sales data in
nested row and column groups.
You also create an adjacent column group, format columns, and rotate text. The following illustration shows a
report similar to the one you will create.

Estimated time to complete this tutorial: 20 minutes.

Requirements
For information about requirements, see Prerequisites for Tutorials.

1. Create a Matrix Report and Dataset from the New Table or Matrix
Wizard
In this section, you choose a shared data source, create an embedded dataset, and then display the data in a
matrix.

NOTE
In this tutorial, the query already contains the data values, so that it does not need an external data source. This makes
the query quite long. In a business environment, a query would not contain the data. This is for learning purposes only.

To create a matrix
1. Start Report Builder either from your computer, the Reporting Services web portal, or SharePoint
integrated mode.
The New Repor t or Dataset dialog box opens.
If you don't see the New Repor t or Dataset dialog box, on the File menu > New .
2. In the left pane, verify that New Repor t is selected.
3. In the right pane, click Table or Matrix Wizard .
4. On the Choose a dataset page, click Create a dataset .
5. Click Next .
6. On the Choose a connection to a data source page, select an existing data source, or browse to the
report server and select a data source. If no data source is available or you do not have access to a report
server, you can use an embedded data source instead. For information about creating an embedded data
source, see Tutorial: Creating a Basic Table Report (Report Builder).
7. Click Next .
8. On the Design a quer y page, click Edit as Text .
9. Copy and paste the following query into the query pane:
SELECT CAST('2015-01-05' AS date) as SalesDate, 'Central' as Territory, 'Accessories' as
Subcategory,'Carrying Case' as Product, CAST(16996.60 AS money) AS Sales, 68 as Quantity
UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'North' as Territory, 'Accessories' as
Subcategory, 'Carrying Case' as Product, CAST(13747.25 AS money) AS Sales, 55 as Quantity
UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'South' as Territory, 'Accessories' as
Subcategory,'Carrying Case' as Product, CAST(9248.15 AS money) As Sales, 37 as Quantity
UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'Central' as Territory, 'Accessories' as
Subcategory,'Tripod' as Product, CAST(1350.00 AS money) AS Sales, 18 as Quantity
UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'North' as Territory, 'Accessories' as
Subcategory,'Tripod' as Product, CAST(1800.00 AS money) AS Sales, 24 as Quantity
UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'South' as Territory, 'Accessories' as
Subcategory,'Tripod' as Product, CAST(1125.00 AS money) AS Sales, 15 as Quantity
UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'Central' as Territory, 'Accessories' as
Subcategory,'Lens Adapter' as Product, CAST(1147.50 AS money) AS Sales, 17 as Quantity
UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'North' as Territory, 'Accessories' as
Subcategory, 'Lens Adapter' as Product, CAST(742.50 AS money) AS Sales, 11 as Quantity
UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'South' as Territory, 'Accessories' as
Subcategory,'Lens Adapter' as Product, CAST(1417.50 AS money) AS Sales, 21 as Quantity
UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'Central' as Territory, 'Accessories' as
Subcategory, 'Carrying Case' as Product, CAST(13497.30 AS money) AS Sales, 54 as Quantity
UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'North' as Territory, 'Accessories' as
Subcategory, 'Carrying Case' as Product, CAST(11997.60 AS money) AS Sales, 48 as Quantity
UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'South' as Territory, 'Accessories' as
Subcategory, 'Carrying Case' as Product, CAST(10247.95 AS money) As Sales, 41 as Quantity
UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'Central' as Territory, 'Accessories' as
Subcategory, 'Tripod' as Product, CAST(1200.00 AS money) AS Sales, 16 as Quantity
UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'North' as Territory, 'Accessories' as
Subcategory,'Tripod' as Product, CAST(2025.00 AS money) AS Sales, 27 as Quantity
UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'South' as Territory, 'Accessories' as
Subcategory,'Tripod' as Product, CAST(1425.00 AS money) AS Sales, 19 as Quantity
UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'Central' as Territory, 'Accessories' as
Subcategory,'Lens Adapter' as Product, CAST(887.50 AS money) AS Sales, 13 as Quantity
UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'North' as Territory, 'Accessories' as
Subcategory, 'Lens Adapter' as Product, CAST(607.50 AS money) AS Sales, 9 as Quantity
UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'South' as Territory, 'Accessories' as
Subcategory,'Lens Adapter' as Product, CAST(1215.00 AS money) AS Sales, 18 as Quantity
UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'Central' as Territory, 'Digital' as
Subcategory,'Compact Digital' as Product, CAST(10191.00 AS money) AS Sales, 79 as Quantity
UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'North' as Territory, 'Digital' as
Subcategory, 'Compact Digital' as Product, CAST(8772.00 AS money) AS Sales, 68 as Quantity
UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'South' as Territory, 'Digital' as
Subcategory, 'Compact Digital' as Product, CAST(10578.00 AS money) AS Sales, 82 as Quantity
UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'Central' as Territory,'Digital' as
Subcategory, 'Slim Digital' as Product, CAST(7218.10 AS money) AS Sales, 38 as Quantity
UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'North' as Territory,'Digital' as Subcategory,
'Slim Digital' as Product, CAST(8357.80 AS money) AS Sales, 44 as Quantity
UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'South' as Territory,'Digital' as
Subcategory,'Slim Digital' as Product, CAST(9307.55 AS money) AS Sales, 49 as Quantity
UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'Central' as Territory, 'Digital' as
Subcategory,'Compact Digital' as Product, CAST(3870.00 AS money) AS Sales, 30 as Quantity
UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'North' as Territory, 'Digital' as
Subcategory,'Compact Digital' as Product, CAST(5805.00 AS money) AS Sales, 45 as Quantity
UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'South' as Territory, 'Digital' as
Subcategory, 'Compact Digital' as Product, CAST(8643.00 AS money) AS Sales, 67 as Quantity
UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'Central' as Territory, 'Digital' as
Subcategory, 'Slim Digital' as Product, CAST(9877.40 AS money) AS Sales, 52 as Quantity
UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'North' as Territory, 'Digital' as Subcategory,
'Slim Digital' as Product, CAST(12536.70 AS money) AS Sales, 66 as Quantity
UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'South' as Territory, 'Digital' as Subcategory,
'Slim Digital' as Product, CAST(6648.25 AS money) AS Sales, 35 as Quantity

10. (optional) Click the Run icon (!) to run the query and see the data.
11. Click Next .
2. Organize Data and Choose Layout from the New Table or Matrix
Wizard
Use the wizard to provide a starting design on which to display data. The preview pane in the wizard helps you
to visualize the result of grouping data before you complete the matrix design.
1. On the Arrange fields page, drag Territory from Available fields to Row groups .
2. Drag SalesDate to Row groups and place it below Territory.
The order in which fields are listed in Row groups defines the group hierarchy. Steps 1 and 2 organize
the values of the fields first by territory, and then by sales date.
3. Drag Subcategory to Column groups .
4. Drag Product to Column groups and place it below Subcategory.
Again, the order in which fields are listed in Column groups defines the group hierarchy. Steps 3 and 4
organize the values for the fields first by subcategory, and then by product.
5. Drag Sales to Values .
Sales is summarized with the Sum function, the default function to summarize numeric fields.
6. Drag Quantity to Values .
Quantity is summarized with the Sum function.
Steps 5 and 6 specify the data to display in the matrix data cells.

7. Click Next .
8. On the Choose the Layout page, under Options , verify that Show subtotals and grand totals is
selected.
9. Verify that Blocked, subtotal below is selected.
10. Verify the option Expand/collapse groups is selected.
11. Click Next .
12. Click Finish .
The matrix is added to the design surface. The Row Groups pane shows two row groups: Territory and
SalesDate. The Column Groups pane shows two column groups: Subcategory and Product. Detail data is
all the data that is retrieved by the dataset query.
13. Click Run to preview the report.
For each product that is sold on a specific date, the matrix shows the subcategory to which the product
belongs and the territory of the sales.
14. Expand a subcategory. You can see the report quickly gets quite wide.

3. Format Data
By default, the summary data for the Sales field displays a general number and the SalesDate field displays both
date and time information. In this section, you format the Sales field to display the number as currency and the
SalesDate field to display only the date. Toggle Placeholder Styles to display formatted text boxes and
placeholder text as sample values.
To format fields
1. Click Design to switch to design view.
2. Press the Ctrl key, and then select the nine cells that contain [Sum(Sales)] .
3. On the Home tab > Number > Currency . The cells change to show the formatted currency.
If your regional setting is English (United States), the default sample text is [$12,345.00 ]. If you do not
see an example currency value, in the Numbers group, click Placeholder Styles > Sample Values .

4. Click the cell that contains [SalesDate] .


5. In the Number group > Date .
The cell displays the example date [1/31/2000] . If you do not see an example date, click Placeholder
Styles in the Numbers group, and then click Sample Values .
6. Click Run to preview your report.
The date values display only dates and the sales values display as currency.

4. Add Adjacent Column Group


You can nest row and column groups in parent-child relationships, or adjacent in sibling relationships.
In this section, you add a column group adjacent to the Subcategory column group, copy cells to populate the
new column group, and then use an expression to create the value of the column group header.
To add an adjacent column group
1. Click Design to return to design view.
2. Right-click the cell that contains [Subcategory] , point to Add Group , and then click Adjacent Right .
The Tablix Group dialog box opens.
3. In the Group By list, select SalesDate, and then click OK .
A new column group is added to the right of the Subcategory column group.
4. Right-click the cell in the new column group that contains [SalesDate], and then click Expression .
5. Copy the following expression to the expression box.

=WeekdayName(DatePart("w",Fields!SalesDate.Value))

This expression extracts the weekday name from the sales date. For more information, see Expressions
(Report Builder and SSRS).
6. Right-click the cell in the Subcategory column group that contains Total, and then click Copy .
7. Right-click the cell immediately below the cell that contains the expression you created in step 5 and click
Paste .
8. Press the Ctrl key.
9. In the Subcategory group, click the Sales column header and the three cells below it, right-click, and then
click Copy .
10. Paste the four cells into the four empty cells in the new column group.
11. Click Run to preview the report.
The report includes columns named Monday and Tuesday. The dataset contains only data for these two days.
NOTE
If the data included other days, the report would include columns for them as well. Each column has the column header,
Sales , and sales totals by territory.

5. Change Column Widths


A report that includes a matrix typically expands horizontally as well as vertically when it runs. Controlling
horizontal expansion is particularly important if you plan to export the report to formats such as Microsoft
Word or Adobe PDF that are used for printed reports. If the report expands horizontally across multiple pages,
the printed report is difficult to understand. To minimize horizontal expansion, you can resize columns to be only
the width necessary to display the data without wrapping. You can also rename columns so that their titles fit
the width needed to display the data.
To rename and resize the columns
1. Click Design to return to design view.
2. Select the text in the furthest Quantity column to the left, and then type QTY .
The column title is now QTY.
3. Repeat step 2 for the two other columns named Quantity.
4. Click the matrix so that column and row handles appear above and next to the matrix.
The gray bars along the top and side of the table are the column and row handles.

5. To resize the QTY column farthest to the left, point to the line between column handles so that the cursor
changes into a double arrow. Drag the column towards the left until it is 1/2 inch wide.
A column width of 1/2 inch is adequate to display the quantity.
6. Repeat step 5 for the other columns named QTY.
7. Click Run to preview your report.
The columns that contain quantities are now narrower and are named QTY.

6. Merge Matrix Cells


The corner area is in the upper left corner of the matrix. Depending on the number of row and column groups in
the matrix, the number of cells in the corner area varies. The matrix, built in this tutorial, has four cells in its
corner area. The cells are arranged in two rows and two columns, reflecting the depth of row and column group
hierarchies. The four cells are not used in this report and you will merge them into one.
To merge matrix cells
1. Click Design to return to design view.
2. Click the matrix so that column and row handles appear above and next to the matrix.
3. Press the Ctrl key and select the four corner cells.
4. Right-click the cells and click Merge Cells .
5. Right-click the new merged cell and click Text Box Proper ties .
6. On the Border tab > Presets > None .
7. Click OK .
8. Click Run to preview your report.
The cell in the upper corner of the matrix is no longer visible.

7. Add a Report Header and Report Title


A report title appears at the top of the report. You can place the report title in a report header or if the report
does not use one, in a text box at the top of the report body. In this tutorial, you will remove the text box at the
top of the report and add a title to the header.
To add a report header and report title
1. Click Design to return to design view.
2. Select the text box at the top of the report body that contains Click to add title , and then press the
Delete key.
3. On the Inser t tab > Header > Add Header .
A header is added to the top of the report body.
4. On the Inser t tab, click Text Box , and then drag a text box inside the report header. Make the text box
about 6 inches long and 3/4 inch tall and place it on the left side of the report header.
5. In the text box, type Sales by Territor y, Subcategor y, and Day .
6. Select the text you typed, on the Home tab > Font :
Size 24 pt
Color Maroon
7. Click Run to preview the report.
The report includes a report title in the report header.

8. Save the Report


You can save reports to a report server, SharePoint library, or your computer.
In this tutorial, save the report to a report server. If you do not have access to a report server, save the report to
your computer.
To save the report on a report server
1. From the Repor t Builder button, click Save As .
2. Click Recent Sites and Ser vers .
3. Select or type the name of the report server where you have permission to save reports.
The message "Connecting to report server" appears. When the connection is complete, you will see the
contents of the report folder that the report server administrator specified as the default report location.
4. In Name , replace the default name with SalesByTerritor ySubcategor y .
5. Click Save .
The report is saved to the report server. The name of report server that you are connected to appears in the
status bar at the bottom of the window.
To save the report on your computer
1. From the Repor t Builder button, click Save As .
2. Click Desktop , My Documents , or My computer , and then browse to the folder where you want to
save the report.
3. In Name , replace the default name with SalesByTerritor ySubcategor y .
4. Click Save .

9. (Optional) Rotate Text Box 270 Degrees


A report with matrices can expand horizontally and vertically when it runs. By rotating text boxes vertically, or
270 degrees, you can save horizontal space. The rendered report is then narrower and if exported to a format
such as Microsoft Word, will be more likely to fit on a printed page.
A text box can also display text as horizontal, vertical (top to bottom). For more information, see Text Boxes
(Report Builder and SSRS).
To rotate text box 270 degrees
1. Click Design to return to design view.
2. Select the cell that contains [Territory].

Note : Select the cell, not the text. The WritingMode property is only available for the cell.

3. In the Properties pane, locate the WritingMode property and change it from Default to Rotate270 .
If the Properties pane is not open, click the View tab of the ribbon, and then select Proper ties .
4. Verify that the CanGrow property is set to True .
5. On the Home tab > Paragraph section, select Middle and Center to locate the text in the center of the
cell both vertically and horizontally.
6. Resize the Territory column to be 1/2 inch wide and delete the column title.
7. Click Run to preview your report.
The territory name is written vertically, bottom to top. The height of the Territory row group varies by the length
of the territory name.

Next Steps
This concludes the tutorial for how to create a matrix report. For more information about matrices, see:
Tables, Matrices, and Lists
Create a Matrix
Tablix Data Region Areas
Tablix Data Region Cells, Rows, and Columns

See Also
Report Builder Tutorials
Report Builder in SQL Server
Tutorial: Creating a Free Form Report (Report
Builder)
11/2/2020 • 17 minutes to read • Edit Online

In this tutorial, you create a paginated report that acts as a newsletter. Each page displays static text, summary
visuals, and detailed sample sales data.

The report groups information by territory and displays the name of the sales manager for the territory as well
as detailed and summary sales information. You start with a list data region as the foundation for the free form
report, then add a decorative panel with an image, static text with data inserted, a table to show detailed
information, and optionally, pie and column charts to display summary information.
Estimated time to complete this tutorial: 20 minutes.

Requirements
For more information about requirements, see Prerequisites for Tutorials (Report Builder).

1. Create a Blank Report, Data Source, and Dataset


NOTE
In this tutorial, the query contains the data values so that it does not need an external data source. This makes the query
quite long. In a business environment, a query would not contain the data. This is for learning purposes only.

To create a blank report


1. Start Report Builder either from your computer, the Reporting Services web portal, or SharePoint
integrated mode.
The New Repor t or Dataset dialog box opens.
If you don't see the New Repor t or Dataset dialog box, on the File menu > New .
2. In the left pane, make sure New Repor t is selected.
3. In the right pane, click Blank Repor t .
To create a new data source
1. In the Report Data pane, click New > Data Source .
2. In the Name box, type: ListDataSource
3. Click Use a connection embedded in my repor t .
4. Verify that the connection type is Microsoft SQL Server, and then in the Connection string box type:
Data Source = <ser vername>
<ser vername> , for example Report001, specifies a computer on which an instance of the SQL Server
Database Engine is installed. Because the data for this report is not extracted from a SQL Server database,
you need not include the name of a database. The default database on the specified server is just used to
parse the query.
5. Click Credentials , and enter the credentials needed to connect to the instance of the SQL Server
Database Engine.
6. Click OK .
To create a new dataset
1. In the Report Data pane, click New > Dataset .
2. In the Name box, type: ListDataset .
3. Click Use a dataset embedded in my repor t , and verify that the data source is ListDataSource .
4. Verify that the Text query type is selected, and then click Quer y Designer .
5. Click Edit as Text .
6. Copy and paste the following query into the query pane:

SELECT CAST('2009-01-05' AS date) as SalesDate, 'Lauren Johnson' as FullName,'Central' as Territory,


'Accessories' as Subcategory,'Carrying Case' as Product, CAST(16996.60 AS money) AS Sales, 68 as
Quantity
UNION SELECT CAST('2009-01-05' AS date) as SalesDate, 'Warren Pal' as FullName,'North' as Territory,
'Accessories' as Subcategory, 'Carrying Case' as Product, CAST(13747.25 AS money) AS Sales, 55 as
Quantity
UNION SELECT CAST('2009-01-05' AS date) as SalesDate, 'Fernando Ross' as FullName,'South' as
Territory, 'Accessories' as Subcategory,'Carrying Case' as Product, CAST(9248.15 AS money) As Sales,
37 as Quantity
UNION SELECT CAST('2009-01-05' AS date) as SalesDate, 'Lauren Johnson' as FullName,'Central' as
Territory, 'Accessories' as Subcategory,'Tripod' as Product, CAST(1350.00 AS money) AS Sales, 18 as
Quantity
UNION SELECT CAST('2009-01-05' AS date) as SalesDate, 'Warren Pal' as FullName,'North' as Territory,
'Accessories' as Subcategory,'Tripod' as Product, CAST(1800.00 AS money) AS Sales, 24 as Quantity
UNION SELECT CAST('2009-01-05' AS date) as SalesDate, 'Fernando Ross' as FullName,'South' as
Territory, 'Accessories' as Subcategory,'Tripod' as Product, CAST(1125.00 AS money) AS Sales, 15 as
Quantity
UNION SELECT CAST('2009-01-05' AS date) as SalesDate, 'Lauren Johnson' as FullName,'Central' as
Territory, 'Accessories' as Subcategory,'Lens Adapter' as Product, CAST(1147.50 AS money) AS Sales,
17 as Quantity
UNION SELECT CAST('2009-01-05' AS date) as SalesDate, 'Warren Pal' as FullName,'North' as Territory,
'Accessories' as Subcategory, 'Lens Adapter' as Product, CAST(742.50 AS money) AS Sales, 11 as
Quantity
UNION SELECT CAST('2009-01-05' AS date) as SalesDate, 'Fernando Ross' as FullName,'South' as
Territory, 'Accessories' as Subcategory,'Lens Adapter' as Product, CAST(1417.50 AS money) AS Sales,
21 as Quantity
UNION SELECT CAST('2009-01-06' AS date) as SalesDate, 'Lauren Johnson' as FullName,'Central' as
Territory, 'Accessories' as Subcategory, 'Carrying Case' as Product, CAST(13497.30 AS money) AS
Sales, 54 as Quantity
UNION SELECT CAST('2009-01-06' AS date) as SalesDate, 'Warren Pal' as FullName,'North' as Territory,
'Accessories' as Subcategory, 'Carrying Case' as Product, CAST(11997.60 AS money) AS Sales, 48 as
Quantity
UNION SELECT CAST('2009-01-06' AS date) as SalesDate, 'Fernando Ross' as FullName,'South' as
Territory, 'Accessories' as Subcategory, 'Carrying Case' as Product, CAST(10247.95 AS money) As
Sales, 41 as Quantity
UNION SELECT CAST('2009-01-06' AS date) as SalesDate, 'Lauren Johnson' as FullName,'Central' as
Territory, 'Accessories' as Subcategory, 'Tripod' as Product, CAST(1200.00 AS money) AS Sales, 16 as
Quantity
UNION SELECT CAST('2009-01-06' AS date) as SalesDate, 'Warren Pal' as FullName,'North' as Territory,
'Accessories' as Subcategory,'Tripod' as Product, CAST(2025.00 AS money) AS Sales, 27 as Quantity
UNION SELECT CAST('2009-01-06' AS date) as SalesDate, 'Fernando Ross' as FullName,'South' as
Territory, 'Accessories' as Subcategory,'Tripod' as Product, CAST(1425.00 AS money) AS Sales, 19 as
Quantity
UNION SELECT CAST('2009-01-06' AS date) as SalesDate, 'Lauren Johnson' as FullName,'Central' as
Territory, 'Accessories' as Subcategory,'Lens Adapter' as Product, CAST(887.50 AS money) AS Sales, 13
as Quantity
UNION SELECT CAST('2009-01-06' AS date) as SalesDate, 'Warren Pal' as FullName,'North' as Territory,
'Accessories' as Subcategory, 'Lens Adapter' as Product, CAST(607.50 AS money) AS Sales, 9 as
Quantity
UNION SELECT CAST('2009-01-06' AS date) as SalesDate, 'Fernando Ross' as FullName,'South' as
Territory, 'Accessories' as Subcategory,'Lens Adapter' as Product, CAST(1215.00 AS money) AS Sales,
18 as Quantity
UNION SELECT CAST('2009-01-05' AS date) as SalesDate, 'Lauren Johnson' as FullName,'Central' as
Territory, 'Digital' as Subcategory,'Compact Digital' as Product, CAST(10191.00 AS money) AS Sales,
79 as Quantity
UNION SELECT CAST('2009-01-05' AS date) as SalesDate, 'Warren Pal' as FullName,'North' as Territory,
'Digital' as Subcategory, 'Compact Digital' as Product, CAST(8772.00 AS money) AS Sales, 68 as
Quantity
UNION SELECT CAST('2009-01-05' AS date) as SalesDate, 'Fernando Ross' as FullName,'South' as
Territory, 'Digital' as Subcategory, 'Compact Digital' as Product, CAST(10578.00 AS money) AS Sales,
82 as Quantity
UNION SELECT CAST('2009-01-05' AS date) as SalesDate, 'Lauren Johnson' as FullName,'Central' as
Territory,'Digital' as Subcategory, 'Slim Digital' as Product, CAST(7218.10 AS money) AS Sales, 38 as
Quantity
UNION SELECT CAST('2009-01-05' AS date) as SalesDate, 'Warren Pal' as FullName,'North' as
Territory,'Digital' as Subcategory, 'Slim Digital' as Product, CAST(8357.80 AS money) AS Sales, 44 as
Quantity
UNION SELECT CAST('2009-01-05' AS date) as SalesDate, 'Fernando Ross' as FullName,'South' as
Territory,'Digital' as Subcategory,'Slim Digital' as Product, CAST(9307.55 AS money) AS Sales, 49 as
Quantity
UNION SELECT CAST('2009-01-06' AS date) as SalesDate, 'Lauren Johnson' as FullName,'Central' as
Territory, 'Digital' as Subcategory,'Compact Digital' as Product, CAST(3870.00 AS money) AS Sales, 30
as Quantity
UNION SELECT CAST('2009-01-06' AS date) as SalesDate, 'Warren Pal' as FullName,'North' as Territory,
'Digital' as Subcategory,'Compact Digital' as Product, CAST(5805.00 AS money) AS Sales, 45 as
Quantity
UNION SELECT CAST('2009-01-06' AS date) as SalesDate, 'Fernando Ross' as FullName,'South' as
Territory, 'Digital' as Subcategory, 'Compact Digital' as Product, CAST(8643.00 AS money) AS Sales,
67 as Quantity
UNION SELECT CAST('2009-01-06' AS date) as SalesDate, 'Lauren Johnson' as FullName,'Central' as
Territory, 'Digital' as Subcategory, 'Slim Digital' as Product, CAST(9877.40 AS money) AS Sales, 52
as Quantity
UNION SELECT CAST('2009-01-06' AS date) as SalesDate, 'Warren Pal' as FullName,'North' as Territory,
'Digital' as Subcategory, 'Slim Digital' as Product, CAST(12536.70 AS money) AS Sales, 66 as Quantity
UNION SELECT CAST('2009-01-06' AS date) as SalesDate, 'Fernando Ross' as FullName,'South' as
Territory, 'Digital' as Subcategory, 'Slim Digital' as Product, CAST(6648.25 AS money) AS Sales, 35
as Quantity

7. Click the Run icon (!) to run the query.


The query results are the data available to display in your report.

8. Click OK .

2. Add and Configure a List


In Reporting Services the list data region is ideal for creating free-form reports. It's based on the tablix data
region, as are tables and matrixes. For more information, see Create Invoices and Forms with Lists.
You will use a list to display the sales information for sales territories in a report formatted like a newsletter. The
information is grouped by territory. You will add a new row group that groups data by territory, and then delete
the built-in Details row group.
To add a list
1. On the Inser t tab > Data Regions > List .
2. Click in the report body (between the title and footer areas) and drag to make the list box. Make the list
box 7 inches tall and 6.25 inches wide. To get the exact size, in the Proper ties pane under Position , type
values for the Width and Height properties.

NOTE
This report uses the paper size Letter (8.5 X11) and 1 inch margins. A list box taller than 9 inches or wider than
6.5 inches might generate blank pages.

3. Click inside the list box, right-click the bar at the top of the list, and click Tablix Proper ties .
4. In the Dataset name drop-down list, select ListDataset .
5. Click OK .
6. Right-click inside the list, and then click Rectangle Proper ties .
7. On the General tab, select the Add a page break after check box.
8. Click OK .
To add a new row group and to delete the Details group
1. In the Row Groups pane, right-click the Details group, point to Add Group , and then click Parent Group .

2. In the Group by list, select [Territory].

3. Click OK .
A column containing the cell [Territory] is added to the list.
4. Right-click the Territory column in the list, and then click Delete Columns .

5. Select Delete Columns only .


6. In the Row Groups pane, right-click the Details group > Delete Group .
7. Select Delete Group only .
8. Click OK .

3. Add Graphic elements


One advantage of list data regions is that you can add report items such as rectangles and text boxes anywhere,
instead of being limited to a tabular layout. You will enhance the appearance of the report by adding a graphic (a
rectangle filled with a color).
To add graphic elements to the report
1. On the Inser t tab, select Rectangle .
2. Click in the upper left corner of the list and drag to make the rectangle 7 inches tall and 3.5 inches wide.
Again, to get the exact size, in the Proper ties pane under Position , type values for Width and Height .
3. Right-click the rectangle > Rectangle Proper ties .
4. Click the Fill tab.
5. In Fill color , select Light Gray .
6. Click OK .
7. Click Run to preview the report.
The left side of the report now has vertical graphic that consists of a light gray rectangle, as shown in the
following image.
4. Add Free Form Text
You can add text boxes to display static text that is repeated on each report page, as well as data fields.
To add text to the report
1. Click Design to return to design view.
2. On the Inser t tab > Text Box . Click the upper left corner of the list, inside of the rectangle you added
previously, and drag to make the text box about 3.45 inches wide and 5 inches tall.
3. With the cursor in the text box and type: Newsletter for . Include a space after the word "for", to
separate the text from the field you will add in the next step.

4. Drag the [Territory] field from ListDataSet in the Report Data pane to the text box and place it after
"Newsletter for ".
5. Select the text and the [Territory] field.
6. On the Home tab > Font , select:
Segoe Semibold .
20 pt .
Tomato .
7. Place the cursor below the text you typed in step 3 and type: Hello with a space after the word, to
separate the text and the field that you will add in the next step.
8. Drag the [FullName] field from ListDataSet in the Report Data pane to the text box and place it after
"Hello ", then type a comma (,).
9. Select the text you added in the previous steps.
10. On the Home tab > Font , select:
Segoe Semibold .
16 pt .
Black .
11. Place the cursor below the text you added in steps 9 through 13, and then copy and paste the following
meaningless text:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin sed dolor in ipsum pulvinar egestas.
Sed sed lacus at leo ornare ultricies. Vivamus velit risus, euismod nec sodales gravida, gravida in
dui. Etiam ullamcorper elit vitae justo fermentum ut ullamcorper augue sodales.
Ut placerat, nisl quis feugiat adipiscing, nibh est aliquet est, mollis faucibus mauris lectus quis
arcu. In mollis tincidunt lacinia. In vitae erat ut lorem tincidunt luctus. Curabitur et magna nunc,
sit amet adipiscing nisi. Nulla rhoncus elementum orci nec tincidunt.
Aliquam imperdiet cursus erat vel tincidunt. Donec et neque ac urna rutrum sodales. In id purus et
nisl dignissim dapibus. Sed rhoncus metus at felis feugiat eu tempor dolor vehicula. Lorem ipsum
dolor sit amet, consectetur adipiscing elit. Nullam faucibus consectetur diam eu pellentesque.

12. Select the text you just added.


13. On the Home tab > Font , select:
Segoe UI .
10 pt .
Black .
14. Place the cursor inside the text box, below the meaningless text and type: Congratulations on your
total sales of , with a space after the word to separate the text and the field you will add in the next step.
15. Drag the Sales field to the text box, place it after the text you typed in the previous step, then type an
exclamation mark (!).
16. Select the text and the field you just added.
17. On the Home tab > Font , select:
Segoe Semibold .
16 pt .
Black .
18. Select just the [Sales] field, right-click the field > Expression .
19. In the Expression box, change the expression to include the Sum function as follows:

=Sum(Fields!Sales.value)

20. Click OK .

21. With [Sum(Sales)] still selected, on the Home tab > Number group > Currency .
22. Right-click the text box with the "Click to add title" text, and then click Delete .
23. Select the list box. Select the two double-headed arrows and move it to the top of the page.

24. Click Run to preview the report.


The report displays static text and each report page includes data that pertains to a territory. Sales are formatted
as currency.
5. Add a Table to Show Sales Details
Use the New Table and Matrix Wizard to add a table to the free form report. After you complete the wizard, you
will manually add a row for totals.
To add a table
1. On the Inser t tab > Data Regions area > Table > Table Wizard .
2. On the Choose a dataset page, click ListDataset > Next .
3. On the Arrange fields page, drag the Product field from Available fields to Values.
4. Repeat step 3 for SalesDate, Quantity, and Sales. Place SalesDate below Product, Quantity below
SalesDate, and Sales below SalesDate.
5. Click Next .
6. On the Choose the layout page, view the layout of the table.
The table is simple: five columns with no row or column groups. Because it has no groups, the layout
options related to groups, are not available. You will manually update the table to include a total later in
the tutorial.
7. Click Next .
8. Click Finish .
9. Drag the table to below the text box that you added in lesson 4.
NOTE
Make sure the table is inside the list box and inside the gray rectangle.

10. With the table selected, in the Row Group pane right-click Details > Add Total > After .

11. Select the cell in the Product column and type Total .

12. Select the [SalesDate] field. On the Home tab > Number , change Default to Date .
13. Select the [Sum(Sales)] fields. On the Home tab > Number , change Default to Currency .
Click Run to preview the report.
The report displays a table with sales details and totals.
6. Save the Report
You can save reports to a report server, SharePoint library, or your computer.
In this tutorial, save the report to a report server. If you do not have access to a report server, save the report to
your computer.
To save the report on a report server
1. From the Repor t Builder button, click Save As .
2. Click Recent Sites and Ser vers .
3. Select or type the name of the report server where you have permission to save reports.
The message "Connecting to report server" appears. When the connection is complete, you see the
contents of the report folder that the report server administrator specified as the default location for
reports.
4. In Name , replace the default name with SalesInformationByTerritor y .
5. Click Save .
The report is saved to the report server. The name of report server that you are connected to appears in the
status bar at the bottom of the window.
To save the report on your computer
1. From the Repor t Builder button, click Save As .
2. Click Desktop , My Documents , or My computer , and then browse to the folder where you want to
save the report.
3. In Name , replace the default name with SalesInformationByTerritor y .
4. Click Save .

7. (Optional) Add a Line to Separate Areas of the Report


Add a line to separate the editorial and details areas of the report.
To add a line
1. Click Design to return to design view.
2. On the Inser t tab > Repor t Items > Line.
3. Draw a line below the text box you added in lesson 4.
4. Click the line, and on the Home tab > Border , select:
Width select 3 pt.
Color select Tomato .

8. (Optional) Add Summary Data Visualizations


Rectangles help you control how the report renders. Place a pie and column chart inside a rectangle to ensure
that the report renders the way you want.
To add a rectangle
1. Click Design to return to design view.
2. On the Inser t tab > Repor t Items > Rectangle . Drag the rectangle inside the list box to the right of the
table to make a rectangle about 2.25 inches wide and 7.9 inches tall.
3. With the new rectangle selected, in the Properties pane, make BorderColor LightGrey , BorderStyle
Solid , and BorderWidth 2 pt .
4. Align the tops of the rectangle and the table.

To add a pie chart


1. On the Inser t tab > Data Visualizations > Char t > Char t Wizard .
2. On the Choose a dataset page, click ListDataset > Next .
3. Click Pie > Next .
4. On the arrange chart fields page, drag Product to Categories .
5. Drag Quantity to Values , then click Next .
6. Click Finish .
7. Resize the chart that appears in the upper left corner of the report to be about 2.25 inches wide and 3.6
inches tall.
8. Drag the chart inside the rectangle.
9. Select the chart title and type: Product Quantities Sold .
10. On the Home tab > Font , make the title:
Font Segoe UI Semibold .
Size 12 pt .
Color Black .
11. Right-click the legend > Legend Proper ties .
12. On the General tab, under Legend position , select the center dot at the bottom.
13. Click OK .
14. Drag to make the chart region taller, if necessary.

To add a column chart


1. On the Inser t tab > Data Visualizations > Char t, > Char t Wizard .
2. On the Choose a dataset page, click ListDataset , then click Next .
3. Click Column , then click Next .
4. On the Arrange char t fields page, drag the Product field to Categories .
5. Drag Sales to Values, and then click Next .
Values display on the vertical axis.
6. Click Finish .
A column chart is added to the upper left corner of the report.
7. Resize the chart to be about 2.25 inches wide and almost 4 inches tall.
8. Drag the chart inside the rectangle, below the pie chart.
9. Select the chart title and type: Product Sales .
10. On the Home tab > Font , make the title:
Font Segoe UI Semibold .
Size 12 pt .
Color Black .
11. Right click the legend, and then click Delete Legend .
NOTE
Removing the legend makes the chart more readable when the chart is small.

12. Select the chart axis, and on the Home tab > Number > Currency .
13. Select Decrease Decimal two times, so the number shows just dollars and no cents.
To verify the charts are inside the rectangle
You can use rectangles as containers for other items on a report page. Read more about rectangles as
containers.
1. Select the rectangle you created and added the charts to, earlier in this lesson.
In the Properties pane, the Name property displays the name of the rectangle.

2. Click the pie chart.


3. In the Proper ties pane, verify that the Parent property contains the name of the rectangle.
4. Click the column chart and repeat step 3.

NOTE
If the charts are not inside the rectangle, the rendered report does not display the charts together.

To make the charts the same size


1. Select the pie chart, press the Ctrl key, and then select the column chart.
2. With both charts selected, right-click > Layout > Make Same Width .

NOTE
The item you click first determines the width of all the selected items.

3. Click Run to preview the report.


The report now displays summary sales data in pie and column charts.

Next Steps
This concludes the tutorial for how to create a free-form report.
For more information about lists, see:
Tables, Matrices, and Lists (Report Builder and SSRS)
Create Invoices and Forms with Lists
Tablix Data Region Cells, Rows, and Columns (Report Builder) and SSRS.
For more information about query designers, see Query Design Tools (SSRS) and Text-based Query Designer
User Interface (Report Builder).

See Also
Report Builder Tutorials
Tutorial: Format Text (Report Builder)
11/2/2020 • 14 minutes to read • Edit Online

In this tutorial, you practice formatting text in various ways in a Reporting Services paginated report. You can
experiment with different formats.
After you set up the blank report with the data source and dataset, you can pick the formats you want to explore.
The following illustration shows a report similar to the one you will create.

In one step, you make a mistake on purpose so you can see why it is a mistake. Then you correct the mistake to
achieve the desired effect.
Estimated time to complete this tutorial: 20 minutes.

Requirements
For information about requirements, see Prerequisites for Tutorials (Report Builder).

Create a Blank Report with a Data Source and Dataset


To create a blank report
1. Start Report Builder either from your computer, the Reporting Services web portal, or SharePoint
integrated mode.
The New Repor t or Dataset dialog box opens.
If you don't see the New Repor t or Dataset dialog box, on the File menu > New .
2. In the left pane of the Getting Star ted dialog box, verify that New Repor t is selected.
3. In the right pane, click Blank Repor t .
To create a data source
1. In the Report Data pane, click New > Data Source .
If you don't see the Repor t Data pane, on the View tab, check Repor t Data .
2. In the Name box, type: TextDataSource
3. Click Use a connection embedded in my repor t .
4. Verify that the connection type is Microsoft SQL Server, and then in the Connection string box type:
Data Source = <servername>

NOTE
The expression <servername> , for example Report001, specifies a computer on which an instance of the SQL
Server Database Engine is installed. This tutorial does not need specific data; it just needs a connection to a SQL
Server database. If you already have a data source connection listed under Data Source Connections , you can
select it and go to the next procedure, "To create a dataset." For more information, see Alternative Ways to Get a
Data Connection (Report Builder).

5. Click OK .
To create a dataset
1. In the Report Data pane, click New > Dataset .
2. Verify that the data source is TextDataSource .
3. In the Name box, type: TextDataset.
4. Verify that the Text query type is selected, and then click Quer y Designer .
5. Click Edit as Text .
6. Paste the following query into the query pane:

NOTE
In this tutorial, the query already contains the data values, so that it does not need an external data source. This
makes the query quite long. In a business environment, a query would not contain the data. This is for learning
purposes only.

SELECT CAST('2015-01-05' AS date) as SalesDate, 'Lauren Johnson' as FullName,'Central' as Territory,


'Accessories' as Subcategory,'Carrying Case' as Product, CAST(16996.60 AS money) AS Sales, 68 as
Quantity, 'Install Report Builder' as LinkText, 'https://go.microsoft.com/fwlink/?LinkId=154882' AS
URL
UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'Warren Pal' as FullName,'North' as Territory,
'Accessories' as Subcategory, 'Carrying Case' as Product, CAST(13747.25 AS money) AS Sales, 55 as
Quantity, 'Report Builder in SQL Server' as Link, 'https://go.microsoft.com/fwlink/?LinkId=160556' AS
URL
UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'Fernando Ross' as FullName,'South' as
Territory, 'Accessories' as Subcategory,'Carrying Case' as Product, CAST(9248.15 AS money) As Sales,
37 as Quantity, 'What is New in Reporting Services (SSRS)' as Link,
'https://go.microsoft.com/fwlink/?LinkId=165064' AS URL
UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'Lauren Johnson' as FullName,'Central' as
Territory, 'Accessories' as Subcategory,'Tripod' as Product, CAST(1350.00 AS money) AS Sales, 18 as
Quantity, 'Install Report Builder' as LinkText, 'https://go.microsoft.com/fwlink/?LinkId=154882' AS
URL
UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'Warren Pal' as FullName,'North' as Territory,
'Accessories' as Subcategory,'Tripod' as Product, CAST(1800.00 AS money) AS Sales, 24 as Quantity,
'Report Builder in SQL Server' as Link, 'https://go.microsoft.com/fwlink/?LinkId=160556' AS URL
UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'Fernando Ross' as FullName,'South' as
Territory, 'Accessories' as Subcategory,'Tripod' as Product, CAST(1125.00 AS money) AS Sales, 15 as
Quantity, 'What is New in Reporting Services (SSRS)' as Link, 'https://go.microsoft.com/fwlink/?
LinkId=165064' AS URL
UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'Lauren Johnson' as FullName,'Central' as
Territory, 'Accessories' as Subcategory,'Lens Adapter' as Product, CAST(1147.50 AS money) AS Sales,
17 as Quantity, 'Install Report Builder' as LinkText, 'https://go.microsoft.com/fwlink/?
LinkId=154882' AS URL
UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'Warren Pal' as FullName,'North' as Territory,
'Accessories' as Subcategory, 'Lens Adapter' as Product, CAST(742.50 AS money) AS Sales, 11 as
Quantity, 'Report Builder in SQL Server' as Link, 'https://go.microsoft.com/fwlink/?LinkId=160556' AS
URL
UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'Fernando Ross' as FullName,'South' as
Territory, 'Accessories' as Subcategory,'Lens Adapter' as Product, CAST(1417.50 AS money) AS Sales,
21 as Quantity, 'What is New in Reporting Services (SSRS)' as Link,
'https://go.microsoft.com/fwlink/?LinkId=165064' AS URL
UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'Lauren Johnson' as FullName,'Central' as
Territory, 'Accessories' as Subcategory, 'Carrying Case' as Product, CAST(13497.30 AS money) AS
Sales, 54 as Quantity, 'Install Report Builder' as LinkText, 'https://go.microsoft.com/fwlink/?
LinkId=154882' AS URL
UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'Warren Pal' as FullName,'North' as Territory,
'Accessories' as Subcategory, 'Carrying Case' as Product, CAST(11997.60 AS money) AS Sales, 48 as
Quantity, 'Report Builder in SQL Server' as Link, 'https://go.microsoft.com/fwlink/?LinkId=160556' AS
URL
UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'Fernando Ross' as FullName,'South' as
Territory, 'Accessories' as Subcategory, 'Carrying Case' as Product, CAST(10247.95 AS money) As
Sales, 41 as Quantity, 'What is New in Reporting Services (SSRS)' as Link,
'https://go.microsoft.com/fwlink/?LinkId=165064' AS URL
UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'Lauren Johnson' as FullName,'Central' as
Territory, 'Accessories' as Subcategory, 'Tripod' as Product, CAST(1200.00 AS money) AS Sales, 16 as
Quantity, 'Install Report Builder' as LinkText, 'https://go.microsoft.com/fwlink/?LinkId=154882' AS
URL
UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'Warren Pal' as FullName,'North' as Territory,
'Accessories' as Subcategory,'Tripod' as Product, CAST(2025.00 AS money) AS Sales, 27 as Quantity,
'Report Builder in SQL Server' as Link, 'https://go.microsoft.com/fwlink/?LinkId=160556' AS URL
UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'Fernando Ross' as FullName,'South' as
Territory, 'Accessories' as Subcategory,'Tripod' as Product, CAST(1425.00 AS money) AS Sales, 19 as
Quantity, 'What is New in Reporting Services (SSRS)' as Link, 'https://go.microsoft.com/fwlink/?
LinkId=165064' AS URL
UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'Lauren Johnson' as FullName,'Central' as
Territory, 'Accessories' as Subcategory,'Lens Adapter' as Product, CAST(887.50 AS money) AS Sales, 13
as Quantity, 'Install Report Builder' as LinkText, 'https://go.microsoft.com/fwlink/?LinkId=154882'
AS URL
UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'Warren Pal' as FullName,'North' as Territory,
'Accessories' as Subcategory, 'Lens Adapter' as Product, CAST(607.50 AS money) AS Sales, 9 as
Quantity, 'Report Builder in SQL Server' as Link, 'https://go.microsoft.com/fwlink/?LinkId=160556' AS
URL
UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'Fernando Ross' as FullName,'South' as
Territory, 'Accessories' as Subcategory,'Lens Adapter' as Product, CAST(1215.00 AS money) AS Sales,
18 as Quantity, 'What is New in Reporting Services (SSRS)' as Link,
'https://go.microsoft.com/fwlink/?LinkId=165064' AS URL
UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'Lauren Johnson' as FullName,'Central' as
Territory, 'Digital' as Subcategory,'Compact Digital' as Product, CAST(10191.00 AS money) AS Sales,
79 as Quantity, 'Install Report Builder' as LinkText, 'https://go.microsoft.com/fwlink/?
LinkId=154882' AS URL
UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'Warren Pal' as FullName,'North' as Territory,
'Digital' as Subcategory, 'Compact Digital' as Product, CAST(8772.00 AS money) AS Sales, 68 as
Quantity, 'Report Builder in SQL Server' as Link, 'https://go.microsoft.com/fwlink/?LinkId=160556' AS
URL
UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'Fernando Ross' as FullName,'South' as
Territory, 'Digital' as Subcategory, 'Compact Digital' as Product, CAST(10578.00 AS money) AS Sales,
Territory, 'Digital' as Subcategory, 'Compact Digital' as Product, CAST(10578.00 AS money) AS Sales,
82 as Quantity, 'What is New in Reporting Services (SSRS)' as Link,
'https://go.microsoft.com/fwlink/?LinkId=165064' AS URL
UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'Lauren Johnson' as FullName,'Central' as
Territory,'Digital' as Subcategory, 'Slim Digital' as Product, CAST(7218.10 AS money) AS Sales, 38 as
Quantity, 'Install Report Builder' as LinkText, 'https://go.microsoft.com/fwlink/?LinkId=154882' AS
URL
UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'Warren Pal' as FullName,'North' as
Territory,'Digital' as Subcategory, 'Slim Digital' as Product, CAST(8357.80 AS money) AS Sales, 44 as
Quantity, 'Report Builder in SQL Server' as Link, 'https://go.microsoft.com/fwlink/?LinkId=160556' AS
URL
UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'Fernando Ross' as FullName,'South' as
Territory,'Digital' as Subcategory,'Slim Digital' as Product, CAST(9307.55 AS money) AS Sales, 49 as
Quantity, 'What is New in Reporting Services (SSRS)' as Link, 'https://go.microsoft.com/fwlink/?
LinkId=165064' AS URL
UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'Lauren Johnson' as FullName,'Central' as
Territory, 'Digital' as Subcategory,'Compact Digital' as Product, CAST(3870.00 AS money) AS Sales, 30
as Quantity, 'Install Report Builder' as LinkText, 'https://go.microsoft.com/fwlink/?LinkId=154882'
AS URL
UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'Warren Pal' as FullName,'North' as Territory,
'Digital' as Subcategory,'Compact Digital' as Product, CAST(5805.00 AS money) AS Sales, 45 as
Quantity, 'Report Builder in SQL Server' as Link, 'https://go.microsoft.com/fwlink/?LinkId=160556' AS
URL
UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'Fernando Ross' as FullName,'South' as
Territory, 'Digital' as Subcategory, 'Compact Digital' as Product, CAST(8643.00 AS money) AS Sales,
67 as Quantity, 'What is New in Reporting Services (SSRS)' as Link,
'https://go.microsoft.com/fwlink/?LinkId=165064' AS URL
UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'Lauren Johnson' as FullName,'Central' as
Territory, 'Digital' as Subcategory, 'Slim Digital' as Product, CAST(9877.40 AS money) AS Sales, 52
as Quantity, 'Install Report Builder' as LinkText, 'https://go.microsoft.com/fwlink/?LinkId=154882'
AS URL
UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'Warren Pal' as FullName,'North' as Territory,
'Digital' as Subcategory, 'Slim Digital' as Product, CAST(12536.70 AS money) AS Sales, 66 as
Quantity, 'Report Builder in SQL Server' as Link, 'https://go.microsoft.com/fwlink/?LinkId=160556' AS
URL
UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'Fernando Ross' as FullName,'South' as
Territory, 'Digital' as Subcategory, 'Slim Digital' as Product, CAST(6648.25 AS money) AS Sales, 35
as Quantity, 'What is New in Reporting Services (SSRS)' as Link, 'https://go.microsoft.com/fwlink/?
LinkId=165064' AS URL

7. Click Run (! ) to run the query.


The query results are the data available to display in your report.
8. Click OK .
9. Click OK .

Add a Field to the Report Design Surface


If you want a field from your dataset to appear in a report, your first impulse may be to drag it directly to the
design surface. This exercise points out why that doesn't work and what to do instead.
To add a field to the report (and get the wrong result)
1. Drag the FullName field from the Report Data pane to the design surface.
Report Builder creates a text box with an expression in it, represented as <Expr> .
2. Click Run .
You only see one record, Fernando Ross , which is alphabetically the first record in the query. The field
does not repeat to show the other records in that field.
3. Click Design to return to design view.
4. Select the expression <Expr> in the text box.
5. In the Properties pane, for the Value property, you see the following (if you don't see the Properties
pane, on the View tab, check Proper ties ):

=First(Fields!FullName.Value, "TextDataSet")

The First function is designed to retrieve only the first value in a field, and that is what it has done.
Dragging the field directly to the design surface created a text box. Text boxes by themselves are not data
regions, so they do not display data from a report dataset. Text boxes in data regions, such as tables,
matrices, and lists, do display data.
6. Select the text box (if you have the expression selected, press ESC to select the text box), and press the
DELETE key.
To add a field to the report (and get the right result)
1. On the Inser t tab of the ribbon, in the Data Regions area, click List . Click the design surface, and then
drag to create a box that about two inches wide and one inch tall.
2. Drag the FullName field from the Report Data pane to the list box.
This time Report Builder creates a text box with the expression [FullName] in it.
3. Click Run .
Note that this time the box repeats to show all the records in the query.
4. Click Design to return to design view.
5. Select the expression in the text box.
6. In the Properties pane, for the Value property, you see the following:

=Fields!FullName.Value

By dragging the text box to the list data region, you display the data that is in that field in the dataset.
7. Select the list box and press the DELETE key.

Add a Table to the Report Design Surface


Create this table so you'll have a place to put hyperlinks and rotated text.
1. On the Inser t tab > Table > Table Wizard .
2. On the Choose a dataset page of the New Table or Matrix wizard, click Choose an existing dataset
in this repor t or a shared dataset > TextDataset (in this Repor t) > Next .
3. On the Arrange fields page, drag the Territor y , LinkText , and Product fields to Row groups , drag the
Sales field to Values , then click Next .
4. On the Choose the layout page, clear the Expand/collapse groups check box so you can see the
whole table, then click Next .
5. Click Finish .
6. Click Run .
The table looks OK, but it has two Total rows. The LinkText column doesn't need a Total row.
7. Click Design to return to design view.
8. Select the Total cell in the LinkText column, then hold down the SHIFT key and select the two cells to its
right: and the empty cell in the Product column and the [Sum(Sales)] cell in the Sales column.
9. With those three cells selected, right-click one of those cells and click Delete Rows .
10. Click Run .
Now it has only one Total row.

Add a Hyperlink to the Report


In this section, you add a hyperlink to text in the table from the previous section.
1. Click Design to return to design view.
2. Right-click in the cell containing [LinkText] , and click Text Box Proper ties .
3. On the Action tab, click Go to URL .
4. In the Select URL box, click [URL] , then click OK .
5. Note that the text does not look any different. You need to make it look like link text.
6. Select [LinkText] .
7. On the Home tab > Font , select Underline , and change Color to Blue .
8. Click Run .
The text now looks like a link.

9. Click a link. If the computer is connected to the Internet, a browser will open to a Report Builder Help
topic.

Rotate Text in the Report


In this section, you rotate some of the text in the table from the previous sections.
1. Click Design to return to design view.
2. Click in the cell containing [Territory].

3. On the Home tab in the Font section, click the Bold button.
4. If the Properties pane is not open, on the View tab, select the Proper ties check box.
5. Locate the WritingMode property in the Properties pane, and change it from Default to Rotate270 .

NOTE
When the properties in the Properties pane are organized into categories, WritingMode is in the Localization
category. Be sure you have selected the cell and not the text. WritingMode is a property of the text box, not of
the text.

6. On the Home tab > Paragraph section, select Middle and Center to locate the text in the center of the
cell both vertically and horizontally.
7. Click Run (! ).
Now the text in the [Territory] cell runs vertically from the bottom to the top of the cells.

Format Currency
1. Click Design to switch to design view.
2. Click the top table cell that contains [Sum(Sales)] , hold down the SHIFT key, and click the bottom table
cell that contains [Sum(Sales)] .
3. On the Home tab > Number group > Currency button.
4. (Optional) If your regional setting is English (United States), the default sample text is [$12,345.00 ]. If
you do not see an example currency value, in the Numbers group, click Placeholder Styles > Sample
Values .

5. (Optional) On the Home tab, in the Number group, click the Decrease Decimals button twice to
display dollar figures with no cents.
6. Click Run (! ) to preview the report.
The report now displays formatted data and is easier to read.

Displaying Text with HTML Formatting


1. Click Design to switch to design view.
2. On the Inser t tab, click Text Box , and then on the design surface, click and drag to create a text box
under the table, about four inches wide and three inches tall.
3. Copy this text and paste it into the text box:
<h4>Limitations of cascading style sheet attributes</h4>
<p>Only a basic set of <b>cascading style sheet (CSS)</b> attributes are defined:</p>
<ul><li>
text-align, text-indent
</li><li>
font-family, font-size
</li><li>
color
</li><li>
padding, padding-bottom, padding-top, padding-right, padding-left
</li><li>
font-weight
</li></ul>

4. Drag the lower edge of the text box so all the text fits. You notice the design surface gets larger as you
drag.
5. Select all of the text in the text box.
6. Right-click all of the selected text and click Text Proper ties .
This is a property of the text, not the text box, so in one text box you could have a mixture of plain text and
text that uses HTML tags as styles.
7. On the General tab, under Markup type , click HTML - Interpret HTML tags as styles .
8. Click OK .
9. Click Run (! ) to preview the report.
The text in the text box is displayed as a heading, paragraph, and bulleted list.

Save the Report


You can save reports to a report server, SharePoint library, or your computer.
In this tutorial, save the report to a report server. If you do not have access to a report server, save the report to
your computer.
To save the report on a report server
1. From the Repor t Builder button, click Save As .
2. Click Recent Sites and Ser vers .
3. Select or type the name of the report server where you have permission to save reports.
The message "Connecting to report server" appears. When the connection is complete, you see the
contents of the report folder that the report server administrator specified as the default location for
reports.
4. In Name , replace the default name with a name of your choosing.
5. Click Save .
The report is saved to the report server. The name of report server that you are connected to appears in the
status bar at the bottom of the window.
To save the report on your computer
1. From the Repor t Builder button, click Save As .
2. Click Desktop , My Documents , or My computer , and then browse to the folder where you want to
save the report.
3. In Name , replace the default name with a name of your choosing.
4. Click Save .

Next Steps
There are many ways to format text in Report Builder. Tutorial: Creating a Free Form Report contains more
examples.
Report Builder Tutorials Formatting Report Items
Report Builder in SQL Server
More questions? Try asking the Reporting Services forum
Tutorial: Add a Column Chart to Your Report
(Report Builder)
11/2/2020 • 8 minutes to read • Edit Online

In this tutorial, you create a Reporting Services paginated report with a column chart displaying a series as a set
of vertical bars grouped by category.
Column charts are useful to:
Show data changes over a period of time.
Compare the relative value of multiple series.
Display a moving average to show trends.
The following illustration shows the column chart you will create, with a moving average.

NOTE
In this tutorial, the steps for the wizard are consolidated into one procedure. For step-by-step instructions about how to
browse to a report server, choose a data source, and create a dataset, see the first tutorial in this series: Tutorial: Creating
a Basic Table Report (Report Builder).

Estimated time to complete this tutorial: 15 minutes.

Requirements
For information about requirements, see Prerequisites for Tutorials (Report Builder).

1. Create a Chart Report from the Chart Wizard


In this section, you go through the Chart Wizard to create an embedded dataset, choose a shared data source,
and create a column chart.
NOTE
The query in this tutorial contains the data values, so it does not need an external data source. This makes the query
quite long. In a business environment, a query would not contain the data. This is for learning purposes only.

To create a chart report


1. Start Report Builder either from your computer, the Reporting Services web portal, or SharePoint
integrated mode.
The New Repor t or Dataset dialog box opens.
If you don't see the New Repor t or Dataset dialog box, on the File menu > New .
2. In the left pane, verify that New Repor t is selected.
3. In the right pane, click Char t Wizard .
4. On the Choose a dataset page , click Create a dataset , and then click Next .
5. On the Choose a connection to a data source page, select an existing data source or browse to the
report server and select a data source, and then click Next . You may need to enter a user name and
password.

NOTE
The data source you choose is unimportant, as long as you have adequate permissions. You will not be getting
data from the data source. For more information, see Alternative Ways to Get a Data Connection (Report Builder).

6. On the Design a quer y page, click Edit as Text .


7. Paste the following query into the query pane:

SELECT CAST('2015-01-01' AS date) AS SalesDate, CAST(54995.21 AS money) AS Sales


UNION SELECT CAST('2015-01-05' AS date) AS SalesDate, CAST(64499.04 AS money) AS Sales
UNION SELECT CAST('2015-02-11' AS date) AS SalesDate, CAST(37821.79 AS money) AS Sales
UNION SELECT CAST('2015-03-18' AS date) AS SalesDate, CAST(53633.08 AS money) AS Sales
UNION SELECT CAST('2015-04-23' AS date) AS SalesDate, CAST(24019.3 AS money) AS Sales
UNION SELECT CAST('2015-05-01' AS date) AS SalesDate, CAST(93245.5 AS money) AS Sales
UNION SELECT CAST('2015-06-06' AS date) AS SalesDate, CAST(55288.0 AS money) AS Sales
UNION SELECT CAST('2015-06-16' AS date) AS SalesDate, CAST(68733.5 AS money) AS Sales
UNION SELECT CAST('2015-07-16' AS date) AS SalesDate, CAST(24750.85 AS money) AS Sales
UNION SELECT CAST('2015-08-23' AS date) AS SalesDate, CAST(43452.3 AS money) AS Sales
UNION SELECT CAST('2015-09-24' AS date) AS SalesDate, CAST(58656. AS money) AS Sales
UNION SELECT CAST('2015-10-15' AS date) AS SalesDate, CAST(44583. AS money) AS Sales
UNION SELECT CAST('2015-11-21' AS date) AS SalesDate, CAST(81568. AS money) AS Sales
UNION SELECT CAST('2015-12-15' AS date) AS SalesDate, CAST(45973. AS money) AS Sales
UNION SELECT CAST('2015-12-26' AS date) AS SalesDate, CAST(96357. AS money) AS Sales
UNION SELECT CAST('2015-12-31' AS date) AS SalesDate, CAST(81946. AS money) AS Sales

8. (Optional) Click the Run button (! ) to see the data your chart will be based on.
9. Click Next .

2. Choose the Chart Type


You can choose from several predefined chart types, and then modify the chart after you complete the wizard.
To add a column chart
1. On the Choose a char t type page, the column chart is the default chart type. Click Next .
2. On the Arrange char t fields page, drag the SalesDate field to Categories . Categories display on the
horizontal axis.
3. Drag the Sales field to Values . The Values box displays Sum(Sales) because the sum of the sales total
value is aggregated for each date. Values display on the vertical axis.
4. Click Next .
5. Click Finish .
The chart is added to the design surface. Note that the new column chart just shows representational
data. The legend reads Sales Date A, Sales Date B, etc., just to give an idea of what your report will look
like.

6. Click the chart to display the chart handles. Drag the bottom-right corner of the chart to increase the size
of the chart. Note that the report design surface increases in size to accommodate the chart size.
7. Click Run to preview the report.

Note that the chart does not label every category on the horizontal axis. By default, only labels that fit next to the
axis are included.

3. Format a Date on the Horizontal Axis


By default, the horizontal axis displays values in a general format that is automatically scaled to fit the size of the
chart.
1. Switch to report design view.
2. Right-click the horizontal axis > Horizontal Axis Proper ties .
3. On the Number tab, in Categor y , select Date .
4. In the Type box, select 31 Jan 2000 .
5. Click OK .
6. On the Home tab, click Run to preview the report.
The date displays in the date format that you selected. The chart still does not label every category on the
horizontal axis.

You can customize the label display by rotating the labels and specifying the interval.

4. Rotate the axis labels on the horizontal axis


1. Switch to report design view.
2. Right-click the horizontal axis title, then click Show Axis Title to remove the title. Because the horizontal
axis displays dates, the title is not needed.
3. Right-click the horizontal axis > Horizontal Axis Proper ties .
4. On the Labels tab, under Change axis label auto-fit options , select Disable auto-fit .
5. In Label rotation angle , select -90 .
6. Click OK .
The sample text for the horizontal axis rotates by 90 degrees.
7. Click Run to preview the report.
On the chart, the labels are rotated.

5. Move the Legend


The legend is automatically created from category and series data. You can move the legend below the chart
area of a column chart.
1. Switch to report design view.
2. Right-click the legend on the chart > Legend Proper ties .
3. Under Layout and Position , select a different position. For example, select the bottom middle option.
When the legend is placed at the top or bottom of a chart, the layout of the legend changes from vertical
to horizontal. You can select a different layout in the Layout box.
4. Click OK .
5. (Optional) Because there is only one category in this tutorial, the chart doesn't need a legend. To remove
it, right-click the legend > Delete Legend .
6. Click Run to preview the report.

6. Title the Chart


1. Switch to report design view.
2. Select the words Char t Title at the top of the chart, then type Store Sales Order Totals .
3. Click Run to preview the report.

7. Format and Label the Vertical Axis


By default, the vertical axis displays values in a general format that is automatically scaled to fit the size of the
chart.
1. Switch to report design view.
2. Click the labels on the vertical axis on the left side of the chart to select them.
3. On the Home tab > Number group, click the Currency button. The axis labels change to show the
currency format.
4. Click the Decrease Decimal button two times, to show the number rounded to the nearest dollar.
5. Right-click the vertical axis > Ver tical Axis Proper ties .
6. On the Number tab, note that Currency is already selected in the Categor y box, and Decimal places
is already 0 (zero).
7. Check Show Values in . Thousands is already selected.
8. Click OK .
9. Right-click the vertical axis > Show Axis Title .
10. Right-click the vertical axis title > Axis Title Proper ties .
11. Replace the text in the Title text field with Sales Total (in Thousands) . You can also specify a variety of
options related to how the title is formatted.
12. Click OK .
13. Click Run to preview the report.

8. Show all the labels on the horizontal (x) axis


You notice that only some of the labels on the x axis are showing. In this section, you set a property in the
Properties pane to show them all.
1. Switch to report design view.
2. Click the chart, then select the horizontal axis labels.
3. In the Properties pane, set LabelInterval to 1.

The chart looks the same in design view.


4. Click Run to preview the report.

Now the chart displays all its labels.

9. Add a Moving Average with a Calculated Series


A moving average is an average of the data in your series, calculated over time. The moving average can identify
trends.
1. Switch to report design view.
2. Double-click the chart to display the Char t Data pane.
3. Right-click the [Sum(Sales)] field in the Values area, then click Add Calculated Series .
4. In Formula , verify that Moving average is selected.
5. In Set Formula Parameters , for Period , select 4 .
6. On the Border tab, in Line width , select 3pt .
7. Click OK .
8. Click Run to preview the report.
The chart displays a line that shows the moving average for total sales by date, averaged over every four dates.
Read more about adding a moving average to a chart.

10. Add a Report Title


1. Switch to report design view.
2. On the design surface, click Click to add title .
3. Type Sales Char t , press ENTER, and then type Januar y to December 2015 , so it looks like this:
Sales Char t
Januar y to December 2015
4. Select Sales Char t , and on the Home tab > Font section > Bold .
5. Select Januar y to December 2015 , and on the Home tab > Font section > set font size to 10 .
6. (Optional) You may need to make the Title text box taller to accommodate the two lines of text. Pull down
on the double-headed arrows when you click in the middle of the bottom edge. And you may need to
drag the top of the chart so the title doesn't overlap.
This title appears at the top of the report. When there is no page header defined, items at the top of the
report body are the equivalent of a report header.
7. Click Run to preview the report.

11. Save the Report


To save the report
1. Switch to report design view.
2. From the Report Builder button, click Save As .
You can save it either to your computer or to the report server.
3. In Name , type Sales Order Column Char t .
4. Click Save .

Next Steps
You have successfully completed the Adding a Column Chart to Your Report tutorial. To learn more about charts,
see Charts (Report Builder and SSRS) and Sparklines and Data Bars (Report Builder and SSRS).

See Also
Report Builder tutorials
Report Builder in SQL Server
Tutorial: Add a Pie Chart to Your Report (Report
Builder)
11/2/2020 • 7 minutes to read • Edit Online

In this tutorial, you create pie chart in a Reporting Services paginated report. You add percentages and combine
small slices into a single slice.
Pie and doughnut charts display data as a proportion of the whole. They have no axes. When you add a numeric
field to a pie chart, the chart calculates the percentage of each value to the total.
This illustration shows the pie chart you will create.

If there are too many data points on a pie chart, your data point labels might be too crowded to read. In that
case, consider combining a number of small slices into one larger slice. Pie charts are more readable when you
have aggregated your data into a few data points.

NOTE
In this tutorial, the steps for the wizard are consolidated into two procedures. For step-by-step instructions about how to
browse to a report server, add a data source, and add a dataset, see the first tutorial in this series: Tutorial: Creating a
Basic Table Report (Report Builder).

Estimated time to complete this tutorial: 10 minutes

Requirements
For information about requirements, see Prerequisites for Tutorials (Report Builder).

1. Create a Pie Chart from the Chart Wizard


In this section, you use the Chart Wizard to create an embedded dataset, choose a shared data source, and
create a pie chart.
1. Start Report Builder either from your computer, the Reporting Services web portal, or SharePoint
integrated mode.
The New Repor t or Dataset dialog box opens.
If you don't see the New Repor t or Dataset dialog box, on the File menu > New .
2. In the left pane, verify that New Repor t is selected.
3. In the right pane, click Char t Wizard .
4. On the Choose a dataset page, click Create a dataset , and then click Next .
5. On the Choose a connection to a data source page, select an existing data source or browse to the
report server and select a data source, and then click Next . You may need to enter a user name and
password.

NOTE
The data source you choose is unimportant, as long as you have adequate permissions. You will not be getting
data from the data source. For more information, see Alternative Ways to Get a Data Connection (Report Builder).

6. On the Design a Quer y page, click Edit as Text .


7. Paste the following query into the query pane:

NOTE
In this tutorial, the query contains the data values, so it does not need an external data source. This makes the
query long. In a business environment, a query would not contain the data. This is for learning purposes only.

SELECT 'Advanced Digital Camera' AS Product, CAST(254995.21 AS money) AS Sales


UNION SELECT 'Slim Digital Camera' AS Product, CAST(164499.04 AS money) AS Sales
UNION SELECT 'SLR Digital Camera' AS Product, CAST(782176.79 AS money) AS Sales
UNION SELECT 'Lens Adapter' AS Product, CAST(36333.08 AS money) AS Sales
UNION SELECT 'Macro Zoom Lens' AS Product, CAST(40199.3 AS money) AS Sales
UNION SELECT 'USB Cable' AS Product, CAST(53245.5 AS money) AS Sales
UNION SELECT 'Independent Filmmaker Camcorder' AS Product, CAST(452288.0 AS money) AS Sales
UNION SELECT 'Full Frame Digital Camera' AS Product, CAST(247250.85 AS money) AS Sales

8. (Optional) Click the Run button (! ) to see the data your chart will be based on.
9. Click Next .

2. Choose the Chart Type


You can choose from a variety of predefined chart types.
1. On the Choose a char t type page, click Pie , then click Next . The Arrange char t fields page opens.
On the Arrange char t fields page, drag the Product field to the Categories pane. Categories define the
number of slices in the pie chart. In this example, there will be eight slices, one for each product.
2. Drag the Sales field to the Values pane. Sales represents the sales amount for the subcategory. The
Values pane displays [Sum(Sales)] because the chart displays the aggregate for each product.
3. Click Next to see a preview.
4. Click Finish .
The chart is added to the design surface. You don't see the actual values of the pie chart -- you see
Product 1, Product 2, etc., to give an idea of how the chart will look.

5. Click the chart to display the chart handles. Drag the bottom-right corner of the chart to make it bigger.
Note that the report design surface also gets bigger, to accommodate the chart size.
6. Click Run to preview the report.
The report displays the pie chart with eight slices, one for each product. Now you see the actual products and
the size of each slice represents the sales for that product. Three of the slices are quite thin.

3. Display Percentages in Each Slice


On each slice of the pie, you can display a percentage for this slice compared to the whole pie.
1. Switch to report design view.
2. Right-click the pie chart and click Show Data Labels . The data labels appear on the chart.
3. Right-click a label, then click Series Label Proper ties .
4. In the Label data box, select #PERCENT .
5. (Optional) To specify how many decimal places the label shows, in the Label data box after #PERCENT ,
type {Pn} where n is the number of decimal places to display. For example, to display no decimal places,
type #PERCENT{P0} .
6. To display values as percentages, the UseValueAsLabel property must be false. If you are prompted to set
this value in the Confirm Action dialog, click Yes .

NOTE
Number Format in the Series Label Proper ties dialog box has no effect when you format percentages. This
formats the labels as percentages, but does not calculate the percentage of the pie that each slice represents.

7. Click OK .
8. Click Run to preview the report.
The report displays the percentage of the whole for each pie slice.

4. Combine Small Slices into One Slice


Three of the slices in the pie are quite small. You can combine multiple small slices into one larger "Other" slice
that represents all three.
1. Switch to report design view.
2. If the Properties pane isn't showing, on the View tab > Show/Hide group > select Proper ties .
3. On the design surface, click on any slice of the pie chart. The properties for the series are displayed in the
Properties pane.
4. In the General section, expand the CustomAttributes node.
5. Set the CollectedStyle property to SingleSlice .
6. Verify that the CollectedThreshold property is set to 5.
7. Verify that the CollectedThresholdUsePercent property is set to True .
8. On the Home tab, click Run to preview the report.
In the legend, you now see the category "Other". The new pie slice combines all the slices that were under 5%
into one slice that is 6% of the whole pie.

5. Start pie chart values at the top


By default in pie charts, the first value in the dataset starts at 90 degrees from the top of the pie. You see that in
the pie chart in the previous sections.
In this section, we'll make the first value start at the top.
1. Switch to report design view.
2. Select the pie itself.
3. In the Properties pane, under Custom Attributes , change PieStartAngle from 0 to 270 .
4. Click Run to preview your report.
Now the pie chart slices are in alphabetical order, starting at the top, and ending with the "Other" slice.
6. Add a Report Title
Because the pie chart is the only visualization in the report, the chart doesn't need its own title. The report title
will do.
1. In the chart, select the Chart Title box and press DELETE.
2. n the design surface, click Click to add title .
3. Type Camera and Camcorder Sales , press ENTER, and then type As a Percentage of Total Sales , so
it looks like this:
Camera and Camcorder Sales
As a Percentage of Total Sales
4. Select Camera and Camcorder Sales , and on the Home tab > Font section > click Bold .
5. Select As a Percentage of Total Sales , and on the Home tab > Font section > set the font size to 10 .
6. (Optional) You may need to make the Title text box taller to accommodate the two lines of text.
This title will appear at the top of the report. When there is no page header defined, items at the top of
the report body are the equivalent of a report header.
7. Click Run to preview the report.

7. Save the Report


To save the report
1. Switch to report design view.
2. On the File menu, click Save .
3. In Name , type Sales Pie Char t .
4. Click Save .
Your report is saved on the report server.

Next Steps
You have successfully completed the Adding a Pie Chart to Your Report tutorial. To learn more about charts, see
Charts (Report Builder and SSRS) and Sparklines and Data Bars (Report Builder and SSRS).

See Also
Report Builder Tutorials
Report Builder in SQL Server
Tutorial: Add a Bar Chart to Your Report (Report
Builder)
3/5/2021 • 10 minutes to read • Edit Online

In this tutorial, you use a wizard in Report Builder to create a bar chart in a Reporting Services paginated report.
Then you add a filter and enhance the chart.
A bar chart displays category data horizontally. This can help to:
Improve readability of long category names.
Improve understandability of times plotted as values.
Compare the relative value of multiple series.
The following illustration shows the bar chart that you will create, with sales for 2014 and 2015 for the top five
salespeople, from most to least 2015 sales.

NOTE
In this tutorial, the steps for the wizard are consolidated into one procedure. For step-by-step instructions about how to
browse to a report server, create a dataset, and choose a data source, see the first tutorial in this series: Tutorial: Creating
a Basic Table Report (Report Builder).

Estimated time to complete this tutorial: 15 minutes.

Requirements
For more information about requirements, see Prerequisites for Tutorials (Report Builder).

1. Create a Chart Report from the Chart Wizard


In which you create an embedded dataset, choose a shared data source, and create a bar chart by using the
Chart Wizard.

NOTE
In this tutorial, the query contains the data values so that it does not need an external data source. This makes the query
quite long. In a business environment, a query would not contain the data. This is for learning purposes only.

1. Start Report Builder from the Reporting Services web portal, from the report server in SharePoint
integrated mode, or from your computer.
The Getting Star ted dialog box appears.

If you don't see the Getting Star ted dialog box, click File >New . The New Repor t or Dataset dialog
box has most of the same contents as the Getting Star ted dialog box.
2. In the left pane, verify that New Repor t is selected.
3. In the right pane, click Char t Wizard .
4. On the Choose a dataset page, click Create a dataset , and then click Next .
5. On the Choose a connection to a data source page, select an existing data source or browse to the
report server and select a data source, and then click Next . You may need to enter a user name and
password.

NOTE
The data source you choose is unimportant, as long as you have adequate permissions. You will not be getting
data from the data source. For more information, see Alternative Ways to Get a Data Connection (Report Builder).

6. On the Design a quer y page, click Edit as Text .


7. Paste the following query into the query pane:
SELECT 'Luis' as FirstName, 'Alverca' as LastName, CAST(170000.00 AS money) AS SalesYear2015,
CAST(150000. AS money) AS SalesYear2014
UNION SELECT 'Jeffrey' as FirstName, 'Zeng' as LastName, CAST(210000. AS money) AS SalesYear2015,
CAST(190000. AS money) AS SalesYear2014
UNION SELECT 'Houman' as FirstName, 'Pournasseh' as LastName, CAST(150000. AS money) AS
SalesYear2015, CAST(180000. AS money) AS SalesYear2014
UNION SELECT 'Robin' as FirstName, 'Wood' as LastName, CAST(75000. AS money) AS SalesYear2015,
CAST(175000. AS money) AS SalesYear2014
UNION SELECT 'Daniela' as FirstName, 'Guaita' as LastName, CAST(170000. AS money) AS SalesYear2015,
CAST(175000. AS money) AS SalesYear2014
UNION SELECT 'John' as FirstName, 'Yokim' as LastName, CAST(160000. AS money) AS SalesYear2015,
CAST(195000. AS money) AS SalesYear2014
UNION SELECT 'Delphine' as FirstName, 'Ribaute' as LastName, CAST(180000. AS money) AS SalesYear2015,
CAST(205000. AS money) AS SalesYear2014
UNION SELECT 'Robert' as FirstName, 'Hernady' as LastName, CAST(140000. AS money) AS SalesYear2015,
CAST(180000. AS money) AS SalesYear2014
UNION SELECT 'Tanja' as FirstName, 'Plate' as LastName, CAST(150000. AS money) AS SalesYear2015,
CAST(160000. AS money) AS SalesYear2014
UNION SELECT 'David' as FirstName, 'Bradley' as LastName, CAST(210000. AS money) AS SalesYear2015,
CAST(180000. AS money) AS SalesYear2014
UNION SELECT 'Michal' as FirstName, 'Jaworski' as LastName, CAST(175000. AS money) AS SalesYear2015,
CAST(220000. AS money) AS SalesYear2014
UNION SELECT 'Chris' as FirstName, 'Ashton' as LastName, CAST(195000. AS money) AS SalesYear2015,
CAST(205000. AS money) AS SalesYear2014
UNION SELECT 'Pongsiri' as FirstName, 'Hirunyanitiwatna' as LastName, CAST(175000. AS money) AS
SalesYear2015, CAST(215000. AS money) AS SalesYear2014
UNION SELECT 'Brian' as FirstName, 'Burke' as LastName, CAST(187000. AS money) AS SalesYear2015,
CAST(207000. AS money) AS SalesYear2014

8. (Optional) Click the Run button (! ) to see the data your chart will be based on.
9. Click Next .

2. Create a Bar Chart


1. On the Choose a char t type page, the column chart is the default chart type.
2. Click Bar , and then click Next .
On the Arrange char t fields page, there are four fields in the Available fields pane: FirstName,
LastName, SalesYear2015, and SalesYear2014.
3. Drag LastName to the Categories pane.
4. Drag SalesYear2015 to the Values pane. SalesYear2015 represents the sales amount for each salesperson
for the year 2015. The Values pane displays [Sum(SalesYear2015)] because the chart displays the
aggregate for each product.
5. Drag SalesYear2014 to the Values pane under SalesYear2015. SalesYear2014 represents the sales amount
for each salesperson for the year 2014.
6. Click Next .
7. Click Finish .
The chart is added to the design surface. Note that the new bar chart just shows representational data.
The legend reads Last Name A, Last Name B, etc., rather than the people's names, just to give an idea of
what your report will look like.
8. Click the chart to display the chart handles. Drag the bottom-right corner of the chart to increase the size
of the chart. Notice the design surface gets larger as you drag.
9. Click Run to preview the report.
The bar chart displays sales for each sales person for the years 2014 and 2015. The length of the bar
corresponds to the sales total.

3. Display All the Names on the Vertical Axis


By default, only some of the values on the vertical axis appear. You can change the chart to display all categories.
1. Switch to report design view.
2. Right-click the vertical axis, then click Ver tical Axis Proper ties .
3. Under Axis range and inter val , in the Inter val box, type 1 .
4. Click OK .
5. Click Run to preview the report.

NOTE
If you cannot read the salesperson names on the vertical axis, you can make your chart taller or change the formatting
options for the axis labels.

Display Last Name and First Name on Vertical Axis


You can change the category expression to include last name followed by first name of each sales person.
1. Switch to report design view.
2. Double-click the chart to display the Char t Data pane.
3. In the Categor y Groups area, right-click [LastName], and then click Categor y Group Proper ties .
4. In Label, click the expression (Fx) button.
5. Type the following expression: =Fields!LastName.Value & ", " & Fields!FirstName.Value

This expression concatenates the last name, a comma, and the first name.
6. Click OK .
7. Click OK .
8. Click Run to preview the report.
If the first names do not appear when you run the report, you can refresh the data manually. While still in
preview mode, on the Run tab in the Navigation group, click Refresh .

NOTE
If you cannot read the salesperson names on the vertical axis, you can make your chart taller or change the formatting
options for the axis labels.

4. Change the Sort Order on the Vertical Axis


When you sort the data on a chart, you are changing the order of values on the category axis.
1. Switch to report design view.
2. Double-click the chart to display the Char t Data pane.
3. In the Categor y Groups area, right-click [LastName], and then click Categor y Group Proper ties .
4. Click Sor ting . The Change sor ting options page displays a list of sort expressions. By default, this list
has one sort expression that is the same as the original category group expression.
5. In Sor t by , click [SalesYear2015] .
6. in the Order list, select A to Z so that the names appear in order from largest to smallest 2015 sales.
7. Click OK .
8. Click Run to preview the report.
The names on the horizontal axis are sorted from largest to smallest 2015 sales, with Zeng at the top.

5. Move the Legend


To improve the readability of the chart values, you might want to move the chart legend. For example, in a bar
chart where bars are shown horizontally, you can change the position of the legend so that it is above or below
the chart area. This gives more horizontal space to the bars.
To display the legend below the chart area of a bar chart
1. Switch to report design view.
2. Right-click the legend on the chart.
3. Select Legend Proper ties .
4. For Legend position , select a different position. For example, set the position to the middle bottom
option.
When the legend is placed at the top or bottom of a chart, the layout of the legend changes from vertical
to horizontal. You can select a different layout from the Layout drop-down list.
5. Click OK .
6. Click Run to preview the report.

6. Title the Chart


1. Switch to report design view.
2. Select the words Char t Title at the top of the chart, then type: Sales for 2014 and 2015 .
3. In the Properties pane, with the title selected, set Color to Black and FontSize to 12pt .
4. Click Run to preview the report.

7. Format and Label the Horizontal Axis


By default, the horizontal axis displays values in a general format that is automatically scaled to fit the size of the
chart. You can change it to the currency format.
1. Switch to report design view.
2. Click the horizontal axis along the bottom of the chart to select it.
3. On the Home tab > Number group > Currency . The horizontal axis labels change to currency.
4. (Optional) Remove the decimal digits. Near the Currency button, click the Decrease Decimal button
twice.
5. Right-click the horizontal axis, and click Horizontal Axis Proper ties .
6. On the Number tab, select Show values in Thousands .
7. Click OK .
8. Right-click the horizontal axis, and select Show Axis Title .
9. In the Axis Title box, type Sales in thousands and press Enter.

Note: While you're typing, the Axis Title box appears to be on the vertical axis. But when you press
Enter, it goes to the horizontal axis.

10. Click Run to preview the report.


The report displays the sales amount on the horizontal axis as currency in thousands, with no decimal digits.

8. Add a Filter to Display the Top Five Values


You can add a filter to the chart to specify which data from the dataset to include or exclude in the chart.
1. Switch to report design view.
2. Double-click the chart to display the Char t Data pane.
3. In the Categor y Groups area, right-click the [LastName] field, and then click Categor y Group
Proper ties .
4. Click Filters . The Change filters page can display a list of filter expressions. By default, this list is empty.
5. Click Add . A new blank filter appears.
6. In Expression , type [Sum(SalesYear2015)] . This creates the underlying expression
=Sum(Fields!SalesYear2015.Value) , which you can see if you click the fx button.

7. Verify that the data type is Text .


8. In Operator , select Top N from the drop-down list.
9. In Value , type the following expression: =5
10. Click OK .
11. Click Run to preview the report.
If the results are not filtered when you run the report, you can refresh the data manually. On the Run tab in the
Navigation group, click Refresh .
The chart shows the top five salesperson names from the 2015 sales data.

9. Add a Report Title


1. On the design surface, click Click to add title .
2. Type Sales Bar Char t , press ENTER, and then type Top Five Sellers for 2015 , so it looks like this:
Sales Bar Char t
Top Five Sellers for 2015
3. Select Sales Bar Char t , and click the Bold button.
4. Select Top Five Sellers for 2015 , and in the Font section on the Home tab, set the font size to 10 .
5. (Optional) You may need to make the Title text box taller, and bring down the top of the bar chart, to
accommodate the two lines of text.
This title will appear at the top of the report. When there is no page header defined, items at the top of
the report body are the equivalent of a report header.
6. Click Run to preview the report.

10. Save the Report


1. Switch to report design view.
2. Click File > Save As .
3. In Name , type Sales Bar Char t .
You can save it either to your computer or to the report server.
4. Click Save .

Next Steps
You have successfully completed the Adding a Bar Chart to Your Report tutorial. To learn more about charts, see
Charts and Bar Charts.

See Also
Report Builder Tutorials
Report Builder in SQL Server
Tutorial: Add a Sparkline to Your Report (Report
Builder)
11/2/2020 • 11 minutes to read • Edit Online

In this tutorial in Report Builder, you create a basic table with a sparkline chart in a Reporting Services paginated
report.
Sparklines and data bars are small, simple charts that convey a lot of information in a little space, often in tables
and matrices in Reporting Services reports. The following illustration shows a report similar to the one that you
will create.

Estimated time to complete this tutorial: 30 minutes.

Requirements
For more information about requirements, see Prerequisites for Tutorials (Report Builder).

1. Create a Report with a Table


1. Start Report Builder either from your computer, the Reporting Services web portal, or SharePoint
integrated mode.
The New Repor t or Dataset dialog box opens.
If you don't see the New Repor t or Dataset dialog box, on the File menu > New .
2. In the left pane, verify that New Repor t is selected.
3. In the right pane, click Table or Matrix Wizard .
4. On the Choose a dataset page, select Create a dataset > Next . The Choose a connection to a data
source page opens.

NOTE
This tutorial doesn't need specific data; it just needs a connection to a SQL Server database. If you already have a
data source connection listed under Data Source Connections , you can select it and go to step 10. For more
information, see Alternative Ways to Get a Data Connection (Report Builder).

5. Click New . The Data Source Proper ties dialog box opens.
6. In Name , type Product Sales , a name for the data source.
7. In Select a connection type , verify that Microsoft SQL Ser ver is selected.
8. In Connection string , type the following text:
Data Source\=<servername>

The expression <servername> , for example Report001, specifies a computer on which an instance of the
SQL Server Database Engine is installed. Because the report data is not extracted from a SQL Server
database, you need not include the name of a database. The default database on the specified server is
used to parse the query.
9. Click Credentials . Enter the credentials that you need to access the external data source.
10. Click OK .
You are back on the Choose a connection to a data source page.
11. To verify that you can connect to the data source, click Test Connection .
The message "Connection created successfully" appears.
12. Click OK .
13. Click Next .

2. Create a Query and Table Layout in the Table Wizard


In a report, you can use a shared dataset that has a predefined query, or you can create an embedded dataset
for use only in your report. In this tutorial, you will create an embedded dataset.

NOTE
In this tutorial, the query contains the data values, so that it does not need an external data source. This makes the query
quite long. In a business environment, a query would not contain the data. This is for learning purposes only.

To create a query and table layout in the Table Wizard


1. On the Design a quer y page, the relational query designer is open. For this tutorial, you will use the
text-based query designer.
2. Click Edit As Text . The text-based query designer displays a query pane and a results pane.
3. Paste the following Transact-SQL query into the Quer y box.
SELECT CAST('2015-01-04' AS date) as SalesDate, 'Accessories' as Subcategory,
'Carrying Case' as Product, CAST(16996.60 AS money) AS Sales, 68 as Quantity
UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'Accessories' as Subcategory,
'Carrying Case' as Product, CAST(1350.00 AS money) AS Sales, 18 as Quantity
UNION SELECT CAST('2015-01-10' AS date) as SalesDate, 'Accessories' as Subcategory,
'Carrying Case' as Product, CAST(1147.50 AS money) AS Sales, 17 as Quantity
UNION SELECT CAST('2015-01-04' AS date) as SalesDate, 'Accessories' as Subcategory,
'Budget Movie-Maker' as Product, CAST(1056.00 AS money) AS Sales, 44 as Quantity
UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'Accessories' as Subcategory,
'Slim Digital' as Product, CAST(1380.00 AS money) AS Sales, 18 as Quantity
UNION SELECT CAST('2015-01-05' AS date) as SalesDate,'Accessories' as Subcategory,
'Budget Movie-Maker' as Product, CAST(780.00 AS money) AS Sales, 26 as Quantity
UNION SELECT CAST('2015-01-07' AS date) as SalesDate, 'Accessories' as Subcategory,
'Budget Movie-Maker' as Product, CAST(3798.00 AS money) AS Sales, 9 as Quantity
UNION SELECT CAST('2015-01-08' AS date) as SalesDate, 'Camcorders' as Subcategory,
'Budget Movie-Maker' as Product, CAST(10400.00 AS money) AS Sales, 13 as Quantity
UNION SELECT CAST('2015-01-09' AS date) as SalesDate, 'Camcorders' as Subcategory,
'Budget Movie-Maker' as Product, CAST(3000.00 AS money) AS Sales, 60 as Quantity
UNION SELECT CAST('2015-01-10' AS date) as SalesDate, 'Digital' as Subcategory,
'Budget Movie-Maker' as Product, CAST(7234.50 AS money) AS Sales, 39 as Quantity
UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'Digital' as Subcategory,
'Carrying Case' as Product, CAST(10836.00 AS money) AS Sales, 84 as Quantity
UNION SELECT CAST('2015-01-07' AS date) as SalesDate, 'Digital' as Subcategory,
'Slim Digital' as Product, CAST(2550.00 AS money) AS Sales, 17 as Quantity
UNION SELECT CAST('2015-01-04' AS date) as SalesDate, 'Digital' as Subcategory,
'Slim Digital' as Product, CAST(8357.80 AS money) AS Sales, 44 as Quantity
UNION SELECT CAST('2015-01-08' AS date) as SalesDate, 'Digital SLR' as Subcategory,
'Slim Digital' as Product, CAST(18530.00 AS money) AS Sales, 34 as Quantity
UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'Digital SLR' as Subcategory,
'Slim Digital' as Product, CAST(26576.00 AS money) AS Sales, 88 as Quantity

4. On the query designer toolbar, click Run (! ).


The query runs and displays the result set for the fields SalesDate , Subcategor y , Product , Sales , and
Quantity .
5. Click Next .
6. On the Arrange fields page, drag Sales to Values .
Sales is aggregated by the Sum function. The value is [Sum(Sales)].
7. Drag Product to Row groups .
8. Drag SalesDate to Column groups .

9. Click Next .
10. On the Choose the layout page, under Options , verify that Show subtotals and grand totals is
selected.
The wizard Preview pane displays a table with three rows. When you run the report, each row will display
in the following way:
The first row will appear once for the table to show column headings.
The second row will repeat once for each product and display the product name, total per day, and
line total.
The third row will appear once for the table to display the grand totals.

11. Click Next .


12. Click Finish .
13. The table is added to the design surface. The table has three columns and three rows.
Look in the Grouping pane. If you can't see the Grouping pane, on the View menu, click Grouping . The
Row Groups pane shows one row group: Product . The Column Groups pane shows one column group:
SalesDate . Detail data is all the data that is retrieved by the dataset query.

14. Click Run to preview the report.


2a. Format Data as Currency
By default, the summary data for the Sales field displays a general number. Format it to display the number as
currency. Toggle Placeholder Styles to display formatted text boxes and placeholder text as sample values.
1. Click Design to switch to design view.
2. Click the cell in the second row (under the column headings row) in the SalesDate column. Hold down
the Ctrl key and select all cells that contain [Sum(Sales)] .

3. On the Home tab > Number group, click Currency . The cells change to show the formatted currency.
If your regional setting is English (United States), the default sample text is [$12,345.00 ]. If you do not
see an example currency value, in the Numbers group, click Placeholder Styles > Sample Values .

2b. (Optional) Format Data as Dates


By default, the SalesDate field displays both date and time information. You can format them to display only
the date.
1. Click the cell that contains [SalesDate] .
2. On the Home tab > Number group > Date .
The cell displays the example date [1/31/2000] .
3. Click Run to preview the report.
The SalesDate values display in the default date format, and the summary values for Sales display as currency.

3. Add a Sparkline
1. Click Design to return to design view.
2. Select the Total column in your table.
3. Right-click, point to Inser t Column , and then click Left .

4. In the new column, right-click the cell in the [Product] row > Inser t > Sparkline .
5. In the Select Sparkline Type dialog box, make sure the first sparkline in the Column row is selected,
then click OK .
6. Click the sparkline to show the Chart Data pane.
7. Click the plus (+) sign in the Values box, then click Sales .

The values in the Sales field are now the values for the sparkline.
8. Click the plus (+) sign in the Category Groups box, then click SalesDate .
9. Click Run to preview your report.
Note that the bars in the sparkline charts don't line up with each other. There are only four bars in the
second row of data, so the bars are wider than the bars in the first row, which has six. You can't compare
values for each product per day. They need to line up.
Also, for each row the tallest bar is the height of the row. This is misleading, too, because the largest
values for each row are not equal: the largest value for Budget Movie-Maker is $10,400, but for Slim
Digital it's $26,576 - more than twice as large. And yet the largest bars in those two rows are about the
same height. All the sparklines need to use the same scale.
4. Align the Sparklines Vertically and Horizontally
Sparklines are hard to read when they don't all use the same measurements. Both the horizontal and vertical
axes for each need to match the rest.
1. Click Design to return to design view.
2. Right-click the sparkline and click Ver tical Axis Proper ties .
3. Check the Align axes in check box. Tablix1 is the only option in the list.
This sets the height of the bars in each sparkline relative to the others.
4. Click OK .
5. Right-click the sparkline and click Horizontal Axis Proper ties .
6. Check the Align axes in check box. Tablix1 is the only option in the list.
This sets the width of the bars in each sparkline relative to the others. If some sparklines have fewer bars
than others, then those sparklines will have blank spaces for the missing data.
7. Click OK .
8. Click Run to preview your report again.
Now all the bars in each sparkline align with the bars in the other sparklines, and the heights are relative.

7. (Optional) Change Column Widths


By default, each cell in a table contains a text box. A text box expands vertically to accommodate text when the
page is rendered. In the rendered report, each row expands to the height of the tallest rendered text box in the
row. The height of the row on the design surface has no affect on the height of the row in the rendered report.
To reduce the amount of vertical space each row takes, expand the column width to accommodate the expected
contents of the text boxes in the column on one line.
To change the width of columns
1. Click Design to return to design view.
2. Click the table so gray bars appear above and next to the table. Those are the column and row handles
3. Point to the line between column handles so that the cursor changes into a double arrow. Drag the
Product column so that the product name displays on one line.
4. Click Run to preview your report and see if you made it wide enough.
8. (Optional) Add a Report Title
A report title appears at the top of the report. You can place the report title in a report header or if the report
does not use one, in a text box at the top of the report body. In this tutorial, you will use the text box that is
automatically placed at the top of the report body.
The text can be further enhanced by applying different font styles, sizes, and colors to phrases and individual
characters of the text. For more information, see Format Text in a Text Box (Report Builder and SSRS).
To add a report title
1. On the design surface, click Click to add title .
2. Type Sales by Date , and then click outside the text box.
3. Select the text box that contains Product Sales .
4. On the Home tab > Font group > for Color , select Teal .
5. Select Bold .
6. Click OK .

9. Save the Report


Save the report to a report server or your computer. If you do not save the report to the report server, a number
of Reporting Services features such as report parts and subreports are not available.
To save the report on a report server
1. From the Repor t Builder button, click Save As .
2. Click Recent Sites and Ser vers .
3. Select or type the name of the report server where you have permission to save reports.
The message "Connecting to report server" appears. When the connection is complete, you see the
contents of the report folder that the report server administrator specified as the default location for
reports.
4. In Name , replace the default name with Product Sales .
5. Click Save .
The report is saved to the report server. The name of report server that you are connected to appears in the
status bar at the bottom of the window.
To save the report on your computer
1. From the Repor t Builder button, click Save As .
2. Click Desktop , My Documents , or My computer , and browse to the folder where you want to save the
report.
3. In Name , replace the default name with Product Sales .
4. Click Save .

Next Steps
This concludes the tutorial for creating a table report with sparkline charts. For more information about
sparklines, see Sparklines and Data Bars.
Report Builder Tutorials Report Builder in SQL Server
More questions? Try asking the Reporting Services forum
Tutorial: Adding a KPI to Your Report (Report
Builder)
11/2/2020 • 12 minutes to read • Edit Online

In this Report Builder tutorial, you add a key performance indicator (KPI) to a Reporting Services paginated
report.
KPIs are measurable values with business significance. In this scenario, the sales summary by product
subcategories is the KPI. The current state of the KPI is shown with colors, gauges, and indicators.
The following illustration is similar to the report you will create.

NOTE
In this tutorial, the steps for the wizard are consolidated into two procedures: one to create the dataset and one to create
a table. For step-by-step instructions about how to browse to a report server, choose a data source, create a dataset, and
run the wizard, see the first tutorial in this series: Tutorial: Creating a Basic Table Report (Report Builder).
Estimated time to complete this tutorial: 15 minutes.

Requirements
For information about requirements, see Prerequisites for Tutorials (Report Builder).

1. Create a Table Report and Dataset from the Table or Matrix Wizard
In this section, you choose a shared data source, create an embedded dataset, and display the data in a table.
To create a table with an embedded dataset
1. Start Report Builder either from your computer, the Reporting Services web portal, or SharePoint
integrated mode.
The New Repor t or Dataset dialog box opens.
If you don't see the New Repor t or Dataset dialog box, on the File menu > New .
2. In the left pane, verify that New Repor t is selected.
3. In the right pane, click Table or Matrix Wizard .
4. On the Choose a dataset page, click Create a dataset .
5. Click Next .
6. On the Choose a connection to a data source page, select an existing data source or browse to the
report server and select a data source. If there no data source is available or you do not have access to a
report server, you can use an embedded data source instead. For more information, see Tutorial: Creating
a Basic Table Report (Report Builder).
7. Click Next .
8. On the Design a quer y page, click Edit as Text .
9. Copy and paste the following query into the query pane:

NOTE
In this tutorial, the query contains the data values, so that it does not need an external data source. This makes
the query quite long. In a business environment, a query would not contain the data. This is for learning purposes
only.
SELECT CAST('2015-01-05' AS date) as SalesDate, 'Accessories' as Subcategory,
'Carrying Case' as Product, CAST(16996.60 AS money) AS Sales, 68 as Quantity
UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'Accessories' as Subcategory,
'Tripod' as Product, CAST(1350.00 AS money) AS Sales, 18 as Quantity
UNION SELECT CAST('2015-01-11' AS date) as SalesDate, 'Accessories' as Subcategory,
'Lens Adapter' as Product, CAST(1147.50 AS money) AS Sales, 17 as Quantity
UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'Accessories' as Subcategory,
'Mini Battery Charger' as Product, CAST(1056.00 AS money) AS Sales, 44 as Quantity
UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'Accessories' as Subcategory,
'Telephoto Conversion Lens' as Product, CAST(1380.00 AS money) AS Sales, 18 as Quantity
UNION SELECT CAST('2015-01-06' AS date) as SalesDate,'Accessories' as Subcategory,
'USB Cable' as Product, CAST(780.00 AS money) AS Sales, 26 as Quantity
UNION SELECT CAST('2015-01-08' AS date) as SalesDate, 'Accessories' as Subcategory,
'Budget Movie-Maker' as Product, CAST(3798.00 AS money) AS Sales, 9 as Quantity
UNION SELECT CAST('2015-01-09' AS date) as SalesDate, 'Camcorders' as Subcategory,
'Business Videographer' as Product, CAST(10400.00 AS money) AS Sales, 13 as Quantity
UNION SELECT CAST('2015-01-10' AS date) as SalesDate, 'Camcorders' as Subcategory,
'Social Videographer' as Product, CAST(3000.00 AS money) AS Sales, 60 as Quantity
UNION SELECT CAST('2015-01-11' AS date) as SalesDate, 'Digital' as Subcategory,
'Advanced Digital' as Product, CAST(7234.50 AS money) AS Sales, 39 as Quantity
UNION SELECT CAST('2015-01-07' AS date) as SalesDate, 'Digital' as Subcategory,
'Compact Digital' as Product, CAST(10836.00 AS money) AS Sales, 84 as Quantity
UNION SELECT CAST('2015-01-08' AS date) as SalesDate, 'Digital' as Subcategory,
'Consumer Digital' as Product, CAST(2550.00 AS money) AS Sales, 17 as Quantity
UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'Digital' as Subcategory,
'Slim Digital' as Product, CAST(8357.80 AS money) AS Sales, 44 as Quantity
UNION SELECT CAST('2015-01-09' AS date) as SalesDate, 'Digital SLR' as Subcategory,
'SLR Camera 35mm' as Product, CAST(18530.00 AS money) AS Sales, 34 as Quantity
UNION SELECT CAST('2015-01-07' AS date) as SalesDate, 'Digital SLR' as Subcategory,
'SLR Camera' as Product, CAST(26576.00 AS money) AS Sales, 88 as Quantity

10. On the query designer toolbar, click Run (! ).


11. Click Next .

2. Organize Data and Choose Layout in the Wizard


The Table or Matrix wizard provides a starting design in which to display data. The preview pane in the wizard
helps you to visualize the result of grouping data before you complete the table or matrix design.
To organize data into groups and choose a layout
1. On the Arrange fields page, drag Product to Values .
2. Drag Quantity to Values and place below Product.
Quantity is summarized with the Sum function, the default function to summarize numeric fields.
3. Drag Sales to Values and place below Quantity.
Steps 1, 2, and 3 specify the data to display in the table.
4. Drag SalesDate to Row groups .
5. Drag Subcategory to Row groups and place below SalesDate.
Steps 4 and 5 organize the values for the fields first by date, and then by all sales for that date.
6. Click Next .
When you run the report, the table displays each date, all orders for each date, and all products,
quantities, and sales totals for each order.
7. On the Choose the Layout page, under Options , verify that Show subtotals and grand totals is
selected.
8. Verify that Blocked, subtotal below is selected.
9. Clear the option Expand/collapse groups .
In this tutorial, the report you create does not use the drilldown feature that lets a user expand a parent
group hierarchy to display child group rows and detail rows.
10. Click Next .
11. Click Finish .
The table is added to the design surface. The table has five columns and five rows. The Row Groups pane
shows three row groups: SalesDate, Subcategory, and Details. Detail data is all the data that is retrieved
by the dataset query. The Column Groups pane is empty.

12. Click Run to preview the report.


For each product that is sold on a specific date, the table displays the product name, the quantity sold, and the
sales total. The data is organized first by sales date and then by subcategory.

Format dates and currency


Let's make the columns wider and set the format for the dates and currency.
1. Click Design to go back to Design view.
2. The Product names could use more space. To make the Product column wider, select the whole table and
drag the right edge of the column handle at the top of the Product column.
3. Press the Ctrl key, then select the four cells that contain [Sum(Sales)].
4. On the Home tab > Number > Currency . The cells change to show the formatted currency.
If your regional setting is English (United States), the default sample text is [$12,345.00]. If you don't see
an example currency value, in the Numbers group, click Placeholder Styles > Sample Values .

5. (Optional) On the Home tab, in the Number group, click the Decrease Decimals button twice to
display dollar figures with no cents.
6. Click the cell that contains [SalesDate].
7. In the Number group > Date .
The cell displays the example date [1/31/2000].
8. Click Run to preview the report.

3. Use Background Colors to Display a KPI


Background colors can be set to an expression that is evaluated when you run the report.
To display the present state of a KPI by using background colors
1. In the table, right-click the second [Sum(Sales)] cell (the subtotal row that displays the sales for a
subcategory), then click Text Box Proper ties .
Make sure you've selected the cell, not the text in the cell, to view Text Box Proper ties .
2. On the Fill tab, click the fx button next to Fill color and enter the following expression in the Set
expression for : BackgroundColor field:
=IIF(Sum(Fields!Sales.Value) >= 5000 ,"Lime", IIF(Sum(Fields!Sales.Value) < 2500, "Red","Yellow"))

This changes the background color to "Lime" green for each cell with an aggregated sum for
[Sum(Sales)] greater than or equal to 5000. Values of [Sum(Sales)] between 2500 and 5000 are
"Yellow". Values less than 2500 are "Red".
3. Click OK .
4. Click Run to preview the report.
In the subtotal row that displays the sales for a subcategory, the background color of the cell is red, yellow, or
green depending on value of the sales sum.
4. Display a KPI by Using a Gauge
A gauge depicts a single value in a dataset. This tutorial uses a horizontal linear gauge because its shape and
simplicity make it easy to read, even in when it is small and within a table cell. For more information, see Gauges
(Report Builder and SSRS).
To display the present state of a KPI using a gauge
1. Switch back to Design view.
2. In the table, right-click the column handle for the Sales column > Inser t Column > Right . A new
column is added to the table.

3. Type Linear KPI in the column heading.


4. On the Inser t tab > Data Visualizations > Gauge , and then click the design surface outside the table.
5. In the Select Gauge Type dialog box, select the first linear gauge type, Horizontal .
6. Click OK .
A gauge is added to the design surface.
7. From the dataset in the Report Data pane, drag the Sales field to the gauge. The Gauge Data pane
opens.
When you drop the Sales field onto the gauge, it goes to the Values list and is aggregated by using the
built-in Sum function.

8. In the Gauge Data pane, click the arrow next to LinearPointer1 > Pointer Proper ties .
9. In the Linear Pointer Proper ties dialog box > Pointer Options tab > Pointer Type , make sure Bar is
selected.
10. Click OK .
11. Right-click the scale in the gauge and click Scale Proper ties .
12. In the Linear Scale Proper ties dialog box > General tab, set Maximum to 25000.

NOTE
Instead of a constant such as 25000, you can use an expression to dynamically calculate the value of the
Maximum option. The expression would use the aggregate of aggregate feature and look similar to the
expression =Max(Sum(Fields!Sales.value), "Tablix1") .

13. On the Labels tab, check Hide scale labels .


14. Click OK .
15. Drag the gauge inside the table to the second empty cell in the Linear KPI column, in the row that displays
the subtotal sales for the Subcategory field, next to the field where you added the background color
formula.

NOTE
You might have to resize the column so the horizontal linear gauge fits into the cell. To resize the column, select
the table and drag the column handles. The report design surface resizes to fit the table.

16. Click Run to preview the report.


The horizontal length of the green bar in the gauge changes depending on the value of the KPI.
5. Display a KPI by Using an Indicator
Indicators are small simple gauges that communicate data values at a glance. Because of their size and
simplicity, indicators are often used in tables and matrices. For more information, see Indicators (Report Builder
and SSRS).
To display the present state of a KPI using an indicator
1. Switch to Design view.
2. In the table, right-click the column handle for the Linear KPI column that you added in the last procedure
> Inser t Column > Right . A new column is added to the table.
3. Type Stoplight KPI in the column heading.
4. Click the cell for the subcategory subtotal, next to the linear gauge you added in the last procedure.
5. On the Inser t tab > Data Visualizations > double-click Indicator.
6. In the Select Indicator Type dialog box, under Shapes , select the first shape type, 3 Traffic Lights
(Unrimmed) .
7. Click OK .
The indicator is added to the cell in the new Stoplight KPI column.
8. Right-click the indicator and click Indicator Proper ties .
9. On the Values and States tab, in the Value box, select [Sum(Sales)] . Don't change any other options.
By default, data synchronization occurs across the data region and you see the value Tablix1 , the name of
the table data region in the report, in the Synchronization scope box.
In this report, you can also change the scope of an indicator placed in the cell of the subcategory subtotal
to synchronize across the SalesDate field.
10. Click OK .
11. Click Run to preview the report.

6. Add a Report Title


A report title appears at the top of the report. You can place the report title in a report header or if the report
does not use one, in a text box at the top of the report body. In this section, you use the text box that is
automatically placed at the top of the report body.
You can further enhance the text by applying different font styles, sizes, and colors to phrases and individual
characters of the text. For more information, see Format Text in a Text Box (Report Builder and SSRS).
To add a report title
1. On the design surface, click Click to add title .
2. Type Product Sales KPIs , and then click outside the text box.
3. Optionally, right-click the text box that contains Product Sales KPI , click Text Box Proper ties , and then
on the Font tab select different font styles, sizes and colors.
4. Click Run to preview the report.

7. Save the Report


Save the report to a report server or your computer. If you do not save the report to the report server, a number
of Reporting Services features such as report parts and subreports are not available.
To save the report on a report server
1. From the Repor t Builder button, click Save As .
2. Click Recent Sites and Ser vers .
3. Select or type the name of the report server where you have permission to save reports.
The message "Connecting to report server" appears. When the connection is complete, you see the
contents of the report folder that the report server administrator specified as the default location for
reports.
4. In Name , replace the default name with Product Sales KPI .
5. Click Save .
The report is saved to the report server. The name of report server that you are connected to appears in the
status bar at the bottom of the window.
To save the report on your computer
1. From the Repor t Builder button, click Save As .
2. Click Desktop , My Documents , or My computer , and browse to the folder where you want to save the
report.

NOTE
If you do not have access to a report server, click Desktop , My Documents , or My computer and save the report to
your computer.

1. In Name , replace the default name with Product Sales KPI .


2. Click Save .

Next Steps
You have successfully completed the Adding a KPI to Your Report tutorial. For more information, see:
Gauges
Indicators

See Also
Report Builder Tutorials
Report Builder in SQL Server
Tutorial: Map Report (Report Builder)
11/2/2020 • 19 minutes to read • Edit Online

In this Report Builder tutorial, you learn about map features you can use to display data on a geographic
background in an Reporting Services paginated report.
Maps are based on spatial data that typically consists of points, lines, and polygons. For example, a polygon can
represent the outline of a county, a line can represent a road, and a point can represent the location of a city.
Each type of spatial data is displayed on a separate map layer as a set of map elements.
To vary the appearance of map elements, you specify a field that has values that match the map elements with
analytical data from a dataset. You can also define rules that vary color, size, or other properties based on ranges
of data.

In this tutorial, you build a map report that displays store locations in New York state counties.

NOTE
In this tutorial, the steps for the wizard are consolidated into two procedures: one to create the dataset and one to create
a table. For step-by-step instructions about how to browse to a report server, choose a data source, create a dataset, and
run the wizard, see the first tutorial in this series: Tutorial: Creating a Basic Table Report (Report Builder).

Estimated time to complete this tutorial: 30 minutes.

Requirements
For this tutorial, the report server must be configured to support Bing maps as a background. For more
information, see Plan for Map Report Support.
For information about other requirements, see Prerequisites for Tutorials (Report Builder).
1. Create a Map with a Polygon Layer from the Map Wizard
In this section, you add a map to your report from the map gallery. The map has one layer that displays the
counties in New York state. The shape of each county is a polygon based on spatial data that is embedded in the
map from the map gallery.
To add a map with the map wizard in a new report
1. Start Report Builder either from your computer, the Reporting Services web portal, or SharePoint
integrated mode.
The New Repor t or Dataset dialog box opens.
If you don't see the New Repor t or Dataset dialog box, on the File menu > New .
2. In the left pane, verify that New Repor t is selected.
3. In the right pane, click Map Wizard .
4. On the Choose a source of spatial data page, verify that Map galler y is selected.
5. In the Map Gallery box, expand States by County under USA , and click New York .
The Map Preview pane displays the New York county map.

6. Click Next .
7. On the Choose spatial data and map view options page, accept the defaults and click Next .
By default, map elements from a map gallery are automatically embedded in the report definition.
8. On the Choose map visualization page, verify Basic Map is selected, and click Next .
9. On the Choose color theme and data visualization page, select the Display labels option.
10. If it is selected, clear the Single color map option.
11. From the Data field drop-down list, click #COUNTYNAME . The Map Preview pane in the wizard
displays the following items:
A title with the text Map Title .
A map that displays counties in New York where each county is a different color and the county
name appears wherever it fits over the county area.
A legend that contains a title and a list of items 1 through 5.
A color scale that contains values 0 to 160 and no color.
A distance scale that displays kilometers (km) and miles (mi).

12. Click Finish .


The map is added to the design surface.
13. Select the "Map Title" text and type Sales by Store > ENTER.
14. Double-click the map to display the Map Layers Pane . The Map Layers Pane shows one polygon layer,
PolygonLayer1, of layer type Embedded . Each county is an embedded map element on this layer.

NOTE
If you don't see the Map Layers pane, it might be displayed outside your current view. Use the scroll bar at the
bottom of the Design view window to change your view. Alternatively, in the View tab, clear the Repor t Data
option to provide more design surface area.

15. Select the arrow next to PolygonLayer1 > Polygon proper ties .
16. On the Font tab, change the color to Dim Gray .
17. On the Home tab > Run to preview the report.
The rendered report displays the map title, the map, and the distance scale. The counties are on a map polygon
layer. Each county is a polygon that varies by color from a color palette, but the colors are not associated with
any data. The distance scale displays distances in both kilometers and miles.
The map legend and color scale do not yet appear because there is no analytical data associated with each
county. You will add analytical data later in this tutorial.

2. Add a Map Point Layer to Display Store Locations


In this section, you use the map layer wizard to add a point layer that displays the locations of stores.

NOTE
In this tutorial, the query contains the data values, so it does not need an external data source. This makes the query
quite long. In a business environment, a query would not contain the data. This is for learning purposes only.

To add a point layer based on a SQL Server spatial query


1. On the Run tab > Design to switch back to Design view.
2. Double-click the map to display the Map Layers pane. On the toolbar, click the New layer wizard
button .

3. On the Choose a source of spatial data page, select SQL Ser ver spatial quer y , and click Next .
4. On the Choose a dataset with SQL Ser ver spatial data page, click Add a new dataset with SQL
Ser ver spatial data > Next .
5. On the Choose a connection to a SQL Ser ver spatial data source page, select an existing data
source or browse to the report server and select a data source.

NOTE
The data source you choose is unimportant, as long as you have adequate permissions. You will not be getting
data from the data source. For more information, see Alternative Ways to Get a Data Connection (Report Builder).

6. Click Next .
7. On the Design a Quer y page, click Edit as Text .
8. Copy the following text and paste it in the query pane:
Select 114 as StoreKey, 'Contoso Albany Store' as StoreName, 1125 as SellingArea, 'Albany' as City,
'Albany' as County,
CAST(1000000 as money) as Sales, CAST('POINT(-73.7472924218681 42.6564617079878)' as geography) AS
SpatialLocation
UNION ALL SELECT 115 AS StoreKey, 'Contoso New York No.1 Store' AS StoreName, 500 as SellingArea,
'New York' AS City, 'New York City' as County,
CAST('2000000' as money) as Sales, CAST('POINT(-73.9922069374483 40.7549638237402)' as geography) AS
SpatialLocation
UNION ALL Select 116 as StoreKey, 'Contoso Rochester No.1 Store' as StoreName, 462 as SellingArea,
'Rochester' as City, 'Monroe' as County,
CAST(3000000 as money) as Sales, CAST('POINT(-77.624041566786 43.1547066024338)' as geography) AS
SpatialLocation
UNION ALL Select 117 as StoreKey, 'Contoso New York No.2 Store' as StoreName, 700 as SellingArea,
'New York' as City,'New York City' as County,
CAST(4000000 as money) as Sales, CAST('POINT(-73.9712488 40.7830603)' as geography) AS
SpatialLocation
UNION ALL Select 118 as StoreKey, 'Contoso Syracuse Store' as StoreName, 680 as SellingArea,
'Syracuse' as City, 'Onondaga' as County,
CAST(5000000 as money) as Sales, CAST('POINT(-76.1349120532546 43.0610223535974)' as geography) AS
SpatialLocation
UNION ALL Select 120 as StoreKey, 'Contoso Plattsburgh Store' as StoreName, 560 as SellingArea,
'Plattsburgh' as City, 'Clinton' as County,
CAST(6000000 as money) as Sales, CAST('POINT(-73.4728622833178 44.7028831413324)' as geography) AS
SpatialLocation
UNION ALL Select 121 as StoreKey, 'Contoso Brooklyn Store' as StoreName, 1125 as SellingArea,
'Brooklyn' as City, 'New York City' as County,
CAST(7000000 as money) as Sales, CAST('POINT (-73.9638533447143 40.6785123489351)' as geography) AS
SpatialLocation
UNION ALL Select 122 as StoreKey, 'Contoso Oswego Store' as StoreName, 500 as SellingArea, 'Oswego'
as City, 'Oswego' as County,
CAST(8000000 as money) as Sales, CAST('POINT(-76.4602850815536 43.4353224527794)' as geography) AS
SpatialLocation
UNION ALL Select 123 as StoreKey, 'Contoso Ithaca Store' as StoreName, 460 as SellingArea, 'Ithaca'
as City, 'Tompkins' as County,
CAST(9000000 as money) as Sales, CAST('POINT(-76.5001866085881 42.4310489934743)' as geography) AS
SpatialLocation
UNION ALL Select 124 as StoreKey, 'Contoso Buffalo Store' as StoreName, 700 as SellingArea, 'Buffalo'
as City, 'Erie' as County,
CAST(100000 as money) as Sales, CAST('POINT(-78.8784 42.8864)' as geography) AS SpatialLocation
UNION ALL Select 125 as StoreKey, 'Contoso Queens Store' as StoreName, 700 as SellingArea,'Queens' as
City, 'New York City' as County,
CAST(500000 as money) as Sales, CAST('POINT(-73.7930979029883 40.7152781765927)' as geography) AS
SpatialLocation
UNION ALL Select 126 as StoreKey, 'Contoso Elmira Store' as StoreName, 680 as SellingArea, 'Elmira'
as City, 'Chemung' as County,
CAST(800000 as money) as Sales, CAST('POINT(-76.7397414783301 42.0736492742663)' as geography) AS
SpatialLocation
UNION ALL Select 127 as StoreKey, 'Contoso Poestenkill Store' as StoreName, 455 as SellingArea,
'Poestenkill' as City, 'Rensselaer' as County,
CAST(1500000 as money) as Sales, CAST('POINT(-73.5626737425063 42.6940551238618)' as geography) AS
SpatialLocation

9. On the query designer toolbar, click Run (! ).


The result set contains seven columns representing a set of stores in New York State that sell consumer
goods. Here's a list, with explanations for the ones that may not be obvious:
StoreKey : A store identifier.
StoreName .
SellingArea : The area available for product display, ranging from 455 square feet to 1125 square
feet.
City .
County .
Sales : Total sales.
SpatialLocation : Location in longitude and latitude.

10. Click Next .


The report dataset named DataSet1 is created for you. After you complete the wizard, you can see its field
collection in the Report Data pane.
11. On the Choose a spatial data and map view options page, verify that the Spatial field is
SpatialLocation and that the Layer type is Point . Accept the other defaults on this page.
The map view displays circles to mark the location of each store.
12. Click Next .
13. On the Choose map visualization page, click Bubble Map for a map type that displays markers that vary
in size, according to the data. Click Next .
14. On the Choose the analytical dataset page, click DataSet1, and click Next . This dataset contains both
analytical data and spatial data that will be displayed on the new point layer.
15. On the Choose color theme and data visualization page, select Use bubble sizes to visualize
data .
16. In Data field , select [Sum(SellingArea)] to vary bubble size by the size of the area a store sets aside to
display the products.
17. Select Display labels , and in Data field , select [City] .
18. Click Finish .
The map layer is added to the report. The legend displays bubble sizes based on SellingArea values.
19. Double-click the map to display the Map Layer pane. The Map Layer pane displays a new layer,
PointLayer1, with spatial data source type DataRegion .
20. Add a legend title. In the legend, select the text Title , type Display Area (sq. ft.) and press ENTER.
21. In the Map Layers Pane , click the arrow next to PointLayer1, and then click Point Proper ties .
22. On the Font tab, make the style Bold and the size 10pt .

23. On the General tab, select Bottom for Placement .


24. Click OK .
25. Click Run to preview the report.

The map displays the locations of stores in New York state. The marker size for each store is based on the
display area. Five ranges of display area were automatically calculated for you.

3. Add a Map Line Layer to Display a Route


Use the map layer wizard to add a map layer that displays a route between two stores. In this tutorial, the path is
created from three store locations. In a business application, the path might be the best route between stores.
To add a line layer to map
1. Switch to Design view.
2. Double-click the map to display the Map Layer pane. On the toolbar, click the New layer wizard button
.
3. On the Choose a source of spatial data page, select SQL Ser ver spatial quer y and click Next .
4. On the Choose a dataset with SQL Ser ver spatial data page, click Add a new dataset with SQL
Ser ver spatial data and click Next .
5. On the Choose a connection to a SQL Ser ver spatial data source , select the data source that you
used in the first procedure.
6. Click Next .
7. On the Design a Quer y page, click Edit as Text . The query designer switches to text-based mode.
8. Paste the following text in the query pane:

SELECT N'Path' AS Name, CAST('LINESTRING(


-76.5001866085881 42.4310489934743,
-76.4602850815536 43.4353224527794,
-73.4728622833178 44.7028831413324)' AS geography) as Route

9. Click Next .
A path appears on the map that connects three stores.
10. On the Choose spatial data and map view options page, verify that the Spatial field is Route and
that the Layer type is Line . Accept the other defaults.
The map view displays a path from a store in the northern part of New York state to a store in the
southern part of New York state.
11. Click Next .
12. On the Choose map visualization page, click Basic Line Map , and then click Next .
13. On the Choose color theme and data visualization , select the option Single color map . The path
appears as a single color based on the selected theme.
14. Click Finish .

The map displays a new line layer with spatial data source type DataRegion . In this example, the spatial
data comes from a dataset but no analytical data is associated with the line.
Adjust the Zoom
1. If you can't see the whole state of New York, you can adjust the zoom. With the map selected, in the
Properties pane you see MapViewpor t properties.
2. Expand the View section, then expand View so you can see the Zoom property. Set it to 125 .

This is the zoom percentage. At 125% you should see the whole state.

4. Add a Bing Maps Tile Background


In this section, you add a map layer that displays a Bing Maps tile background.
1. Switch to Design view.
2. Double-click the map to display the Map Layer pane. On the toolbar, click Add Layer .
3. From the drop-down list, click Tile Layer .
The last layer in the Map Layer pane is TileLayer1. By default, the tile layer displays the road map style.

NOTE
In the wizard, you can also add a tile layer on the Choose spatial data and map view options page. To do
this, select Add a Bing Maps background for this map view . In a rendered report, the tile background
displays Bing Maps tiles for the current map viewport center and zoom level.

4. Click the arrow next to TileLayer1 > Tile Proper ties .


5. On the General tab, under Type , select Aerial . The aerial view does not contain text.
6. Click OK .

5. Make a Layer Transparent


In this section, to let the items on one layer show through another layer, you adjust the order and transparency
of the layers for the effect that you want. You start with the first layer you created, PolygonLayer1.
1. Double-click the map to display the Map Layer pane.
2. Click the arrow next to PolygonLayer1 > Layer Data . The Map Polygon Layer Proper ties dialog box
opens.
3. On the Visibility tab, under Transparency (percent) , type 30 .
4. Click OK .
The design surface displays the counties as semi-transparent.

6. Vary County Color Based on Sales


Each county on the polygon layer has a different color because the report processor automatically assigns a
color value from the color palette based on the theme that you chose on the last page of the map wizard.
In this section, you specify a color rule to associate specific colors with a range of store sales for each county. The
colors red-yellow-green indicate relative high-middle-low sales. Format the color scale to show currency.
Display the annual sales ranges in a new legend. For counties that do not contain stores, use no color to show
that there is no associated data.
6a. Build a Relationship between Spatial and Analytical Data
To vary the county shapes by color based on analytical data, you first need to associate the analytical data with
the spatial data. In this tutorial, you will use the county name to match on.
1. Switch to Design view.
2. Double-click the map to display the Map Layers pane.
3. Click the arrow next to PolygonLayer1, then click Layer Data . The Map Polygon Layer Proper ties
dialog box opens.
4. On the Analytical data tab, under Analytical dataset , select DataSet1. This dataset was created by the
wizard when you created the spatial data query for the counties.
5. Under Fields to match on , click Add . A new row is added.
6. Under From spatial dataset , click COUNTYNAME.
7. Under From analytical dataset , click [County].

8. Click OK .
9. Preview the report.

By specifying a match field from the spatial data source and from the analytical dataset, you enable the report
processor to group analytical data based on the map elements. A data-bound map element has a successful
match for the values that you specified.
Each county that contains a store has a color that is based on the color palette for the style that you chose in the
wizard. The other counties are gray.
6b. Specify Color Rules for Polygons
To create a rule that varies the color of each county based store sales, you must specify the range values, the
number of divisions within that range that you want to display, and the colors to use.
To specify color rules for all polygons that have associated data
1. Switch to Design view.
2. Click the arrow next to PolygonLayer1, then click Polygon Color Rule . The Map Color Rules
Proper ties dialog box opens. Notice that the color rule option Visualize data by using color palette
is selected. This option was set by the wizard.
3. Select Visualize data by using color ranges . The palette option is replaced by start color, middle color,
and end color options.
4. Define range values for sales per county. In Data field , from the drop-down list, select [Sum(Sales)] .
5. To change the format to display currency in thousands, change the expression to the following:
=Sum(Fields!Sales.Value)/1000

6. Change Star t color to Red .


7. Change End color to Green .
Red represents low sales values, Yellow represents middle sales values, and Green represents high sales
values. The report processor calculates a range of colors based on these values and the options that you
choose on the Distribution page.

8. Click Distribution .
9. Verify that the distribution type is Optimal . For the expression from step 5, optimal distribution divides
the values into subranges that balance the number of items in each range and the span for each range.
10. Accept the default values for other options on this page. When you select the optimal distribution type,
the number of subranges are calculated when the report runs.
11. Click Legend .
12. In Color scale options , verify that Show in color scale is selected.
13. In Show in this legend , from the drop-down list, select the blank line. For now, you will show the color
ranges only in the color scale.
14. Click OK .
15. Preview the report.

The color scale displays four colors: red, orange, yellow, and green. Each color represents a sales range
that is automatically calculated based on the sales by county.
6c. Format the Data in the Color Scale as Currency
By default, data has a general format. In this section, you apply custom formats.
1. Switch to Design view.
2. Select the color scale. On the Home tab > Number section, , click Currency .
3. Still in the Number section, click the Decrease Decimal button two times.
The color scale displays annual sales in currency format for each range.
6d. Add a Legend Title
1. With the color scale still selected, in the Properties pane you see properties for MapColorScale .
2. Expand the Title section, and in the Caption property, type Sales (Thousands) .
3. Change the TextColor property to White .
4. Preview the report.
The counties that have associated stores and sales display according to the color rules. Counties that have no
sales have no color.
6f. Change Color for Counties with No Data
You can set the default display options for all map elements on a layer. Color rules take precedence over these
display options.
To set the display properties for all elements on a layer
1. Switch to Design view.
2. Double-click the map to display the Map Layer pane.
3. Click the down arrow on PolygonLayer1, and then click Polygon Proper ties .

The Map Polygon Proper ties dialog box opens. Display options set in this dialog box apply to all
polygons on the layer before rule-based display options are applied.
4. On the Fill tab, verify that the fill style is Solid. Gradients and patterns apply to all colors.
5. In Color , select Light Steel Blue .
6. Click OK .
7. Preview the report.
Counties with no associated data display as gray-blue. Only counties with associated analytical data have the
Red through Green colors from the color rules that you specified.

7. Add a Custom Point


To represent a new store that has not yet been built, in this section you specify a point with the Star marker type.
1. Switch to Design view.
2. Double-click the map to display the Map Layer pane. On the toolbar, click Add Layer , then click
Point Layer .
A new point layer is added to the map. By default, the point layer has spatial data type Embedded .
3. Click the arrow on PointLayer2 > Add Point .
4. Move the pointer over the map viewport. The cursor changes to crosshairs.
5. Click the location on the map where you want to add a point. In this tutorial, click a location in Oneida
county. A point marked by a circle is added to the layer at the spot where you clicked. By default, the point
is selected.

6. Right-click the point you added, and then click Embedded Point Proper ties .
7. Select Override point options for this layer . Additional pages appear in the dialog box. Values that
you set here take precedence over display options for the layer or for color rules.

8. On the Marker tab, for Marker type , select Star .


9. Change Marker size to 18pt .
10. On the Labels tab, in Label text , type New Store .
11. In Placement , click Top .
12. On the Font tab, make the font size 10pt and Bold .
13. Click OK .
14. Preview the report.
The label appears above the store location.

8. Center and Resize the Map


In this section, you learn to change the map center, and another way to change the zoom level.
1. Switch to Design view.
2. Select the map, then right-click and click Viewpor t Proper ties .
3. On the Center and Zoom tab, make sure Set a view center and zoom level is selected.
4. Set Zoom level (percent) to 125 .
5. Click OK .
6. Click the map, and drag to center it where you want it.
7. You can also use the mouse wheel to change the zoom level.
8. Preview the report.
In Design view, the map on the display surface and the view is based on sample data. In the rendered report, the
map view is centered on the view that you specified.

9. Add a Report Title


1. Switch to Design view.
2. On the design surface, click Click to add title .
3. Type Sales in New York Stores and then click outside the text box.
This title will appear at the top of the report. Items at the top of the report body when there is no page header
defined are the equivalent of a report header.

10. Save the Report


1. In Design view or Preview, on the File menu > Save As .
2. In Name , type Store Sales in New York .
3. Save it to your local computer or to a Reporting Services server.
4. Click Save .
If you save it to a report server, you can view it there.

Next Steps
This concludes the walkthrough for how to add a map to your report.
For more information, see Maps (Report Builder and SSRS).

See Also
Report Builder tutorials
Report Builder in SQL Server
Map Wizard and Map Layer Wizard (Report Builder and SSRS)
Vary Polygon, Line, and Point Display by Rules and Analytical Data (Report Builder and SSRS)
Tutorial: Add a Parameter to Your Report (Report
Builder)
11/2/2020 • 15 minutes to read • Edit Online

In this tutorial, you add a parameter to a Reporting Services paginated report so report readers can filter report
data for one or more values.

Report parameters are created automatically for each query parameter that you include in a dataset query. The
parameter data type determines how it appears on the report view toolbar.

NOTE
In this tutorial, the steps for the wizard are consolidated into one procedure. For step-by-step instructions about how to
browse to a report server, choose a data source, and create a dataset, see the first tutorial in this series: Tutorial: Creating
a Basic Table Report (Report Builder).

Estimated time to complete this tutorial: 25 minutes.

Requirements
For information about requirements, see Prerequisites for Tutorials (Report Builder).

1. Create a Matrix Report and Dataset in the Table or Matrix Wizard


Create a matrix report, a data source, and a dataset.
NOTE
In this tutorial, the query contains the data values, so that it does not need an external data source. This makes the query
quite long. In a business environment, a query would not contain the data. This is for learning purposes only.

To create a new matrix report


1. Start Report Builder either from your computer, the Reporting Services web portal, or SharePoint
integrated mode.
The New Repor t or Dataset dialog box opens.
If you don't see the New Repor t or Dataset dialog box, on the File menu > New .
2. In the left pane, make sure New Repor t is selected.
3. In the right pane, click Table or Matrix Wizard .
4. On the Choose a dataset page, click Create a dataset > Next .
5. On the Choose a connection to a data source page, select a data source from the list or browse to
the report server to select one. Select any data source that is type SQL Ser ver .
6. Click Next .
You may need to enter your credentials.
7. On the Design a quer y page, click Edit as Text .
8. Paste the following query into the empty pane at the top:

;WITH CTE (StoreID, Subcategory, Quantity)


AS (
SELECT 200 AS StoreID, 'Digital SLR Cameras' AS Subcategory, 2002 AS Quantity
UNION SELECT 200 AS StoreID, 'Camcorders' AS Subcategory, 1954 AS Quantity
UNION SELECT 200 AS StoreID, 'Accessories' AS Subcategory, 1895 AS Quantity
UNION SELECT 199 AS StoreID, 'Digital Cameras' AS Subcategory, 1849 AS Quantity
UNION SELECT 306 AS StoreID, 'Digital SLR Cameras' AS Subcategory, 1579 AS Quantity
UNION SELECT 306 AS StoreID, 'Camcorders' AS Subcategory, 1561 AS Quantity
UNION SELECT 306 AS StoreID, 'Digital Cameras' AS Subcategory, 1553 AS Quantity
UNION SELECT 306 AS StoreID, 'Accessories' AS Subcategory, 1534 AS Quantity
UNION SELECT 307 AS StoreID, 'Accessories' AS Subcategory, 1755 AS Quantity
UNION SELECT 307 AS StoreID, 'Camcorders' AS Subcategory, 1631 AS Quantity
UNION SELECT 307 AS StoreID, 'Digital SLR Cameras' AS Subcategory, 1772 AS Quantity)
SELECT StoreID, Subcategory, Quantity
FROM CTE

This query combines the results of several Transact-SQL SELECT statements inside a common table
expression to specify values that are based on simplified sales data for cameras from the Contoso sample
database. The subcategories are digital cameras, digital single lens reflex (SLR) cameras, camcorders, and
accessories.
9. On the query designer toolbar, click Run (! ) to see the data.
The result set consists of 11 rows of data that show the quantity of items sold for each subcategory for
four stores, in the following columns: StoreID, Subcategory, Quantity.The store name is not part of the
result set. Later in this tutorial, you will look up the name of the store that corresponds to the store
identifier from a separate dataset.
This query does not contain query parameters. You will add query parameters later in this tutorial.
10. Click Next .

2. Organize Data and Choose Layout in the Wizard


The wizard provides a starting design for displaying data. The preview pane in the wizard helps you to visualize
the result of grouping data before you complete the table or matrix design.
To organize data into groups
1. On the Arrange fields page, drag Subcategory to Row groups .
2. Drag StoreID to Column groups .
3. Drag Quantity to Values .
You have organized the quantity sold values in rows grouped by subcategory, with one column for each
store.
4. Click Next .
5. On the Choose the Layout page, under Options , make sure Show subtotals and grand totals is
selected.
When you run the report, the last column will show the total quantity of each subcategory for all stores,
and the last row will show the total quantity for all subcategories for each store.
6. Click Next .
7. Click Finish .
The matrix is added to the design surface. The matrix displays three columns and three rows. The
contents of the cells in the first row are Subcategory, [StoreID], and Total. The contents of the cells in the
second row contain expressions that represent the subcategory, the quantity of items sold for each store,
and the total quantity for each subcategory for all stores. The cells in the final row display the grand total
for each store.

8. Click in the matrix, hover over the edge of the first column, grab the handle, and expand the column
width.

9. Click Run to preview the report.


The report runs on the report server and displays the title and the time the report processing occurred.
So far the column headings display the store identifier but not the store name. Later, you will add an expression
to look up the store name in a dataset that contains store identifier/store name pairs.

3. Add a Query Parameter to Create a Report Parameter


When you add a query parameter to a query, Report Builder automatically creates a single-valued report
parameter with default properties for name, prompt, and data type.
To add a query parameter
1. Click Design to switch back to Design view.
2. In the Report Data pane, expand the Datasets folder, right-click DataSet1 , and then click Quer y .
3. Add the following Transact-SQL WHERE clause as the last line in the query:

WHERE StoreID = (@StoreID)

The WHERE clause limits the retrieved data to the store identifier that is specified by the query
parameter @StoreID.
4. On the query designer toolbar, click Run (! ). The Define Quer y Parameters dialog box opens and
prompts for a value for the query parameter @StoreID.
5. In Parameter Value , type 200 .
6. Click OK .
The result set displays the quantities sold for Accessories, Camcorders, and Digital SLR Cameras for the
store identifier 200 .
7. Click OK .
8. In the Report Data pane, expand the Parameters folder.
Note there is now a report parameter named @StoreID, and a Parameters pane where you can lay out the
report parameters.
Don't see a Parameters pane? On the View menu, select Parameters .

4. Change Default Data Type and Other Properties for a Report


Parameter
After you create a report parameter, you can adjust the default values for properties.
To change the default data type for a report parameter
By default, the parameter you created has the data type Text . Because the store identifier is an integer, you can
change the data type to Integer.
1. In the Report Data pane under the Parameters node, right-click @StoreID, then click Parameter
Proper ties .
2. In Prompt , type Store identifier? This text appears on the report viewer toolbar when you run the
report.
3. In Data type , from the drop-down list, select Integer .
4. Accept the remaining default values in the dialog box.
5. Click OK .
6. Click Run to preview the report. The report viewer displays the prompt Store Identifier? for @StoreID.
7. On the report viewer toolbar, next to Store ID, type 200 , and then click View Repor t .

4a. Add a Dataset to Provide Available Values and Display Names


To make sure your report readers type only valid values for a parameter, you can create a drop-down list of
values to choose from. The values can come from a dataset or from a list that you specify. Available values must
be supplied from a dataset with a query that does not contain a reference to the parameter.
To create a dataset for valid values for a parameter
1. Click Design to switch to Design view.
2. In the Report Data pane, right-click the Datasets folder, and then click Add Dataset .
3. In Name , type Stores .
4. Select Use a dataset embedded in my repor t .
5. In Data source , from the drop-down list, choose the data source you used in the first procedure.
6. In Quer y type , verify that Text is selected.
7. In Quer y , paste the following text:

SELECT 200 AS StoreID, 'Contoso Catalog Store' as StoreName


UNION SELECT 199 AS StoreID, 'Contoso North America Online Store' as StoreName
UNION SELECT 307 AS StoreID, 'Contoso Asia Online Store' as StoreName
UNION SELECT 306 AS StoreID, 'Contoso Europe Online Store' as StoreName

8. Click OK .
The Report Data pane displays the fields StoreID and StoreName under the Stores dataset node.

4b. Specify Available Values to Show in a List


After you create a dataset to provide available values, you change the report properties to specify which dataset
and which field to use to populate the drop-down list of valid values on the Report Viewer toolbar.
To provide available values for a parameter from a dataset
1. In the Report Data pane, right-click the parameter @StoreID, then click Parameter Proper ties .
2. Click Available Values , and then click Get values from a quer y .
3. In Dataset , from the drop-down list, click Stores .
4. In Value field , from the drop-down list, click StoreID.
5. In Label field , from the drop-down list, click StoreName. The label field specifies the display name for
the value.
6. Click General .
7. In Prompt , change Store Identifer? to Store name?
Report readers will now select from a list of store names instead of store identifiers. Note that the
parameter data type remains Integer because the parameter is based on the store identifier, not the store
name.
8. Click OK .
9. Preview the report.
In the report viewer toolbar, the parameter text box is now a drop-down list that displays Select a Value .
10. From the drop-down list, select Contoso Catalog Store, then click View Repor t .
The report displays the quantity sold for Accessories, Camcorders, and Digital SLR Cameras for the store
identifier 200 .

4c. Specify a Default Value


You can specify a default value for each parameter so the report runs automatically.
To specify a default value from a dataset
1. Switch to Design view.
2. In the Report Data pane, right-click @StoreID, then click Parameter Proper ties .
3. Click Default Values , then click Get values from a quer y .
4. In Dataset , from the drop-down list, click Stores .
5. In Value field , from the drop-down list, click StoreID.
6. Click OK .
7. Preview the report.
For @StoreID, the report viewer displays the value "Contoso North America Online Store" because it's the first
value from the result set for the dataset Stores . The report displays the quantity sold for Digital Cameras for
store identifier 199 .
To specify a custom default value
1. Switch to Design view.
2. In the Report Data pane, right-click @StoreID, and then click Parameter Proper ties .
3. Click Default Values > Specify values > Add . A new value row is added.
4. In Value , type 200 .
5. Click OK .
6. Preview the report.
For @StoreID, the report viewer displays "Contoso Catalog Store" because it's the display name for store
identifier 200 . The report displays the quantity sold for Accessories, Camcorders, and Digital SLR Cameras for
the store identifier 200 .

4d. Look up a Name/Value Pair


A dataset might contain both the identifier and the corresponding name field. When you only have an identifier,
you can look up the corresponding name in a dataset that you created that includes name/value pairs.
To look up a value from a dataset
1. Switch to Design view.
2. On the design surface, in the matrix, in the first row column header, right-click [StoreID] and then click
Expression .
3. In the expression pane, delete all text except the beginning equals sign (=).
4. In Categor y , expand Common Functions , and click Miscellaneous . The Item pane displays a set of
functions.
5. In Item, double-click Lookup . The expression pane displays =Lookup( . The Example pane displays an
example of Lookup syntax.
6. Type the following expression:

=Lookup(Fields!StoreID.Value,Fields!StoreID.Value,Fields!StoreName.Value,"Stores")
The Lookup function takes the value for StoreID, looks it up in the "Stores" dataset, and returns the
StoreName value.
7. Click OK .
The store column header contains the display text for a complex expression: Expr .
8. Preview the report.
The column header at the top of each column displays the store name instead of the store identifier.

5. Display the Selected Parameter Value in the Report


When your report readers have questions about a report, it helps to know which parameter values they chose.
You can preserve user-selected values for each parameter in the report. One way is to display the parameters in
a text box in the page footer.
To display the selected parameter value and label on a page footer
1. Switch to Design view.
2. Right-click the page footer > Inser t > Text Box . Drag the text box next to the text box with the time
stamp. Grab the side handle of the text box and expand the width.
3. From the Report Data pane, drag the parameter @StoreID to the text box. The text box displays
[@StoreID] .

4. To display the parameter label, click in the text box until the insert cursor appears after the existing
expression, type a space, and then drag another copy of the parameter from the Report Data pane to the
text box. The text box displays [@StoreID] [@StoreID] .
5. Right-click the first [@StoreID] and click Expression . The Expression dialog box opens. Replace the text
Value with Label .

6. Click OK .
The text displays: [@StoreID.Label] [@StoreID] .
7. Preview the report.

6. Use the Report Parameter in a Filter


Filters help control which data to use in a report after it is retrieved from an external data source. To let report
readers control the data they want to see, you can include the report parameter in a filter for the matrix.
To specify a parameter in a matrix filter
1. Switch to Design view.
2. Right-click a row or column header handle on the matrix, and then click Tablix Proper ties .
3. Click Filters , and then click Add . A new filter row appears.
4. In Expression , from the drop-down list, select the dataset field StoreID. The data type displays Integer .
When the expression value is a dataset field, the data type is set automatically.
5. In Operator , verify that the equals sign (=) is selected.
6. In Value , type [@StoreID] .
[@StoreID] is the simple expression syntax that represents =Parameters!StoreID.Value .
7. Click OK .
8. Preview the report.
The matrix displays data only for "Contoso Catalog Store".
9. On the report viewer toolbar, for Store name? , select Contoso Asia Online Store , and then click View
Repor t .
The matrix displays data that corresponds to the store that you selected.

7. Change the Report Parameter to Accept Multiple Values


To change a parameter from single to multivalued, you must change the query and all expressions that contain a
reference to the parameter, including filters. A multivalued parameter is an array of values. In a dataset query,
query syntax must test for inclusion of one value in a set of values. In a report expression, expression syntax
must access an array of values instead of an individual value.
To change a parameter from single to multivalued
1. Switch to Design view.
2. In the Report Data pane, right-click @StoreID, and then click Parameter Proper ties .
3. Select Allow multiple values .
4. Click OK .
5. In the Report Data pane, expand the Datasets folder, right-click DataSet1 , and then click Quer y .
6. Change the equals sign (=) to IN in the Transact-SQL WHERE clause in the last line in the query:

WHERE StoreID IN (@StoreID)

The IN operator tests a value for inclusion in a set of values.


7. Click OK .
8. Right-click a row or column header handle on the matrix, and then click Tablix Proper ties .
9. Click Filters .
10. In Operator , select In .
11. Click OK .
12. In the text box that displays the parameter in the page footer, delete all text.
13. Right-click the text box, and then click Expression . Type the following expression:
=Join(Parameters!StoreID.Label, ", ")

This expression concatenates all store names that the user selected, separated by a comma and a space.
14. Click OK .
15. Click in the text box in front of the expression that you just created, and then type the following:
Parameter Values Selected:
16. Preview the report.
17. Click the drop-down list next to Store Name?
Each valid value appears next to a check box.
18. Click Select All , and then click View Repor t .
The report displays the quantity sold for all subcategories for all stores.
19. From the drop-down list, click Select All to clear the list, click "Contoso Catalog Store" and "Contoso Asia
Online Store", and then click View Repor t .

8. Add a Boolean Parameter for Conditional Visibility


To add a Boolean parameter
1. On the design surface, in the Report Data pane, right-click Parameters , and click Add Parameter .
2. In Name , type ShowSelections.
3. In Prompt , type Show selections?
4. In Data type , click Boolean .
5. Click Default Values .
6. Click Specify value , and then click Add .
7. In Value , type False .
8. Click OK .
To set visibility based on a Boolean parameter
1. On the design surface, right-click the text box in the page footer that displays the parameter values, and
then click Text Box Proper ties .
2. Click Visibility .
3. Select the option Show or hide based on an expression , and then click the expression button Fx .
4. Type the following expression: =Not Parameters!ShowSelections.Value

The text box Visibility option is controlled by the property Hidden. Apply the Not operator so that when
the parameter is selected, the Hidden property is false, and the text box will be displayed.
5. Click OK .
6. Click OK .
7. Preview the report.
The text box that displays the parameter choices in the footer does not appear.
8. In the report viewer toolbar, next to Show selections , click True > View Repor t .
The text box in the page footer appears, showing all the store names you selected.

9. Add a Report Title


To add a report title
1. Switch to Design view.
2. On the design surface, click Click to add title .
3. Type Parameterized Product Sales, and then click outside the text box.

10. Save the Report


To save the report on a report server
1. From the Repor t Builder button, click Save As .
2. Click Recent Sites and Ser vers .
3. Select or type the name of the report server where you have permission to save reports.
The message Connecting to repor t ser ver appears . When the connection is complete, you see the
contents of the report folder that the report server administrator specified as the default location for
reports.
4. In Name , replace the default name with Parameterized Sales Report.
5. Click Save .
The report is saved to the report server. The report server that you are connected to appears in the status bar at
the bottom of the window.

Next Steps
This concludes the walkthrough for how to add a parameter to your report. To learn more about parameters, see
Report Parameters (Report Builder and Report Designer).

See Also
Report Builder Tutorials
Report Builder in SQL Server
Lookup Function
Tutorial: Creating Drillthrough and Main Reports
(Report Builder)
3/5/2021 • 21 minutes to read • Edit Online

This tutorial teaches you how to create two kinds of Reporting Services paginated reports: a drillthrough report
and a main report. The sample sales data used in these reports is retrieved from an Analysis Services cube.
The following illustration shows the reports you will create, and shows how the field value, Games and Toys, in
the main report displays in the drillthrough report's title. The data in the drillthrough report pertains to the
Games and Toys product category.

Estimated time to complete this tutorial: 30 minutes.

Requirements
This tutorial requires access to the Contoso Sales cube for both the drillthrough and the main reports. This
dataset comprises the ContosoDW data warehouse and the Contoso_Retail online analytical processing (OLAP)
database. The reports you will create in this tutorial retrieve report data from the Contoso Sales cube. The
Contoso_Retail OLAP database can be downloaded from Microsoft Download Center. You need only download
the file ContosoBIdemoABF.exe. It contains the OLAP database.
The other file, ContosoBIdemoBAK.exe, is for the ContosoDW data warehouse, which is not used in this tutorial.
The Web site includes instructions extracting and restoring the ContosoRetail.abf backup file to the
Contoso_Retail OLAP database.
You must have access to an instance of Analysis Services on which to install the OLAP database.
For more about general requirements, see Prerequisites for Tutorials (Report Builder).

1. Create a Drillthrough Report from the Table or Matrix Wizard


From the Getting Started dialog box, create a matrix report by using the Table or Matrix Wizard . There are
two modes available in the wizard: report design and shared dataset design. In this tutorial, you will use the
report design mode.
To create a new report
1. Start Report Builder either from your computer, the Reporting Services web portal, or SharePoint
integrated mode.
The New Repor t or Dataset dialog box opens.
If you don't see the New Repor t or Dataset dialog box, on the File menu > New .
2. In the left pane, verify that New Repor t is selected.
3. In the right pane, verify that Table or Matrix Wizard is selected.

1a. Specify a Data Connection


A data connection contains the information necessary to connect to an external data source such as an Analysis
Services cube or a SQL Server database. To specify a data connection, you can use a shared data source from the
report server or create an embedded data source that is used only in this report. In this tutorial, you will use an
embedded data source. To learn more about using a shared data source, see Alternative Ways to Get a Data
Connection (Report Builder).
To create an embedded data source
1. On the Choose a dataset page, select Create a dataset , and then click Next . The Choose a
connection to a data source page opens.
2. Click New . The Data Source Proper ties dialog box opens.
3. In Name , type Online and Reseller Sales Detail as the name for the data source.
4. In Select a connection type , select Microsoft SQL Ser ver Analysis Ser vices , and then click Build .
5. In Data source , verify that the data source is Microsoft SQL Ser ver Analysis Ser vices
(AdomdClient) .
6. In Ser ver name , type the name of a server where an instance of Analysis Services is installed.
7. In Select or enter a database name , select the Contoso cube.
8. Click OK .
9. Verify that Connection string contains the following syntax:

Data Source=<servername>; Initial Catalog = Contoso

The <servername> is the name of an instance of SQL Server with Analysis Services installed.
10. Click Credentials type .
NOTE
Depending on how permissions are configured on the data source, you might need to change the default
authentication options. For more information, see Security (Report Builder).

11. Click OK .
The Choose a connection to a data source page appears.
12. To verify that you can connect to the data source, click Test Connection .
The message Connection created successfully appears.
13. Click OK .
14. Click Next .

1b. Create an MDX Query


In a report, you can use a shared dataset that has a predefined query, or you can create an embedded dataset
for use only in your report. In this tutorial, you will create an embedded dataset.
To create query filters
1. On the Design a quer y page, in the Metadata pane, click the button (...) .
2. In the Cube Selection dialog box, click Sales, and then click OK .

TIP
If you do not want to build the MDX query manually, click the icon, toggle the query designer to Query mode,
paste the completed MDX to the query designer, and then proceed to step 6 in To create the dataset.

SELECT NON EMPTY { [Measures].[Sales Amount], [Measures].[Sales Return Amount] } ON COLUMNS, NON
EMPTY { ([Channel].[Channel Name].[Channel Name].ALLMEMBERS * [Product].[Product Category Name].
[Product Category Name].ALLMEMBERS * [Product].[Product Subcategory Name].[Product Subcategory
Name].ALLMEMBERS ) } DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS FROM ( SELECT (
{ [Date].[Calendar Year].&[2009] } ) ON COLUMNS FROM ( SELECT ( { [Sales Territory].[Sales Territory
Group].&[North America] } ) ON COLUMNS FROM ( SELECT ( STRTOSET(\@ProductProductCategoryName,
CONSTRAINED) ) ON COLUMNS FROM ( SELECT ( { [Channel].[Channel Name].&[2], [Channel].[Channel Name].&
[4] } ) ON COLUMNS FROM [Sales])))) WHERE ( [Sales Territory].[Sales Territory Group].&[North
America], [Date].[Calendar Year].&[2009] ) CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR,
FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS

3. In the Measure Group pane, expand Channel, and then drag Channel Name to the Hierarchy column in
the filter pane.
The dimension name, Channel, is automatically added to the Dimension column. Do not change the
Dimension or Operator columns.
4. To open the Filter Expression list, click the down arrow in the Filter Expression column.
5. In the filter expression list, expand All Channel , click Online , click Reseller , and then click OK .
The query now includes a filter to include only these channels: Online and Reseller.
6. Expand the Sales Territory dimension, and then drag Sales Territory Group to the Hierarchy column
(below Channel Name ).
7. Open the Filter Expression list, expand All Sales Territor y , click Nor th America , and then click OK .
The query now has a filter to include only sales in North America.
8. In the Measure Group pane, expand Date, and then drag Calendar Year to the Hierarchy column in the
filter pane.
The dimension name, Date, is automatically added to the Dimension column. Do not change the
Dimension or Operator columns.
9. To open the Filter Expression list, click the down arrow in the Filter Expression column.
10. In the filter expression list, expand All Date , click Year 2009 , and then click OK .
The query now includes a filter to include only the calendar year 2009.
To create the parameter
1. Expand the Product dimension, and then drag the Product Category Name member to the Hierarchy
column below Calendar Year .
2. Open the Filter Expression list, click All Products , and then click OK .
3. Click the Parameter checkbox. The query now includes the parameter ProductProductCategoryName.

NOTE
The parameter contains the names of product categories. When you click a product category name in the main
report, its name is passed to the drillthrough report by using this parameter.

To create the dataset


1. From the Channel dimension, drag Channel Name to the data pane.
2. From the Product dimension, drag Product Category Name to the data pane, and then place it to the right
of Channel Name.
3. From the Product dimension, drag Product Subcategory Name to the data pane, and then place it to the
right of Product Category Name.
4. In the Metadata pane, expand Measure , and then expand Sales.
5. Drag the Sales Amount measure to the data pane, and then place it to the right of Product Subcategory
Name.
6. On the query designer toolbar, click Run (!) .
7. Click Next .

1c. Organize Drillthrough Report Data into Groups


When you select the fields on which to group the data, you design a matrix with rows and columns that displays
detail and aggregated data.
To organize data into groups
1. To switch to design view, click Design .
2. On the Arrange fields page, drag Product_Subcategory_Name to Row groups .

NOTE
The spaces in the names are replaced with underscores (_). For example Product Category Name is
Product_Category_Name.
3. Drag Channel_Name to Column groups .
4. Drag Sales_Amount to Values .
Sales_Amount is automatically aggregated by the Sum function, the default aggregate for numeric fields.
The value is [Sum(Sales_Amount)] .
To view the other aggregate functions available, open the drop-down list (do not change the aggregate
function).
5. Drag Sales_Return_Amount to Values , and then place it below [Sum(Sales_Amount)] .
Steps 4 and 5 specify the data to display in the matrix.
6. Click Next .

1d. Add Drillthrough Report Subtotals and Totals


After you create groups, you can add and format rows where the aggregate values for the fields will display. You
can also choose whether to show all the data or to let a user expand and collapse grouped data interactively.
To add subtotals and totals
1. On the Choose the layout page, under Options , verify that Show subtotals and grand totals is
selected.
The wizard Preview pane displays a matrix with four rows.
2. Click Next .
3. Click Finish .
The table is added to the design surface.
4. To preview the report, click Run (!) .

2. Format Data as Currency


Apply currency formatting to the sales amount fields in the drillthrough report.
To format data as currency
1. To switch to design view, click Design .
2. To select and format multiple cells at one time, press the Ctrl key, and then select the cells that contain the
numeric sales data.
3. On the Home tab, in the Number group, click Currency .

3. Add Columns to Show Sales Values in Sparklines


Instead of showing sales and sales returns as currency values, the report shows the values in a sparkline.
To add sparklines to columns
1. To switch to design view, click Design .
2. In the Total group of the matrix, right-click the Sales Amount column, click Inser t Column , and then
click Right .
An empty column is added to the right of Sales Amount .
3. On the ribbon, click Rectangle , and then click the empty cell to the right of the [Sum(Sales_Amount)] cell
in the [Product_Subcategory] row group.
4. On the ribbon, click the Sparkline icon, and then click the cell where the rectangle was added.
5. In the Select Sparkline Type dialog box, verify that Column type is selected.
6. Click OK .
7. Right-click the sparkline.
8. In the Chart Data pane, click the Add field icon, and then click Sales_Amount.
9. Right-click the Sales_Return_Amount column, and then add a column to the right of it.
10. Repeat steps 2 through 6.
11. Right-click the sparkline.
12. In the Chart Data pane, click the Add field icon, and then click Sales_Return_Amount.
13. To preview the report, click Run .

4. Add Report Title with Product Category Name


A report title appears at the top of the report. You can place the report title in a report header or, if the report
does not use one, in a text box at the top of the report body. In this tutorial, you will use the text box that is
automatically placed at the top of the report body.
To add a report title
1. To switch to design view, click Design .
2. On the design surface, click Click to add title .
3. Type Sales and Returns for Categor y:.
4. Right-click, and then click Create Placeholder .
5. Click the (fx) button to the right of the Value list.
6. In the Expression dialog box, in the Category pane, click Dataset , and then in the Values list double-
click First(Product_Category_Name) .
The Expression box contains the following expression:

=First(Fields!Product_Category_Name.Value, "DataSet1")

7. To preview the report, click Run .


The report title includes the name of the first product category. Later, after you run this report as a drillthrough
report, the product category name will dynamically change to reflect the name of the product category that was
clicked in the main report.

5. Set Hidden Parameter Property


By default parameters are visible, which is not appropriate for this report. You will update the parameter
properties for the drillthrough report.
To hide a parameter
1. In the Report Data pane, expand Parameters .
2. Right-click @ProductProductCategoryName, and then click Parameter Proper ties .
NOTE
The @ character next to the name indicates that this is a parameter.

3. On the General tab, click Hidden .


4. In the Prompt box, type Product Categor y .

NOTE
Because the parameter is hidden, this prompt is never used.

5. Optionally, click Available Values and Default Values and review their options. Do not change any
options on these tabs.
6. Click OK .

6. Save the Report to a SharePoint Library


You can save the report to a SharePoint library, report server, or your computer. If you save the report to your
computer, a number of Reporting Services features such as report parts and subreports are not available. In this
tutorial, you will save the report to a SharePoint library.
To save the report
1. From the Report Builder button, click Save . The Save As Repor t dialog box opens.

NOTE
If you are resaving a report, it is automatically resaved to its previous location. To change the location, use the
Save As option.

2. To show a list of recently used report servers and SharePoint sites, click Recent Sites and Ser vers .
3. Select or type the name of the SharePoint site where you have permission to save reports.
The URL of the SharePoint library has the following syntax:

Http://<ServerName>/<Sites>/

4. Click Save .
Recent Sites and Ser vers lists the libraries on the SharePoint site.
5. Navigate to the library where you will save the report.
6. In the Name box, replace the default name with ResellerVSOnlineDrillthrough .

NOTE
You will save the main report to the same location. If you want to save the main and drillthrough reports to
different sites or libraries, you must update the path of the Go to repor t action in the main report.

7. Click Save .
1. Create the Main Report from the Table or Matrix Wizard
From the Getting Star ted dialog box, create a matrix report by using the Table or Matrix Wizard .
To create the main report
1. Start Report Builder either from your computer, the Reporting Services web portal, or SharePoint
integrated mode.
The New Repor t or Dataset dialog box opens.
If you don't see the New Repor t or Dataset dialog box, on the File menu > New .
2. In the Getting Star ted dialog box, verify that New Repor t is selected, and then click Table or Matrix
Wizard .

1a. Add embedded data source


You will add an embedded data source to the main report.
To create an embedded data source
1. On the Choose a dataset page, select Create a dataset , and then click Next .
2. Click New .
3. In Name , type Online and Reseller Sales Main as the name for the data source.
4. In Select a connection type , select Microsoft SQL Ser ver Analysis Ser vices , and then click Build .
5. In Data source , verify that the data source is Microsoft SQL Ser ver Analysis Ser vices
(AdomdClient) .
6. In Ser ver name , type the name of a server where an instance of MicrosoftAnalysis Services is installed.
7. In Select or enter a database name , select the Contoso cube.
8. Click OK .
9. Verify that the Connection string contains the following syntax:

Data Source=<servername>; Initial Catalog = Contoso

10. Click Credentials type .


Depending on how permissions are configured on the data source, you might need to change the default
authentication.
11. Click OK .
12. To verify that you can connect to the data source, click Test Connection .
13. Click OK .
14. Click Next .

1b. Create embedded dataset


Next, create an embedded dataset. To do so, you will use the query designer to create filters, parameters, and
calculated members as well as the dataset itself.
To create query filters
1. On the Design a quer y page, in the Metadata pane, in the cube section, click the ellipsis (...) .
2. In the Cube Selection dialog box, click Sales, and then click OK .

TIP
If you do not want to build the MDX query manually, click the icon, toggle the query designer to Query mode,
paste the completed MDX to the query designer, and then proceed to step 5 in To create the dataset.

WITH MEMBER [Measures].[Net QTY] AS [Measures].[Sales Quantity] -[Measures].[Sales Return Quantity]


MEMBER [Measures].[Net Sales] AS [Measures].[Sales Amount] - [Measures].[Sales Return Amount] SELECT
NON EMPTY { [Measures].[Net QTY], [Measures].[Net Sales] } ON COLUMNS, NON EMPTY { ([Channel].
[Channel Name].[Channel Name].ALLMEMBERS * [Product].[Product Category Name].[Product Category
Name].ALLMEMBERS ) } DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS FROM ( SELECT (
{ [Date].[Calendar Year].&[2009] } ) ON COLUMNS FROM ( SELECT (
STRTOSET(\@ProductProductCategoryName, CONSTRAINED) ) ON COLUMNS FROM ( SELECT ( { [Sales Territory].
[Sales Territory Group].&[North America] } ) ON COLUMNS FROM ( SELECT ( { [Channel].[Channel Name].&
[2], [Channel].[Channel Name].&[4] } ) ON COLUMNS FROM [Sales])))) WHERE ( [Sales Territory].[Sales
Territory Group].&[North America], [Date].[Calendar Year].&[2009] ) CELL PROPERTIES VALUE,
BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGSQuery text:
Code.

3. In the Measure Group pane, expand Channel, and then drag Channel Name to the Hierarchy column in
the filter pane.
The dimension name, Channel, is automatically added to the Dimension column. Do not change the
Dimension or Operator columns.
4. To open the Filter Expression list, click the down arrow in the Filter Expression column.
5. In the filter expression list, expand All Channel , click Online and Reseller , and then click OK .
The query now includes a filter to include only these channels: Online and Reseller.
6. Expand the Sales Territory dimension, and then drag Sales Territory Group to the Hierarchy column,
below Channel Name .
7. Open the Filter Expression list, expand All Sales Territor y , click Nor th America , and then click OK .
The query now has a filter to include only sales in North America.
8. In the Measure Group pane, expand Date, and drag Calendar Year to the Hierarchy column in the filter
pane.
The dimension name, Date, is automatically added to the Dimension column. Do not change the
Dimension or Operator columns.
9. To open the Filter Expression list, click the down arrow in the Filter Expression column.
10. In the filter expression list, expand All Date , click Year 2009 , and then click OK .
The query now includes a filter to include only the calendar year 2009.
To create the parameter
1. Expand the Product dimension, and then drag the Product Category Name member to the Hierarchy
column below Sales Territor y Group .
2. Open the Filter Expression list, click All Products , and then click OK .
3. Click the Parameter checkbox. The query now includes the parameter ProductProductCategoryName.
To create calculated members
1. Place the cursor inside the Calculated Members pane, right-click, and then click New Calculated
Member .
2. In the Metadata pane, expand Measures and then expand Sales.
3. Drag the Sales Quantity measure to the Expression box, type the subtraction character (-), and then drag
the Sales Return Quantity measure to the Expression box; place it after the subtraction character.
The following code shows the expression:

[Measures].[Sales Quantity] - [Measures].[Sales Return Quantity]

4. In the Name box, type Net QTY , and then click OK .


The Calculated Members pane lists the Net QTY calculated member.
5. Right-click Calculated Members , and then click New Calculated Member .
6. In the Metadata pane, expand Measures , and then expand Sales.
7. Drag the Sales Amount measure to the Expression box, type the subtraction character (-), and then drag
the Sales Return Amount measure to the Expression box; place it after the subtraction character.
The following code shows the expression:

[Measures].[Sales Amount] - [Measures].[Sales Return Amount]

8. In the Name box, type Net Sales , and then click OK .The Calculated Members pane lists the Net Sales
calculated member.
To create the dataset
1. From the Channel dimension, drag Channel Name to the data pane.
2. From the Product dimension, drag Product Category Name to the data pane, and then place it to the right
of Channel Name.
3. From Calculated Members , drag Net QTY to the data pane, and then place it to the right of Product
Category Name.
4. From Calculated Members, drag Net Sales to the data pane, and then place it to the right of Net QTY .
5. On the query designer toolbar, click Run (!) .
Review the query result set.
6. Click Next .

1c. Organize Main Report Data into Groups


When you select the fields on which to group data, you design a matrix with rows and columns that displays
detail and aggregated data.
To organize data into groups
1. On the Arrange fields page, drag Product_Category_Name to Row groups .
2. Drag Channel_Name to Column groups .
3. Drag Net_QTY to Values .
Net_QTY is automatically aggregated by the Sum function, the default aggregate for numeric fields. The
value is [Sum(Net_QTY)] .
To view the other aggregate functions available, open the drop-down list. Do not change the aggregate
function.
4. Drag Net_Sales_Return to Values and then place it below [Sum(Net_QTY)] .
Steps 3 and 4 specify the data to display in the matrix.

1d. Add Main Report Subtotals and Totals


You can show subtotals and grand totals in reports. The data in the main report displays as an indicator; you will
remove the grand total after you complete the wizard.
To add subtotals and grand totals
1. On the Choose the layout page, under Options , verify that Show subtotals and grand totals is
selected.
The wizard Preview pane displays a matrix with four rows. When you run the report, each row will display
in the following way: The first row is the column group, the second row contains the column headings,
the third row contains the product category data ( [Sum(Net_ QTY)] and [Sum(Net_Sales)] , and the fourth
row contains the totals.
2. Click Next .
3. Click Finish .
4. To preview the report, click Run .

2. Remove the Grand Total Row


The data values are shown as indictor states, including the column group totals. Remove the row that displays
the grand total.
To remove the grand total row
1. To switch to design view, click Design .
2. Click the Total row (the last row in the matrix), right-click, and then click Delete Rows .
3. To preview the report, click Run .

3. Configure Text Box Action for Drillthrough


To enable the drillthrough, specify an action on a text box in the main report.
To enable an action
1. To switch to design view, click Design .
2. Right-click the cell that contains Product_Category_Name, and then click Text Box Proper ties .
3. Click the Action tab.
4. Select Go to repor t.
5. In Specify a repor t , click Browse , and then locate the drillthrough report named
ResellerVSOnlineDrillthrough.
6. To add a parameter to run the drillthrough report, click Add .
7. In the Name list, select ProductProductCategoryName.
8. In Value , type [Product_Category_Name.UniqueName] .
Product_Category_Name is a field in the dataset.

IMPORTANT
You must include the UniqueName property because the drillthrough action requires a unique value.

9. Click OK .
To format the drillthrough field
1. Right-click the cell that contains the Product_Category_Name , and then click Text Box Proper ties .
2. Click the Font tab.
3. In the Effects list, select Underline .
4. In the Color list, select Blue .
5. Click OK .
6. To preview your report, click Run .
The product category names are in the common link format (blue and underlined).

4. Replace Numeric Values with Indicators


Use indicators to show the state of quantities and sales for Online and Reseller channels.
To add an indicator for Net QTY values
1. To switch to design view, click Design .
2. On the ribbon, click the Rectangle icon, and then click in the [Sum(Net QTY)] cell in the
[Product_Category_Name] row group in the Channel_Name column group.

3. On the ribbon, click the Indicator icon, and then click inside the rectangle. The Select Indicator Type
dialog box opens with the Directional indicator selected.
4. Click the 3 Signs type, and then click OK .
5. Right-click the indicator and in the Gauge Data pane, click the down arrow next to (Unspecified) . Select
Net_QTY .

6. Repeat steps 2 through 5 for the [Sum(Net QTY)] cell in the [Product_Category_Name] row group within
Total .
To add an indicator for Net Sales values
1. On the ribbon, click the Rectangle icon, and then click inside the [Sum(Net_Sales)] cell in the
[Product_Category_Name] row group in the Channel_Name column group.

2. On the ribbon, click the Indicator icon, and then click inside the rectangle.
3. Click the 3 Signs type, and then click OK .
4. Right-click the indicator and in the Gauge Data pane, click the down arrow next to (Unspecified) . Select
Net_Sales .

5. Repeat steps 1 through 4 for the [Sum(Net_Sales)] cell in the [Product_Category_Name] row group within
Total .
6. To preview your report, click Run .

5. Set Internal Parameter Property


By default, parameters are visible, which is not appropriate for this report. You will update the parameter
properties to make the parameter internal.
To make the parameter internal
1. In the Report Data pane, expand Parameters .
2. Right-click @ProductProductCategoryName, and then click Parameter Proper ties .
3. On the General tab, click Internal .
4. Optionally, click the Available Values and Default Values tabs and review their options. Do not change
any options on these tabs.
5. Click OK .

6. Add a Report Title


Add a title to the main report.
To add a report title
1. On the design surface, click Click to add title .
2. Type 2009 Product Categor y Sales: Online and Reseller Categor y:.
3. Select the text you typed.
4. On the Home tab of the ribbon, in the Font group, select the Times New Roman font, 16pt size, and
the Bold and Italic styles.
5. To preview your report, click Run .

7. Save the Main Report to a SharePoint Library


Save the main report to a SharePoint library.
To save the report
1. To switch to design view, click Design .
2. From the Report Builder button, click Save .
3. Optionally, to show a list of recently used report servers and SharePoint sites, click Recent Sites and
Ser vers .
4. Select or type the name of the SharePoint site where you have permission to save reports. The URL of the
SharePoint library has the following syntax:

Http://<ServerName>/<Sites>/

5. Navigate to the library where you want to save the report.


6. In Name , replace the default name with ResellerVSOnlineMain .
IMPORTANT
Save the main report to the same location where you saved the drillthrough report. To save the main and
drillthrough reports to different sites or libraries, confirm that the Go to repor t action in the main report, points
to the correct location of the drillthrough report.

7. Click Save .

8. Run the Main and Drillthrough Reports


Run the main report, and then click values in the product category column to run the drillthrough report.
To run the reports
1. Open the SharePoint library where the reports are saved.
2. Double-click ResellerVSOnlineMain.
The report runs and displays product category sales information.
3. Click the Games and Toys link in the column that contains product category names.
The drillthrough report runs, displaying only the values for the Games and Toys product category.
4. To return to the main report, click the Internet Explorer back button.
5. Optionally, explore other product categories by clicking their names.

See Also
Report Builder tutorials
Tutorial: Introducing Expressions
3/5/2021 • 18 minutes to read • Edit Online

In this Report Builder tutorial, you use expressions with common functions and operators to create powerful and
flexible Reporting Services paginated reports.
You will write expressions that concatenate name values, look up values in a separate dataset, display different
colors based on field values, and so on.
The report is a banded report with alternating rows in white and a color. The report includes a parameter for
selecting the color of the non-white rows.
This illustration shows a report similar to the one you will create.

Estimated time to complete this tutorial: 30 minutes.

Requirements
For information about requirements, see Prerequisites for Tutorials (Report Builder).

1. Create a Table Report and Dataset from the Table or Matrix Wizard
In this section, you create a table report, a data source, and a dataset. When you lay out the table, you will
include only a few fields. After you complete the wizard you will manually add columns. The wizard makes it
easy to lay out the table.

NOTE
In this tutorial, the query contains the data values, so it does not need an external data source. This makes the query
quite long. In a business environment, a query would not contain the data. This is for learning purposes only.

To create a table report


1. Start Report Builder either from your computer, the Reporting Services web portal, or SharePoint
integrated mode.
The New Repor t or Dataset dialog box opens.
If you don't see the New Repor t or Dataset dialog box, on the File menu > New .
2. In the left pane, verify that New Repor t is selected.
3. In the right pane, click Table or Matrix Wizard .
4. On the Choose a dataset page, click Create a dataset > Next .
5. On the Choose a connection to a data source page, select a data source that is type SQL Ser ver .
Select a data source from the list or browse to the report server to select one.

NOTE
The data source you choose isn't important, as long as you have adequate permissions. You will not be getting
data from the data source. For more information, see Alternative Ways to Get a Data Connection (Report Builder).

6. Click Next .
7. On the Design a quer y page, click Edit as Text .
8. Paste the following query into the query pane:

SELECT 'Lauren' AS FirstName,'Johnson' AS LastName, 'American Samoa' AS StateProvince, 1 AS


CountryRegionID,'Female' AS Gender, CAST(9996.60 AS money) AS YTDPurchase, CAST('2015-6-10' AS date)
AS LastPurchase
UNION SELECT'Warren' AS FirstName, 'Pal' AS LastName, 'New South Wales' AS StateProvince, 2 AS
CountryRegionID, 'Male' AS Gender, CAST(5747.25 AS money) AS YTDPurchase, CAST('2015-7-3' AS date) AS
LastPurchase
UNION SELECT 'Fernando' AS FirstName, 'Ross' AS LastName, 'Alberta' AS StateProvince, 3 AS
CountryRegionID, 'Male' AS Gender, CAST(9248.15 AS money) AS YTDPurchase, CAST('2015-10-17' AS date)
AS LastPurchase
UNION SELECT 'Rob' AS FirstName, 'Caron' AS LastName, 'Northwest Territories' AS StateProvince, 3 AS
CountryRegionID, 'Male' AS Gender, CAST(742.50 AS money) AS YTDPurchase, CAST('2015-4-29' AS date) AS
LastPurchase
UNION SELECT 'James' AS FirstName, 'Bailey' AS LastName, 'British Columbia' AS StateProvince, 3 AS
CountryRegionID, 'Male' AS Gender, CAST(1147.50 AS money) AS YTDPurchase, CAST('2015-6-15' AS date)
AS LastPurchase
UNION SELECT 'Bridget' AS FirstName, 'She' AS LastName, 'Hamburg' AS StateProvince, 4 AS
CountryRegionID, 'Female' AS Gender, CAST(7497.30 AS money) AS YTDPurchase, CAST('2015-5-10' AS date)
AS LastPurchase
UNION SELECT 'Alexander' AS FirstName, 'Martin' AS LastName, 'Saxony' AS StateProvince, 4 AS
CountryRegionID, 'Male' AS Gender, CAST(2997.60 AS money) AS YTDPurchase, CAST('2015-11-19' AS date)
AS LastPurchase
UNION SELECT 'Yolanda' AS FirstName, 'Sharma' AS LastName ,'Micronesia' AS StateProvince, 5 AS
CountryRegionID, 'Female' AS Gender, CAST(3247.95 AS money) AS YTDPurchase, CAST('2015-8-23' AS date)
AS LastPurchase
UNION SELECT 'Marc' AS FirstName, 'Zimmerman' AS LastName, 'Moselle' AS StateProvince, 6 AS
CountryRegionID, 'Male' AS Gender, CAST(1200.00 AS money) AS YTDPurchase, CAST('2015-11-16' AS date)
AS LastPurchase
UNION SELECT 'Katherine' AS FirstName, 'Abel' AS LastName, 'Moselle' AS StateProvince, 6 AS
CountryRegionID, 'Female' AS Gender, CAST(2025.00 AS money) AS YTDPurchase, CAST('2015-12-1' AS date)
AS LastPurchase
UNION SELECT 'Nicolas' as FirstName, 'Anand' AS LastName, 'Seine (Paris)' AS StateProvince, 6 AS
CountryRegionID, 'Male' AS Gender, CAST(1425.00 AS money) AS YTDPurchase, CAST('2015-12-11' AS date)
AS LastPurchase
UNION SELECT 'James' AS FirstName, 'Peters' AS LastName, 'England' AS StateProvince, 12 AS
CountryRegionID, 'Male' AS Gender, CAST(887.50 AS money) AS YTDPurchase, CAST('2015-8-15' AS date) AS
LastPurchase
UNION SELECT 'Alison' AS FirstName, 'Nath' AS LastName, 'Alaska' AS StateProvince, 7 AS
CountryRegionID, 'Female' AS Gender, CAST(607.50 AS money) AS YTDPurchase, CAST('2015-10-13' AS date)
AS LastPurchase
UNION SELECT 'Grace' AS FirstName, 'Patterson' AS LastName, 'Kansas' AS StateProvince, 7 AS
CountryRegionID, 'Female' AS Gender, CAST(1215.00 AS money) AS YTDPurchase, CAST('2015-10-18' AS
CountryRegionID, 'Female' AS Gender, CAST(1215.00 AS money) AS YTDPurchase, CAST('2015-10-18' AS
date) AS LastPurchase
UNION SELECT 'Bobby' AS FirstName, 'Sanchez' AS LastName, 'North Dakota' AS StateProvince, 7 AS
CountryRegionID, 'Female' AS Gender, CAST(6191.00 AS money) AS YTDPurchase, CAST('2015-9-17' AS date)
AS LastPurchase
UNION SELECT 'Charles' AS FirstName, 'Reed' AS LastName, 'Nebraska' AS StateProvince, 7 AS
CountryRegionID, 'Male' AS Gender, CAST(8772.00 AS money) AS YTDPurchase, CAST('2015-8-27' AS date)
AS LastPurchase
UNION SELECT 'Orlando' AS FirstName, 'Romeo' AS LastName, 'Texas' AS StateProvince, 7 AS
CountryRegionID, 'Male' AS Gender, CAST(8578.00 AS money) AS YTDPurchase, CAST('2015-7-29' AS date)
AS LastPurchase
UNION SELECT 'Cynthia' AS FirstName, 'Randall' AS LastName, 'Utah' AS StateProvince, 7 AS
CountryRegionID, 'Female' AS Gender, CAST(7218.10 AS money) AS YTDPurchase, CAST('2015-1-11' AS date)
AS LastPurchase
UNION SELECT 'Rebecca' AS FirstName, 'Roberts' AS LastName, 'Washington' AS StateProvince, 7 AS
CountryRegionID, 'Female' AS Gender, CAST(8357.80 AS money) AS YTDPurchase, CAST('2015-10-28' AS
date) AS LastPurchase
UNION SELECT 'Cristian' AS FirstName, 'Petulescu' AS LastName, 'Wisconsin' AS StateProvince, 7 AS
CountryRegionID, 'Male' AS Gender, CAST(3470.00 AS money) AS YTDPurchase, CAST('2015-11-30' AS date)
AS LastPurchase
UNION SELECT 'Cynthia' AS FirstName, 'Randall' AS LastName, 'Utah' AS StateProvince, 7 AS
CountryRegionID, 'Female' AS Gender, CAST(7218.10 AS money) AS YTDPurchase, CAST('2015-1-11' AS date)
AS LastPurchase
UNION SELECT 'Rebecca' AS FirstName, 'Roberts' AS LastName, 'Washington' AS StateProvince, 7 AS
CountryRegionID, 'Female' AS Gender, CAST(8357.80 AS money) AS YTDPurchase, CAST('2015-10-28' AS
date) AS LastPurchase
UNION SELECT 'Cristian' AS FirstName, 'Petulescu' AS LastName, 'Wisconsin' AS StateProvince, 7 AS
CountryRegionID, 'Male' AS Gender, CAST(3470.00 AS money) AS YTDPurchase, CAST('2015-11-30' AS date)
AS LastPurchase

9. On the query designer toolbar, click Run (! ). The result set displays 23 rows of data in the following
columns: FirstName, LastName, StateProvince, CountryRegionID, Gender, YTDPurchase, and LastPurchase.

10. Click Next .


11. On the Arrange fields page, drag the following fields, in the specified order, from the Available Fields
list to the Values list.
StateProvince
CountryRegionID
LastPurchase
YTDPurchase
Because the CountryRegionID and YTDPurchase contain numeric data, the SUM aggregate is applied to
them by default, but you don't want them to be sums.
12. In the Values list, right-click Countr yRegionID and clear the Sum check box.
Sum is no longer applied to CountryRegionID.
13. In the Values list, right-click YTDPurchase and click the Sum option.
Sum is no longer applied to YTDPurchase.

14. Click Next .


15. On the Choose the layout page, keep all the default settings and click Next .

16. Click Finish .

2. Update Default Names of the Data Source and Dataset


To update the default name of the data source
1. In the Report Data pane, expand the Data Sources folder.
2. Right-click DataSource1 and click Data Source Proper ties.
3. In the Name box, type ExpressionsDataSource
4. Click OK .
To update the default name of the dataset
1. In the Report Data pane, expand the Datasets folder.
2. Right-click DataSet1 and click Dataset Proper ties .
3. In the Name box, type Expressions
4. Click OK .

3. Display First Initial and Last Name


In this section, you use the Left function and the Concatenate (& ) operator in an expression that evaluates to a
name that includes an initial and a last name. You can build the expression step by step or skip ahead in the
procedure and copy/paste the expression from the tutorial into the Expression dialog box.
1. Right-click the StateProvince column, point to Inser t Column , and then click Left .
A new column is added to the left of the StateProvince column.

2. Click the header of the new column and type Name .


3. Right-click the data cell for the Name column and click Expression .
4. In the Expression dialog box, expand Common Functions , and then click Text .
5. In the Item list, double-click Left .
The Left function is added to the expression.

6. In the Categor y list, click Fields (Expressions) .


7. In the Values list, double-click FirstName .
8. Type , 1)
This expression extracts one character from the FirstName value, counting from the left.
9. Type &". "&
This adds a period and a space after the expression.
10. In the Values list, double-click LastName .
The completed expression is: =Left(Fields!FirstName.Value, 1) &". "& Fields!LastName.Value
11. Click OK .
12. Click Run to preview the report.

(optional) Format the Date and Currency Columns and Header Row
In this section, you format the Last Purchase column, which contains dates, and the YTDPurchase column,
which contains currency. You also format the header row.
To format the date column
1. Click Design to return to design view.
2. Select the data cell in the Last Purchase column, and on the Home tab > Number section, select Date .

3. Also in the Number section, click the arrow next to Placeholder Styles and select Sample Values .

Now you can see an example of the formatting you selected.


To format the currency column
Select the data cell in the YTDPurchase column, and in the Number section, select Currency Symbol .
To format the column headers
1. Select the row of column headers.
2. On the Home tab > Paragraph section, select Left .
3. Click Run to preview the report.
Here's the report so far, with formatted dates, currency, and column headers.

4. Use Color to Display Gender


In this section, you add color to show the gender of a person. You will add a new column to display the color, and
then determine the color that appears in the column based on the value of the Gender field.
To keep the color you've applied in that table cell when you make the report a banded report, you add a
rectangle and then add the background color to the rectangle.
To add an M/F column
1. Right-click the Name column, point to Inser t Column , and then click Left .
A new column is added to the left of the Name column.
2. Click the header of the new column and type M/F .
To add a rectangle
1. On the Inser t tab, click Rectangle and then click in the data cell of the M/F column.
A rectangle is added to the cell.

2. Drag the column divider between the M/F and the Name to make the M/F column narrower.

To use color to show gender


1. Right-click the rectangle in the data cell in the M/F column and click Rectangle Proper ties .
2. In the Rectangle Proper ties dialog box > Fill tab, click the expression fx button next to Fill color .
3. In the Expression dialog box, expand Common Functions and click Program Flow .
4. In the Item list, double-click Switch .
5. In the Categor y list, click Fields (Expressions) .
6. In the Values list, double-click Gender .
7. Type ="Male", (including the comma).
8. In the Categor y list, click Constants , and in the Values box, click Cornflower Blue .
9. Type a comma after it.
10. In the Categor y list, click Fields (Expressions) , and in the Values list, double-click Gender again.
11. Type ="Female", (including the comma).
12. In the Categor y list, click Constants , and in the Values box, click Tomato .
13. Type a closing parenthesis ) after it.
The completed expression is:
=Switch(Fields!Gender.Value ="Male", "CornflowerBlue",Fields!Gender.Value ="Female","Tomato")

14. Click OK , then click OK again to close the Rectangle Proper ties dialog box.
15. Click Run to preview the report.
To format the color rectangles
1. Click Design to return to design view.
2. Select the rectangle in the M/F column. In the Properties pane, in the Border section, set these properties:
BorderColor = White
BorderStyle = Solid
BorderWidth = 5pt

3. Click Run to preview the report again. This time the color blocks have white space around them.
5. Look Up the CountryRegion Name
In this section, you create the CountryRegion dataset and use the Lookup function to display the name of a
country/region instead of the identifier of the country/region.
To create the CountryRegion dataset
1. Click Design to return to design view.
2. In the Report Data pane, click New and then click Dataset .
3. In Dataset Proper ties , click Use a dataset embedded in my repor t .
4. In the Data source list, select ExpressionsDataSource.
5. In the Name box, type Countr yRegion
6. Verify that the Text query type is selected and click Quer y Designer .
7. Click Edit as Text .
8. Copy and paste the following query into the query pane:
SELECT 1 AS ID, 'American Samoa' AS CountryRegion
UNION SELECT 2 AS CountryRegionID, 'Australia' AS CountryRegion
UNION SELECT 3 AS ID, 'Canada' AS CountryRegion
UNION SELECT 4 AS ID, 'Germany' AS CountryRegion
UNION SELECT 5 AS ID, 'Micronesia' AS CountryRegion
UNION SELECT 6 AS ID, 'France' AS CountryRegion
UNION SELECT 7 AS ID, 'United States' AS CountryRegion
UNION SELECT 8 AS ID, 'Brazil' AS CountryRegion
UNION SELECT 9 AS ID, 'Mexico' AS CountryRegion
UNION SELECT 10 AS ID, 'Japan' AS CountryRegion
UNION SELECT 10 AS ID, 'Australia' AS CountryRegion
UNION SELECT 12 AS ID, 'United Kingdom' AS CountryRegion

9. Click Run (! ) to run the query.


The query results are the country/region identifiers and names.
10. Click OK .
11. Click OK again to close the Dataset Proper ties dialog box.
Now you have a second dataset in the Repor t Data column.
To look up values in the CountryRegion dataset
1. Click the Countr y Region ID column header and delete the text: ID , so it reads Countr y Region .
2. Right-click the data cell for the Countr y Region column and click Expression .
3. Delete the expression except the initial equal (=) sign.
The remaining expression is: =

4. In the Expression dialog box, expand Common Functions and click Miscellaneous , and in the Item
list, double-click Lookup .
5. In the Categor y list, click Fields (Expressions) , and in the Values list, double-click Countr yRegionID .
6. Place the cursor immediately after CountryRegionID.Value , and type ,Fields!ID.value,
Fields!Countr yRegion.value, "Countr yRegion")
The completed expression:
=Lookup(Fields!CountryRegionID.Value,Fields!ID.value, Fields!CountryRegion.value, "CountryRegion")

The syntax of the Lookup function specifies a lookup between CountryRegionID in the Expressions
dataset and ID in the CountryRegion dataset that returns the CountryRegion value from the
CountryRegion dataset.
7. Click OK .
8. Click Run to preview the report.

6. Count Days Since Last Purchase


In this section, you add a column and then use the Now function or the ExecutionTime built-in global variable to
calculate the number of days from today since a customer's last purchases.
To add the Days Ago column
1. Click Design to return to design view.
2. Right-click the Last Purchase column, point to Inser t Column , and then click Right .
A new column is added to the right of the Last Purchase column.
3. In the column header, type Days Ago
4. Right-click the data cell for the Days Ago column and click Expression .
5. In the Expression dialog box, expand Common Functions , and then click Date & Time .
6. In the Item list, double-click DateDiff .
7. Immediately after DateDiff( , type "d", (including the quotation marks "" and comma).
8. In the Categor y list, click Fields (Expressions) , and in the Values list, double-click LastPurchase .
9. Immediately after Fields!LastPurchase.Value , type , (a comma).
10. In the Categor y list, click Date & Time again, and in the Item list, double-click Now .

WARNING
In production reports you should not use the Now function in expressions that are evaluated multiple times as
the report renders (for example, in the detail rows of a report). The value of Now changes from row to row and
the different values affect the evaluation results of expressions, which leads to results that are subtly inconsistent.
Instead, use the ExecutionTime global variable that Reporting Services provides.

11. Delete the left parenthesis after Now( , and then type a right parenthesis )
The completed expression is: =DateDiff("d", Fields!LastPurchase.Value, Now)

12. Click OK .
13. Click Run to preview the report.

7. Use an Indicator to Show Sales Comparison


In this section, you add a new column and use an indicator to show whether a person's year-to-date (YTD)
purchases are above or below the average YTD purchases. The Round function removes decimals from values.
Configuring the indicator and its states takes many steps. If you want, you can skip ahead in the "To configure
the indicator" procedure, and copy/paste the completed expressions from this tutorial into the Expression
dialog box.
To add the + or - AVG Sales column
1. Right-click the YTD Purchase column, point to Inser t Column , and then click Right .
A new column is added to the right of the YTD Purchase column.
2. Click the column header and type + or - AVG Sales
To add an indicator
1. On the Inser t tab, click Indicator , and then click the data cell for the + or - AVG Sales column.
The Select Indicator Type dialog box opens.
2. In the Directional group of icon sets, click the set of three gray arrows.

3. Click OK .
To configure the indicator
1. Right-click the indicator, click Indicator Proper ties , and then click Value and States .
2. Click the expression fx button next to the Value text box.
3. In the Expression dialog box, expand Common Functions , and then click Math .
4. In the Item list, double-click Round .
5. In the Categor y list, click Fields (Expressions) , and in the Values list, double-click YTDPurchase .
6. Immediately after Fields!YTDPurchase.Value , type - (a minus sign).
7. Expand Common Functions again, click Aggregate , and in the Item list, double-click Avg .
8. In the Categor y list, click Fields (Expressions) , and in the Values list, double-click YTDPurchase .
9. Immediately after Fields!YTDPurchase.Value , type , "Expressions"))
The completed expression is:
=Round(Fields!YTDPurchase.Value - Avg(Fields!YTDPurchase.Value, "Expressions"))

10. Click OK .
11. In the States Measurement Unit box, select Numeric .
12. In the row with the down-pointing arrow, click the fx button to the right of the text box for the Star t
value.

13. In the Expression dialog box, expand Common Functions , and then click Math .
14. In the Item list, double-click Round .
15. In the Categor y list, click Fields (Expressions) , and in the Values list, double-click YTDPurchase .
16. Immediately after Fields!YTDPurchase.Value , type - (a minus sign).
17. Expand Common Functions again and click Aggregate , and in the Item list, double-click Avg .
18. In the Categor y list, click Fields (Expressions) , and in the Values list, double-click YTDPurchase .
19. Immediately after Fields!YTDPurchase.Value , type , "Expressions")) < 0
The completed expression:
=Round(Fields!YTDPurchase.Value - Avg(Fields!YTDPurchase.Value, "Expressions")) < 0

20. Click OK .
21. In the text box for the End value, type 0
22. Click the row with the horizontal-pointing arrow and click Delete .

Now there are only two arrows, either up or down.


23. In the row with the up-pointing arrow, in the Star t box, type 0
24. Click the fx button to the right of the text box for the End value.
25. In the Expression dialog box, delete 100 and create the expression:
=Round(Fields!YTDPurchase.Value - Avg(Fields!YTDPurchase.Value, "Expressions")) >0

26. Click OK .
27. Click OK again to close the Indicator proper ties dialog box.
28. Click Run to preview the report.

8. Make a Banded Report


Create a parameter so report readers can specify the color to apply to alternating rows in the report, making it a
banded report.
To add a parameter
1. Click Design to return to design view.
2. In the Repor t Data pane, right-click Parameters and click Add Parameter .

The Repor t Parameter Proper ties dialog box opens.


3. In Prompt , type Choose color
4. In Name , type RowColor
5. On the Available Values tab, click Specify values .
6. Click Add .
7. In the Label box, type Yellow
8. In the Value box, type Yellow
9. Click Add .
10. In the Label box, type Green
11. In the Value box, type PaleGreen
12. Click Add .
13. In the Label box, type Blue
14. In the Value box, type LightBlue
15. Click Add .
16. In the Label box, type Pink
17. In the Value box, type Pink

18. Click OK .
To apply alternating colors to detail rows
1. Select all the cell in the data row except the cell in the M/F column, which has its own background color.

2. In the Properties pane, click BackgroundColor .


If you don't see the Properties pane, on the View tab select the Proper ties box.
If the properties are listed by category in the Properties pane, you will find BackgroundColor in the
Misc category.
3. Click the down arrow and then click Expression .
4. In the Expression dialog box, expand Common Functions , and then click Program Flow .
5. In the Item list, double-click IIf .
6. Under Common Functions , click Miscellaneous , and in the Item list, double-click RowNumber .
7. Immediately after RowNumber( type Nothing) MOD 2,
8. Click Parameters and in the Values list, double-click RowColor .
9. Immediately after Parameters!RowColor.Value , type , "White")
The completed expression is: =IIF(RowNumber(Nothing) MOD 2, Parameters!RowColor.Value, "White")

10. Click OK .
Run the Report
1. On the Home tab, click Run .
Now when you run the report, you don't see the report until you choose a color for the non-white bands.
2. In the Choose color list, select a color for the non-white bands in the report.
3. Click View Repor t .
The report renders and alternating rows have the background that you chose.

(optional) Add a Report Title


Add a title to the report.
To add a report title
1. On the design surface, click Click to add title .
2. Type Sales Comparison Summar y , then select the text.
3. On the Home tab, in the Font box, set:
Size = 18
Color = Gray
Bold
4. On the Home tab, click Run .
5. Select a color for the non-white bands in the report, andn click View Repor t .

(optional) Save the Report


You can save reports to a report server, SharePoint library, or your computer. For more information, see Saving
Reports (Report Builder).
In this tutorial, you save the report to a report server. If you do not have access to a report server, save the
report to your computer.
To save the report to a report server
1. On the File menu > Save As .
2. Click Recent Sites and Ser vers .
3. Select or type the name of the report server where you have permission to save reports.
The message "Connecting to report server" appears. When the connection is complete, you will see the
contents of the report folder that the report server administrator specified as the default report location.
4. Give the report a name and click Save .
The report is saved to the report server. The name of report server that you are connected to appears in the
status bar at the bottom of the window.
Now your report readers can view your report in the Reporting Services web portal.

See Also
Expressions (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Indicators (Report Builder and SSRS)
Images, Text Boxes, Rectangles, and Lines (Report Builder and SSRS)
Tables (Report Builder and SSRS)
Report Datasets (SSRS)
Analysis and reporting with Microsoft business
intelligence (BI) tools
3/5/2021 • 2 minutes to read • Edit Online

Choosing the right business intelligence tool can be overwhelming. Learn about the different Microsoft
offerings and find the one that best fits your needs.
The following table maps workloads for data analysis and reporting to the Microsoft BI tools that are best suited
for those workloads. For more information about a product, click the product link in the table.
If you're looking for a brief overview of these tools to help you decide which tools are right for you, see
Introducing Microsoft Business Intelligence (BI) Tools.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

SH A REP O IN T
SH A REP O IN T O N L IN E- P O W ER B I- SQ L SERVER-
EXC EL - B A SED - B A SED B A SED B A SED B A SED
W O RK LO A DS USER B I TO O L B I TO O L B I TO O L B I TO O L B I TO O L

Self-Ser vice Analyst/End


BI User

Easily Excel 2016 Azure Data


discover, and Catalog
access public
and corporate
data

Create Power Pivot Power BI


powerful data Desktop
models

Perform self- Data Mining


service Add-ins for
predictive Excel
analytics

Visualize and Power View Power BI


explore data Desktop
3D Maps

Ask questions Q&A


using natural
language
query
SH A REP O IN T
SH A REP O IN T O N L IN E- P O W ER B I- SQ L SERVER-
EXC EL - B A SED - B A SED B A SED B A SED B A SED
W O RK LO A DS USER B I TO O L B I TO O L B I TO O L B I TO O L B I TO O L

Access HTML 5 HTML 5


reports using (supports (supports
mobile viewing <10- viewing <250
devices MB files) MB)

Power BI
mobile app
on iOS
devices

Power BI
mobile app
on Android
devices

Power BI
mobile app
for Windows
10

Collaborate SharePoint SharePoint Power BI Sites


and share Sites Team Sites

Corporate IT Pro
BI

Create multi- Analysis


dimensional/t Services
abular
corporate
models

Create ad- Power View


hoc data for SharePoint
visualizations

Create SharePoint Dashboards


dashboards Dashboards in Power BI

PerformanceP
oint Services

Create *Reporting
operational Services
reports

Create Power BI
custom and Embedded
embedded
reports

Advanced Data Scientist


Analytics
SH A REP O IN T
SH A REP O IN T O N L IN E- P O W ER B I- SQ L SERVER-
EXC EL - B A SED - B A SED B A SED B A SED B A SED
W O RK LO A DS USER B I TO O L B I TO O L B I TO O L B I TO O L B I TO O L

Perform self- Data Mining


service Add-ins for
predictive Excel
analytics

Use data Data Mining


mining in Analysis
algorithms Services

SQL Server R
Services
Browser Support for Reporting Services and Power
View
8/30/2021 • 3 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server 2016 Reporting Services and later ✔
️ Power BI Report Server
Learn about what browser versions are supported for managing and viewing SQL Server Reporting Services,
the ReportViewer Controls and Power View.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

NOTE
Support for the Microsoft Edge Legacy browser stopped beginning March 9, 2021, and support for Microsoft Internet
Explorer 11 stopped beginning August 17, 2021.

Browser requirements for the web portal


The following is the current list of browsers supported for the web portal.
Microsoft Windows
Windows 7, 8.1, 10; Windows Server 2008 R2, 2012, 2012 R2
Microsoft Edge (+)
Microsoft Internet Explorer 10 or 11
Google Chrome (+)
Mozilla Firefox (+)
Apple OS X
OS X 10.9-10.11
Apple Safari (+)
Google Chrome (+)
Mozilla Firefox (+)
Apple iOS
iPhone and iPad with iOS 9
Apple Safari (+)
Google Android
Phones and tablets with Android 4.4 (KitKat) or later
Google Chrome (+)
(+) Latest publicly released version

Browser requirements for the ReportViewer web control (2015)


The following is the current list of browsers supported with the ReportViewer web control (2015). The report
viewer supports viewing reports from Reporting Services web portal and SharePoint libraries.
Microsoft Windows
Windows 7, 8.1, 10; Windows Server 2008 R2, 2012, 2012 R2
Microsoft Edge (+)
Microsoft Internet Explorer 10 or 11
Google Chrome (+)
Mozilla Firefox (+)
Apple OS X
OS X 10.9-10.11
Apple Safari (+)
(+) Latest publicly released version
If you are using a SharePoint product that is integrated with Reporting Services, see Plan browser support in
SharePoint 2016.
Authentication requirements
Browsers support specific authentication schemes that must be handled by the report server in order for the
client request to succeed. The following table identifies the default authentication types supported by each
browser running on a Windows operating system.

B RO W SER T Y P E SUP P O RT S B RO W SER DEFA ULT SERVER DEFA ULT

Microsoft Edge (+) Negotiate, NTLM, Basic Negotiate Yes. The default
authentication settings
work with Edge.

Microsoft Internet Negotiate, NTLM, Basic Negotiate Yes. The default


Explorer authentication settings
work with Internet Explorer.

Google Chrome (+) Negotiate, NTLM, Basic Negotiate Yes. The default
authentication settings
work with Chrome.

Mozilla Firefox(+) NTLM, Basic NTLM Yes. The default


authentication settings
work with Firefox.

Apple Safari(+) NTLM, Basic Basic Yes. The default


authentication settings
work with Safari.

(+) Latest publicly released version


Script requirements for viewing reports
To use the report viewer, configure your browser to run scripts.
If scripting is not enabled, you will see an error message similar to the following when you open a report:
Your browser does not suppor t scripts or has been configured to not allow scripts to run. Click
here to view this repor t without scripts .
If you choose to view the report without script support, the report is rendered in HTML without report viewer
capabilities such as the report toolbar and the document map.

NOTE
The report toolbar is part of the HTML Viewer component. By default the toolbar appears at the top of every report that
is rendered in a browser window. The report viewer provides features include the ability to search the report for
information, scroll to a specific page, and adjust the page size for viewing purposes. For more information about the
report toolbar or HTML Viewer, see HTML Viewer and the Report Toolbar.

Browser support for ReportViewer web server controls in Visual


Studio
The ReportViewer Web server control is used to embed report functionality in an ASP.NET web application. The
controls are included with Visual Studio and support different browsers and browser versions than the other
components described in this topic. The type of browser used to view the application determines the kind of
ReportViewer functionality that you can provide in your application. Use the table provided in this topic to
determine which of the supported browsers are subject to report functionality restrictions and the supported
platforms.
Use a browser that has script support enabled. If the browser cannot run scripts, you cannot view the report.
Microsoft Windows
Windows 7, 8.1, 10; Windows Server 2008 R2, 2012, 2012 R2
Microsoft Edge (+)
Microsoft Internet Explorer 10 or 11
Google Chrome (+)
Mozilla Firefox (+)
(+) Latest publicly released version

Power View browser support


Microsoft Windows
Windows 7, 8.1, 10; Windows Server 2008 R2, 2012, 2012 R2
Microsoft Internet Explorer 10 or 11
Mozilla Firefox (+)
Apple OS X
OS X 10.9-10.11
Apple Safari (+)
(+) Latest publicly released version
For more information on the SharePoint 2016 browser support, see Plan browser support in SharePoint 2013.

Next steps
Finding and Viewing Reports in the web portal
Reporting Services Tools
Web portal (SSRS Native Mode)
HTML Viewer and the Report Toolbar
URL Access Parameter Reference
More questions? Try asking the Reporting Services forum
Plan for report design and report deployment |
Reporting Services
3/5/2021 • 4 minutes to read • Edit Online

SQL Server Reporting Services provides several approaches for authoring and deploying paginated reports.
Learn how to plan a report authoring and report server environment that work together.
This topic is an overview of report definition support by Reporting Services components. A report definition is
an XML file that is written in the Report Definition Language (RDL) or the Report Definition Language for Clients
(RDLC). Each report definition conforms to a specific schema version that is listed at the beginning of the file.
RDL files are authored in Report Designer in SQL Server Data Tools - Business Intelligence projects, and in
Report Builder. RDLC files are authored by using the ReportViewer controls that are included in Visual Studio.

RDL Schema Versions


The following table lists each available schema version and the abbreviation that is used throughout the rest of
this topic:

A B B REVIAT IO N SC H EM A VERSIO N

2016 RDL https://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition

2010 RDL https://schemas.microsoft.com/sqlserver/reporting/2010/01/reportdefinition

2008 RDL https://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition

2005 RDL https://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition

2005 RDLC

2000 RDL https://schemas.microsoft.com/sqlserver/reporting/2003/10/reportdefinition

For more information on RDL and RDL schemas, see the following:
Microsoft SQL Server XML Schemas
Report Definition Language Specifications
Report Definition Language (SSRS)
For more information about ReportViewer controls, see ReportViewer Controls (Visual Studio).

Report Server and RDL Schema Support


A report definition file can be deployed to a SQL Server 2016 Reporting Services or later (SSRS) report server
in the following ways:
Repor t Designer : Deploy a report from Report Designer in SQL Server Data Tools - Business
Intelligence.
Repor t Builder : Save a report to the report server from Report Builder.
Web Por tal: Upload a report to a native mode report server from the web portal.
SharePoint: Upload a report to a SharePoint site that is configured with a SharePoint mode report server.
Programmatically: Programmatically publish a report by using the SOAP API interfaces to a report server.
For more information, see Report Server Web Service.
The following table lists the supported rdl schema version by version of the report server.

REP O RT SERVER VERSIO N RDL SC H EM A VERSIO N

SQL Server 2016 2016 RDL

2010 RDL

2008 RDL

2005 RDL

2000 RDL

SQL Server 2014 (12.x) 2010 RDL

Or 2008 RDL

SQL Server 2012 (11.x) 2005 RDL

Or 2000 RDL

SQL Server 2008 R2

SQL Server 2008 2008 RDL

2005 RDL

2000 RDL

When you upload a report definition to the report server or upgrade a report server that contains existing
reports, the report server preserves the report definition in the original format. On first use , the report server
upgrades the report in the report server database to a binary format that is preserved for subsequent views.
The report definition (.rdl) itself is not upgraded.
You can extract from the report server a read-only copy of the report definition file (.rdl). On a native mode
report server, browse to the web portal, select the report and click Download .
In a SharePoint mode deployment, browse to the document library, select the report and click Download a
Copy .
To upgrade the report definition, you must open the report in a report authoring environment, such as SQL
Server Data Tools or Report Builder, and then save it.
For more information about report upgrades and the schema versions that are supported, see Upgrade Reports.

Report Authoring and Deployment Support


Report authoring environments are Report Designer in SQL Server Data Tools - Business Intelligence projects,
and Report Builder. Report authoring environments provide a variety of support for report upgrade, report
design, report preview in local mode, report preview on the report server, and report deployment.
The following table summarizes support for authoring and deploying report definitions for different schema
versions:

A UT H O RIN G DEP LO Y TO REP O RT SERVER


EN VIRO N M EN T RDL VERSIO N A UT H O RED DEP LO Y RDL VERSIO N VERSIO N S

SQL Server 2016 Report Authors 2016 RDL 2016 RDL SQL Server 2016
Builder
Will upgrade older RDL
versions to 2016 RDL
A UT H O RIN G DEP LO Y TO REP O RT SERVER
EN VIRO N M EN T RDL VERSIO N A UT H O RED DEP LO Y RDL VERSIO N VERSIO N S

Report Designer in SQL Authors 2016 RDL 2016 RDL SQL Server 2016
Server 2016 Data Tools -
Business Intelligence for Will upgrade older RDL
Microsoft Visual Studio versions to 2016 RDL
2015

Report Designer in SQL Authors 2010 RDL 2010 RDL SQL Server 2014 (12.x)
Server 2014 Data Tools -
Business Intelligence for Will upgrade older RDL SQL Server 2012 (11.x)
Microsoft Visual Studio versions to 2010 RDL
2012 SQL Server 2008 R2

Or

Report Designer in SQL


Server 2012 Data Tools -
Business Intelligence for
Microsoft Visual Studio
2012

Or

Report Designer in SQL


Server 2012 (11.x) Data
Tools, included in SQL
Server 2012 (11.x).

Report Designer in SQL Authors 2010 RDL 2010 RDL SQL Server 2008 R2
Server 2008 R2 Business
Intelligence Development Will upgrade older RDL
Studio versions to 2010 RDL

Report Designer in SQL Authors 2008 RDL 2008 RDL SQL Server 2008
Server 2008 Business
Intelligence Development Will upgrade older RDL
Studio versions to 2008 RDL

For more information on SQL Server Data Tools (SSDT), see the following:
Deployment and Version Support in SQL Server Data Tools (SSRS)
SQL Server Data Tools for Visual Studio 2015.

ReportViewer Controls
A Visual Studio ReportViewer control can display an .rdlc report in local preview mode or in remote mode, the
control can display an .rdl file hosted on a Reporting Services report server. The following table provides the list
of RDL versions supported by the ReportViewer controls for local processing (.rdlc). Server side RDL support is
summarized in the section Report Server and RDL Schema Support.
REP O RT VIEW ER C O N T RO L IN P RO DUC T VERSIO N O F RDL F O R LO C A L P REVIEW

Visual Studio 2015 2008 RDL

Or

Visual Studio 2013

Or

Visual Studio 2012

Or

Visual Studio 2010

Visual Studio 2005 2005 RDL

Or

Visual Studio 2008

For more information, see the following:


Converting RDLC Files to RDL Files
ReportViewer Controls (Visual Studio)
Adding and Configuring the ReportViewer Controls

See Also
Reports, Report Parts, and Report Definitions (Report Builder and SSRS)
Reporting Services Tools
Report Definition Language (SSRS)
Planning a Report (Report Builder)
11/2/2020 • 3 minutes to read • Edit Online

Report Builder lets you create many kinds of paginated reports. For example, you can create reports that show
summary or detailed sales data, marketing and sales trends, operational reports, or dashboards. You can also
create reports that take advantage of richly formatted text, such as for sales orders, product catalogs, or form
letters. All these reports are created by using different combinations of the same basic building blocks in Report
Builder. To create a useful, easily understood report, it helps to plan first. Here are some things you might want
to consider before you get started:
What format do you want the repor t to appear in?
You can render reports online in a browser such as the Reporting Services web portal or export them to
other formats such as Excel, Word, or PDF. The final form your report takes is an important consideration
because not all features are available in all export formats. For more information, see Export Reports
(Report Builder and SSRS).
What structure do you want to use to present the data in the repor t?
You have a choice among tabular, matrix (similar to a cross-tab or PivotTable report), chart, free-form
structures, or any combination of these to present data. For more information, see Tables, Matrices, and
Lists (Report Builder and SSRS) and Charts (Report Builder and SSRS).
What do you want your repor t to look like?
Report Builder provides a lot of report items that you can add to your report to make it easier to read,
highlight key information, help your audience navigate the report, and so on. Knowing how you want the
report to appear can determine whether you need report items such as text boxes, rectangles, images,
and lines. You might also want to show or hide items, add a document map, include drillthrough reports
or subreports, or link to other reports. For more information, see Images, Text Boxes, Rectangles, and
Lines (Report Builder and SSRS) and Interactive Sort, Document Maps, and Links (Report Builder and
SSRS).
What data do you want your readers to see? Should the data or format be filtered for
different audiences?
You might want to narrow the scope of the report to specific users or locations, or to a particular time
period. To filter the report data, use parameters to retrieve and display only the data you want. For more
information, see Report Parameters (Report Builder and Report Designer).
Do you need to create your own calculations?
Sometimes, your data source and datasets do not contain the exact fields that you need for your report.
In that situation, you might have to create your own calculated fields. For example, you might want to
multiply the price per unit times the quantity to get a line item sales amount. Expressions are also used to
provide conditional formatting and other advanced features. For more information, see Expressions
(Report Builder and SSRS).
Do you want to hide repor t items initially?
Consider whether you want to hide report items, including data regions, groups and columns, when the
report is first run. For example, you can initially present a summary table, and then drill down into the
detailed data. For more information, see Drilldown Action (Report Builder and SSRS).
How are you going to deliver your repor t?
You can save your report to your local computer and continue to work on it, or run it locally for your own
information. However, to share your report with others, you need to save the report to a report server
that is configured in native mode or a report server in SharePoint integrated mode. Saving it to a server
lets others run it whenever they want to. Alternatively, the report server administrator can set up a
subscription to the report or set up e-mail delivery of the report to other individuals. You can have the
report delivered in a specific export format if you prefer. For more information, see Finding, Viewing, and
Managing Reports (Report Builder and SSRS ).

See Also
Report Builder in SQL Server
Reporting Services Concepts (SSRS) Report Builder Tutorials
Report Design Tips (Report Builder and SSRS)
11/2/2020 • 11 minutes to read • Edit Online

Use the following tips to help design your Reporting Services paginated reports.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Designing Reports
A well-designed report conveys information that leads to action. Identify the questions that the report
helps to answer. Keep those questions in mind as you design the report.
To design effective data visualizations, think about how to display information that is easy for the report
user to understand. Choose a data region that is a good match for the data that you want to visualize. For
example, a chart effectively conveys summary and aggregated information better than a table that spans
many pages of detailed information. You can visualize data from a dataset in any data region, which
includes charts, maps, indicators, sparklines, databars, and tabular data in various grid layouts based on a
tablix.
If you plan to deliver the report in a specific export format, test the export format early in your design.
Feature support varies based on the renderer that you choose.
If you plan to deliver the report as a subscription, test the subscription early in your design. Parameter
support varies based on the subscription that you create.
When you build complex layouts, build the layout in stages. You can use rectangles as containers to
organize report items. You can build data regions directly on the design surface to maximize your
working area, and then, as you complete each one, drag it to the rectangle container. By using rectangles
as containers, you can position all its contents in one step. Rectangles also help control the way report
items render on each page.
To reduce clutter in a report, consider using conditional visibility for specific report items and let the user
choose whether to show the items. You can set visibility based on a parameter or a text box toggle. You
can add conditionally hidden text boxes to show interim expression results. When a report displays
unexpected data, you can show these interim results to help debug expressions.
When you work with nested items in tablix cells or rectangles, you can set different background colors for
the container and contained items. By default, the background color is No color . Items with a specific
background color show through items with a background color set to No color . This technique can help
you select the right item to set display properties, such as border visibility on tablix cells.
For more information about things to consider as you design your report, see Planning a Report (Report
Builder).

Naming Conventions for Reports, Data Sources, and Datasets


Use naming conventions for data sources and datasets that document the source of data.
1. Data sources. If you do not want to use an actual server or database due to security reasons, use
an alias that indicates to the user what the source of data is.
2. Datasets. Use a name that indicates which data source it is based on.
3. Data regions. Indicate the type of data region and what data it displays. Data region names are
useful in the following scenarios:
a. Data region as a repor t par t. When report authors browse the Report Part Gallery, a
descriptive name helps them find the report parts they are looking for.
b. Data region as a data feed. With appropriate permissions, a report reader can create an
ATOM data feed from a data region.
Use underscores instead of spaces in report names. If you download a report from a Reporting Services
web portal, spaces are replaced by underscores. If you use the download feature to save reports locally,
and then include them in SQL Server Data Tools (SSDT), using underscores helps to keep report
dependencies for subreports and drillthrough links accurate.

Working with Data


As a first step, get all the data that you want to work with to appear in the Report Data pane. As you refine
the questions that the report is designed to answer, think about how to limit the data in the report
datasets to just what is needed.
In general, only include the data that you will display in a report. Use query variables in your dataset
queries to enable the user to choose which data they want to see in the report. If you are creating shared
datasets, provide filters based on report parameters to provide the same functionality.
If you are an experienced query writer, understand that for intermediate amounts of data, you might want
to group data in the report, and not in the query. If you do all your grouping in the query, then the report
tends to be a presentation of the query result set. On the other hand, to display aggregated values for
large amounts of data on a chart or matrix, there is no need to include detail data.
Depending on your requirements, you can display names and locations of report data sources, dataset
query command text, and parameter values in the report. The first question many new users have is
about where the data comes from. To reduce clutter in the report, you can conditionally hide text boxes
with this type of information and let users choose whether to see it. Try adding this information on the
last page of report. Set the text box visibility based on a parameter that the user can change.

Interacting with the Report Design Surface


The report design surface is not WYSIWIG. When you place report items on the design surface, their relative
location affects the way that the items appear on the rendered report page. White space is preserved.
Use snaplines and layout buttons to align and arrange items on the report design surface. For example,
you can align the tops or edges of selected items, expand an item to match the size of another item, or
adjust the spacing between items.
Use arrow keys to adjust the position and size of selected items on the design surface. For example, the
following key combinations are very useful:
Arrow keys Move the selected report item.
CTRL+Arrow keys Nudge the selected report item.
CTRL+SHIFT+Arrow keys Increase or decrease the size of the selected report item.
To add an item to a rectangle, use the upper left tip of the mouse to point to the initial location of the item
in the rectangle container. Use keyboard shortcuts to help position selected objects. The rectangle
automatically expands to accommodate the size of the contained items.
To add multiple items to a tablix cell, first add a rectangle, and then add the items.
By default, each tablix cell contains a text box. When you add a rectangle to a cell, the rectangle replaces
the text box. For example, place nested indicators in a rectangle in a tablix cell to help control how the size
of a chart or indicator expands as you change the height of the row that the cell is in.
Use the Zoom control to adjust your view of the design surface. You can work with the whole page or
smaller sections of the page.
To drag fields from the Report Data pane to the Grouping pane, avoid dragging the field across other
report items on the design surface because this selects the other items and unselects the tablix data
region. Drag the field down the Report Data pane and then across to the Grouping pane.
Selecting Items
To help select the object that you want on the report design surface, use the ESC key, the right-click context
menu, the Properties pane, and the Grouping pane.
Press ESC to cycle through the stack of report items that occupy the same space on the design
surface.
On some report items, try using the right-click context menu to select the report item or the part
of the report item that you want.
The Properties pane displays properties for the current selection.
To work with row groups and column groups in a tablix data region, select the group from the
Grouping pane.
In Report Designer in SQL Server Data Tools, you can select from the drop-down list of objects in the Properties
pane toolbar or from the hierarchical view of report items in the Document Outline window. You can select
items in this pane and see which item is selected on the design surface. To open the Document Outline window,
from the View menu, point to Other Windows , and then click Document Outline .

Working with Specific Types of Report Items


Working with Parameters
The primary purpose of report parameters is to filter data at the data source, and retrieve just what is
needed for the purpose of the report.
For report parameters, find a balance between enabling interactivity and helping a user get the results
they want. For example, you can set default values for a parameter to values that you know are popular.
Working with Text
When you paste multiline into a text box, the text is added as one text run. Each text run can only be
formatted as a unit. To format each line independently, insert a new line by pressing RETURN in the text
run as needed. You can then apply formatting and styles to each independent line of text in the text box.
You can set format properties and actions on a text box or on placeholder text in the text box. If there is
only one line of text, it is more efficient to set properties on the text box than on the text.
Working with Expressions
Understand simple and complex expression formats. You can type simple expression format directly into
text boxes, properties in the Property pane, or in locations in dialog boxes that accept an expression. For
more information, see Expressions (Report Builder and SSRS).
When you create an expression, it helps to create each part independently and verify its value. You can
then combine all the parts into a final expression. A useful technique is to add a text box in a matrix cell,
display each part of the expression, and set conditional visibility on the text box. To control the border
style and color when the text box is hidden, first place the text box in a rectangle, and then set the border
style and color of the rectangle to match the matrix.
Working with Indicators
By default, an indicator shows at least three states. After you add an indicator to a report, you can configure it
by adding or removing states. For easier viewing by your users, choose an indicator that varies by both color
and shape.

Controlling the Rendering of Report Items on the Report Page


On the report design surface, report items grow to accommodate the contents from the associated
dataset, expression, subreport, or text.
When you position an item on the report page, the distance between the item and all items that
begin to the right of it becomes the minimum distance that must be maintained as a report item
grows horizontally. Similarly, the distance between an item and the item above it becomes a
minimum distance that must be maintained as the top item grows vertically.
An item in a report grows to accommodate its data and pushes peer items (items within the same
parent container) out of the way using the following rules:
Each item moves down to maintain the minimum space between itself and the items that end
above it.
Each item moves right to maintain the minimum space between itself and the items that end to the
left of it. For systems that right-to-left layouts, each item moves left to maintain the minimum
space between itself and the items that end to the right of it.
Containers expand to accommodate the growth of child items. For a selected item, in the
Properties pane, the Parent property identifies the container for the item. You can also use the
Document Outline pane to see the containment hierarchy of report items.
The Layout toolbar provides multiple buttons to help align edges, centers, and spacing for report
items. To enable the Layout toolbar, from the View menu, point to Toolbars , and then click
Layout .
If you plan to save the report as a .pdf file, the report width must be explicitly set to a value that gives you
the results that you want in the export file format. For example, set the report page width to exactly
7.9375 inches and the left and right margins to .5 inches.
Use Print Layout and Page Setup on the report viewer toolbar to render a report in a print-compatible
view. To help remove unwanted horizontal pages, do the following:
1. Remove all extra white space between data regions and on the edges of the report.
2. Reduce page margins in the Repor t Proper ties dialog box.
3. Use Rectangles as containers to help control the way report items render.
4. In column headers, change the text box property WritingMode to use vertical text.
The combination of this behavior, the width and height properties of report items, the size of the report body,
the page height and page width definition, the margin settings of the parent report, and the renderer-specific
support for paging all combine to determine what report items fit together on a rendered page. For more
information, see Pagination in Reporting Services (Report Builder and SSRS).
See Also
Report Builder in SQL Server
Reporting Services Tutorials (SSRS)
Report Builder Tutorials
SQL Server Reporting Services features supported
by editions
4/7/2021 • 4 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server 2016 Reporting Services and later ✔
️ Power BI Report Server
This topic explains the SQL Server Reporting Services (SSRS) features supported by the different editions of
SQL Server. SQL Server Evaluation edition is available for a 180-day trial period.

Related links
Release notes for SQL Server Reporting Services (SSRS).
What's new in SQL Server Reporting Services (SSRS).
Features supported by the editions of SQL Server

SQL Server Reporting Services


For features supported by the Evaluation and Developer editions, see the SQL Server Enterprise edition column
in the following table.

EXP RESS W IT H
A DVA N C ED
F EAT URE N A M E EN T ERP RISE STA N DA RD W EB SERVIC ES DEVELO P ER

Power BI reports Yes, with Yes


and Excel Software
workbooks Assurance

Mobile reports Yes Yes


and analytics

Supported Standard or Standard or Web Express Standard or


catalog database higher higher higher
SQL Server
edition

Supported data All SQL Server All SQL Server Web Express All SQL Server
source SQL editions editions editions
Server edition

Report server Yes Yes Yes Yes Yes

Report designer Yes Yes Yes Yes Yes

Report designer Yes Yes Yes Yes Yes


web portal

Role-based Yes Yes Yes Yes Yes


security
EXP RESS W IT H
A DVA N C ED
F EAT URE N A M E EN T ERP RISE STA N DA RD W EB SERVIC ES DEVELO P ER

Export to Excel, Yes Yes Yes Yes Yes


PowerPoint,
Word, PDF, and
images

Enhanced Yes Yes Yes Yes Yes


gauges and
charting

Pin report items Yes Yes Yes Yes Yes


to Power BI
dashboards

Custom Yes Yes Yes Yes


authentication

Report as data Yes Yes Yes Yes Yes


feeds

Model support Yes Yes Yes Yes

Create custom Yes Yes Yes


roles for role-
based security

Model item Yes Yes Yes


security

Infinite click Yes Yes Yes


through

Shared- Yes Yes Yes


component
library

Email and file Yes Yes Yes


share
subscriptions
and scheduling

Report history, Yes Yes Yes


execution
snapshots, and
caching

SharePoint Yes Yes Yes


integration2

Remote and Yes Yes Yes


non-SQL data
source support1
EXP RESS W IT H
A DVA N C ED
F EAT URE N A M E EN T ERP RISE STA N DA RD W EB SERVIC ES DEVELO P ER

Data source, Yes Yes Yes


delivery, and
rendering and
RDCE
extensibility

Custom Yes Yes


branding

Data-driven Yes Yes


report
subscription

Scale-out Yes Yes


deployment
(web farms)

Alerting2 (SSRS Yes Yes


2016)

Power view2 Yes Yes


(SSRS 2016)

Comments3 Yes Yes Yes Yes Yes

1 For
more information on supported data sources in SQL Server Reporting Services (SSRS), see Data sources
supported by Reporting Services (SSRS).
2 Requires SQL Server 2016 Reporting Services in SharePoint mode. For more information, see Install SQL
Server Reporting Services in SharePoint mode. Starting in SQL Server 2017 Reporting Services, integration with
SharePoint is no longer available.
3 Only in Power BI Report Server and SQL Server 2017 Reporting Services and later.

NOTE
SQL Server Express with Tools and SQL Server Express don't support SQL Server Reporting Services.

Edition requirements for the report server database


When you create a report server database, not all editions of SQL Server can be used to host the database. The
following table shows you which editions of the Database Engine you can use for specific editions of SQL Server
Reporting Services.

USE T H IS EDIT IO N O F T H E DATA B A SE EN GIN E IN STA N C E TO


F O R T H IS EDIT IO N O F SQ L SERVER REP O RT IN G SERVIC ES, H O ST T H E DATA B A SE.

Enterprise Enterprise or Standard editions (local or remote)

Standard Enterprise or Standard editions (local or remote)

Web Web edition (local only)


USE T H IS EDIT IO N O F T H E DATA B A SE EN GIN E IN STA N C E TO
F O R T H IS EDIT IO N O F SQ L SERVER REP O RT IN G SERVIC ES, H O ST T H E DATA B A SE.

Express with Advanced Services Express with Advanced Services (local only)

Evaluation Evaluation

Business intelligence clients


The following software client applications are available on the Microsoft Download Center. They help you create
business intelligence documents that run on a SQL Server instance. When you host these documents in a server
environment, use an edition of SQL Server that supports that document type. The following table identifies
which SQL Server edition contains the server features required to host the documents created in these client
applications.

EXP RESS W IT H
A DVA N C ED
TO O L N A M E EN T ERP RISE STA N DA RD W EB SERVIC ES DEVELO P ER

Power BI Yes, with Yes


Desktop Software
optimized for Assurance
Power BI Report
Server, .pbix

Report Builder, Yes Yes Yes Yes Yes


.rdl and .rds

SQL Server Yes Yes


Mobile Report
Publisher,
.rsmobile

Power BI apps Yes Yes


for mobile
devices (iOS,
Windows 10,
and Android),
.rsmobile

NOTE
The preceding table identifies the SQL Server editions that are required to enable these client tools. However, these
tools can access data hosted on any edition of SQL Server.
SQL Server Mobile Report Publisher is the single point for creation of mobile reports. Connect to an SSRS server to
access data sources and create reports. Then publish them to the SSRS server for others in the organization to access,
either on the server or on mobile devices. You can also use SQL Server Mobile Report Publisher stand alone with local
data sources.
Whether you use SQL Server 2016 Reporting Services or later (SSRS) on-premises, Power BI in the cloud, or both as
your report delivery solution, you only need one mobile app to access dashboards and mobile reports on mobile
devices. The Power BI apps are available for download from the Windows, iOS, or Android app stores.

Next steps
Read about Features supported by the editions of SQL Server 2017.
Plan a SQL Server installation.
More questions? Ask the SQL Server Reporting Services forum.
Install SQL Server Reporting Services
3/5/2021 • 4 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services (2017 and later) ❌ Power BI Report Server
SQL Server Reporting Services installation involves server components for storing report items, rendering
reports, and processing of subscription and other report services.
Download SQL Server 2019 Reporting Services from the Microsoft Download Center.
Download SQL Server 2017 Reporting Services from the Microsoft Download Center.

NOTE
Looking for Power BI Report Server? See Install Power BI Report Server.
Upgrading or migrating from a SQL Server 2016 or earlier version of Reporting Services? See Upgrade and Migrate
Reporting Services.

Before you begin


Before you install Reporting Services, review the Hardware and software requirements for installing SQL Server.

Install your report server


Installing a report server is straightforward. There are only a few steps to install the files.

NOTE
You do not need a SQL Server Database Engine server available at the time of install. You will need one to configure
Reporting Services after install.

1. Find the location of SQLServerReportingServices.exe and launch the installer.


2. Select Install Repor ting Ser vices .
3. Choose an edition to install and then select Next .
For a free edition, choose either Evaluation or Developer from the drop down.

Otherwise, enter a product key. Find the product key for SQL Server Reporting Services.
4. Read and agree to the license terms and conditions and then select Next .
5. You need to have a Database Engine available to store the report server database. Select Next to install
the report server only.
6. Specify the install location for the report server. Select Install to continue.

NOTE
The default path is C:\Program Files\Microsoft SQL Server Reporting Services.

7. After a successful setup, select Configure Repor t Ser ver to launch the Report Server Configuration
Manager.

Configure your report server


After you select Configure Repor t Ser ver in the setup, you will be presented with Repor t Ser ver
Configuration Manager . For more information, see Report Server Configuration Manager.
You need to create a report server database to complete the initial configuration of Reporting Services. A SQL
Server Database server is required to complete this step.
Creating a database on a different server
If you are creating the report server database on a database server on a different machine, you need to change
the service account for the report server to a credential that is recognized on the database server.
By default, the report server uses the virtual service account. If you try to create a database on a different server,
you may receive the following error on the Applying connection rights step.
System.Data.SqlClient.SqlException (0x80131904): Windows NT user or group '(null)' not found. Check the name
again.

To work around the error, you can change the service account to either Network Service or a domain account.
Changing the service account to Network Service applies rights in the context of the machine account for the
report server.
For more information, see Configure the report server service account.

Windows Service
A windows service is created as part of the installation. It is displayed as SQL Ser ver Repor ting Ser vices . The
service name is SQLSer verRepor tingSer vices .

Default URL reservations


URL reservations are composed of a prefix, host name, port, and virtual directory:

PA RT DESC RIP T IO N

Prefix The default prefix is HTTP. If you previously installed a


Transport Layer Security (TLS), previously known as Secure
Sockets Layer (SSL), certificate, Setup tries to create URL
reservations that use the HTTPS prefix.
PA RT DESC RIP T IO N

Host name The default host name is a strong wildcard (+). It specifies
that the report server accepts any HTTP request on the
designated port for any host name that resolves to the
computer, including
https://<computername>/reportserver ,
https://localhost/reportserver , or
https://<IPAddress>/reportserver.

Port The default port is 80. If you use any port other than port
80, you have to explicitly add it to the URL when you open
web portal in a browser window.

Virtual directory By default, virtual directories are created in the format of


ReportServer for the Report Server Web service and Reports
for the web portal. For the Report Server Web service, the
default virtual directory is repor tser ver . For the web
portal, the default virtual directory is repor ts .

An example of the complete URL string might be as follows:


https://+:80/reportserver , provides access to the report server.
https://+:80/reports , provides access to the web portal.

Firewall
If you are accessing the report server from a remote machine, you want to make sure you have configured any
firewall rules if there is a firewall present.
You need to open up the TCP port that you have configured for your Web Service URL and Web Portal URL. By
default, these are configured on TCP port 80.

Additional configuration
To configure integration with the Power BI service so you can pin report items to a Power BI dashboard,
see Integrate with the Power BI service.
To configure email for subscriptions processing, see E-Mail settings and E-Mail delivery in a report server.
To configure the web portal so you can access it on a remote computer to view and manage reports, see
Configure a firewall for report server access and Configure a report server for remote administration.

Related information
For information on how to install SQL Server Reporting Services native mode, see Install Reporting Services
native mode report server.
For information on how to install SQL Server 2016 Reporting Services (and earlier) in SharePoint integration
mode, see Install the first Report Server in SharePoint mode.

Next steps
With your report server installed, begin to create reports and deploy those to your report server. For
information on how to start with Report Builder, see Install Report Builder.
To create reports using SQL Server Data Tools, download SQL Server Data Tools.
More questions? Try asking the Reporting Services forum
Find the product key for SQL Server Reporting
Services
3/5/2021 • 2 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services (2017 and later) ❌ Power BI Report Server
Learn how to find the product key for SQL Server Reporting Services (SSRS) 2017 and 2019 so you can install
your server in a production environment.
To find your product key, you start by downloading and running setup for SQL Server.
1. Download SQL Server.
2. Run SQL Server setup and copy the pre-populated key:

3. Download Reporting Services, run setup, and paste the key:

You should only have to do this step the first time you install Reporting Services. Servicing updates shouldn't
require you to enter the key.

Next steps
Install SQL Server Reporting Services
More questions? Try asking the Reporting Services forum
Install Reporting Services 2016 native mode report
server
11/2/2020 • 7 minutes to read • Edit Online

APPLIES TO: ✔ ️ SQL Server Reporting Services (2016) ❌ SQL Server Reporting Services (2017) ❌ Power BI
Report Server
Learn how to install Reporting Services in native mode. This will provide access to a web portal where you can
manage reports and other items.

NOTE
Looking for Power BI Report Server? See Install Power BI Report Server.

A Reporting Services native mode report server is the default Reporting Services server mode and can be
installed from the SQL Server installation wizard or from the command line. In the setup wizard, you can select
to either install files and configure the server with default settings or to only install the files. This topic reviews
the Default configuration for native mode where Setup both installs and configures a report server instance.
After Setup is finished, the report server is running and ready to use for basic report viewing and report
management.
Additional features such as Power BI integration and e-mail delivery with subscription processing require
additional configuration.

What is the default configuration?


Setup installs the following Reporting Services features when you select the default configuration for native
mode option:
Report Server service (which includes the Report Server Web service, background processing
application, and the web portal for viewing and managing reports as well as permissions.
The Reporting Services Configuration Manager
The Reporting Services command line utilities rsconfig.exe, rskeymgmt.exe and rs.exe.
SQL Server Management Studio and SQL Server Data Tools (SSDT) are now separate downloads.
Setup configures the following for a native mode report server installation:
Service account for the Report Server service.
Report Server Web service URL.
The web portal URL.
Report Server database.
Service account access to the report server databases.
Connection information, also known as the data source name (DSN), for the report server databases.
Setup does not configure the unattended execution account, report server e-mail, back up the encryption keys,
or a scale-out deployment. You can use the Reporting Services Configuration Manager to configure these
properties. For more information, see Report Server Configuration Manager (Native Mode).

When to install the default configuration for native mode


A default configuration installs Reporting Services in an operational state so that you can use the report server
immediately after Setup is finished. Specify this mode when you want to save steps by eliminating any required
configuration tasks you would otherwise have to perform in the Reporting Services Configuration tool.
Installing the default configuration does not guarantee that the report server will work after Setup is finished.
The default URLs might not register when the service starts. Always test your installation to verify that the
service starts and runs as expected. See Verify a Reporting Services Installation.

Requirements
The default configuration option uses default values to configure the core settings required to make a report
server operational. It has the following requirements:
Review Hardware and Software Requirements for Installing SQL Server .
Reporting Services and SQL Server Database Engine must be installed together in the same instance. The
Database Engine instance hosts the report server database that Setup creates and configures.
The user account used to run Setup must be a member of the local Administrators group and have
permission to access and create databases on the Database Engine instance that hosts the report server
databases.
Setup must be able to use the default values to reserve the URLs that provide access to the report server
and the web portal. These values are port 80, a strong wildcard, and the virtual directory names in the
format Repor tSer ver_< instance_name > and Repor ts_< instance_name > .
Setup must be able to use the default values to create the report server databases. These values are
Repor tSer ver and Repor tSer verTempDB . If you have existing databases from a previous installation,
Setup will be blocked because it cannot configure the report server in the default configuration for native
mode. You must rename, move, or delete the databases to unblock Setup.
If your computer does not meet all requirements for a default installation, you must install Reporting Services in
files-only mode and then use the Reporting Services Configuration Manager to configure it after Setup is
finished.

IMPORTANT
While Reporting Services can be installed in an environment that has a Read-Only Domain Controller (RODC), Reporting
Services needs access to a Read-Write Domain Controller to function properly. If Reporting Services only has access to a
RODC, you may encounter errors when trying to administer the service.

Default URL reservations


URL reservations are composed of a prefix, host name, port, and virtual directory:

PA RT DESC RIP T IO N

Prefix The default prefix is HTTP. If you previously installed a


Transport Layer Security (TLS), previously known as Secure
Sockets Layer (SSL), certificate, Setup will try to create URL
reservations that use the HTTPS prefix.
PA RT DESC RIP T IO N

Host name The default host name is a strong wildcard (+). It specifies
that the report server will accept any HTTP request on the
designated port for any host name that resolves to the
computer, including
https://<computername>/reportserver ,
https://localhost/reportserver , or
https://<IPAddress>/reportserver .

Port The default port is 80. Note that if you use any port other
than port 80, you will have to explicitly add it to the URL
when you open a Reporting Services Web application in a
browser window.

Virtual directory By default, virtual directories are created in the format of


ReportServer_<instance_name> for the Report Server Web
service and Reports_<instance_name> for the web portal.
For the Report Server Web service, the default virtual
directory is repor tser ver . For the web portal, the default
virtual directory is repor ts .

An example of the complete URL string might be as follows:


https://+:80/reportserver , provides access to the report server.
https://+:80/reports , provides access to the web portal.

Install native mode with the SQL Server installation wizard


The following list describes the Reporting Services specific steps and options you select in the SQL Server
Installation Wizard. The list does not described each page you will see in the installation wizard, only the
Reporting Services related pages that are part of a Native mode installation.
1. Run the SQL Server setup wizard (setup.exe) and step through the following preliminary pages:
Product Key
License Terms
Global Rules
Microsoft Update
Product Updates
Install Setup Files
Install Rules
2. On the Setup Role page, Select SQL Ser ver Feature Installation .
3. On the Feature Selection page, select the following:
(1) Database Engine Ser vices , unless an instance of the database engine is already installed.
(2) Repor ting Ser vices-Native .

4. Review the Feature Rules passed.


5. On the Instance configuration page, remember that if you choose to configure a Named Instance , you
will need to use the instance name in URLS when you browse to Report Manger and the report server
itself. If the instance was name was "THESQLINSTANCE" , the URLS would look like the following:
https://[ServerName]/ReportServer_THESQLINSTANCE

https://[ServerName]/Reports_THESQLINSTANCE

6. Ser ver Configuration : If you plan to use the Reporting Services subscription feature, then on the
Ser ver Configuration page, configure SQL Server Agent Automatic Startup type. The default is
manual.
7. Add SQL Server administrators on the Database Engine Configuration page.
8. On the Repor ting Ser vices Configuration page select Install and Configure .
NOTE
Install and Configure will not be available unless the database feature is also selected to be installed.

9. Feature Configuration Rules: verify the rules passed. The setup wizard automatically advances to the
Ready to install if the rules all pass.
Specific to Reporting Services, the rules verify a report server catalog and temp catalog database do not
already exist.
10. On the ready to install page, note the path to the configuration file as you can refer to it at a later time
for a good summary of the servers initial SQL Server configuration including the components installed,
service accounts and administrators.
11. After the SQL Server installation wizard is complete, verify the default Native mode installation using the
following basic steps.
Open Reporting Services Configuration Manager and confirm you can connect to the report
server.
Open your browser with administrative privileges and connect to the web portal, for example
https://localhost/Reports .

Open your browser with administrative privileges and connect to the Reporting Services report
server page. For example, https://localhost/ReportServer
For more information, see the Native section of the following two topics:
Verify a Reporting Services Installation
Troubleshoot a Reporting Services Installation

Additional configuration
To configure Power BI integration so you can pin report items to a Power BI dashboard, see Power BI
Report Server Integration.
To configure email for subscriptions processing, see E-Mail Settings - Reporting Services Native mode
and E-Mail Delivery in Reporting Services.
To configure the web portal so you can access it on a report computer to view and manage reports, see
Configure a Firewall for Report Server Access and Configure a Report Server for Remote Administration.

See Also
Troubleshoot a Reporting Services Installation
Verify a Reporting Services Installation
Configure the Report Server Service Account
Configure Report Server URLs
Configure a Report Server Database Connection
Files-Only Installation (Reporting Services)
Initialize a Report Server
Configure TLS Connections on a Native Mode Report Server
Configure Windows Service Accounts and Permissions
More questions? Try asking the Reporting Services forum
Files-Only Installation (Reporting Services)
3/5/2021 • 2 minutes to read • Edit Online

Files-only installation refers to a Reporting Services installation where Setup creates the folder structure for
Reporting Services program files, copies the files to disk, registers the Report Server service on the local
computer, configures the service account, grants files permissions to the service account, and registers the
Reporting Services WMI provider.
A files-only installation includes the following Reporting Services features: Report Server service (which hosts
the Report Server Web service and background processing application), Report Builder, the Reporting Services
Configuration tool, and the Reporting Services command line utilities (rsconfig.exe, rskeymgmt.exe and rs.exe). It
does not apply to shared features such as SQL Server Management Studio or SQL Server Data Tools (SSDT),
which must be specified as separate items if you want to install them.
In contrast with other installation modes, a report server that is installed in files-only mode is not operational
when Setup is finished. Additional configuration will be required to bring the report server online by using the
Report Server Configuration Manager (Native Mode).

When to Select Files-Only Installation Mode


A files-only installation must be performed when:
You want to connect the report server to a remote report server database.
You want to install the report server as a named instance.
You have deployment requirements that include using custom settings or functionality, and you want full
control over when and how the server is configured.
Installing a SQL Server failover cluster that includes Reporting Services.

How to Perform a Files-Only Installation


Files-only installation is the default for Reporting Services.
You can specify a files-only installation through the command line or in the Installation wizard. The following
topics provide step-by-step instructions:
Install SQL Server from the Installation Wizard (Setup).
Install SQL Server from the Command Prompt.
Example Command Line Script
For clarity, the example includes /RSINSTALLMODE="FilesOnlyMode". However, because files-only mode is the
default, you can omit this and still get a files-only mode installation.

setup /q /ACTION=install /FEATURES=RS /InstanceName=MSSQLSERVER /RSSVCACCOUNT="NT AUTHORITY\NETWORK SERVICE"


/RSINSTALLMODE="FilesOnlyMode"

Installation Wizard
When you select Reporting Services in the Feature Selection page, Setup provides a Reporting Services
Configuration page that enables you to specify the installation mode. To specify a files-only installation, select
Install but do not configure the repor t ser ver on the Reporting Services Configuration page.
See Also
Verify a Reporting Services Installation
Configure the Report Server Service Account (Report Server Configuration Manager)
Configure Report Server URLs (Report Server Configuration Manager)
Configure a Report Server Database Connection (Report Server Configuration Manager)
Install Reporting Services SharePoint Mode
Install Reporting Services Native Mode Report Server
Reporting Services Tools
Install Reporting and Internet Information Services
Side-by-Side
11/2/2020 • 5 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server 2016 Reporting Services and later ✔
️ Power BI Report Server
For content related to previous versions of SQL Server Reporting Services (SSRS), see SQL Server 2014
Reporting Services.
You can install and run SQL Server Reporting Services (SSRS) and Internet Information Services (IIS) on the
same computer. The version of IIS that you are using determines the interoperability issues you must address.

IIS VERSIO N ISSUES DESC RIP T IO N

8.0, 8.5 Requests intended for one application Under certain conditions, a registered
are accepted by a different application. endpoint that supersedes another URL
endpoint in the URL reservation
HTTP.SYS enforces precedence rules for scheme might receive HTTP requests
URL reservations. Requests that are intended for the other application.
sent to applications that have the
same virtual directory name and that Using unique virtual directory names
jointly monitor port 80 might not for the Report Server Web service and
reach the intended target if the URL the web portal helps you avoid this
reservation is weak relative to the URL conflict.
reservation of another application.
Detailed information about this
scenario is provided in this topic.

Precedence Rules for URL Reservations


Before you can address interoperability issues between IIS and Reporting Services, you must understand URL
reservation precedence rules. Precedence rules can be generalized into the following statement: a URL
reservation that has more explicitly defined values is first in line to receive requests that match the URL.
A URL reservation that specifies a virtual directory is more explicit than one that omits a virtual directory.
A URL reservation that specifies a single address (by way of an IP address, a fully qualified domain name,
a network computer name, or a host name) is more explicit than a wildcard.
A URL reservation that specifies a strong wildcard is more explicit than a weak wildcard.
The following examples show a range of URL reservations, ordered from most explicit to least explicit:

EXA M P L E REQ UEST

https://123.234.345.456:80/reports Receives all requests that are sent to


https://123.234.345.456/reports or
https://\<computername>/reports if a domain name
service can resolve the IP address to that host name.

https://+:80/reports Receives any requests that are sent to any IP address or host
name that is valid for that computer as long as the URL
contains the "reports" virtual directory name.
EXA M P L E REQ UEST

https://123.234.345.456:80 Receives any request that specifies


https://123.234.345.456 or https://\<computername>
if a domain name service can resolve the IP address to that
host name.

https://+:80 Receives requests that are not already received by other


applications, for any application endpoints that are mapped
to All Assigned .

https://*:80 Receives requests that are not already received by other


applications, for application endpoints that are mapped to
All Unassigned .

One indication of a port conflict is that you will see the following error message: 'System.IO.FileLoadException:
The process cannot access the file because it is being used by another process. (Exception from HRESULT:
0x80070020).'

URL Reservations for IIS 8.0, 8.5 with SQL Server Reporting Services
Given the precedence rules outlined in the previous section, you can begin to understand how URL reservations
defined for Reporting Services and IIS promote interoperability. Reporting Services receives requests that
explicitly specify the virtual directory names for its applications; IIS receives all remaining requests, which can
then be directed to applications that run within the IIS process model.

A P P L IC AT IO N URL RESERVAT IO N DESC RIP T IO N REQ UEST REC EIP T

Report Server https://+:80/ReportServer Strong wildcard on port 80, Receives all requests on
with report server virtual port 80 that specify the
directory. report server virtual
directory. The Report Server
Web service receives all
requests to
https://<computername>/r
eportserver.

Web portal https://+:80/Reports Strong wildcard on port 80, Receives all requests on
with Reports virtual port 80 that specify the
directory. reports virtual directory.
The web portal receives all
requests to
https://<computername>/r
eports.

IIS https://*:80/ Weak wildcard on port 80. Receives any remaining


requests on port 80 that
are not received by another
application.

Side-by-Side Deployments of SQL Server Reporting Services on IIS


8.0, 8.5
Interoperability issues between IIS and Reporting Services occur when IIS Web sites have virtual directory
names that are identical to those used by Reporting Services. For example, suppose you have the following
configuration:
A Web site in IIS that is assigned to port 80 and a virtual directory named "Reports".
A report server instance installed in the default configuration, where the URL reservation also specifies
port 80 and the web portal application also uses "Reports" for the virtual directory name.
Given this configuration, a request that is sent to https://<computername>:80/reports will be received by the
web portal. The application that is accessed through the Reports virtual directory in IIS will no longer receive
requests after the report server instance is installed.
If you are running side-by-side deployments of older and newer versions of Reporting Services, you are likely to
encounter the routing problem just described. This is because all versions of Reporting Services use
"ReportServer" and "Reports" as virtual directory names for the report server and the web portal applications,
increasing the likelihood that you will have a "reports" and "reportserver" virtual directories in IIS.
To ensure that all applications receive requests, follow these guidelines:
For Reporting Services installations, use virtual directory names that are not already used by an IIS Web
site on the same port as Reporting Services. If there is a conflict, install Reporting Services in "files-only"
mode (using the Install but do not configure the server option in the Installation Wizard) so that you can
configure the virtual directories after Setup is finished. One indication that your configuration has a
conflict is you will see the error message: System.IO.FileLoadException: The process cannot access the file
because it is being used by another process. (Exception from HRESULT: 0x80070020).
For installations that you configure manually, adopt the default naming conventions in the URLs that
configure. If you install SQL Server 2016 Reporting Services or later (SSRS) as a named instance, include
the instance name when creating a virtual directory.

Next steps
Configure Report Server URLs
Configure a URL
Install Reporting Services Native Mode Report Server
More questions? Try asking the Reporting Services forum
Host a Report Server Database in a SQL Server
Failover Cluster
11/2/2020 • 2 minutes to read • Edit Online

SQL Server provides failover clustering support so that you can use multiple disks for one or more SQL Server
instances. Failover clustering is supported only for the report server database; you cannot run the Report Server
service as part of a failover cluster.
To host a report server database on a SQL Server failover cluster, the cluster must already be installed and
configured. You can then select the failover cluster as the server name when you create the report server
database in the Database Setup page of the Reporting Services Configuration tool.
Although the Report Server service cannot participate in a failover cluster, you can install Reporting Services on
a computer that has a SQL Server failover cluster installed. The report server runs independently of the failover
cluster. If you install a report server on a computer that is part of a SQL Server failover instance, you are not
required to use the failover cluster for the report server database; you can use a different SQL Server instance to
host the database.

See Also
Report Server Database (SSRS Native Mode)
Create a Report Server Database (Report Server Configuration Manager)
Report Server Configuration Manager (Native
Mode)
11/2/2020 • 5 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server 2016 Reporting Services and later ✔
️ Power BI Report Server
For content related to previous versions of SQL Server Reporting Services (SSRS), see SQL Server 2014
Reporting Services.
Use the Reporting Services Configuration Manager to configure a Reporting Services Native Mode installation.
If you installed a report server by using the files-only installation option, you must use the Configuration
Manager to configure the server before you can use it. If you installed a report server by using the default
configuration installation option, you can use the Configuration Manager to verify or modify the settings that
were specified during setup. Reporting Services Configuration Manager can be used to configure a local or
remote report server instance.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016. Starting with the SQL Server
2012 (11.x) release, the Reporting Services Configuration Manager is not designed to manage SharePoint mode report
servers. SharePoint mode is managed and configured by using SharePoint Central Administration and PowerShell scripts.

Scenarios to use Report Server Configuration Manager


You can use the Reporting Services Configuration Manager to perform the following tasks:
Configure the Report Server service account. The account is initially configured during setup, but can be
modified by using the Reporting Services Configuration Manager if you update the password or want to
use a different account.
Create and configure URLs. The report server and the web portal are ASP.NET applications accessed
through URLs. The report server URL provides access to the SOAP endpoints of the report server. The
web portal URL is used to open the web portal You can configure a single URL or multiple URLs for each
application.
Create and configure the report server database. The report server is a stateless server that requires a
SQL Server database for internal storage. You can use the Reporting Services Configuration Manager to
create and configure a connection to the report server database. You can also select an existing report
server database that already contains the content you want to use.
Configure a Native mode scale-out deployment. Reporting Services supports a deployment topology that
allows multiple report server instances use a single, shared report server database. To deploy a report
server scale-out deployment, you use the Reporting Services Configuration Manager to connect each
report server to the shared report server database.
Backup, restore, or replace the symmetric key that is used to encrypt stored connection strings and
credentials. You must have a backup of the symmetric key if you change the service account, or move a
report server database to another computer.
Configure the unattended execution account. This account is used for remote connections during
scheduled operations or when user credentials are not available.
Configure report server e-mail. Reporting Services includes a report server e-mail delivery extension
that uses a Simple Mail Transfer Protocol (SMTP) to deliver reports or report processing notification to an
electronic mailbox. You can use the Reporting Services Configuration Manager to specify which SMTP
server or gateway on your network to use for e-mail delivery.
The Reporting Services Configuration Manager does not help you manage report server content, enable
additional features, or grant access to the server. Full deployment requires that you also use SQL Server
Management Studio to enable additional features or modify default values, and the web portal to grant user
access to the server.

Requirements
The Reporting Services Configuration Manager is version-specific. The Reporting Services Configuration
Manager that installs with this version of SQL Server cannot be used to configure an earlier version of
Reporting Services. If you are running older and newer versions of Reporting Services side-by-side on the same
computer, you must use the Reporting Service Configuration manager that comes with each version to
configure each instance.
To use the Reporting Services Configuration manager, you must have the following:
Local system administrator permissions on the computer that hosts the report server you want to
configure. If you are configuring a remote computer, you must have local system administrator
permissions on that computer as well.
You must have permission to create databases on the SQL Server Database Engine used to host the
report server database.
Windows Management Instrumentation (WMI) service must be enabled and running on any report
server you are configuring. The Reporting Services Configuration Manager uses the report server WMI
provider to connect to local and remote report servers. If you are configuring a remote report server, the
computer must allow remote WMI access. For more information, see Configure a Report Server for
Remote Administration.
Before you can connect to and configure a remote report server instance, you must enable remote
Windows Management Instrumentation (WMI) calls to pass through Windows Firewall. For more
information, see Configure a Report Server for Remote Administration.
The Report Server Configuration Manager is installed automatically when you install SQL Server Reporting
Services.

To Start the Report Server Configuration Manager


1. Use the following step that is appropriate for your version of Microsoft Windows:
From the Windows start screen, type Repor ting and select Repor t Ser ver Configuration
Manager from the search results.
Select Star t , point to All Programs , point to Microsoft SQL Ser ver , and then point to
Configuration Tools .
If you want to configure a report server instance from a previous version of SQL Server, open the
program folder for that version. For example, point to SQL Server 2014 (12.x) instead of
Microsoft SQL Ser ver to open the configuration tools for SQL Server 2014 (12.x) server
components.
Select Repor t Ser ver Configuration Manager .
2. The Repor ting Ser vices Configuration Connection dialog box appears so that you can select the
report server instance you want to configure. Select Connect .
3. In Ser ver Name , specify the name of the computer on which the report server instance is installed. The
name of the local computer appears by default, but you can type the name of a remote SQL Server
instance if you want to connect to a report server that is installed on a remote computer.
4. If you specify a remote computer, select Find to establish a connection.
5. In Repor t Ser ver Instance , select the SQL Server Reporting Services instance that you want to
configure. Only report server instances for this version of SQL Server appear in the list. You cannot
configure earlier versions of Reporting Services.
6. Select Connect .

Next steps
Web portal
Reporting Services Tools
Configure a Report Server Database Connection
SQL Server Configuration Manager
Configure and Administer a Report Server
More questions? Try asking the Reporting Services forum
Configure the Report Server Service Account
(Report Server Configuration Manager)
8/26/2021 • 9 minutes to read • Edit Online

Reporting Services is implemented as a single service that contains a Report Server Web service, web portal,
and a background processing application that is used for scheduled report processing and subscription delivery.
This topic explains how the service account is initially configured and how to modify the account or password
using the Reporting Services Configuration tool.

Initial Configuration
The Report Server service account is defined during Setup. You can run the service under a domain user
account, or a built-in account such as Vir tual Ser vice Account . There's no default account; whatever account
you specify in the Ser vice Accounts page of the Installation Wizard becomes the initial account of the Report
Server service.

IMPORTANT
Although the Report Server Web service and web portal are separate ASP.NET applications, they run under a single
service architecture within the same Report Server process identity.

NOTE
Built-in Windows service accounts (Local Service or Network Service) are not supported as report server service accounts
on a computer that is a domain controller.

Changing the Service Account


To view and reconfigure service account information, always use the Reporting Services Configuration Manager.
Service identity information is stored internally in multiple locations. Using the tool ensures that all references
are updated accordingly whenever you change the account or password. The Reporting Services Configuration
Manager performs the following additional steps to ensure the report server remains available:
Automatically adds the new account to the report server group created on the local computer. This group
is specified in the access control lists (ACLs) that secure Reporting Services files.
Automatically updates the login permissions on the SQL Server Database Engine instance used to host
the report server database. The new account is added to the RSExecRole .
The database log in for the old account isn't removed automatically. Be sure to remove accounts that are
no longer in use. For more information, see Administer a Report Server Database (SSRS Native Mode).
Granting database permissions to a new service account only occurs if you configured the report server
database connection to use the service account in the first place. If you configured the report server
database connection to use a domain user account or a SQL Server database login, the connection
information is not affected by the service account update.
Automatically updates the encryption key to include the profile information of the new account.
NOTE
If the report server is part of the scale-out deployment, only the report server that you are updating is affected.
The encryption keys for other report servers in the deployment are unaffected by the service account change.

To configure the Report Server service account


1. Start the Reporting Services Configuration manager and connect to the report server.
2. On the Service Account page, select the option that describes the type of account you want to use.
3. If you selected a Windows user account, specify the new account and password. The account can't be
more than 20 characters and can't contain special characters " / \ [ ] : ; | = , + * ? < > ' per Windows user
account naming rules.
If the report server is deployed in a network that supports Kerberos authentication, you must register the
report server Service Principal Name (SPN) with the domain user account you specified. For more
information, see Register a Service Principal Name (SPN) for a Report Server.
4. Click Apply .
5. When prompted to back up the symmetric key, type a file name and location for the symmetric key
backup, type a password to lock and unlock the file, and then click OK .
6. If the report server uses the service account to connect to the report server database, the connection
information is updated to use the new account or password. Updating the connection information
requires that you connect to the database. If the SQL Server Database Connection dialog box appears,
enter credentials that have permission to connect to the database, and then click OK .
7. When prompted to restore the symmetric key, type the password you specified in step 5, and then click
OK .
8. Review the status messages in the Results pane to verify all tasks completed successfully.

Choosing an Account
For best results, specify an account that has network connection permissions, with access to network domain
controllers and corporate SMTP servers or gateways. The following table summarizes the accounts and provides
recommendations for using them.

A C C O UN T EXP L A N AT IO N
A C C O UN T EXP L A N AT IO N

Domain user accounts If you have a Windows domain user account that has the
minimum permissions required for report server operations,
you should use it.

A domain user account is recommended because it isolates


the Report Server service from other applications. Running
multiple applications under a shared account, such as
Network Service, increases the risk of a malicious user taking
control of the report server because a security breach for
any one application can easily extend to all applications that
run under the same account.

If you use a domain user account, you have to change the


password periodically if your organization enforces a
password expiration policy. You might also need to register
the service with the user account. For more information, see
Register a Service Principal Name (SPN) for a Report Server.

Avoid using a local Windows user account. Local accounts


typically don't have sufficient permission to access resources
on other computers. For more information about how using
a local account limits report server functionality, see
Considerations for Using Local Accounts in this topic.

Vir tual Ser vice Account Vir tual Ser vice Account represents the windows service.
It is a built-in least-privilege account that has network log on
permissions. This account is recommended if you don't have
a domain user account available or if you want to avoid any
service disruptions that might occur as a result of password
expiration policies.

Network Ser vice Network Ser vice is a built-in least-privilege account that
has network log on permissions.

If you select Network Ser vice , try to minimize the number


of other services that run under the same account. A
security breach for any one application compromises the
security of all other applications that run under the same
account.

Local Ser vice Local Ser vice is a built-in account that is like an
authenticated local Windows user account. Services that run
as the Local Ser vice account access network resources as a
null session with no credentials. This account is not
appropriate for intranet deployment scenarios where the
report server must connect to a remote report server
database or a network domain controller to authenticate a
user prior to opening a report or processing a subscription.

Local System Local System is a highly privileged account that is not


required for running a report server. Avoid this account for
report server installations. Choose a domain account or
Network Ser vice instead.

Considerations for Using Local Accounts


The primary consideration for using local accounts is whether the report server requires access to remote
database servers, mail servers, and domain controllers. If you configure the report server to run as a local
Windows user account, Local Service, or Local System, you introduce considerations that must be factored into
how you set other configuration settings, and on subscription creation and delivery:
Running the service under a local account does limit your options later if you configure a connection to a
remote report server database. Specifically, if you are using a remote report server database, you have to
configure the connection to use a domain user account or SQL Server database user that has permission
to sign in the remote SQL Server instance.
Running the service under a local account introduces new requirements on subscription creation. The
report server stores information about the user who creates the subscription. If the user creates the
subscription while logged on under a domain account, the Report Server service tries to connect to a
domain controller to authenticate the user when the subscription is processed. If the service runs under a
local account, the authentication request fails when the report server tries to send the request to a
remote domain controller. To work around this limitation, you can use a custom forms-based
authentication extension or have all users connect to a report server under a local user account.
Running the service under a local account introduces new requirements for subscription delivery. Some
delivery extensions have user account information in the subscription definition. If you are sending
reports to e-mail addresses that are based on domain user accounts and you run the Report Server
service under a local account, it can't access a remote domain controller to resolve the target e-mail
account.
Built-in Windows service accounts (Local Service or Network Service) are not supported as report server
service accounts on a computer that is a domain controller.
The following guidelines and links in this section can help you decide on an approach that is best for your
deployment.
Configure Windows Service Accounts and Permissions.
The Services and Service Accounts Security Planning Guide.

Updating an Expired Password


If the Report Server service runs under a domain account and the password expires before you can update it in
the Report Server Configuration Manager, the service doesn't start until you specify a new password.
If the service account password for the Database Engine expires, the rsRepor tSer verDatabaseUnavailable
error occurs when you try to connect to the report server. Resetting the password resolves this error.

Troubleshooting Service Identity Update Errors


Changing the service identity initiates a series of events that include restarting the service, updating the
password-protected encryption key, updating URL reservations, and updating the report server database
connection information if you're using the service account to connect to the report server database. You can
monitor the status of these events by viewing the notifications in the Results panel at the bottom of the page. If
errors occur during this process, you can try to resolve them using the following techniques:
If the symmetric key can't be restored, you can try to restore it manually by using Restore in the
Encryption Keys page. If that doesn't work, consider deleting the encrypted content. You have to re-create
data source connection information and subscriptions, but the rest of your content still is available. For
more information, see Back Up and Restore Reporting Services Encryption Keys.
If the service doesn't start, restart it manually by using the Services console application in Administrator
Tools.
URL reservation errors can occur when you update the service account. Each URL reservation includes a
security descriptor that includes a Discretionary Access Control List (DACL) that grants permission to the
service account to accept requests on the URL. When you update the account, the URL must be recreated
to update the DACL with the new account information. If the URL reservation can't be recreated, and you
know the account to be valid, try to restart the computer. If the error persists, try to use a different
account.

Next Steps
Configure Report Server URLs (Report Server Configuration Manager) Report Server Configuration Manager
(Native Mode)
Configure Report Server URLs (Report Server
Configuration Manager)
11/2/2020 • 5 minutes to read • Edit Online

In Reporting Services, URLs are used to access the Report Server Web service and the web portal. Before you
can use either application, you must configure at least one URL each for the Web service and the web portal.
Reporting Services provides default values for both application URLs that work well in most deployment
scenarios, including side-by-side deployments with other Web services and applications.
If you installed the default configuration, URLs were created automatically using the default values.
If you are using the Reporting Services Configuration tool to create or modify the URLs, you can accept
the default values for a URL or specify custom values. A test link of the URL appears on page when you
define the URL so that you can immediately confirm that the settings you specified result in a valid
connection. For step-by-step instructions on how to configure and test a URL, see Configure a URL
(Report Server Configuration Manager).

Defining a Report Server URL


The URL precisely identifies the location of an instance of a report server application on your network. When
you create a report server URL, you must specify the following parts.

PA RT DESC RIP T IO N

Host name A TCP/IP network uses an IP address to uniquely identify a


device on the network. There is a physical IP address for
each network adapter card installed in a computer. If the IP
address resolves to a host header, you can specify the host
header. If you are deploying the report server on a corporate
network, you can use the network name of the computer.

Port A TCP port is an endpoint on the device. The report server


will listen for requests on a designated port.

Virtual directory A port is often shared by multiple Web services or


applications. For this reason, a report server URL always
includes a virtual directory that corresponds to the
application that gets the request. You must specify unique
virtual directory names for each Reporting Services
application that listens on the same IP address and port.

SSL settings URLs in Reporting Services can be configured to use an


existing TLS/SSL certificate that you previously installed on
the computer. For more information, see Configure TLS
Connections on a Native Mode Report Server.

Default URLs
When you access a report server or the web portal through its URL, the URL should include the host name and
not the IP address. On a TCP/IP network, the IP address will resolve to a host name (or the network name of the
computer). If you used the default values to configure URLs, you should be able to access the Report Server
Web service using URLs that specify the computer name or localhost as the host name:
https://<computername>/reportserver

https://localhost/reportserver

The settings that make these URLs available appear in the following table. This table shows the default values
that enable a report server connection though URLs that include a host name:

PA RT VA L UE EXP L A N AT IO N

IP address All Assigned The domain name service on your


network resolves the host name on
the URL to the computer's IP address.
As long as the IP address is specified in
the URL that you define, a request that
is sent to a specific host will reach its
intended target.

Port 80 Port 80 is the default port for TCP/IP


connections on a computer. Because
the report server is listening on port
80, you can omit the port number
from the URL. If you specify another
port, you must specify it in the URL.

Virtual directory ReportServer Notice that both of the example URLs


includes the virtual directory name.
Unless you customize the URL
definition, you must always specify the
application's virtual directory name on
the URL.

NOTE
An underlying URL reservation enables any valid host name to be used on a URL. The Reporting Services Configuration
tool creates a URL reservation in HTTP.SYS using syntax that allows variations of the host name to resolve to a particular
report server instance. For more information about URL reservations, see About URL Reservations and Registration
(Report Server Configuration Manager).

Server-side Permissions on a Report Server URL


Permissions on each URL endpoint are granted exclusively to the Report Server service account. Only this
account has rights to accept requests that are directed to the Reporting Services URLs. Discretionary Access
Control Lists (DACLs) are created and maintained for the account when you configure the service identity
through Setup or the Reporting Services Configuration tool. If you change the service account, the Reporting
Services Configuration tool will update all URL reservations that you created to pick up the new account
information. For more information, see URL Reservation Syntax (Report Server Configuration Manager).

Authenticating Client Requests Sent to a Report Server URL


By default, the authentication type supported on the URL endpoints is Windows Authentication. This is the
default security extension. If you are implementing a custom or Forms authentication provider, you must modify
the authentication settings on the report server. Optionally, you can also change the Windows Authentication
settings to match the authentication subsystem used in your network. For more information, see Authentication
with the Report Server.
In This Section
Configure a URL (Report Server Configuration Manager)
This topic provides instructions for setting and modifying a URL reservation in the Reporting Services
Configuration tool.
About URL Reservations and Registration (Report Server Configuration Manager)
URLs are used to access applications and reports. This topic explains the application URLs, the default URLs, and
how URL reservations and registration work in Reporting Services.
URL Reservation Syntax (Report Server Configuration Manager)
The default URL reservations that Reporting Services uses are valid for most scenarios. However, if you want to
restrict access or extend the deployment to enable Internet or extranet access, you might have to customize the
settings to fit your requirements. This topic describes the syntax of a URL reservation and provides
recommendations for creating custom reservations for your deployment.
URLs in Configuration Files (Report Server Configuration Manager)
The RSReportServer.config file contains multiple entries for URL reservations and the URLs used by the web
portal and report server e-mail delivery. This topic summarizes the URL configuration settings so that you can
understand how they compare.
URL Reservations for Multi-Instance Report Server Deployments (Report Server Configuration Manager)
When you install multiple instances of Reporting Services on a single computer, you increase the probability of
encountering URL duplication when a URL is registered. To avoid these errors, follow the recommendations in
this topic for creating instance-specific URL reservations.

See Also
Configure a URL (Report Server Configuration Manager)
About URL Reservations and Registration (Report
Server Configuration Manager)
3/5/2021 • 6 minutes to read • Edit Online

URLs for Reporting Services applications are defined as URL reservations in HTTP.SYS. A URL reservation
defines the syntax of a URL endpoint to a Web application. URL reservations are defined for both the Report
Server Web service and the web portal when you configure the applications on the report server. URL
reservations are created for you automatically when configure URLs through Setup or the Reporting Services
Configuration tool:
Setup will create URL reservations using default values. If Setup installs the default configuration, it will
reserve two URLs; one for the Report Server Web service, and another for the web portal. You can use
the Reporting Services Configuration tool to add more URLs or modify the default URLs that Setup
creates.
The Reporting Services Configuration tool will create a URL reservation based on the URL you specify in
the Web Ser vice URL or Web Por tal URL pages in the tool.
Both Setup and the tool will also assign permissions on the URL to the Report Server service, check for duplicate
instances, and add the URL reservation to HTTP.SYS. Never create or modify a Reporting Services URL
reservation directly using HttpCfg.exe or other tool. If you skip a step or set an invalid value, you will encounter
problems that might be difficult to diagnose or fix.

NOTE
HTTP.SYS is an operating system component that listens for network requests and routes them to a request queue. In this
release of Reporting Services, HTTP.SYS establishes and maintains the request queue for the Report Server Web service
and the web portal. Internet Information Services (IIS) is no longer used to host or access Reporting Services applications.
For more information about HTTP.SYS functionality, see HTTP Server API.

URLs in Reporting Services


In a Reporting Services installation, you can access the following tools, applications, and items through URLs:
Report Server Web service
Web portal
Reports that have been published to a report server
Other published URL-addressable items, such as shared data sources, should not be accessed through URLs as
stand-alone items. The report server does not display those items in a meaningful format when viewed in a
browser window.

NOTE
This article does not describe URL access to specific reports that are stored on the report server. For more information
about URL access to these items, see Access Report Server Items Using URL Access.

URL reservation and registration


A URL reservation defines the URLs that can be used to access a Reporting Services application. Reporting
Services will reserve one or more URLs for the Report Server Web service and the web portal in HTTP.SYS, and
then register them when the service starts. By appending parameters to the URL, you can open reports through
the Web service. Reservations and registration are provided by HTTP.SYS. For more information, see Namespace
Reservations, Registration, and Routing.
URL reservation is a process by which a URL endpoint to a Web application is created and stored in HTTP.SYS.
HTTP.SYS is the common repository of all URL reservations that are defined on a computer and defines a set of
common rules that guarantee unique URL reservations.
URL registration occurs when the service starts. The request queue is created and HTTP.SYS begins routing
requests to that queue. A URL endpoint must be registered before requests that are directed to that endpoint are
added to the queue. When the Report Server service starts, it will register all URLs that it has reserved for all
enabled applications. This means that the Web service must be enabled in order for registration to occur. If you
set the WebSer viceAndHTTPAccessEnabled property to False in the Surface Area Configuration for
Reporting Services facet of Policy-Based Management, the URL for the Web service will not register when the
service starts.
URLs are unregistered if you stop the service or recycle the Web service or the web portal application domain. If
you modify a URL reservation while the service is running, the report server will recycle the application domain
immediately so that the old URL can be unregistered and the new one put into use.
A few simple examples illustrate the concept of a URL reservation and how it relates to URL addresses used for
Reporting Services applications. A key point to notice is that the URL reservation has different syntax than the
URL you use to access the application:

URL RESERVAT IO N IN H T T P. SY S URL EXP L A N AT IO N

https://+:80/reportserver https://<computername>/reportserver The URL reservation specifies a


wildcard (+) on port 80. This puts into
https://<IPAddress>/reportserver the report server queue any incoming
request that specifies a host that
https://localhost/reportserver resolves to the report server computer
on port 80. Notice that with this URL
reservation, any number of URLs can
be used to access the report server.

This is the default URL reservation for


a Reporting Services report server for
most operating systems.

https://123.45.67.0:80/reportserver https://123.45.67.0/reportserver This URL reservation specifies an IP


address and is much more restrictive
than the wildcard URL reservation.
Only URLs that include the IP address
can be used to connect to the report
server. Given this URL reservation, a
request to a report server at
https://<computername>/reportserver
or https://localhost/reportserver
would fail.

Default URLs
If you install Reporting Services in the default configuration, Setup will reserve URLs for the Report Server Web
service and the web portal. You can also accept these default values when you define URL reservations in the
Reporting Services Configuration tool. Default URLs will include an instance name if you install SQL Server
Express or if you install Reporting Services as a named instance.

IMPORTANT
The instance character is an underscore character (_ ).

URL reservations include a port number. The following operating systems will allow multiple Web applications
to share a port:
Windows Server 2012 R2
Windows Server 2012
Windows Server 2008 R2
Windows Server 2008
Windows 7
Windows Vista

A C T UA L URL RESERVAT IO N
IN STA N C E T Y P E A P P L IC AT IO N DEFA ULT URL IN H T T P. SY S

Default instance Report Server Web service https://<servername>/reportserver


https://<servername>:80/reportserver

Default instance Web portal https://<servername>/reports https://<servername>:80/reports

Named instance Report Server Web service https://<servername>/reportserver_<instancename>


https://<servername>:80/reportserver_<instancename>

Named instance Web portal https://<servername>/reports_<instancename>


https://<servername>:80/reports_<instancename>

SQL Server Express Report Server Web service https://<servername>/reportserver_SQLExpress


https://<servername>:80/reportserver_SQLExpress

SQL Server Express Web portal https://<servername>/reports_SQLExpress


https://<servername>:80/reports_SQLExpress

Authentication and service identity for Reporting Services URLs


Reporting Services URL reservations display the account of the URL reservation. The virtual service account is
used for all URLs that are created for the Reporting Services applications that run in the same instance.
Anonymous access is disabled because the default security is RSWindowsNegotiate . For intranet access,
report server URLs use network computer names. If you want to configure Reporting Services for Internet
connections, you must use different settings. For more information about authentication, see Authentication
with the Report Server.

URLs for local administration


You can use https://localhost/reportserver or https://localhost/reports if you specified a strong or weak
wildcard for the URL reservation.
The https://localhost URL is interpreted as https://127.0.0.1 . If you pegged the URL reservation to a
computer name or single IP address, you cannot use localhost unless you create an additional reservation for
127.0.0.1 on the local computer. Similarly, if localhost or 127.0.0.1 is disabled on your computer, you cannot use
that URL.
Windows Vista, Windows Server 2008 and later include new security features to minimize the risk of
accidentally running programs with elevated privileges. Additional steps are necessary to enable local
administration on these operating systems. For more information, see Configure a Native Mode Report Server
for Local Administration (SSRS).

See also
Configure a URL (Report Server Configuration Manager)
URL Reservation Syntax (Report Server Configuration Manager Manager)
Configure a URL (Report Server Configuration
Manager)
3/5/2021 • 10 minutes to read • Edit Online

Before you can use the web portal or the Report Server Web service, you must configure at least one URL for
each application. Configuring the URLs is mandatory if you installed Reporting Services in "files-only" mode
(that is, by selecting the Install but do not configure the ser ver option on the Report Server Installation
Options page in the Installation Wizard). If you installed Reporting Services in the default configuration, URLs
are already configured for each application.
Use the Reporting Services Configuration tool to configure the URLs. All parts of the URL are defined in this
tool. Unlike earlier releases, Internet Information Services (IIS) Web sites no longer provide access to Reporting
Services applications in SQL Server 2008 and later versions.
Reporting Services provides default values that work well in most deployment scenarios, including side-by-side
deployments with other Web services and applications. Default URLs incorporate instance names, minimizing
the risk of URL conflicts if you run multiple report server instances on the same computer.
This topic provides instructions for the following tasks:
Create a URL for the Report Server Web service.
Create a URL for the web portal.
Set advanced URL properties to define additional URLs.
For more information about how URLs are stored and maintained or interoperability issues, see About URL
Reservations and Registration (Report Server Configuration Manager) and Install Reporting Services and
Internet Information Services Side-by-Side (SSRS Native Mode). To review examples of URLs often used in a
Reporting Services installation, see Examples of URLs in this topic.

Prerequisites
Before you create or modify a URL, remember the following points:
You must be a member of the local Administrators group on the report server computer.
If IIS is installed on the same computer, check the names of virtual directories on any Web site that uses
port 80. If you see any virtual directories that use the default Reporting Services virtual directory names
(that is, "Reports" and "ReportServer"), choose different virtual directory names for the Reporting
Services URLs that you configure.
You must use the Reporting Services Configuration tool to configure the URL. Do not use a system utility.
Never modify URL reservations in the URLReser vations section of the RSReportServer.config file
directly. Using the Reporting Services Configuration tool is necessary to update both the underlying URL
reservation that is stored internally and synchronize the URL settings stored in the RSReportServer.config
file.
Choose a time that has low report activity. Each time the URL reservation changes, you can expect that
the application domains for Report Server Web service and the web portal might be recycled.
For an overview of URL construction and usage in Reporting Services, see Configure Report Server URLs
(Report Server Configuration Manager).
To configure a URL for the Report Server Web service
1. Start the Reporting Services Configuration tool and connect to a local report server instance.
2. Click Web Ser vice URL .
3. Specify the virtual directory. The virtual directory name identifies which application receives the request.
Because an IP address and port can be shared by multiple applications, the virtual directory name
specifies which application receives the request.
This value must be unique to ensure that the request reaches its intended destination. This value is
required. It is case-insensitive. There is a one-to-one correspondence between a virtual directory name
and an instance of a Reporting Services application. If you create multiple URLs to the same application
instance, you must use the same virtual directory name in all of the URLs you define for this application
instance.
For the Report Server Web service, the default virtual directory name is Repor tSer ver .
4. Specify the IP address that uniquely identifies the report server computer on the network. If you want to
specify a host header or define additional URLs for the same application instance, you must click
Advanced . For instructions on how to set advanced properties on the URL, see the instructions later in
this topic. Otherwise, use the Web Ser vice URL page to select from the following values:
All Assigned specifies that any of the IP addresses that are assigned to the computer can be used
in a URL that points to a report server application. This value also encompasses friendly host
names (such as computer names) that can be resolved by a domain name server to an IP address
that is assigned to the computer. This is the default value for a Reporting Services URL.
All Unassigned specifies that the report server will receive any request that has not been
handled by another application. We recommend that you avoid this option. If you select this
option, it becomes possible for another application that has a stronger URL reservation to
intercept requests intended for the report server.
127.0.0.1 is the IPv4 address used to access to localhost. It supports local administration on the
report server computer. If you select only this value, only users who are logged on locally to the
report server computer will have access to the application.
::1 is the loopback address in IPv6 format.
Specific IP addresses also appear in this list. IP addresses can be in IPv4 and IPv6 formats.
Nnn.nnn.nnn.nnn is the 32-bit IPv4 address of a network adapter card on your computer. IPv6
addresses are 128-bit, with eight 4-byte fields separated by colons:
<prefix>:nnnn:nnnn:nnnn:nnnn:nnnn:nnnn
If you have multiple cards or if your network supports both IPv4 and IPv6 addresses, you will see
multiple IP addresses. If you select only one IP address, it will limit application access to the just the
IP address (and any host name that a domain name server maps to that address). You cannot use
localhost to access a report server, and you cannot use the IP addresses of other network adapter
cards that are installed on the report server computer. Typically, if you select this value, it is
because you are configuring multiple URL reservations that also specify explicit IP addresses or
host names (for example, one for a network adapter card used for intranet connections and a
second one used for extranet connections).
5. Specify the port. Port 80 is the default because it can be shared with other applications. If you want to use
a custom port number, remember that you will have to always specify it in the URL used to access the
report server. You can use the following techniques to find an available port:
From a command prompt, type the following command to return a list of TCP ports that are being
used:
netstat -anp tcp

Review the Microsoft Support article, Information about TCP/IP port assignments, to read about
TCP port assignments and the differences between Well Known Ports (0 through 1023), Registered
Ports (1024 through 49151), and Dynamic or Private Ports (49152 through 65535).
If you are using Windows Firewall, you must open the port. For instructions, see Configure a
Firewall for Report Server Access.
6. If you have not done so already, verify that IIS (if it is installed) does not have virtual directory with the
same name you plan to use.
7. If you installed a TLS/SSL certificate, you can select it now to bind the URL to the TLS/SSL certificate that
is installed on your computer.
8. Optionally, if you select a TLS/SSL certificate, you can specify a custom port. The default is 443 but you
can use any port that is available.
9. Click Apply to create the URL.
10. Test the URL by clicking the link in the URLs section of page. Note that the report server database must
be created and configured before you can test the URL. For instructions, see Create a Native Mode Report
Server Database (Report Server Configuration Manager).

NOTE
If you have existing TLS Bindings and URL Reservations and you want to change the TLS Binding, for example use a
different certificate or hostheader, then it is recommended you complete the following steps in order:
1. First remove all URL Reservations.
2. Then remove all TLS Bindings.
3. Then recreate the URLs and the TLS bindings.
The previous steps can be completed using Reporting Services Configuration Manager.
Microsoft Windows supports one binding for each IP address to Port combination. If you configure a report server to use
a specific hostheader value and the certificate on the Port to IP address combination is also issued to a different
hostheader value, you will see in your browser, a warning indicating the certificate does not match the URL that is being
used.
To correct the issue, delete all bindings and then create new bindings with unique settings or configure the Reporting
Services URL registrations with wildcards.

To create a URL reservation for the web portal


1. Start the Reporting Services Configuration tool and connect to the report server instance.
2. Click Web Por tal URL .
3. Specify the virtual directory. The web portal listens on the same IP address and port as the Report Server
Web service. If you configured the web portal to point to a different Report Server Web service, you must
modify the web portal URL settings in the RSReportServer.config file.
4. If you installed a TLS/SSL certificate, you can select it to require that all requests to the web portal are
routed over HTTPS.
Optionally, if you select a TLS/SSL certificate, you can specify a custom port. The default is 443 but you
can use any port that is available.
5. Click Apply to create the URL.
6. Test the URL by clicking the link in the URLs section of page.

Setting Advanced Properties to Specify Additional URLs


You can reserve multiple URLs for the Report Server Web service or the web portal by specifying different ports
or host names (either an IP address or a host header name that a domain name server can resolve to an IP
address assigned to the computer). By creating multiple URLs, you can set up different access paths to the same
report server instance. For example, to enable intranet and extranet access to a report server, you might use the
default URL for access across the intranet, and an additional fully qualified host name for extranet access:
https://myserver01/reportserver

https://www.adventure-works.com/reportserver

You cannot set multiple virtual directory names for the same application instance. Each Reporting Services
application instance is mapped to a single virtual directory name. If you have multiple instances of Reporting
Services on the same computer, the virtual directory name for an application should include the instance name
to ensure that each request reaches its intended target.
Host Header
If you already have a host header defined on a domain name server that resolves to your computer, you can
specify that host header in a URL that you configure for report server access.
A host header is a unique name that allows multiple Web sites to share a single IP address and port. Host
header names are easier to remember and type than IP address and port numbers. An example of a host header
name might be www.adventure-works.com.
SSL Por t
Specifies the port for TLS/SSL connections. The default port for TLS is 443.
SSL Cer tificate
Specifies the certificate name of a TLS/SSL certificate that you installed on this computer. If the certificate maps
to a wildcard, you can use it for a report server connection.
Specifies the fully qualified computer name for which the certificate is registered. The name that you specify
must be identical to the name for which the certificate is registered.
You must have a certificate installed to use this option. You must also modify the UrlRoot configuration setting in
the RSReportServer.config file so that it specifies the fully qualified name of the computer for which the
certificate is registered. For more information, see Configure TLS Connections on a Native Mode Report Server.
To set advanced properties on a URL
1. On either the Web Ser vice URL or Web Por tal URL page, click Advanced .
2. Click Add .
3. Click IP Address or Host Header Name. If you specify a host header, be sure to specify a name that the
DNS service can resolve. If you are specifying publicly available domain name, include the whole URL,
including https://www .
4. Specify the port. If you specify a custom port, the URL to the application must always include the port
number.
5. Click OK .
6. Test the URL by opening a browser window and entering the URL.

URLs for Multiple Report Server Instances on the Same Computer


If you are reserving URLs for multiple instances of Reporting Services, you should follow naming conventions
so that you can avoid naming conflicts. For more information, see URL Reservations for Multi-Instance Report
Server Deployments (Report Server Configuration Manager).

Examples of URL Configurations


The following list shows some examples of what a report server URL might resemble:
https://localhost/reportserver

https://localhost/reportserver_SQLEXPRESS

https://sales01/reportserver

https://sales01:8080/reportserver

https://sales.adventure-works.com/reportserver

https://www.adventure-works.com:8080/reportserver01

URLs that you use to access the web portal share a similar format and are typically created under the same Web
site that hosts the report server. The only difference is the virtual directory name (in this case, it is repor ts but
you can configure it to use whatever name that you want):
https://localhost/reports

https://localhost/reports_SQLEXPRESS

https://sales01/reports

https://sales01:8080/reports

https://sales.adventure-works.com/reports

https://www.adventure-works.com:8080/reports

See Also
Configure Report Server URLs (Report Server Configuration Manager) Report Server Configuration Manager
(Native Mode)
URL Reservation Syntax (Report Server
Configuration Manager)
11/2/2020 • 2 minutes to read • Edit Online

This topic describes the parts of the URL string for the Report Server Web service and Report Manager. The URL
string that is stored internally has a different structure from a URL that you type in the Address bar of a browser
window. The URL reservation string appears in the Results window of the Reporting Services Configuration tool
when you configure a URL and in the RSReportServer.config file. Knowing how the URL string is defined can be
useful if you are troubleshooting URL reservation problems or querying HTTP.SYS to view the internal URL
reservations that are defined on your server.

URL Syntax
A report server URL is stored in the UrlString element and the Vir tualDirector y element. The reason for
separating UrlString and Vir tualDirector y into separate elements is that you can have multiple URL strings,
but only one virtual directory name for each Reporting Services application.
In HTTP.SYS, the URL reservation includes both the UrlString and Vir tualDirector y . The syntax for a URL
reservation has the following parts:
<scheme>://<hostname>:<port>/<virtualdirectory>
The following table describes each property and which values are valid for each one.

P RO P ERT Y VA L ID VA L UES DESC RIP T IO N

Scheme http or https Prefixes for non-TLS and TLS


connections.
P RO P ERT Y VA L ID VA L UES DESC RIP T IO N

Hostname (+) Strong wildcard, equates to (All Identifies the server on the network.
Assigned) value for the IP address.
(+) Strong wildcard is the default.
(*) Weak wildcard, equates to an IP HTTP.SYS will accept all requests on all
address of (All Unassigned) . network adaptors for a given port and
virtual directory combination. The
Fully qualified domain name report server will accept any request
on the port.
Machine name
(*) Weak wildcard. HTTP.SYS accepts all
IP address (IPV4) requests not handled by other URL
reservations on all network adaptors
IP address (IPV6) for a given port and virtual directory
combination.

Machine name is the NETBIOS name of


the computer on the network.

Fully qualified domain name includes


domain address and server name, as
registered with a domain controller or
public domain name server.

IP address (IPV4) is the IP address of a


network adaptor on the computer in
IPV4 format: nnn.nnn.nnn.nnn.

IP address (IPV6) is the IP address of a


network adaptor on the computer in
IPV6 format: <header>:
<header>:nnn.nnn.nnn.nnn.

Port 80 Port 80 is the standard port for HTTP


requests to and from a server.
443
Port 443 is the standard report for TLS
<custom> connections.

You can use any port that is not


already reserved by another
application.
P RO P ERT Y VA L ID VA L UES DESC RIP T IO N

Virtualdirectory ReportServer*[_InstanceName] Specifies the name of the application.


This value is a string. By default,
Reports[_InstanceName]* Reporting Services uses ReportServer
and Reports as the application names
<custom> for the Report Server Web service and
Report Manager applications. You can
use different names if you prefer.

This value is required. It identifies the


application.

Specify only one virtual directory for


each application instance. To create
multiple URLs for the same application
in the same instance, create multiple
versions of the UrlString . To create
unique virtual directory names for
multiple application instances, consider
including the instance name in the
virtual directory name, using the
underscore character (_) to append the
instance name. InstanceName is
optional, but recommended if you
have multiple instances on the same
computer. For more information about
how to set URL reservations for
named instances, see URL Reservations
for Multi-Instance Report Server
Deployments (Report Server
Configuration Manager).

The value for virtual directory is not


case-sensitive. You can use any string
as long as it does not include URL
separator characters or URL encoding.

See Also
Configure Report Server URLs (Report Server Configuration Manager)
Configure a URL (Report Server Configuration Manager)
URLs in Configuration Files (Report Server
Configuration Manager)
11/2/2020 • 5 minutes to read • Edit Online

Reporting Services stores application settings in a RSReportServer.config file. Within this file, there are
configuration settings for both URLs and URL reservations. These configuration settings have very different
purposes and rules for modification. If you are accustomed to modifying configuration files to tune a
deployment, this topic can help you understand how each URL setting is used.

URL Settings in RSReportServer.config File


Reporting Services stores URLs for application and report access, and to connect Web front-end components to
a back-end report server.
URLs for Application Access
URLs are used to access the Report Server Web service and the web portal. To configure the URLs, you must use
the Reporting Services Configuration tool. The tool creates the URL reservations for each application in
HTTP.SYS and adds entries for the URLs in the URLReser vations section of RSReportServer.config.
To view descriptions of each element in the URLReser vations section, see RsReportServer.config
Configuration File.
For more information about the syntax of just the UrlString element, see URL Reservation Syntax
(Report Server Configuration Manager).
For instructions on how to configure URLs for application access, see Configure a URL (Report Server
Configuration Manager).
URLs for Report Access
Reporting Services includes a report server e-mail delivery extension that you can use to send report links or
attachments. A report link is constructed when the report is delivered. The report server e-mail delivery
extension uses the UrlRoot setting in the configuration file to create the link. UrlRoot is also used to resolve
links in a rendered report that is generated through unattended report processing.
UrlRoot is specified automatically in the RSReportServer.config file when you configure URLs for application
access. If you modify this value in the configuration file, you must specify a valid URL address to a Report Server
Web service that is connected to a report server database that contains the reports you want to deliver. You can
only specify one UrlRoot for a single report server instance; only one UrlRoot entry can exist in the
RSReportServer.config file for any given report server instance. If you have multiple URLs reserved for the
Report Server Web service, you must choose one of the available values for UrlRoot .
In most cases, you do not need to modify UrlRoot . However, if the report server will be accessed through a fully
qualified URL, and you did not configure a URL that uses a host header to the fully qualified site name, you must
edit the RSReportServer.config manually to set the UrlRoot to the fully qualified report server URL that will be
used to render the report (for example, https://www.adventure-works.com/mywebapp/reportserver ).
URLs Connecting the web portal and Web Parts to the Report Server Web Service
the web portal and the SharePoint 2.0 Web Parts for Reporting Services are Web front-end components that
connect to a report server. URLs used to connect to a backend report server include the following:
Repor tSer verUrl (used by the web portal)
Repor tSer verExternalUrl (used by Web Parts)
NOTE
Previous versions of Reporting Services included the Repor tSer verVir tualDirector y element. This value is obsolete in
SQL Server 2008 and later versions. If you upgraded an existing installation and are using a configuration file that
contains this setting, the report server no longer reads this value.

The following table provides a summary of all the URLs that can be specified in a Reporting Services
configuration file.

SET T IN G USA GE DESC RIP T IO N

Repor tSer verUrl Optional. This element is not included This value specifies a URL to the
in the RSReportServer.config file unless Report Server Web service. This value
you add it yourself. is read by the web portal application at
startup. If this value is set, the web
Set this element only if you are portal will connect to the report server
configuring one of the following that is specified in the URL.
scenarios:
By default, the web portal provides
the web portal provides Web front- Web front-end access to the Report
end access to a Report Server Web Server Web service that runs within
service that runs on a different the same report server instance as the
computer or a different instance on web portal. However, if you want to
the same computer. use the web portal with a Report
Server Web service that is part of
When you have multiple URLs to a another instance or runs in an instance
report server and you want the web on a different computer, you can set
portal to use a specific URL. this URL to direct the web portal to
connect to the external Report Server
You have a specific report server URL Web service.
through which you want all the web
portal connections to use. If a Transport Layer Security (TLS),
previously known as Secure Sockets
For example, you might enable the Layer (SSL), certificate is installed on
web portal access for all computers on the report server to which you are
network, yet require that the web connecting, the Repor tSer verUrl
portal connect to the report server value must be the name of the server
through a local connection. In this that is registered for that certificate. If
case, you might configure you get the error, "The underlying
Repor tSer verUrl to " connection was closed: Could not
https://localhost/reportserver ". establish trust relationship for the
SSL/TLS security channel", set
Repor tSer verUrl to the fully qualified
domain name of the server for which
the TLS/SSL certificate was issued. For
example, if the certificate is registered
to https://adventure-
works.com.onlinesales , the report
server URL would be
https://adventure-
works.com.onlinesales/repor tser v
er .
SET T IN G USA GE DESC RIP T IO N

Repor tSer verExternalUrl Optional. This element is not included This value is used by the SharePoint
in the RSReportServer.config file unless 2.0 Web Parts.
you add it yourself.
In previous releases, it was
Set this element only if you are using recommended that you set this value
the SharePoint 2.0 Web Parts and you to deploy Report Builder on an
want users to be able to retrieve a Internet-facing report server. This is an
report and open it in a new browser untested deployment scenario. If you
window. used this setting in the past to
support Internet access to Report
Add <Repor tSer verExternalUrl> Builder, you should consider an
underneath the <Repor tSer verUrl> alternative strategy.
element, and then set it to a fully
qualified report server name that
resolves to a report server instance
when accessed in a separate browser
window. Do not delete
<Repor tSer verUrl>.

The following example illustrates the


syntax:

<ReportServerExternalUrl>https://myserver/reportserver</ReportServerExternalUrl>

See Also
Configure Report Server URLs (Report Server Configuration Manager)
Configure a URL (Report Server Configuration Manager)
URL Reservations for Multi-Instance Report Server
Deployments
11/2/2020 • 2 minutes to read • Edit Online

If you install multiple instances of Reporting Services on the same computer, you must consider how you will
define the URL reservations for each instance. Within each instance, the Report Server Web service and the web
portal must have at least one URL reservation each. The entire set of reservations must be unique in HTTP.SYS.
Duplicate URLs are detected during URL registration, which occurs when the service starts. If you create URL
reservations that are not unique, the name conflict might not be detected until you start the service. For this
reason, make sure that you follow naming conventions or rules to ensure all values are unique.

Default Naming Conventions


Reporting Services can be installed within a SQL Server named instance. When you install or configure a report
server within a named instance, the instance name is automatically included in the virtual directory in the
default URL reservation that Reporting Services provides. The following table shows the URL reservations for a
default instance and a named instance.

SQ L SERVER IN STA N C E DEFA ULT URL RESERVAT IO N

Default (MSSQLServer) https://+:80/reportserver

Named (MynamedInstance) https://+:80/reportserver_MyNamedInstance

For the named instance, the virtual directory includes the instance name. Both the default instance and the
named instance listen on the same port, but the unique virtual directory names determine which report server
gets the request.
Best practice recommendations are to use the virtual directory name to distinguish among the report server
instance. It provides a clear correspondence between a URL and the target instance, and ensures that the
application names are unique across the whole system.

Custom Naming Conventions


Although using the instance name is recommended, you can use the URL syntax and your own naming
conventions to meet the unique name constraints for URL reservations. The following examples illustrate
different approaches for creating unique URLs for each instance.

REP O RT SERVER DEFA ULT IN STA N C E


( M SSQ L SERVER) REP O RT SERVER_M Y N A M EDIN STA N C E UN IQ UEN ESS

https://+:80/reportserver https://+:8888/reportserver Each instance listens on a different


port.

https://www.contoso.com/reportserver https://SRVR-46/reportserver Each instance responds to different


server names (fully qualified domain
name, and machine name).
Uniqueness Requirements
The underlying technologies used by Reporting Services impose requirements around unique names. HTTP.SYS
requires that all URLs within its repository be unique. You can vary the port, host name, or virtual directory
name to create a unique URL. ASP.NET requires that application identities be unique within the same process.
This requirement affects the virtual directory names. It specifies that you cannot duplicate a virtual directory
name within the same report server instance.

See Also
Configure Report Server URLs (Report Server Configuration Manager)
Configure a URL (Report Server Configuration Manager)
Create a report server database, Report Server
Configuration Manager
3/5/2021 • 3 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server 2016 Reporting Services and later ✔
️ Power BI Report Server ✔
️ SharePoint
For content related to previous versions of SQL Server Reporting Services (SSRS), see SQL Server 2014
Reporting Services.
SQL Server Reporting Services native mode uses two SQL Server relational databases to store report server
metadata and objects. One database is used for primary storage, and the second one stores temporary data.
The databases are created together and bound by name. With a default SQL Server instance, the databases are
named repor tser ver and repor tser ver tempdb . Collectively, the two databases are called the repor t ser ver
database or repor t ser ver catalog .
SQL Server Reporting Services SharePoint mode includes a third database that's used for data alerting
metadata. The three databases are created for each SSRS service application. The database names by default
include a GUID that represents the service application.
The following are example names of the three SharePoint mode databases:
ReportingService_90a9f37075544f22953c4a62e4a9f370
ReportingService_90a9f37075544f22953c4a62e4a9f370TempDB
ReportingService_90a9f37075544f22953c4a62e4a9f370_Alerting

IMPORTANT
Don't write applications that run queries against the report server database. The report server database isn't a public
schema. The table structure might change from one release to the next. If you write an application that requires access to
the report server database, always use the SQL Server Reporting Services APIs to access the report server database.
Execution log views are exceptions to this rule. For more information, see Report Server ExecutionLog and the
ExecutionLog3 View.

Ways to create the report server database


Native mode
You can create the native mode report server database in the following ways:
Automatic . Use the SQL Server setup wizard if you choose the default configuration option for
installation. In the SQL Server Installation Wizard, this option is Install and configure on the Repor t
Ser ver Installation Options page. If you choose the Install only option, you must use SQL Server
Report Server Configuration Manager to create the database.
Manual . Use SQL Server Reporting Services Configuration Manager. Create the report server database
manually if you use a remote SQL Server Database Engine to host the database. For more information,
see Create a Native Mode Report Server Database.
SharePoint mode
The Repor t Ser ver Installation Options page has only one option for SharePoint mode, Install Only . This
option installs all the SQL Server Reporting Services files and the SQL Server Reporting Services shared service.
The next step is to create at least one SSRS service application in one of the following ways:
Go to Central Administration in SharePoint Server to create an SSRS service application. For more
information, see the create a ser vice application section of Install the first Report Server in SharePoint
mode.
Use SQL Server Reporting Services PowerShell cmdlets to create a service application and the report
server databases. For more information, see the sample for creating service applications in the topic
PowerShell cmdlets for Reporting Services SharePoint mode.

Database server version requirements


SQL Server is used to host the report server databases. The SQL Server Database Engine instance can be local
or remote. The following supported versions of SQL Server Database Engine can host the report server
databases:
Azure SQL Managed Instance
SQL Server 2019
SQL Server 2017
SQL Server 2016 (13.x)
SQL Server 2014 (12.x)
SQL Server 2012 (11.x)

NOTE
SQL on Linux isn't a supported environment to host a SQL Server Reporting Services database.

If you create the report server database on a remote computer, configure the connection to use a domain user
account or a service account that has network access. If you use a remote SQL Server instance, consider which
credentials the report server should use to connect to the instance. For more information, see Configure a
Report Server Database Connection (Report Server Configuration Manager).

IMPORTANT
The report server and the SQL Server instance hosting the report server database can be in different domains. For
internet deployment, it's common practice to use a server that's behind a firewall.
If you configure a report server for internet access, use SQL Server credentials to connect to the instance of SQL Server
that's behind the firewall. Secure the connection by using IPSEC.

Edition requirements for a database server


When you create a report server database, not all editions of SQL Server can be used to host the database. For
more information, see Edition requirements for the report server database in SQL Server Reporting Services
features supported by its editions.

Next steps
Read about Report Server Configuration Manager.
More questions? Ask the Reporting Services forum.
Create a Native Mode Report Server Database
(Report Server Configuration Manager)
11/2/2020 • 7 minutes to read • Edit Online

APPLIES TO: SQL Server 2016 Power BI Report Server


Native mode Reporting Services uses a SQL Server database for internal storage. The database is required and
it is used to store published reports, models, shared data sources, session data, resources, and server metadata.
To create a report server database or to change the connection string or credentials, use the options in the
Database page in the Reporting Services Configuration Manager.

When to Create or Configure the Report Server Databases


You must create and configure the report server database if you installed the report server in files-only mode.
If you installed Reporting Services in the default configuration for native mode, the report server database was
created and configured automatically when the report server instance was installed. You can use the Reporting
Services Configuration Manager to view or modify the settings that Setup configured for you.

Before You Start


Creating or configuring a report server database is a multi-step process. Before you create the report server
database, consider how you want to specify the following items:
Select a database ser ver
Review the supported versions of the SQL Server Database Engine and review the supported editions in the
topic, Create a Report Server Database (Report Server Configuration Manager).
Enable TCP/IP connections
Enable TCP/IP connections for the Database Engine. Some editions of the Database Engine do not enable TCP/IP
by default. Instructions are provided in this topic.
Open por t for SQL Ser ver
For a remote server, if you are using firewall software, you must open the port that the Database Engine listens
on.
Decide on repor t ser ver credentials
Decide how the report server will connect to the report server databases. Credential types include domain user
account, SQL Server database user account, or the Report Server service account.
These credentials are encrypted and stored in the RSReportServer.config file. The report server uses these
credentials for ongoing connections to the report server database. If you want to use a Windows user account
or a database user account, be sure to specify one that already exists. Although the Reporting Services
Configuration Manager will create a login and set the necessary permissions, it will not create an account for
you. For more information, see Configure a Report Server Database Connection (Report Server Configuration
Manager).
Decide on a repor t ser ver language
Choose a language to specify for the report server. Predefined role names, descriptions, and the My Reports
folders do not appear in different languages when users connect to the server using different language versions
of a browser.
Check credentials to create and provision the database
Verify that you have account credentials that have permission to create databases on the Database Engine
instance. These credentials are used for a one-time connection to create the report server database and
RSExecRole . If a login does not already exist, a database user login will be created for the account used by the
report server to connect to the database. You can connect under the Microsoft Windows account you are logged
in as, or you can enter a SQL Server database login.
To enable access to a remote report server database
1. If you are using a remote Database Engine instance, log on to the database server to verify or enable
TCP/IP connections.
2. Point to Star t , point to All Programs , point to Microsoft SQL Ser ver , point to Configuration Tools ,
and click SQL Ser ver Configuration Manager .
3. Open SQL Ser ver Network Configuration .
4. Select the Database instance.
5. Right-click TCP/IP and select Enabled .
6. Restart the service.
7. Open your firewall software and open the port that SQL Server listens on. For the default instance, this is
typically port 1433 for TCP/IP connections. For more information, see Configure a Windows Firewall for
Database Engine Access.
To create a local report server database
1. Start the Reporting Services Configuration Manager and connect to the report server instance for which
you are creating the database. For more information, see Report Server Configuration Manager (Native
Mode).
2. On the Database page, select Change Database .
3. Select Create a new repor t ser ver database , and then select Next .
4. Connect to the instance of the Database Engine that you will use to create and host the report server
database:
a. Type the SQL Server Database Engine instance that you want to use. The wizard will display a local
Database Engine that runs as the default instance if it is available. Otherwise, you must type the
server and instance to use. Named instances are specified in this format: <servername>\
<instancename>.
b. Enter the credentials used for a one-time connection to the Database Engine for the purpose of
creating the report server databases. For more information about how these credentials are used,
see Before You Start in this topic.
c. Select Test Connection to validate the connection to the server.
d. Select Next .
5. Specify properties used to create the database. For more information about how these properties are
used, see Before You Start in this topic:
a. Type the name of the report server database. A temporary database is created along with the
primary database. Consider using a descriptive name to help you remember how the database is
used. Note that the name you specify will be used for the lifetime of the database. You cannot
rename a report server database after it is created.
b. Select the language in which you want role definitions and My Reports to appear.
c. The Report Server Mode is always set to Native .
d. Select Next .
6. Specify the credentials used by the report server to connect to the report server database.
a. Specify the authentication type:
Select Database Credentials to connect using a SQL Server database login that is already
defined. Using database credentials is recommended if the report server is on a computer that is
in a different domain, a non-trusted domain, or behind a firewall.
Select Windows Credentials if you have a least-privileged domain user account that has
permission to log on to the computer and the database server.
Select Ser vice Credentials if you want the report server to connect using its service account.
With this option, the server connects using integrated security; credentials are not encrypted or
stored.
b. Select Next .
7. Review the information on the Summary page to verify the settings are correct, and then select Next .
8. Verify the connection by selecting a URL on the Report Server URL page. The URLs must be defined in
order for this test to work. If the report server database connection is valid, you will see the report server
folder hierarchy. For more information, see Verify a Reporting Services Installation.

Change database credentials


The Reporting Services Configuration Manager provides the Change Credentials Wizard to guide you through
the steps of reconfiguring the account that the report server uses to connect to the report server database.
When you change credentials, the Configuration Manager will update all permissions and database login
information on the database server for the report server database that is actively used by the report server.
1. Start the Reporting Services Configuration Manager and connect to the report server instance for which
you are creating the database. For more information, see Report Server Configuration Manager (Native
Mode).
2. On the Database page, select Change Credentials .
3. Connect to the instance of the Database Engine that you will use to create and host the report server
database:
a. Enter the credentials used for a one-time connection to the Database Engine for the purpose of
creating the report server databases. For more information about how these credentials are used,
see Before You Start in this topic.
b. Select Test Connection to validate the connection to the server.
c. Select Next .
4. Specify the credentials used by the report server to connect to the report server database.
a. Specify the authentication type:
Select Database Credentials to connect using a SQL Server database login that is already
defined. Using database credentials is recommended if the report server is on a computer that is
in a different domain, a non-trusted domain, or behind a firewall.
Select Windows Credentials if you have a least-privileged domain user account that has
permission to log on to the computer and the database server.
Select Ser vice Credentials if you want the report server to connect using its service account.
With this option, the server connects using integrated security; credentials are not encrypted or
stored.
b. Select Next .
5. Review the settings and select Next .
6. After the changes are made select Finish .

Next steps
Configure a Report Server Database Connection
Manage a Reporting Services Native Mode Report Server
Report Server Configuration Manager
More questions? Try asking the Reporting Services forum
Configure a Report Server Database Connection
(Report Server Configuration Manager)
3/5/2021 • 9 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server 2016 Reporting Services and later ✔
️ Power BI Report Server
For content related to previous versions of SQL Server Reporting Services (SSRS), see SQL Server 2014
Reporting Services.
Each report server instance requires a connection to the report server database that stores reports, shared data
sources, resources, and metadata managed by the server. The initial connection can be created during a report
server installation if you are installing the default configuration. In most cases, you will use the Reporting
Services Configuration tool to configure the connection after Setup is complete. You can modify the connection
at any time to change the account type or reset credentials. For step-by-step instructions on how to create the
database and configure the connection, see Create a Native Mode Report Server Database (Report Server
Configuration Manager).
You must configure a report server database connection in the following circumstances:
Configuring a report server for first use.
Configuring a report server to use a different report server database.
Changing the user account or password that is used for the database connection. You only need to update
the database connection when the account information is stored in the RSReportServer.config file. If you
are using the service account for the connection (which uses Windows integrated security as the
credential type), the password is not stored, eliminating the need to update the connection information.
For more information about changing accounts, see Configure the Report Server Service Account (Report
Server Configuration Manager).
Configuring a report server scale-out deployment. Configuring a scale-out deployment requires that you
create multiple connections to a report server database. For more information about how to perform this
multi-step operation, see Configure a Native Mode Report Server Scale-Out Deployment (Report Server
Configuration Manager).

How Reporting Services Connects to the Database Engine


Report server access to a report server database depends on credentials and connection information, and on
encryption keys that are valid for the report server instance that uses that database. Having valid encryption
keys is necessary for storing and retrieving sensitive data. Encryption keys are created automatically when you
configure the database for the first time. After the keys are created, you must update them if you change the
Report Server service identity. For more information about working with encryption keys, see Configure and
Manage Encryption Keys (Report Server Configuration Manager).
The report server database is an internal component, accessed only by the report server. The credentials and
connection information you specify for the report server database are used exclusively by the report server.
Users who request reports do not require databases permissions or a database login for the report server
database.
Reporting Services uses System.Data.SqlClient to connect to the Database Engine that hosts the report server
database. If you are using a local instance of the Database Engine, the report server will establish the connection
using shared memory. If you are using a remote database server for the report server database, you might have
to enable remote connections depending on the edition you are using. If you are using the Enterprise edition,
remote connections are enabled for TCP/IP by default.
To verify that the instance accepts remote connections, click Star t , click All Programs , click Microsoft SQL
Ser ver , click Configuration Tools , click SQL Ser ver Configuration Manager , and then verify that the
TCP/IP protocol is enabled for each service.
When you enable remote connections, the client and server protocols will also be enabled. To verify the
protocols are enabled, click Star t , click All Programs , click Microsoft SQL Ser ver , click Configuration
Tools , click SQL Ser ver Configuration Manager , click SQL Ser ver Network Configuration , and then
click Protocols for MSSQLSERVER . For more information, see Enable or Disable a Server Network Protocol in
SQL Server.

Defining a Report Server Database Connection


To configure the connection, you must use the Reporting Services Configuration Manager tool or the rsconfig
command line utility. A report server requires the following connection information:
Name of the Database Engine instance hosting the report server database..
Name of the report server database. When creating a connection for the first time, you can create a new
report server database or select an existing database. For more information, see Create a Report Server
Database;Report Server Configuration Manager).
Credential type. You can use the service accounts, a Windows domain account, or a SQL Server database
login.
User name and password (required only if you are using Windows domain account or a SQL Server
login).
The credentials that you provide must be granted access to the report server database. If you use the Reporting
Services Configuration tool, this step is performed automatically. For more information about the permissions
required to access the database, see the "Database Permissions" section in this topic.
Storing Database Connection Information
Reporting Services stores and encrypts the connection information in the following RSreportserver.config
settings. You must use the Reporting Services Configuration tool or rsconfig utility to create encrypted values
for these settings.
Not all of the values are set for every type of connection. If you configure the connection using the default
values (that is, using the service accounts to make the connection), <LogonUser >, <LogonDomain >, and
<LogonCred > will be empty, as follows:

<Dsn></Dsn>
<ConnectionType></ConnectionType>
<LogonUser></LogonUser>
<LogonDomain></LogonDomain>
<LogonCred></LogonCred>

If you configure the connection to use a specific Windows account or database login, you must remember to
update the values that are stored if you subsequently change the account or login.
Choosing a Credential Type
There are three types of credentials that can be used in a connection to a report server database:
Windows integrated security using the Report Server service account. Because the report server is
implemented as a single service, only the account under which the service runs requires database access.
A Windows user account. If the report server and the report server database are installed on the same
computer, you can use a local account. Otherwise, you must use a domain account.
A SQL Server login.

NOTE
A custom authentication extension cannot be used to connect to a report server database. Custom authentication
extensions are used only to authenticate a principal to a report server. They do not affect connections to the report server
database or to external data sources that provide content to reports.

If the instance of the Database Engine is configured for Windows Authentication and is in the same domain or a
trusted domain with the report server computer, you can configure the connection to use the service account or
a domain user account that you manage as a connection property through the Reporting Services Configuration
tool. If the database server is in a different domain or if you are using workgroup security, you must configure
the connection to use a SQL Server database login. In this case, be sure to encrypt the connection.

NOTE
When using Azure SQL Managed Instance to host report server databases, SQL Server authentication is the only
supported credential type. In addition, please note that Managed Instance cannot host report server instance.

Using Service Accounts and Integrated Security


You can use Windows integrated security to connect through the Report Server service account. The account is
granted login rights to the report server database. This is the default credential type chosen by Setup if you
install Reporting Services in the default configuration.
The service account is a trusted account that provides a low-maintenance approach to managing a report server
database connection. Because the service account uses Windows integrated security to make the connection, the
credentials do not have to be stored. However, if you subsequently change the service account password or
identity (for example, switching from a built-in account to a domain account), be sure to use the Reporting
Services Configuration tool to make the change. The tool automatically updates the database permissions to use
the revised account information. For more information, see Configure the Report Server Service Account
(Report Server Configuration Manager).
If you configure the database connection to use the service account, the account must have network
permissions if the report server database is on a remote computer. Do not use the service account if the report
server database is on a different domain, behind a firewall, or if you are using workgroup security instead of
domain security. Use a SQL Server database user account instead.
Using a Domain User Account
You can specify a Windows user account for the report server connection to the report server database. If you
use a local or domain account, you must update the report server database connection every time you change
the password or the account. Always use the Reporting Services Configuration tool to update the connection.
Using a SQL Server Login
You can specify a single SQL Server login to connect to the report server database. If you use SQL Server
authentication and the report server database is on a remote computer, use IPSec to help secure the
transmission of data between the servers. If you use a database login, you must update the report server
database connection every time you change the password or the account.
Database Permissions
Accounts used to connect to the report server database are granted the following roles:
public and RSExecRole roles for the Repor tSer ver database.
RSExecRole role for the master , msdb , and Repor tSer verTempDB databases.
When you use the Reporting Services Configuration tool to create or modify the connection, these permissions
are granted automatically. If you use the rsconfig utility, and you are specifying a different account for the
connection, you must update the SQL Server login for that new account. You can create script files in the
Reporting Services Configuration tool that will update the SQL Server login for the report server.
Verifying the Database Name
Use the Reporting Services Configuration tool to determine which report server database is used by a particular
report server instance. To find the name, connect to the report server instance and open the Database Setup
page.

Using a Different Report Server Database or Moving a Report Server


Database
You can configure a report server instance to use a different report server database by changing the connection
information. A common case for switching databases is when you deploy a production report server. Switching
from a test report server database to a production report server database is typically how production servers
are rolled out. You can also move a report server database to another computer. For more information, see
Upgrade and Migrate Reporting Services in SQL Server.

Configuring Multiple Reports Servers to Use the Same Report Server


Database
You can configure multiple report servers to use the same report server database. This deployment
configuration is called a scale-out deployment. This configuration is a prerequisite if you want to run multiple
report servers in a server cluster. However, you can also use this configuration if you want to segment service
applications or if you want to test the installation and settings of a new report server instance to compare it with
an existing report server installation. For more information, see Configure a Native Mode Report Server Scale-
Out Deployment (Report Server Configuration Manager).

Next steps
Create a Report Server Database
Manage a Reporting Services Native Mode Report Server
Configure the Report Server Service Account
More questions? Try asking the Reporting Services forum
E-Mail Settings - Reporting Services Native mode
(Configuration Manager)
3/5/2021 • 9 minutes to read • Edit Online

SQL Server Reporting Services includes an e-mail delivery extension so that you can distribute reports through
e-mail. Depending on how you define the e-mail subscription, a delivery might consist of a notification, link,
attachment, or embedded report. The e-mail delivery extension works with your existing mail server technology.
The mail server must be an SMTP server or forwarder. The report server connects to an SMTP server through
Collaboration Data Objects (CDO) libraries (cdosys.dll) that are provided by the operating system.
The report server e-mail delivery extension is not configured by default. You must use the Report Server
Configuration Manager to minimally configure the extension. To set advanced properties, you must edit the
RSReportServer.config file. If you cannot configure the report server to use this extension, you can deliver
reports to a shared folder instead. For more information, see File Share Delivery in Reporting Services.

Configuration Requirements
Report server e-mail delivery is implemented on Collaboration Data Objects (CDO) and requires a local or
remote Simple Mail Transfer Protocol (SMTP) server or SMTP forwarder. SMTP is not supported on all
Windows operating systems. If you are using the Itanium-based edition of Windows Server 2008, SMTP is
not supported. For more information about configuration options provided through CDO, see Configuration
CoClass on MSDN.
The configured authentication account must have permission on the SMTP server to send mail.
The e-mail delivery extension uses UTF-8 encoding in e-mail attachments. You cannot modify the encoding;
the HTML rendering extension only supports UTF-8.

NOTE
The default e-mail delivery extension does not provide support for digitally signing or encrypting outgoing mail
messages.

Setting Configuration Options for E-Mail Delivery


Before you can use Report Server e-mail delivery, you must set configuration values that provide information
about which SMTP server to use.
To configure a report server for e-mail delivery, do the following:
Use the Report Server Configuration Manager if you are specifying just an SMTP server and a user
account that has permission to send e-mail. These are the minimum settings that are required for
configuring the Report Server e-mail delivery extension.
(Optionally) Use a text editor to specify additional settings in the RSreportserver.config file. This file
contains all of the configuration settings for Report Server e-mail delivery. Specifying additional settings
in these files is required if you are using a local SMTP server or if you are restricting e-mail delivery to
specific hosts. For more information about finding and modifying configuration files, see Modify a
Reporting Services Configuration File (RSreportserver.config).
NOTE
Report server e-mail settings are based on CDO. If you want more detail about specific settings, you can refer to the CDO
production documentation.

Configure report server e-mail using the Report Server Configuration


Manager
1. Start the Report Server Configuration Manager and connect to the report server instance.
2. In Sender Address , enter the e-mail address to use in the From: field of a generated e-mail.
You must specify a user account that has permission to send mail from the SMTP server. The value you
type for the Sender Address is saved in the <From> field in the rsreportserver.config file.
3. In SMTP Ser ver , specify the SMTP server or gateway to use.
This value can be an IP address, a NetBIOS name of a computer on your corporate intranet, or a fully
qualified domain name. The value you type for the SMTP Ser ver is saved in the <SMTPServer> field in
the rsreportserver.config file.
4. Use the Authentication drop down to specify how to authentication to the SMTP server. This
No authentication means you will connect anonymously to the mail server that was specified.
Selecting this option will set <SendUsing> to a value of 2 and <SMTPAuthenticate> to a value of 0 in
the rsreportserver.config.
Username and password (Basic) allows you to specify a username and password to connect to
the mail server. You can also select Use secure connection to have this go over an encrypted
connection to your mail server.
Selecting this option will set <SendUsing> to a value of 2 and <SMTPAuthenticate> to a value of 1 in
the rsreportserver.config. Selecting Use secure connection will set SMTPUseSSL to True .
Username will be set in <SendUserName> as an encrypted value. Password will be set in
<SendPassword> as an encrypted value.

Repor t ser ver ser vice account (NTLM) will use the service account you specified for the
report server. If using the report server service account for authentication, verify that the service
account has Send As permissions on the SMTP server.
Selecting this option will set <SendUsing> to a value of 2 and <SMTPAuthenticate> to a value of 2 in
the rsreportserver.config.
5. Select Apply .
6. You can optionally adjust additional fields, for the email configuration, within the rsreportserver.config.

Example Report Server E-Mail Configuration


The following example illustrates the settings in the RSreportserver.config file for a remote SMTP server. To read
about the setting descriptions and valid values, see Rsreportserver.config Configuration File.
<RSEmailDPConfiguration>
<SMTPServer>mySMTPServer.Adventure-Works.com</SMTPServer>
<SMTPServerPort></SMTPServerPort>
<SMTPAccountName></SMTPAccountName>
<SMTPConnectionTimeout></SMTPConnectionTimeout>
<SMTPServerPickupDirectory></SMTPServerPickupDirectory>
<SMTPUseSSL>False</SMTPUseSSL>
<SendUsing>2</SendUsing>
<SMTPAuthenticate>2</SMTPAuthenticate>
<From>my-rs-email-account@Adventure-Works.com</From>
<EmbeddedRenderFormats>
<RenderingExtension>MHTML</RenderingExtension>
</EmbeddedRenderFormats>
<PrivilegedUserRenderFormats></PrivilegedUserRenderFormats>
<ExcludedRenderFormats>
<RenderingExtension>HTMLOWC</RenderingExtension>
<RenderingExtension>NULL</RenderingExtension>
<RenderingExtension>RGDI</RenderingExtension>
</ExcludedRenderFormats>
<SendEmailToUserAlias>True</SendEmailToUserAlias>
<DefaultHostName></DefaultHostName>
<PermittedHosts>
<HostName>Adventure-Works.com</HostName>
<HostName>hotmail.com</HostName>
</PermittedHosts>
<SendUserName></SendUserName>
<SendPassword></SendPassword>
</RSEmailDPConfiguration>

Configuration Options for Setting the To: Field in a Message


User-defined subscriptions that are created according to the permissions granted by the Manage individual
subscriptions task contain a pre-set user name that is based on the domain user account. When the user creates
the subscription, the recipient name in the To: field is self-addressed using the domain user account of the
person creating the subscription.
If you are using an SMTP server or forwarder that uses e-mail accounts that are different from the domain user
account, the report delivery will fail when the SMTP server tries to deliver the report to that user.
To workaround this issue, you can modify configuration settings that allow users to enter a name in the To: field:
1. Open RSReportServer.config with a text editor.
2. Set <SendEmailToUserAlias> to False .
3. Set <DefaultHostName> to the Domain Name System (DNS) name or IP address of the SMTP server or
forwarder.
4. Save the file.

Configuration Options for Remote SMTP Service


The connection between the report server and an SMTP server or forwarder is determined by the following
configuration settings:
<SendUsing> specifies a method for sending messages. You can choose between a network SMTP service or
a local SMTP service pickup directory. To use a remote SMTP service, this value must be set to 2 in the
RSReportServer.config file.
<SMTPServer> specifies the remote SMTP server or forwarder. This value is a required value if you are using a
remote SMTP server or forwarder.
<From> sets the value that appears in the From: line of an e-mail message. This value is a required value if
you are using a remote SMTP server or forwarder.
Other values that are used for remote SMTP service include the following (note that you do not need to specify
these values unless you want to override the default values).
<SMTPServerPort> is configured for port 25 by default.
<SMTPAuthenticate> specifies how the report server connects to the remote SMTP server. The default value is
0 (or no authentication). In this case, the connection is made through Anonymous access. Depending on your
domain configuration, the report server and the SMTP server may need to be members of the same domain.
To send e-mail to restricted distribution lists (for example, distribution lists that accept incoming messages
only from authenticated accounts), set <SMTPAuthenticate> to 1 or 2 . If you set it to 1 , you will also need to
set <SendUserName> and <SendPassword> . It is recommended to do this through the Report Server
Configuration Manager as it will encrypt the values for <SendUserName> and <SendPassword> .
To configure a remote SMTP Service for the report server

NOTE
It is recommended that you configure the mail server through the Report Server Configuration Manager.

1. Verify that the Report Server Windows service has Send As permissions on the SMTP server.
2. Open the RSReportServer.config file in a text editor.
3. Verify that <UrlRoot> is set to the report server URL address. This value is set when you configure the
report server and it should be filled in already. If it is not set, type the report server URL address.
4. In the Delivery section, find <RSEmailDPConfiguration> .
5. In <SMTPServer> , type the name of the SMTP server. This value can be an IP address, a UNC name of a
computer on your corporate intranet, or a fully qualified domain name.
6. Set <SendUsing> to a value of 2 to use the service account for the report server. Set <SendUsing> to a
value of 1 for basic authentication. If you set it to 1 , you will need to additionally supply a value for
<SendUserName> and <SendPassword> . If you want those values to be encrypted, set the authentication
within the Report Server Configuration Manager.
7. Set <SMTPAuthenticate> to a value of 1 if you set <SendUsing> to either 1 or 2.
8. Set <From> . You must specify a user account that has permission to send mail from the SMTP server.
9. Save the file.
The report server will use the new settings automatically; you do not need to restart the service. You can
specify additional SMTP settings to further configure how the SMTP server is used for report server e-
mail delivery.

Configuration Options for Local SMTP Service


Configuring a local SMTP service is useful if you are testing or troubleshooting report server e-mail delivery.
The local SMTP service is not enabled by default.
The connection between the report server and a local SMTP server or forwarder is determined by the following
configuration settings:
SendUsing is set to 1 .
SMTPSer verPickupDirector y is set to a folder on the local drive.

NOTE
Be sure that you do not set SMTPServer if you are using a local SMTP server.

From sets the value that appears in the From: line of an e-mail message. This value is required.
To configure a local SMTP Service for the report server
1. In Control Panel, select Turn Windows features on or off to start the Add Roles and Features
Wizard .
2. Select Role-based or feature-based installation and select Next .
3. Select the server to install Internet Information Server (IIS) onto and select Next .
4. Select Next on the Server Roles page.
5. On the Features page, select SMTP Ser ver and then select Next .
If you are prompted to add features that are required for SMTP Server, select Add Features .
6. Select Next on the Web Server Role (IIS) page.
7. Select Next on the Role Services page.
8. Select Install on the Confirmation page.
9. Verify that the Simple Mail Transfer Protocol (SMTP) windows service is running in the Services
console.
To configure the local SMTP server, you will need to use the IIS 6.0 Manager under Admin tools.
10. Open the RSReportServer.config file in a text editor.
11. Verify that <UrlRoot> is set to the report server URL address. This value is set when you configure the
report server and it should be filled in already. If it is not set, type the Web Service URL address for your
report server.
12. In the Delivery section, find <RSEmailDPConfiguration> .
13. Make sure <SMTPServer> is present, but empty.
14. Set <SendUsing> to 1.
15. Set <SMTPAuthenticate> to 0.
16. Set <SMTPServerPickupDirectory> to the SMTP Service Pickup folder.
Default location will be C:\inetpub\mailroot\Pickup.
17. Set <From> . This sets the value that appears in the From: line of an e-mail message.
18. Save the file.

See Also
Report Server Configuration Manager (Native Mode)
Modify a Reporting Services Configuration File (rsreportserver.config)
Rsreportserver.config Configuration File
Configure the Unattended Execution Account
(Report Server Configuration Manager)
11/2/2020 • 5 minutes to read • Edit Online

Reporting Services provides a special account that is used for unattended report processing and for sending
connection requests across the network. The account is used in the following ways:
Send connection requests over the network for reports that use database authentication, or connect to
external report data sources that do not require or use authentication. For more information, see Specify
Credential and Connection Information for Report Data Sources.
Retrieve external image files that are used in report. If you want to use an image file and the file cannot
be accessed through Anonymous access, you can configure the unattended report processing account
and grant the account permission to access the file.
Unattended report processing refers to any report execution process that is triggered by an event (either a
schedule-driven event or data refresh event) rather than a user request. The report server uses the unattended
report processing account to log on to the computer that hosts the external data source. This account is
necessary because the credentials of the Report Server service account are never used to connect to other
computers.

IMPORTANT
Configuring the account is optional. However, if you do not configure it, you will limit your options for connecting to some
data sources, and you might not be able to retrieve image files from remote computers. If you do configure the account,
you must keep it up to date. Specifically, if you allow a password to expire or the account information is changed in Active
Directory, you will encounter the following error the next time a report is processed: "Logon failed (rsLogonFailed) Logon
failure: unknown user name or bad password." Proper maintenance of the unattended report processing account is
essential, even if you never retrieve external images or send connection requests to external computers. If you configure
the account but then find that you are not using it, you can delete it to avoid routine account maintenance tasks.

How to Configure the Account


You must use a domain user account. To serve its intended purpose, this account should be different than the
one used to run the Report Server service. Be sure to use an account that has minimum permissions (read-only
access with network connection permissions is sufficient) and limited access to just those computers that
provide data sources and resources to the report server.
To specify the account, you can use the Reporting Services Configuration tool or the rsconfig utility. The easiest
way to configure the unattended execution account is to run the Reporting Services Configuration tool and
specify credentials in the Execution Account page.
1. Start the Reporting Services Configuration tool and connect to the report server instance you want to
configure. For instructions, see Report Server Configuration Manager (Native Mode).
2. On the Execution Account page, select Specify an execution account .
3. Type the account and password, retype the password, and then click Apply .
Using RSCONFIG Utility
Another way to set the account is to use the rsconfig utility. To specify the account, use the -e argument of
rsconfig . Specifying the -e argument for rsconfig directs the utility to write the account information to the
configuration file. You do not need to specify a path to RSreportserver.config. Follow these steps to configure the
account.
1. Create or select a domain account that has access to computers and servers that provide data or services
to a report server. You should use an account that has reduced permissions (for example, read-only
permissions).
2. Open a command prompt: On the Star t menu, click Run , type cmd , and then click OK .
3. Type the following command to configure the account on a local report server instance:
rsconfig -e -u<domain/username> -p<password>
rsconfig -e supports additional arguments. For more information about syntax and to view command
examples, see rsconfig Utility (SSRS).
How Account Information is Stored
When you set the account, the following settings are specified as encrypted values in the RSreportserver.config
file on a local or remote report server instance:

<UnattendedExecutionAccount>
<UserName></UserName>
<Password></Password>
<Domain></Domain>
</UnattendedExecutionAccount>

Once you set the values, you cannot decrypt them to view the values in plain text. If you mistype the values or
forget the values you specified, you must use the Reporting Services Configuration tool or run rsconfig -e to
start over.

How to Use the Unattended Report Processing Account


To retrieve image files, the report server uses the account automatically and no specific action is required on
your part. To use the account to connect to external data sources that provide data to reports, you must specify a
Credential Type option in the data source properties page of the report data source or shared data source:
In the web portal or on a SharePoint site, select the Credentials are not required option.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

The unattended report processing account is used primarily to connect to external servers, and not as a login to
database servers. If you want to use the account credentials to log in to a database, you must specify credentials
in the connection string. You can specify Integrated Security=SSPI if the database server supports Windows
integrated security and the account used for unattended report processing has permission to read the database.
Otherwise, you must enter the user name and password in the connection string, where it appears in clear text
to any user who has permission to edit data source connection properties.
Although you are not prevented from using the unattended report processing account to retrieve data after the
connection is made, doing so is not recommended. The account is supposed to be used for very specific
functions. If you use it to retrieve data, you undermine the purpose for which it is intended.

How to Maintain the Unattended Report Processing Account


Once you define the account, you must ensure that the account and password are kept up to date. You can use
the Reporting Services Configuration tool to update the configuration settings that store information about this
account.
1. Start the Reporting Services Configuration tool and connect to the report server instance you want to
configure.
2. On the Execution Account page, verify that Specify an execution account is selected.
3. Type the new account or password, retype the password, and then click Apply .

How to Delete the Unattended Report Processing Account


If you are not using the account, you can delete it to avoid routine account maintenance tasks.
1. Start the Reporting Services Configuration tool and connect to the report server instance you want to
configure.
2. On the Execution Account page, clear Specify an execution account .
3. Click Apply .
The account information is removed from the RSReportServer.config file.

See Also
Report Server Configuration Manager (SSRS Native Mode)
Configure and Manage Encryption Keys (Report
Server Configuration Manager)
11/2/2020 • 2 minutes to read • Edit Online

Reporting Services uses encryption keys to secure credentials and connection information that is stored in a
report server database. In Reporting Services, encryption is supported through a combination of public, private,
and symmetric keys that are used to protect sensitive data. The symmetric key is created during report server
initialization when you install or configure the report server, and it is used by the report server to encrypt
sensitive data that is stored in the report server. Public and private keys are created by the operating system,
and they are used to protect the symmetric key. A public and private key pair is created for each report server
instance that stores sensitive data in a report server database.
Managing the encryption keys consists of creating a backup copy of the symmetric key, and knowing when and
how to restore, delete, or change the keys. If you migrate a report server installation or configure a scale-out
deployment, you must have a backup copy of the symmetric key so that you can apply it to the new installation.

IMPORTANT
Periodically changing the Reporting Services encryption key is a security best practice. A recommended time to change
the key is immediately following a major version upgrade of Reporting Services. Changing the key after an upgrade
minimizes additional service interruption caused by changing the Reporting Services encryption key outside of the
upgrade cycle.

To manage symmetric keys, you can use the Reporting Services Configuration tool or the rskeymgmt utility.
The tools included in Reporting Services are used to manage the symmetric key only (the public and private
keys are managed by the operating system). Both the Reporting Services Configuration tool and the
rskeymgmt utility support the following tasks:
Back up a copy of the symmetric key so that you can use it to recover a report server installation or as
part of a planned migration.
Restore a previously saved symmetric key to a report server database, allowing a new report server
instance to access existing data that it did not originally encrypt.
Delete the encrypted data in a report server database in the unlikely event that you can no longer access
encrypted data.
Re-create symmetric keys and re-encrypt data in the unlikely event that the symmetric key is
compromised. As a security best practice, you should recreate the symmetric key periodically (for
example, every few months) to protect the report server database from cyber attacks that attempt to
decipher the key.
Add or remove a report server instance from a report server scale-out deployment where multiple
report servers share both a single report server database and the symmetric key that provides reversible
encryption for that database.

In This Section
Initialize a Report Server (Report Server Configuration Manager)
Explains how encryption keys are created.
Back Up and Restore Reporting Services Encryption Keys
Explains how to back up encryption keys and restore them to recover or migrate a report server installation.
Store Encrypted Report Server Data (Report Server Configuration Manager)
Describes encryption on a report server.
Delete and Re-create Encryption Keys (Report Server Configuration Manager)
Explains how you can replace a symmetric key with a new version, and how to start over if symmetric keys
cannot be validated.
Add and Remove Encryption Keys for Scale-Out Deployment (Report Server Configuration Manager)
Explains how to add and remove encryption keys to control which report servers are part of a scale-out
deployment.

See Also
Report Server Configuration Manager (Native Mode)
SSRS Encryption Keys - Initialize a Report Server
11/2/2020 • 4 minutes to read • Edit Online

In Reporting Services, an initialized server is one that can encrypt and decrypt data in a report server database.
Initialization is a requirement for report server operation. Initialization occurs when the Report Server service is
started for the first time. It also occurs when you join the report server to the existing deployment, or when you
manually recreate the keys as part of the recovery process. For more information about how and why
encryption keys are used, see Configure and Manage Encryption Keys (Report Server Configuration Manager)
and Store Encrypted Report Server Data (Report Server Configuration Manager).
Encryption keys are based partly on the profile information of the Report Server service. If you change the user
identity used to run the Report Server service, you must update the keys accordingly. If you are using the
Reporting Services Configuration tool to change the identity, this step is handled for you automatically.
If initialization fails for some reason, the report server returns an RSRepor tSer verNotActivated error in
response to user and service requests. In this case, you may need to troubleshoot the system or server
configuration. For more information, see SSRS: Troubleshoot Issues and Errors with Reporting Services
(https://social.technet.microsoft.com/wiki/contents/articles/1633.aspx) in Technet Wiki.

Overview of the Initialization Process


The initialization process creates and stores a symmetric key used for encryption. The symmetric key is created
by the Microsoft Windows Cryptographic Services and subsequently used by the Report Server service to
encrypt and decrypt data. The symmetric key is itself encrypted with an asymmetric key.
The following steps describe the initialization process:
1. At initial start up, the Report Server service reads the RSReportServer.config file to get the installation
identifier and database connection information.
2. The Report Server service requests a public key from Cryptographic Services. Windows creates a private
and public key and sends the public key to the Report Server service.
3. The Report Server service connects to the report server database and stores the installation identifier and
public key values.
4. The Report Server service calls into Cryptographic Services again, this time to request a symmetric key.
Windows creates the symmetric key.
5. The Report Server service connects to the report server database again, and adds the symmetric key to
the public key and installation identifier values that were stored in step 3. Before storing it, the Report
Server service uses its public key to encrypt the symmetric key. Once the symmetric key is stored, the
report server is considered initialized and available to use.

Initializing a Report Server for Scale-out Deployment


Reporting Services supports a scale-out deployment model that shares a single report server database among
multiple report server instances. To join a scale-out deployment, a report server must create and store its copy
of the symmetric key in the shared database. Although a single symmetric key is used by servers that use the
database, each report server has its copy of the key. Each copy varies in that it is uniquely encrypted using the
public key it owns.
The first set of steps for initializing a report server for scale-out deployment are identical to the first three steps
that describe initialization for a single server and database combination.
The initialization process for a scale out deployment differs in how the report server gets the symmetric key.
When the first server is initialized, it gets the symmetric key from Windows. When the second server is
initialized during configuration for scale-out deployment, it gets the symmetric key from the Report Server
service that is already initialized. The first report server instance uses the public key of the second instance to
create an encrypted copy of the symmetric key for the second report server instance. The symmetric key is
never exposed as plain text at any point in this process.

How to Initialize a Report Server


To initialize a report server, use the Reporting Services Configuration tool. Initialization occurs
automatically when you create and configure the report server database. For more information, see
Configure a Report Server Database Connection (Report Server Configuration Manager).
To initialize a report server for scale-out deployment, you can use the Initialization page in the Reporting
Services Configuration tool or the RSKeymgmt utility. To follow step-by-step instructions, see Configure
a Native Mode Report Server Scale-Out Deployment (Report Server Configuration Manager).

NOTE
RSKeymgmt is a console application that you run from a command line on a computer that hosts a report server
instance that is already part of a scale-out deployment. When you run the utility, you specify arguments to select a
remote report server instance that you want to initialize.

A report server will be initialized only if there is a match between the installation identifier and the public key. If
the match succeeds, a symmetric key is created that permits reversible encryption. If the match fails, the report
server is disabled, in which case you may be required to apply a backup key or delete the encrypted data if a
backup key is unavailable or not valid. For more information about encryption keys used by a report server, see
Configure and Manage Encryption Keys (Report Server Configuration Manager).

NOTE
You can also use the Reporting Services Windows Management Instrumentation (WMI) provider to initialize a report
server programmatically. For more information, see Access the Reporting Services WMI Provider.

How to Confirm a Report Server Initialization


To confirm report server initialization, ping the Report Server Web service by typing
https://<ser vername>/repor tser ver in the command window. If the RSRepor tSer verNotActivated error
occurs, the initialization failed.

See Also
Configure and Manage Encryption Keys (Report Server Configuration Manager)
SSRS Encryption Keys - Store Encrypted Report
Server Data
11/2/2020 • 4 minutes to read • Edit Online

Reporting Services stores encrypted values in the report server database and in configuration files. Most
encrypted values are credentials that are used for accessing external data sources that provide data to reports.
This topic describes which values are encrypted, the encryption functionality used in Reporting Services, and
other kinds of stored confidential data that you should know about.

Encrypted Values
The following list describes the values that are stored in a Reporting Services installation.
Connection information and credentials used by a report server to connect to a report server database
that stores internal server data.
These values are specified and encrypted during setup or report server configuration. You can update the
connection information at any time using the Reporting Services Configuration tool or the rsconfig
utility. Encryption of configuration settings is performed by using the machine-level key of the local
computer that is available to all users. Encrypted report server connection information is stored in the
rsreportserver.config file (no other configuration file contains encrypted settings). For more information,
see Configure a Report Server Database Connection (Report Server Configuration Manager).
Stored credentials that are used by a report server to connect to external data sources that provide data
to a report.
These values are defined when you configure data source information for a report, and then stored as
encrypted values in a report server database. The report server uses a symmetric key to encrypt and
decrypt this data. For more information about stored credentials, see Specify Credential and Connection
Information for Report Data Sources.
An unattended user account used by the report server to connect to other computers to retrieve external
images files or external data that is used in a report.
This account is used when a connection to a remote computer is required and no other credentials are
available to make the connection. This account is primarily used to support unattended report processing
for reports that do not use credentials to access a data source. If you create reports based on data
sources that do not require or use credentials when accessing data, you must configure this account for
the report server to use.
This account is required under certain circumstances and can only be created through the Reporting
Services Configuration tool or rsconfig . This value is also stored in the rsreportserver.config file. You
must create this account manually. For more information about this account and how it is used, see
Configure the Unattended Execution Account (Report Server Configuration Manager).
The symmetric key used for encryption.
This value is created during setup or server configuration, and then stored as an encrypted value in the
report server database. The Report Server Windows service uses this key to encrypt and decrypt data
that is stored in the report server database.
Encryption Functionality in Reporting Services
Reporting Services uses cryptographic functions that are part of the Windows operating system. Both
symmetric and asymmetric encryption are used.
Data in the report server database is encrypted using a symmetric key. There is a single symmetric key for each
report server database. This symmetric key is itself encrypted using the public key of an asymmetric key pair
generated by Windows. The private key is held by the Report Server Windows service account.
In a report server scale-out deployment where multiple report server instances share the same report server
database, a single symmetric key is used by all report server nodes. Each node must have a copy of the shared
symmetric key. A copy of the symmetric key is created for each node automatically when the scale-out
deployment is configured. Each node encrypts its copy of the symmetric key using the public key of a key pair
specific to its Windows service account. To learn more about how the symmetric key is created for both single
instance and scale-out deployments, see Initialize a Report Server (Report Server Configuration Manager).
Also, starting in 2019, the report server database can be configured with Transparent Data Encryption in SQL
Server to provide additional protection for your data at rest.

NOTE
When you change the Report Server Windows service account, the asymmetric keys can become invalid, which will disrupt
server operations. To avoid this problem, always use the Reporting Services Configuration tool to modify service account
settings. When you use the configuration tool, the keys are updated for you automatically. For more information, see
Configure the Report Server Service Account (Report Server Configuration Manager).

Other Sources of Confidential Data


A report server stores other data that is not encrypted, yet may contain sensitive information that you want to
protect. Specifically, report history snapshots and report execution snapshots contain query results that may
include data that is intended for authorized users. If you are using snapshot functionality for reports that contain
confidential data, be aware that users who can open tables in a report server database may be able to view
portions of a stored report by inspecting the contents of the table.

NOTE
Reporting Services does not support caching or report history for reports that use parameters based on the security
identify of the user.

See Also
Configure and Manage Encryption Keys (Report Server Configuration Manager)
SSRS Encryption Keys - Back Up and Restore
Encryption Keys
3/5/2021 • 4 minutes to read • Edit Online

Applies to: SQL Server 2016 (13.x) and later


An important part of report server configuration is creating a backup copy of the symmetric key used for
encrypting sensitive information. A backup copy of the key is required for many routine operations, and enables
you to reuse an existing report server database in a new installation.
Applies to: Reporting Services Native Mode | Reporting Services SharePoint mode

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

It is necessary to restore the backup copy of the encryption key when any of the following events occur:
Changing the Report Server Windows service account name or resetting the password. When you use
the Report Server Configuration Manager, backing up the key is part of a service account name change
operation.

NOTE
Resetting the password is not the same as changing the password. A password reset requires permission to
overwrite account information on the domain controller. Password resets are performed by a system administrator
when you forget or do not know a particular password. Only password resets require symmetric key restoration.
Periodically changing an account password does not require you to reset the symmetric key.

Renaming the computer or instance that hosts the report server (a report server instance is based on a
SQL Server instance name).
Migrating a report server installation or configuring a report server to use a different report server
database.
Recovering a report server installation due to hardware failure.
You only need to back up one copy of the symmetric key. There is a one-to-one correspondence between a
report server database and a symmetric key. Although you only need to back up one copy, you might need to
restore the key multiple times if you are running multiple report servers in a scale-out deployment model. Each
report server instance will need its copy of the symmetric key to lock and unlock data in the report server
database.
Backing up the symmetric key is a process that writes the key to a file that you specify, and then scrambles the
key using a password that you provide. The symmetric key can never be stored in an unencrypted state so you
must provide a password to encrypt the key when you save it to disk. After the file is created, you must store it
in a secure location and remember the password that is used to unlock the file. To backup the symmetric key,
you can use the following tools:
Native mode: Either the Report Server Configuration Manager or the rskeymgmt utility.
SharePoint mode: SharePoint Central Administration pages or PowerShell.

Backup SharePoint Mode Report Servers


For SharePoint mode report servers you can either use PowerShell commands or use the management pages
for the Reporting Services service application. For more information, see the "Key Management" section of
Manage a Reporting Services SharePoint Service Application

Back up encryption keys -Report Server Configuration Manager


(Native Mode)
1. Start the Report Server Configuration Manager, and then connect to the report server instance you want
to configure.
2. Click Encr yption Keys , and then select Back Up .
3. Type a strong password.
4. Specify a file to contain the stored key. Reporting Services appends a .snk file extension to the file.
Consider storing the file on a disk separate from the report server.
5. Select OK .
Back up encryption keys -rskeymgmt (Native Mode )
1. Run rskeymgmt.exe locally on the computer that hosts the report server. You must use the -e extract
argument to copy the key, provide a file name, and specify a password. The following example illustrates
the arguments you must specify:

rskeymgmt -e -f d:\rsdbkey.snk -p<password>

Restore Encryption Keys


Restoring the symmetric key overwrites the existing symmetric key that is stored in the report server database.
Restoring an encryption key replaces an unusable key with a copy that you previously saved to disk. Restoring
encryption keys results in the following actions:
The symmetric key is opened from the password protected backup file.
The symmetric key is encrypted using the public key of the Report Server Windows service.
The encrypted symmetric key is stored in the report server database.
The previously stored symmetric key data (for example, key information that was already in the report
server database from a previous deployment) is deleted.
To restore the encryption key, you must have a copy of the encryption key on file. You must also know the
password that unlocks the stored copy. If you have the key and the password, you can run the Reporting
Services Configuration tool or rskeymgmt utility to restore the key. The symmetric key must be the same one
that locks and unlocks encrypted data currently stored in the report server database. If you restore a copy that is
not valid, the report server cannot access the encrypted data currently stored in the report server database. If
this occurs, you might need to delete all encrypted values if you cannot restore a valid key. If for some reason
you cannot restore the encryption key (for example, if you do not have a backup copy), you must delete the
existing key and encrypted content. For more information, see Delete and Re-create Encryption Keys (Report
Server Configuration Manager). For more information about creating symmetric keys, see Initialize a Report
Server (Report Server Configuration Manager).
Restore encryption keys -Report Server Configuration Manager (Native Mode )
1. Start the Report Server Configuration Manager, and then connect to the report server instance you want
to configure.
2. On the Encryption Keys page, select Restore .
3. Select the .snk file that contains the back up copy.
4. Type the password that unlocks the file.
5. Select OK .
Restore encryption keys - rskeymgmt (Native Mode )
1. Run rskeymgmt.exe locally on the computer that hosts the report server. Use the -a argument to
restore the keys. You must provide a fully-qualified file name and specify a password. The following
example illustrates the arguments you must specify:

rskeymgmt -a -f d:\rsdbkey.snk -p<password>

See Also
Configure and Manage Encryption Keys (Report Server Configuration Manager)
Delete and Recreate Encryption Keys (Report
Server Configuration Manager)
11/2/2020 • 5 minutes to read • Edit Online

Deleting and recreating encryption keys are activities that fall outside of routine encryption key maintenance.
You perform these tasks in response to a specific threat to your report server, or as a last resort when you can
no longer access a report server database.
Recreate the symmetric key when you believe the existing symmetric key is compromised. You can also
recreate the key on a regular basis as a security best practice.
Delete existing encryption keys and unusable encrypted content when you cannot restore the symmetric
key.

Recreating Encryption Keys


If you have evidence that the symmetric key is known to unauthorized users, or if your report server has been
under attack and you want to reset the symmetric key as a precaution, you can recreate the symmetric key.
When you recreate the symmetric key, all encrypted values will be re-encrypted using the new value. If you are
running multiple report servers in a scale-out deployment, all copies of the symmetric key will be updated to
the new value. The report server uses the public keys available to it to update the symmetric key for each server
in the deployment.
You can only recreate the symmetric key when the report server is in a working state. Recreating the encryption
keys and re-encrypting content disrupts server operations. You must take the server offline while re-encryption
is underway. There should be no requests made to the report server during re-encryption.
You can use the Reporting Services Configuration tool or the rskeymgmt utility to reset the symmetric key and
encrypted data. For more information about how the symmetric key is created, see Initialize a Report Server
(Report Server Configuration Manager).
How to recreate encryption keys (Reporting Services Configuration Tool)
1. Disable the Report Server Web service and HTTP access by modifying the IsWebSer viceEnabled
property in the rsreportserver.config file. This step temporarily stops authentication requests from being
sent to the report server without completely shutting down the server. You must have minimal service so
that you can recreate the keys.
If you are recreating encryption keys for a report server scale-out deployment, disable this property on
all instances in the deployment.
a. Open Windows Explorer and navigate to drive:\Program Files\Microsoft SQL
Server\report_server_instance\Reporting Services. Replace drive with your drive letter and
report_server_instance with the folder name that corresponds to the report server instance for
which you want to disable the Web service and HTTP access. For example, C:\Program
Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services.
b. Open the rsreportserver.config file.
c. For the IsWebSer viceEnabled property, specify False , and then save your changes.
2. Start the Reporting Services Configuration tool, and then connect to the report server instance you want
to configure.
3. On the Encryption Keys page, click Change . Click OK .
4. Restart the Report Server Windows service. If you are recreating encryption keys for a scale-out
deployment, restart the service on all instances.
5. Re-enable the Web service and HTTP access by modifying the IsWebSer viceEnabled property in the
rsreportserver.config file. Do this for all instances if you are working with a scale out deployment.
How to recreate encryption keys (rskeymgmt)
1. Disable the Report Server Web service and HTTP access. Use the instructions in the previous procedure
to stop Web service operations.
2. Run rskeymgmt.exe locally on the computer that hosts the report server. Use the -s argument to reset
the symmetric key. No other arguments are required:

rskeymgmt -s

3. Restart the Reporting Services Windows service.

Deleting Unusable Encrypted Content


If for some reason you cannot restore the encryption key, the report server will never be able to decrypt and use
any data that is encrypted with that key. To return the report server to a working state, you must delete the
encrypted values that are currently stored in the report server database and then manually re-specify the values
you need.
Deleting the encryption keys removes all symmetric key information from the report server database and
deletes any encrypted content. All unencrypted data is left intact; only encrypted content is removed. When you
delete the encryption keys, the report server re-initializes itself automatically by adding a new symmetric key.
The following occurs when you delete encrypted content:
Connection strings in shared data sources are deleted. Users who run reports get the error "The
ConnectionString property has not been initialized."
Stored credentials are deleted. Reports and shared data sources are reconfigured to use prompted
credentials.
Reports that are based on models (and require shared data sources configured with stored or no
credentials) will not run.
Subscriptions are deactivated.
Once you delete encrypted content, you cannot recover it. You must re-specify connection strings and stored
credentials, and you must activate subscriptions.
You can use the Reporting Services Configuration tool or the rskeymgmt utility to remove the values.
How to delete encryption keys (Reporting Services Configuration Tool)
1. Start the Reporting Services Configuration tool, and then connect to the report server instance you want
to configure.
2. Click Encr yption Keys , and then click Delete . Click OK .
3. Restart the Report Server Windows service. For a scale-out deployment, do this on all report server
instances.
How to delete encryption keys (rskeymmgt)
1. Run rskeymgmt.exe locally on the computer that hosts the report server. You must use the -d apply
argument. The following example illustrates the argument you must specify:

rskeymgmt -d

2. Restart the Report Server Windows service. For a scale-out deployment, do this on all report server
instances.
How to re -specify encrypted values
1. For each shared data source, you must retype the connection string.
2. For each report and shared data source that uses stored credentials, you must retype the user name and
password, and then save. For more information, see Specify Credential and Connection Information for
Report Data Sources.
3. For each data-driven subscription, open each subscription and retype the credentials to the subscription
database.
4. For subscriptions that use encrypted data (this includes the File Share delivery extension and any third-
party delivery extension that uses encryption), open each subscription and retype credentials.
Subscriptions that use Report Server e-mail delivery do not use encrypted data and are unaffected by the
key change.

See Also
Configure and Manage Encryption Keys (Report Server Configuration Manager)
Store Encrypted Report Server Data (Report Server Configuration Manager)
Add and Remove Encryption Keys for Scale-Out
Deployment
11/2/2020 • 3 minutes to read • Edit Online

You can run Reporting Services in a scale-out deployment model by configuring multiple report servers to use a
shared report server database. Membership in a scale-out deployment is based on whether the report server
stores an encryption key in the report server database. You can control scale-out deployment membership by
adding and removing encryption keys for specific report server instances. If you are removing nodes from the
deployment, you can remove them in any order. If you are adding nodes to a deployment, you must join any
new instances from a report server that is already part of the deployment.

Using the Reporting Services Configuration Tool to Configure Scale-


Out Deployment
The easiest way to configure a scale-out deployment is to use the Reporting Services Configuration tool. For
more information and step-by-step instructions, see Configure a Native Mode Report Server Scale-Out
Deployment (Report Server Configuration Manager).

Using Rskeymgmt to Configure Scale-Out Deployment


Use the rskeymgmt utility to initialize a report server instance to use a shared report server database. Adding a
report server to a scale-out deployment requires that you initialize the report server. Initialization requires
administrator permissions. You must have administrator credentials for the remote computer that hosts the
report server you are joining to the deployment.
How to join a report server to a scale -out deployment (rskeymgmt)
1. Run rskeymgmt.exe locally on the computer that hosts a report server that is already a member of the
report server scale-out deployment.
2. Use the -j argument to join a report server to the report server database. Use the -m and -n arguments
to specify the remote report server instance you want to add to the deployment. Use the -u and -v
arguments to specify an administrator account on the remote computer. If you are creating a scale-out
deployment using multiple report server instances on the same computer, the syntax to use is slightly
different. For more information about the syntax you should use, see rskeymgmt Utility (SSRS).
The following example illustrates the arguments you must specify if you are joining a remote report
server to a scale-out deployment (you can omit credentials if you have administrator permissions on the
remote computer):

rskeymgmt -j -m <remotecomputer> -n <namedreportserverinstance> -u <administratoraccount> -v


<administratorpassword>

3. Restart the Reporting Services Windows Service.


How to remove a report server from a scale -out deployment (rskeymgmt)
1. Open the rsreportserver.config file of the report server you want to remove and find the installation ID.
By default, this file is located at Program Files\Microsoft SQL Server\MSSQL.n\Reporting
Services\ReportServer).
If you installed a single instance, there will only be one rsreportserver.config file on the computer. If
multiple instances of Reporting Services are installed, use the Server Status page in the Reporting
Services Configuration tool to find the instance identifier (for example, MSSQL.2) for the report server
that you want to remove. The name of the folder that stores the program files for the report server
instance will be based on the instance identifier (for example, Program Files\Microsoft SQL
Server\MSSQL.2).
2. Run rskeymgmt.exe . You can run it on any report server that is part of the report server scale-out
deployment.
3. Use the -r argument to release the report server instance from the scale-out deployment. The following
example illustrates the arguments you must specify:

rskeymgmt -r <installation ID>

4. Restart the Reporting Services Windows Service.


These steps remove the report server from a scale-out deployment, but they do not uninstall the Reporting
Services instance on the report server. After you remove the report server from the scale-out deployment, you
can uninstall Reporting Services from the server if you no longer need Reporting Services on that server. For
information, see Uninstall an Existing Instance of SQL Server (Setup)

See Also
Configure and Manage Encryption Keys (Report Server Configuration Manager)
Initialize a Report Server (Report Server Configuration Manager)
Subscription Settings and a File Share Account
(Report Server Configuration Manager)
3/5/2021 • 3 minutes to read • Edit Online

Use the Subscription Settings page of the Reporting Services Configuration Manager to configure a file share
account for Native mode report servers and file share subscriptions. The file share account allows you to use a
single set of credentials in multiple subscriptions that deliver reports to a file share. When it is time to change
the credentials, you configure the change for the file share account and you do not need to update each
individual subscription.
Two workflows exist with Reporting Services file share subscriptions:
New in the SQL Server 2016 (13.x) release, your Reporting Services administrator can configure a single
file share account, that is used for one to many subscriptions. Configure the Specify a file share
account , and then on individual subscription configuration pages, users select Use file share account .
Configure individual subscriptions with specific credentials for the destination file share.
You can also mix the two approaches and have some file share subscriptions use the central file share
account while other subscriptions use specific credentials.
Applies to: Reporting Services Native mode.

Specify a file share account


If this option is selected you will be able to provide an account to be used to access file shares from the report
server. If you configure the file share account, all users can select the account for any subscriptions that are
configured to deliver reports to a file share. If this option is not selected, the file share account is not available
on any subscriptions.
Note, you need to verify the account you configure as the file share account has read and write permissions to
any file shares users will use for file share delivery.
The following image is what users see on subscriptions that are configured for file share delivery. The Use file
share account is disabled if a file share account has not been configured.

Prevent privilege escalation or elevated privileges


IMPORTANT
The Reporting Services service account controls subscription delivery and interacts with the account used for file share
subscriptions. Windows security features restrict combinations of 1) the Reporting Services service account and 2) the
account used for file share accounts. For example, if a built-in operating system account is used for the file share account,
then the Reporting Services service account must be another service account with impersonation permissions. If an
explicit file share account and password is configured, then the file share account requires the right to logon on to the
computer running the Reporting Services service. If the file share account does not have the required permissions,
subscriptions using the file share account will fail with an error message similar to the following:
"Failure writing file {file} : An impersonation error occurred using the security context of the current
user."

PowerShell sample to audit use of the file share account


Run the following Windows PowerShell script to list all Reporting Services subscriptions that are configured to
use the File share account . Update SERVERNAME to an appropriate value for your report server.

# get all file share subscriptions using the default file share account
$extensionNameMatch = "Report Server FileShare"
$extensionSettingMatch = "DEFAULTCREDENTIALS"
$valueMatch = "True"

# filter for subscriptions that have a given extension setting


filter script:extensionSettingFilter
{
# subscription must match the extension name
if($_.DeliverySettings.Extension -eq $extensionNameMatch)
{
# locate the extension parameter of interest
ForEach($extensionParameter in $_.DeliverySettings.ParameterValues)
{
# if the setting has the desired value, return the subscription
if($extensionParameter.Name -eq $extensionSettingMatch -and $extensionParameter.Value -eq
$valueMatch)
{
$_
break
}
}
}
}

$rs2010 = New-WebServiceProxy -Uri "https:// SERVERNAME/ReportServer/ReportService2010.asmx" -Namespace


SSRS.ReportingService2010 -UseDefaultCredential;
$subscriptions = $rs2010.ListSubscriptions("/");

Write-Host "----- File share subscriptions using the default file share account ----";
Write-Host "-------------------------------------------------------------------------- ";
$subscriptions | extensionSettingFilter | select report, owner, status, lastexecuted, description,
subscriptionid | format-table -auto

The output of the script looks similar to the following:


----- File share subscriptions using the default file share account ----

-----------------------------------------------------------------------------------------------------

Report Owner Status LastExecuted SubscriptionID

------------------------ -------------- -------- -------------------- ------------------------------------


Aworks_sales_by_territory DOMAIN\UserName Disabled 10/5/2014 1:04:04 PM e843bc2b-023e-45a3-ba23-22f9dc9a0934

See Also
File Share Delivery in Reporting Services
Create and Manage Subscriptions for Native Mode Report Servers
Configure a Native Mode Report Server Scale-Out
Deployment
8/27/2021 • 8 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services Enterprise Edition (2017 and later) ✔
️ Power BI Report Server
Reporting Services native mode supports a scale-out deployment model that allows you to run multiple report
server instances that share a single report server database. Scale-out deployments are used to increase
scalability of report servers to handle more concurrent users and larger report execution loads. It can also be
used to dedicate specific servers to process interactive or scheduled reports.

IMPORTANT
For Power BI Report Server, you need to configure client affinity (sometimes called sticky sessions or persistence) on the
load balancer for any scale-out environment to ensure proper performance and consistent Power BI (PBIX) report
functionality.

For SQL Server 2016 Reporting Services and earlier, SharePoint mode report servers utilize the SharePoint
products infrastructure for scale-out. SharePoint mode scale-out is performed by adding more SharePoint mode
report servers to the SharePoint farm. For information on scale-out in SharePoint mode, see Add an Additional
Report Server to a Farm (SSRS Scale-out).

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

A scale-out deployment is used in the following scenarios:


As a prerequisite for load balancing multiple report servers in a server cluster. Before you can load
balance multiple report servers, you must first configure them to share the same report server database.
To segment report server applications on different computers, by using one server for interactive report
processing and a second server for scheduled report processing. In this scenario, each server instance
processes different types of requests for the same report server content stored in the shared report
server database.
Scale-out deployments consist of :
Two or more report server instances sharing a single report server database.
Optionally, a network load-balanced (NLB) cluster to spread interactive user load across the report server
instances.
When deploying Reporting Services on an NLB cluster, you need to ensure the NLB virtual server name is used
in the configuration of report server URLs and that servers are configured to share the same view state.
Reporting Services does not participate in Microsoft Cluster Services clusters. However, you can create the
report server database on a Database Engine instance that is part of a failover cluster.
To plan, install, and configure a scale-out deployment, follow these steps:
Review Install SQL Server from the Installation Wizard (Setup) for instructions on how to install report
server instances.
If you are planning to host the scale-out deployment on a network load balanced (NLB) cluster, you
should configure the NLB cluster before you configure the scale-out deployment. For more information,
see Configure a Report Server on a Network Load Balancing Cluster.
Review the procedures in this topic for instructions on how to share a report server database and join
report servers to a scale-out.
The procedures explain how to configure a two-node report server scale-out deployment. Repeat the
steps described in this topic to add additional report server nodes to the deployment.
Use Setup to install each report server instance that will be joined to the scale-out deployment.
To avoid database compatibility errors when connecting the server instances to the shared
database, be sure that all instances are the same version. For example, if you create the report
server database using a SQL Server 2016 report server instance, all other instances in the same
deployment must also be SQL Server 2016.
Use the Report Server Configuration Manager to connect each report server to the shared
database. You can only connect to and configure one report server at a time.
Use the Reporting Services Configuration tool to complete the scale-out by joining new report
server instances to the first report server instance already connected to the report server
database.
Use SQL Server Reporting Services Enterprise Edition. See SQL Server Reporting Services features
supported by editions for details.

To install a SQL Server instance to host the report server databases


1. Install a SQL Server instance on a computer that will host the report server databases. At a minimum,
install SQL Server Database Engine and Reporting Services.
2. If necessary, enable the report server for remote connections. Some versions of SQL Server do not
enable remote TCP/IP and Named Pipes connections by default. To confirm whether remote connections
are allowed, use SQL Server Configuration Manager and view the network configuration settings of the
target instance. If the remote instance is also a named instance, verify that the SQL Server Browser
service is enabled and running on the target server. SQL Server Browser provides the port number that is
used to connect to the named instance.

Service accounts
The service accounts used for the Reporting Services instance are important when dealing with a scale-out
deployment. You should do one of the following when deploying your Reporting Services instances.
Option 1: All of the Reporting Services instances should be configured with the same domain user account for
the service account.
Option 2: Each individual service account, domain account or not, need to be granted dbadmin permissions
within the SQL Server database instance that is hosting the ReportServer catalog database.
If you have configured a different configuration than either of the above options, you may encounter
intermittent failures of modifying tasks with SQL Agent. This will show up as an error in both the Reporting
Services log and on the web portal when editing a report subscription.
An error occurred within the report server database. This may be due to a connection failure, timeout or
low disk condition within the database.

The issue will be intermittent is that only the server who created the SQL Agent task will have rights to view,
delete or edit the item. If you don't do one of the above options, the operations will only succeed when the load
balancer sends all of your requests for that subscription to the server that created the SQL Agent task.

To install the first report server instance


1. Install the first report server instance that is part of the deployment. When you install Reporting Services,
choose the Install but do not configure ser ver option on the Report Server Installation Options page.
2. Start the Reporting Services Configuration tool.
3. Configure the Report Server Web service URL, Web Portal URL, and the report server database. For more
information, see Configure a Report Server (Reporting Services Native Mode)
4. Verify that the report server is operational. For more information, see Verify a Reporting Services
Installation

To install and configure the second report server instance


1. Run Setup to install a second instance of Reporting Services on a different computer or as a named
instance on the same computer. When you install Reporting Services, choose the Install but do not
configure ser ver option on the Report Server Installation Options page.
2. Start the Reporting Services Configuration tool and connect to the new instance you just installed.
3. Connect the report server to the same database you used for the first report server instance:
a. Select Database to open the Database page.
b. Select Change Database .
c. Select Choose an existing repor t ser ver database .
d. Type the server name of the SQL Server Database Engine instance that hosts the report server
database you want to use. This must be the same server that you connected to in the previous set
of the instructions.
e. Select Test Connection , and then select Next .
f. In Repor t Ser ver Database , select the database you created for the first report server, and then
select Next . The default name is ReportServer. Do not select ReportServerTempDB; it is used only
for storing temporary data when processing reports. If the database list is empty, repeat the
previous four steps to establish a connection to the server.
g. In the Credentials page, select the type of account and credentials that the report server will use to
connect to the report server database. You can use the same credentials as the first report server
instance or different credentials. Select Next .
h. Select Summar y and then select Finish .
4. Configure the Report Server Web ser vice URL . Do not test the URL yet. It will not resolve until the
report server is joined to the scale-out deployment.
5. Configure the Web Por tal URL . Do not test the URL yet or try to verify the deployment. The report
server will be unavailable until the report server is joined to the scale-out deployment.
To join the second report server instance to the scale-out deployment
1. Open the Reporting Services Configuration tool, and reconnect to the first report server instance. The
first report server is already initialized for reversible encryption operations, so it can be used to join
additional report server instances to the scale-out deployment.
2. Click Scale-out Deployment to open the Scale-out Deployment page. You should see two entries, one
for each report server instance that is connected to the report server database. The first report server
instance should be joined. The second report server should be "Waiting to join". If you do not see similar
entries for your deployment, verify you are connected to the first report server that is already configured
and initialized to use the report server database.

3. On the Scale-out Deployment page, select the report server instance that is waiting to join the
deployment, and select Add Ser ver .

NOTE
Issue: When you attempt to join a Reporting Services report server instance to the scale-out deployment, you
may experience error messages similar to 'Access Denied'.
Workaround: Back up the Reporting Services encryption key from the first Reporting Services instance and
restore the key to the second Reporting Services report server. Then try to join the second server to the
Reporting Services scale-out deployment.

4. You should now be able to verify that both report server instances are operational. To verify the second
instance, you can use the Reporting Services Configuration tool to connect to the report server and click
the Web Ser vice URL or the Web Por tal URL .
If you plan to run the report servers in a load-balanced server cluster, additional configuration is required. For
more information, see Configure a Report Server on a Network Load Balancing Cluster.

Next steps
Configure a Service Account Configure a URL
Create a Native Mode Report Server Database
Configure Report Server URLs
Configure a Report Server Database Connection
Add and Remove Encryption Keys for Scale-Out Deployment
Manage a Reporting Services Native Mode Report Server
More questions? Try asking the Reporting Services forum
Power BI Report Server Integration (Configuration
Manager)
5/25/2021 • 8 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server 2016 Reporting Services and later ✔
️ Power BI Report Server
The Power BI Integration page in Reporting Services Configuration Manager is used to register the report
server with the desired Azure Active Directory (AD) managed tenant to allow users of the report server to pin
supported report items to Power BI dashboards. For a list of the supported items you can pin, see Pin Reporting
Services items to Power BI Dashboards.

Requirements for Power BI Integration


In addition to an active internet connection so you can browse to the Power BI service, the following are
requirements to complete Power BIintegration.
Azure Active Director y: Your organization must use Azure Active Directory, which provides directory
and identity management for Azure services and web applications. For more information, see What is
Azure Active Directory?
Managed Tenant: The Power BI dashboard you want to pin report items to must be part of an Azure AD
managed tenant. A managed tenant is created automatically the first time your organization subscribes to
Azure services such as Microsoft 365 and Microsoft Intune. Viral tenants are currently not supported. For
more information, see the sections "What is an Azure AD tenant" and "how to get an Azure AD Directory"
in What is an Azure AD directory?
The user performing the Power BI integration needs to be a member of the Azure AD tenant, a Reporting
Services system administrator and a system administrator for the ReportServer catalog database.
The user performing the Power BI integration needs to start the Reporting Services Configuration
Manager either with the account used to install Reporting Services, or the account the Reporting Services
service is running under.
The server with Reporting Services installed needs to be configured to use TLS 1.2 or newer. For more
information, see Transport Layer Security (TLS) best practices with the .NET Framework.
Reports that you want to pin from must use stored credentials. This is not a requirement of the Power BI
integration itself but of the refresh process for the pinned items. The action of pinning a report item
creates a Reporting Services subscription to manage the refresh schedule of the tiles in Power BI.
Reporting Services subscriptions require stored credentials. If a report does not use stored credentials, a
user can still pin report items but when the associated subscription attempts to refresh the data to Power
BI, you will see an error message similar to the following on the My Subscriptions page.
PowerBI Delivery error: dashboard: IT Spend Analysis Sample, visual: Chart2, error: The current action
cannot be completed. The user data source credentials do not meet the requirements to run this report or
shared dataset. Either the user data source credential.
For more information on how to store credentials, see the section "Configure stored credentials for a report-
specific data source" in Store Credentials in a Reporting Services Data Source.
An administrator can review the Reporting Services log files for more information. They will see messages
similar to the following. A great way to review and monitor Reporting Services logs files is to use Microsoft
Power Query over the files. for more information and a short video, see Report Server Service Trace Log.
subscription!WindowsService_1!1458!09/24/2015-00:09:27:: e ERROR: PowerBI Delivery error:
dashboard: IT Spend Analysis Sample, visual: Chart2, error: The current action cannot be completed. The
user data source credentials do not meet the requirements to run this report or shared dataset. Either the
user data source credentials are not stored in the report server database, or the user data source is
configured not to require credentials but the unattended execution account is not specified.
notification!WindowsService_1!1458!09/24/2015-00:09:27:: e ERROR: Error occurred processing
subscription fcdb8581-d763-4b3b-ba3e-8572360df4f9: PowerBI Delivery error: dashboard: IT Spend
Analysis Sample, visual: Chart2, error: The current action cannot be completed. The user data source
credentials do not meet the requirements to run this report or shared data set. Either the user data source
credentials are not stored in the report server database, or the user data source is configured not to
require credentials but the unattended execution account is not specified.

To Integrate and Register the Report Server


Complete the following steps from the Reporting Services Configuration Manager. For more information, see
Report Server Configuration Manager.
1. Select the Power BI integration page.
2. Select Register with Power BI .

NOTE
Make sure that port 443 is not blocked.

3. At the Microsoft sign-in dialog, enter the credentials you use to sign into Power BI.
4. After the registration is complete, the Power BI Registration Details section will note the Azure Tenant
ID and the Redirect URL(s). The URLs are used as part of the sign-in and communication process for the
Power BI dashboard to communicate back to the registered report server.
5. Select the Copy button in the Results window to copy the registration details to the Windows clipboard
so you can save them for future reference.

Unregister With Power BI


Unregister : Un-registering the report server from Azure Active Directory will result in the following:
The My Settings link will no longer be visible from the web portal menu bar.
Report items that have already been pinned will still be pinned to dashboards, however the tiles will no
longer be updated on the dashboard.
The Reporting Services subscriptions that were updating the tiles will still exist on the report server but
when they run on their configured schedule, they will show an error message similar to the following.
The deliver y extension for this subscription could not be loaded
From the Power BI page of configuration manager, select the Unregister with Power BI button.

Update Registration
Use the Update Registration if the configuration of your report server has changed. For example if you want
to add or remove the URLS your users use to browse to the web portal.
In Reporting Services Configuration Manager, select the Web Por tal URL
Select Advanced .
Select Add to add a new HTTP identity for the web portal and then select OK .
The Power BI icon will change to indicate the server configuration has changed.
On the Power BI Integration page, select Update Registration .
You will be prompted to login to Azure AD. The page will refresh and you will see the new URL listed in
the Redirect URLs .

Summary of the Power BI Integration and Pin Process


This sections summarizes the basic steps and technologies involved when you integrate your report server with
Power BI and pin a report item to a dashboard.
Integrate:
1. In Configuration manager, when you select the Register with Power BI button, you will be prompted to
sign in to Azure Active Directory.
2. The Power BI Client App is registered with your managed Tenant.
3. Your managed tenant within Azure Active Directory is where the Power BI Client app is created.
4. The registration includes a redirect URL(s) that are used when users sign in from the report server. The
App ID and URLS are saved to the ReportServer database. The redirect URL is used during authentication
calls to Azure so that the call can return to the report server. For example, when users sign in or pin items
to a dashboard.
5. The App ID and URLS are displayed in Configuration Manager.

When a user pins a repor t item to a dashboard:


1. Users preview reports in the Reporting Services web portal and the first time they click to pin a report
item from the web portal.
2. They will be redirected to the Azure AD sign-in page. They can also sign in from the web portal My
Settings page. When users sign in to the Azure managed tenant, a relationship is established between
their Azure account and the Reporting Services permissions. For more information, see My Settings for
Power BI Integration (web portal).
3. A user security token is returned to the report server.
4. The user security token is saved to the ReportServer database.
5. A list of groups, and dashboards, the user has access to are retrieved from the Power BI service. The user
selects the destination group, and dashboard, and the configure how often they want the data refreshed
on the Power BI tile.
6. The report item is pinned to the dashboard.
7. A Reporting Services subscription is created to manage the scheduled refresh of the report item to the
dashboard tile. The subscription uses the security token that was created when the user signed in.
The token is good for 90 days , after which users need to sign in again to create a new user token. When
the token is expired, the pinned tiles will still be displayed on the dashboard but the data will no longer be
refreshed. The Reporting Services subscriptions used for the pinned items will error until a new user
token is created. See My Settings for Power BI Integration (web portal). for more information.
The second time a user pins an item, the steps 1-4 are skipped and instead the App id and URLS are retrieved
from the ReportServer database and the flow continues with step 5.

When a subscription fires to refresh a dashboard tile:


1. When the Reporting Services subscription fires, the report is rendered.
2. The user token is retrieved from the ReportServer database.
3. The report item state and data is sent with the token to the Power BIservice.
4. The token is sent to Azure AD for validation. If the token is valid, the report item data is sent to the
dashboard tile and the date property of the tile is updated.
5. If the token is not valid, and error is returned and logged with the report server. No status or other
information is sent to the dashboard.
https://www.youtube.com/embed/QhPQObqmMPc

Considerations and limitations


Viral and government tenants are not supported.

Next steps
My Settings for Power BI Integration (web portal)
Pin Reporting Services items to Power BI Dashboards Dashboards in Power BI
More questions? Try asking the Reporting Services forum
Install Reporting Services 2016 in SharePoint mode
3/5/2021 • 2 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services (2016) ❌ SQL Server Reporting Services (2017) ✔

SharePoint ❌ Power BI Report Server
For content related to previous versions of SQL Server Reporting Services (SSRS), see SQL Server 2014
Reporting Services.
SQL Server Reporting Services in SharePoint, enables report creation and viewing in document libraries,
Reporting Services subscription delivery of reports through email, Power View, data alerting, and report
management features, all in a deployment of based of Microsoft SharePoint. For more information regarding
features in SharePoint mode, see the section "Feature Support and Behavior Differences by Server Mode" in
Reporting Services Report Server.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

There are two core Reporting Services components to install for Reporting Services in SharePoint mode:

IN STA L L AT IO N DESC RIP T IO N

Repor t Ser ver : The Microsoft SQL Server Reporting The report server handles the data and report processing
Services report server installed in SharePoint Mode and rendering as well subscription and Data Alert
processing. The SharePoint mode report server is designed
and installed as a SharePoint Shared Service.

How: Use the SQL Server installation media to install the


report server.

Add-in: The Microsoft SQL Server Reporting Services add- The add-in installs the Reporting Services user interface (UI)
in for SharePoint products, rssharepoint.msi. pages and features on a SharePoint web front-end server.
The UI features include Power View, administration pages in
SharePoint Central Administration, feature pages used within
SharePoint document libraries, and Reporting Services Data
Alerting pages.

How: The add-in can be installed from either a Web


download or the SQL Server installation media. For more
information, see Where to find the Reporting Services add-in
for SharePoint Products.

In this section
Supported Combinations of SharePoint and Reporting Services Server and Add-in (SQL Server 2016)
Where to find the Reporting Services add-in for SharePoint Products
Install The First Report Server in SharePoint Mode
Install or Uninstall the Reporting Services Add-in for SharePoint
Add an Additional Report Server to a Farm (SSRS Scale-out)
Add an Additional Reporting Services Web Front-end to a Farm
Configure E-mail for a Reporting Services Service Application (SharePoint 2013 and SharePoint 2016)
Provision Subscriptions and Alerts for SSRS Service Applications
Claims to Windows Token Service (c2WTS) and Reporting Services

Next steps
Data Alerts Architecture and Workflow
Data Alert Manager for Alerting Administrators
More questions? Try asking the Reporting Services forum
Supported combinations of SharePoint and
Reporting Services server
8/30/2021 • 3 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services (2016) ❌ SQL Server Reporting Services (2017) ✔

SharePoint ❌ Power BI Report Server
For content related to previous versions of SQL Server Reporting Services (SSRS), see SQL Server 2014
Reporting Services.
A SQL Server Reporting Services report server installed in SharePoint mode requires a version of SharePoint
and the SQL Server Reporting Services add-in (rsSharePoint.msi) for SharePoint products, which you install on
the SharePoint servers. This topic summarizes the supported combinations.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016. To add a report within a
SharePoint site using SQL Server Reporting Services 2017 and later, use the Report Viewer web part.

Supported combinations of SharePoint and Reporting Services


components
The following table summarizes the supported combinations of report server, the Reporting Services add-in for
SharePoint products, and SharePoint products. Combinations that are not list in the following table are not
supported
Supported combinations
N UM B ER REP O RT SERVER A DD- IN SH A REP O IN T VERSIO N

1 SQL Server 2016 SQL Server 2016 SharePoint 2016

2 SQL Server 2016 SQL Server 2016 SharePoint 2013

3 SQL Server 2014 SQL Server 2014 SharePoint 2013

4 SQL Server 2014 SQL Server 2014 SharePoint 2010

5 SQL Server 2012 SP4 SQL Server 2014 and SQL SharePoint 2013
Server 2012 SP4

6 SQL Server 2012 SP3 SQL Server 2014 and SQL SharePoint 2013
Server 2012 SP3

7 SQL Server 2012 SP2 SQL Server 2014 and SQL SharePoint 2013
Server 2012 SP2

8 SQL Server 2012 SP1 SQL Server 2014 and SQL SharePoint 2013
Server 2012 SP1
N UM B ER REP O RT SERVER A DD- IN SH A REP O IN T VERSIO N

9 SQL Server 2012 and SQL SQL Server 2014 SharePoint 2010
Server 2012 SP1*

10 SQL Server 2012 SQL Server 2012 SharePoint 2010

11 SQL Server 2008 R2 SQL Server 2014 SharePoint 2010

12 SQL Server 2008 R2 SQL Server 2012 and SQL SharePoint 2010
Server 2012 SP1 or later

13 SQL Server 2008 R2 SQL Server 2008 R2 SharePoint 2010

14 SQL Server 2008 R2 SQL Server 2008 SP2 SharePoint 2007

15 SQL Server 2008 SP2 SQL Server 2008 R2 SharePoint 2010

16 SQL Server 2008 SP2 SQL Server 2008 and SQL SharePoint 2007
Server 2008 SP2

*Exception: Power view integration is not supported.


For links to the add-in download pages, see Where to find the Reporting Services add-in for SharePoint
Products.
Additional considerations:
Be sure to upgrade to upgrade all of the SharePoint servers within the farm. This includes the App and
Web Front End servers.
SharePoint 2016 support, including Power view integration, requires the Reporting Services report
server and the Reporting Services add-in version of SQL Server 2016 or later.
SharePoint 2013 support, including Power view integration, requires the Reporting Services report
server and the Reporting Services add-in version of SQL Server 2012 SP1 or later.
Power View was introduced in SQL Server 2012. Therefore, Power View integration with SharePoint 2010
requires the SQL Server 2012 or later of the add-in.
The SQL Server 2008 R2 Add-In is not supported by SQL Server 2012 (or later) report servers. The
SharePoint 2010 prerequisite installer automatically installs the SQL Server 2008 R2 Add-In. It must be
uninstalled before installing newer versions of the add-in. In place upgrade of the add-in is not
supported.
Upgrade: SharePoint 2010 with the Reporting Services Add-In installed, cannot be upgraded in-place to
SharePoint 2013. SharePoint 2013 requires SQL Server 2012 SP1 or later of the Reporting Services add-
in and report server. For more information on upgrade, see Upgrade and Migrate Reporting Services.

Next steps
Where to find the Reporting Services add-in for SharePoint Products
Features Supported by the Editions of SQL Server 2016
Hardware and Software Requirements for Installing SQL Server 2016
More questions? Try asking the Reporting Services forum
Where to find the Reporting Services add-in for
SharePoint Products
3/5/2021 • 2 minutes to read • Edit Online

The Microsoft SQL Server Reporting Services (SSRS) add-in for SharePoint Products and Technologies
(rssharepoint.msi) is a Web download that provides features to integrate a report server with a deployment of
SharePoint.

IMPORTANT
For a list of the supported combinations of the Reporting Services add-in, report server, and SharePoint, see Supported
Combinations of SharePoint and Reporting Services Server and Add-in (SQL Server 2016).

SQL Server 2016 (13.x) Reporting Services Add-in for SharePoint


Products
To download and install the add-in see the Microsoft Download Center:
Microsoft® SQL Server 2016 Reporting Services Add-in for Microsoft SharePoint
The SQL Server 2016 (13.x) version of the add-in is also available in the SQL Server 2016 (13.x) Installation
wizard:
On the Feature Selection page of the setup wizard, select Repor ting Ser vices Add-in for
SharePoint Products
From a command prompt installation, use the RS_SHPWFE option to install the add-in. For more
information on Reporting Services command prompt installations, see Install Reporting Services at the
Command Prompt.

SQL Server 2014 (12.x) Reporting Services Add-in for SharePoint


Products
To download and install the add-in see the Microsoft Download Center:
Microsoft® SQL Server 2014 Reporting Services Add-in for Microsoft SharePoint
The SQL Server 2014 (12.x) version of the add-in is also available in the SQL Server 2014 (12.x) Installation
wizard:
On the Feature Selection page of the setup wizard, select Repor ting Ser vices Add-in for
SharePoint Products
From a command prompt installation, use the RS_SHPWFE option to install the add-in. For more
information on Reporting Services command prompt installations, see Install Reporting Services at the
Command Prompt.

SQL Server 2012 SP1 (11.0.3x) Reporting Services Add-in for


SharePoint Products
The SQL Server 2012 SP1 (11.0.3x) version of the add-in and report server, add support for SharePoint Server
2013.
To download and install the add-in see the Microsoft Download Center:
SP1 add-in: Microsoft® SQL Server® 2012 SP1 Reporting Services Add-in for Microsoft®
SharePoint®(https://www.microsoft.com/download/details.aspx?id=35583).
SP1: Microsoft® SQL Server® 2012 Service Pack 1 (SP1)
(https://www.microsoft.com/download/details.aspx?id=35575).

SQL Server 2012 (11.x) Reporting Services Add-in for SharePoint 2010
Products
In the SQL Server 2016 release, the add-in can be installed as part of the SQL Server Installation wizard, in the
Feature Selection page. If you want to download and install the add-in separately, the most up-to-date version of
this file is available online at the Microsoft Download Center at Microsoft® SQL Server® 2012 Reporting
Services Add-in for Microsoft® SharePoint® Technologies 2010 page.

Next steps
Install or Uninstall the Reporting Services Add-in for SharePoint
You are not able to browse SharePoint pages in non-default zone after uninstalling Reporting Services add-in
More questions? Try asking the Reporting Services forum
Install the first Report Server in SharePoint mode
3/31/2021 • 18 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services (2016) ❌ Power BI Report Server ✔
️ SharePoint
The procedures in this topic guide you through a single server installation of Reporting Services in SharePoint
mode. The steps include running the SQL Server installation wizard as well as configuration tasks that use
SharePoint Central Administration. The topic can also be used for individual procedures for updating an existing
installation, for example to create a Reporting Services service application.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

For information on adding more Reporting Services servers to an existing farm, see the following:
Add an Additional Report Server to a Farm (SSRS Scale-out)
Add an Additional Reporting Services Web Front-end to a Farm
A single server installation is useful for development and testing scenarios but it is not recommended for
production environments.

Example single-server deployment


A single-server installation is useful for development and testing scenarios but a single-server is not
recommended for a production environment. The single-server environment refers to a single computer that
has SharePoint and Reporting Services components installed on the same computer. The topic does not cover
scale-out with multiple Reporting Services servers.
The following diagram illustrates the components that are part of a single server Reporting Services
deployment.

NOTE
For SharePoint 2016, Excel Services has moved to the Office Online Server and cannot be used in a single server
deployment. Office Online Server has to be deployed to a different server. For more information, see Office Online Server
overview and Configure Excel Online administrative settings.

C O M P O N EN T DESC RIP T IO N

(1) SharePoint service installed from SQL Server installation. You


can create one or more Reporting Services service
applications.

(2) Reporting Services add-in for SharePoint products provides


the user interface components on the SharePoint Servers.

(3) The Excel Service Application used by Power View and Power
Pivot. This is not available in a single server deployment for
SharePoint 2016. An Office Online Server is required.
C O M P O N EN T DESC RIP T IO N

(4) Power Pivot service application.

TIP
For more complex deployment examples, see Deployment Topologies for SQL Server BI Features in SharePoint.

Setup accounts
This section describes the accounts and permissions used for the primary deployment steps of Reporting
Services in SharePoint mode.
Installation and registering the Repor ting Ser vices Ser vice:
The current account during the installation (referred to as the 'setup' account) of Reporting Services in
SharePoint mode needs to have administrative rights in the local computer. If you are installing Reporting
Services after SharePoint is installed and the 'setup' account is also a member of the SharePoint farm
administrators group, the Reporting Services installation will register the Reporting Services service for you.
If you install Reporting Services before SharePoint is installed or the 'setup' account is not a member of the
farm administrators group, you register the service manually. See the section Step 2: Register and Start the
Reporting Services SharePoint Service.
Creating Repor ting Ser vices Ser vice Applications
Following installation and registering the Reporting Services service, create one or more Reporting
Services service applications. The "SharePoint farm service account " needs to temporarily be a member
of the local administrators group so the Reporting Services service application can be created. For more
information on SharePoint 2013 account permissions, see Account permissions and security settings in
SharePoint 2013 (https://technet.microsoft.com/library/cc678863.aspx) or for SharePoint 2016, see
Account permissions and security settings in SharePoint 2016.
It is security best practice that SharePoint farm administrator accounts are not also local operating system
administrator accounts. If you add a farm admin account to the local administrators group as part of your
installation process, it is recommended you remove the account from the local administrators group after
installation is complete.

Step 1: Install Reporting Services Report Server in SharePoint mode


This step installs a Reporting Services report server in SharePoint mode and the Reporting Services add-in for
SharePoint products. Depending on what is already installed on your computer, you may not see some of the
installation pages described in the following steps.

IMPORTANT
For SharePoint 2016, the SharePoint server that Reporting Services will be installed on needs to have the Custom server
role. The deployment of Reporting Services will succeed on a SharePoint server that is not in the Custom role, but during
the next SharePoint maintenance window, MinRole will stop the Reporting Services service because it detects that
Reporting Services in SharePoint-integrated mode does not indicate support for any of the other SharePoint server roles.
The Reporting Services service application only supports the Custom role.

NOTE
If you plan to install the Power Pivot service as well, on SharePoint 2016, install that prior to installing Reporting Services.
The Power Pivot service can only be installed on a SharePoint server in the Custom role.

Apply the custom server role to a SharePoint 2016 server

NOTE
This does not apply to SharePoint 2013.

1. Log onto the SharePoint server that you plan to install Reporting Services.
2. Launch the SharePoint 2016 Management Shell as an adminsitrator.
You can right-click on the SharePoint 2016 Management Shell and select Run as adminsitrator .
3. From the PowerShell command prompt, run the following command.

NOTE
Make sure you specify the correct name of the SharePoint server.

Set-SPServer SERVERNAME -Role Custom

4. You should see a response that a timer job was scheduled. You will need to wait for the job to execute.
5. Use the following command to verify the server's assigned role.

Get-SPServer SERVERNAME

6. The Role should list Custom .


Install Reporting Services
1. Run the SQL Server Installation Wizard (Setup.exe).
2. Select Installation in the left side of the wizard and then select New SQL Ser ver stand-alone
installation or add features to an existing installation .
3. If you see the Product Key page, type your key or accept the default of the 'Enterprise Evaluation'
edition.
Select Next .
4. If you see the License terms page, review and accept the license terms. Microsoft appreciates you
agreeing to send feature usage data to help improve product features and support.
Select Next .
5. It is recommended that you select Use Microsoft Update to check for updates (recommended) .
This is optional.
Select Next .
6. On the Instal Setup Files page, depending on what is already installed on your computer, you might see
the following message:
"One or more affected files have operations pending. You must restart your computer after the
setup process is completed."
Select Next .
7. If you see the Install Rules page. Review any warnings or blocking issues. Then select Next .
8. Select the following on the Feature Selection page:
Repor ting Ser vices - SharePoint
Repor ting Ser vices add-in for SharePoint Products .
You could optionally also select Database Engine Ser vices for a complete environment,
however you should have a SQL Server Database Engine instance that is hosting the SharePoint
databases.
Select Next .

9. If you selected the Database Engine services, accept the default instance of MSSQLSERVER on the
Instance Configuration page and click Next .
The Reporting Services SharePoint service architecture is not based on a SQL Server "instance" as
was the previous Reporting Services architecture.
10. If you see the Ser ver Configuration page type appropriate credentials. If you want to use the Reporting
Services data alerting or subscription features, you need to change the Star tup Type for SQL Server
Agent to Automatic . You may not see the Ser ver Configuration page, depending on what is already
installed on the computer.
Select Next .
11. If you selected the Database Engine services, you will see the Database Engine Configuration page,
add appropriate accounts to the list of SQL Administrators and select Next .
12. On the Repor ting Ser vices Configuration page you should see the Install only option is selected.
This option installs the report server files, and does not configure the SharePoint environment for
Reporting Services.

NOTE
When the SQL Server installation is complete, follow the other sections of this topic to configure the SharePoint
environment. This includes installing the Reporting Services shared service and creating Reporting Services service
applications.

13. Review any warnings and then select Next on the Feature Configuration Rules page if you stop on
this page.
14. On the Ready to Install page, review the installation summary. The summary will include a Repor ting
Ser vices SharePoint Mode child node that will show a value of SharePointFilesOnlyMode . Select
Install .
15. The installation will take several minutes. You will see the Complete page with the features listed and the
status of each feature. You may see an information dialog indicating the computer needs to be restarted.

Step 2: Register and start the Reporting Services SharePoint Service

NOTE
If you are installing into an existing SharePoint farm, you do not need to complete the steps in this section. The Reporting
Services SharePoint service is installed and started when you ran the SQL Server installation wizard as part of the
previous section of this document.

The following are the common reasons why you need to manually register the Reporting Services service.
You installed Reporting Services SharePoint mode before SharePoint was installed.
The account used to install Reporting Services SharePoint mode, was not a member of the SharePoint
farm administrators group. For more information, see the section Setup accounts.
The necessary files were installed as part of the SQL Server installation wizard, but the services need to be
registered into the SharePoint farm.
The following steps guide you through opening the SharePoint Management Shell and running PowerShell
cmdlets:
1. Select the Star t button
2. Select the Microsoft SharePoint 2016 Products or Microsoft SharePoint 2013 Products group.
3. Right-click SharePoint 2016 Management Shell , or SharePoint 2013 Management Shell , select
Run as administrator .

NOTE
The SharePoint commands are not recognized in the standard Windows PowerShell window. Use the SharePoint
Management Shell.

4. Run the following PowerShell command to install the Reporting Services SharePoint service. A successful
completion of the command displays a new line in the management shell. No message is returned to
the management shell when the command completes successfully:

Install-SPRSService

5. Run the following PowerShell command to install the Reporting Services service proxy. A successful
completion of the command displays a new line in the management shell. No message is returned to
the management shell when the command completes successfully:

Install-SPRSServiceProxy

6. Run the following PowerShell command to start the service or see the following notes for instructions on
how to start the service from SharePoint Central administration:

get-spserviceinstance -all |where {$_.TypeName -like "SQL Server Reporting*"} | Start-


SPServiceInstance

IMPORTANT
If you see an error message similar to the following:

> Install-SPRSService : The term 'Install-SPRSService' **is not recognized** as the name of a
cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was
included, verify that the path is correct and try again.

Either you are in the Windows Powershell instead of the SharePoint Management Shell or Reporting
Services SharePoint mode is not installed. For more information on Reporting Services and
PowerShell, see PowerShell cmdlets for Reporting Services SharePoint Mode.

You can also start the service from SharePoint central Administration rather than running the third PowerShell
command. The following steps are also useful to verify that the service is running.
1. In SharePoint Central Administration, click Manage Ser vices on Ser ver in the System Settings
group.
2. Find SQL Ser ver Repor ting Ser vices Ser vice and click Star t in the Action column.
3. The status of the Reporting Services service will change from Stopped to Star ted . If the Reporting
Services service is not in the list, use PowerShell to install the service.
NOTE
If the Reporting Services service stays in the Star ting status and does not change to Star ted , verify the
'SharePoint 2013 Administration' service is started in Windows Server Manager.

Step 3: Create a Reporting Services service application


This section provides the steps to create a service application and a description of the properties, if you are
reviewing an existing service application.
1. In SharePoint Central Administration, in the Application Management group, select Manage Ser vice
Applications .
2. In the SharePoint ribbon, select the New button.
3. In the New menu, select SQL Ser ver Repor ting Ser vices Ser vice Application..

IMPORTANT
If the Reporting Services option does not appear in the list, it is an indication that the Repor ting Ser vices
shared ser vice is not installed . Review the previous section on how to use PowerShell cmdlts to install the
Reporting Services service.

4. In the Create SQL Ser ver Repor ting Ser vices Ser vice Application page, enter a name for the
application. If you are creating multiple Reporting Services service applications, a descriptive name or
naming convention will help you organize your administration and management operations.
5. In Application Pool section, create a new application pool for the application (recommended). If you use
the same name for both the application pool and the services application, it can make ongoing
administration easier. This can also be affected by how many service applications you will create and if
you need to use several in a single application pool. See the SharePoint Server documentation on
recommendations and best practices for application pool management.
Select or create a security account for the application pool. Be sure to specify a domain user account. A
domain user account enables the use of the SharePoint managed account feature, which lets you update
passwords and account information in one place. Domain accounts are also required if you plan to scale
out the deployment to include additional service instances that run under the same identity.
6. In the Database Ser ver , you can use the current server or choose a different SQL Server.
7. In Database Name the default value is ReportingService_<guid> , which is a unique database name. If
you type a new value, type a unique value. This is the new database to be created specifically for the
services application.
8. In Database Authentication , the default is Windows Authentication. If you choose SQL
Authentication , refer to SharePoint documentation for best practices on how to use this authentication
type in a SharePoint deployment.
9. In the Web Application Association section, select the Web Application to be provisioned for access by
the current Reporting Services Service Application. You can associate one Reporting Services service
application to one web application. If all of the current web applications are already associated with a
Reporting Services service application, you see a warning message.
10. Select OK .
11. The process to create a service application could take several minutes to complete. When it is complete,
you will see a confirmation message and a link to a Provision Subscriptions and Aler ts page.
Complete the provision step if you want to use the Reporting Services subscriptions feature or the data
alerts feature. For more information, see Provision Subscriptions and Alerts for SSRS Service
Applications.

For information on using PowerShell to create a Reporting Services service


application, see:
See the following section Windows PowerShell script for Steps 1-4.
Topic To create a Reporting Services Service Application using PowerShell.

Step 4: Activate the Power View site collection feature.


Power View, a feature of SQL Server 2016 Reporting Services Add-in for Microsoft SharePoint Products, is a site
collection feature. The feature is activated automatically for root site collections and site collections created after
the Reporting Services add-in is installed. If you plan to use Power View, verify that the feature is activated.
If you install the Reporting Services add-in for SharePoint Products after the installation of the SharePoint
Server, then the Report Server integration feature and the Power View integration feature will only be activated
for root site collections. For other site collections, manually activate the features.
To activate or verify the Power View site collection feature
1. The following steps assume your SharePoint site is configured for the 2013 experience version , for
SharePoint 2013.
Open your browser to the desired SharePoint site. For example https://<servername>/sites/bi
2. Select Settings .
3. Select Site settings .
4. In the Site Collection Administration group select Site collection features .
5. Find Power View Integration Feature in the list.
6. Select Activate . The feature status will change to Active .
This procedure is completed per site collection. For more information, see Activate the Report Server and Power
View Integration Features in SharePoint.

Windows PowerShell script for steps 1-4


The PowerShells script in this section are the equivalent of completing steps 1 to 4 in the previous sections. The
script completes the following:
Installs Reporting Services service and service proxy, and starts the service.
Creates a service proxy named "Reporting Services".
Creates a Reporting Services service application named "Reporting Services Application".
Enables the Power View feature for a site collection.
Parameters
Update the -Account for the service proxy. The account needs to be a managed service account in the
SharePoint farm. For more information, see the SharePoint topic Plan for administrative and service
accounts in SharePoint 2013.
Update the -DatabaseSer ver parameter for the service application. This parameter is the database
engine instance
Update the -url parameter of the site that you want the Power View feature enabled.
To use the script:
1. Open Windows PowerShell with administrative privileges.
2. Copy the following code into the script window.
3. Update the three parameters described in the previous section, and then run the script.

#This script Configures SQL Server Reporting Services SharePoint mode

$starttime=Get-Date
write-host -foregroundcolor DarkGray StartTime>> $starttime

Write-Host -ForegroundColor Green "Import the SharePoint PowerShell snappin"


Add-PSSnapin Microsoft.Sharepoint.Powershell -EA 0

Write-Host -ForegroundColor Green "Install SSRS Service and Service Proxy, and start the service"
Write-Host -ForegroundColor Green
">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"

Write-Host -ForegroundColor Green "Install the Reporting Services Shared Service"


Install-SPRSService

Write-Host -ForegroundColor Green " Install the Reporting Services Service Proxy"
Install-SPRSServiceProxy

# Get the ID of the RS Service Instance and start the service


Write-Host -ForegroundColor Green "Start the Reporting Services Service"
$RS = Get-SPServiceInstance | Where {$_.TypeName -eq "SQL Server Reporting Services Service"}
Start-SPServiceInstance -Identity $RS.Id.ToString()

# Wait for the Reporting Services Service to start...


$Status = Get-SPServiceInstance $RS.Id.ToString()
While ($Status.Status -ne "Online")
{
Write-Host -ForegroundColor Green "SSRS Service Not Online...Current Status = " $Status.Status
Start-Sleep -Seconds 2
$Status = Get-SPServiceInstance $RS.Id.ToString()
}

$time=Get-Date
write-host -foregroundcolor DarkGray StartTime>> $starttime
write-host -foregroundcolor DarkGray $time

Write-Host -ForegroundColor Green "Create a new application pool and Reporting Services service application"
Write-Host -ForegroundColor Green
">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
Write-Host -ForegroundColor Green "Create a new application pool"
#!!!! update "-Account" with an existing Managed Service Account
New-SPServiceApplicationPool -Name "Reporting Services" -Account "<domain>\User name>"
$appPool = Get-SPServiceApplicationPool "Reporting Services"

Write-Host -ForegroundColor Green " Create the Reporting Services Service Application"
#!!!! Update "-DatabaseServer", an instance of the SQL Server database engine
$rsService = New-SPRSServiceApplication -Name "Reporting Services Application" -ApplicationPool $appPool -
DatabaseName "Reporting_Services_Application" -DatabaseServer "<server name>"

Write-Host -ForegroundColor Green "Create the Reporting Services Service Application Proxy"
$rsServiceProxy = New-SPRSServiceApplicationProxy -Name "Reporting Services Application Proxy" -
ServiceApplication $rsService

Write-Host -ForegroundColor Green "Associate service application proxy to default web site and grant web
applications rights to SSRS application pool"
Write-Host -ForegroundColor Green
">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
# Associate the Reporting Services Service Applicatoin Proxy to the default web site...
Get-SPServiceApplicationProxyGroup -default | Add-SPServiceApplicationProxyGroupMember -Member
$rsServiceProxy

$time=Get-Date
write-host -foregroundcolor DarkGray StartTime>> $starttime
write-host -foregroundcolor DarkGray $time

Write-Host -ForegroundColor Green "Enable the PowerView and reportserver site features"
Write-Host -ForegroundColor Green
">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
#!!!! update "-url" of the site where you want the features enabled
Enable-SPfeature -identity "powerview" -Url https://server/sites/bi
Enable-SPfeature -identity "reportserver" -Url https://server/sites/bi

####To Verify, you can run the following:


#Get-SPRSServiceApplication
#Get-SPServiceApplicationPool | where {$_.name -like "reporting*"}
#Get-SPRSServiceApplicationProxy

Additional configuration
This section describes additional configuration steps that are important in most SharePoint deployments.
Configure Excel Services and Power Pivot
If you want to view Power View Power View reports in an Excel 2016, or Excel 2013, workbook in SharePoint,
Excel Services needs to be configured to use an Analysis Services Server in Power Pivot mode.
For SharePoint 2016, an Office Online Server needs to be configured in order to use Excel Services. For detailed
information, refer to the following white papers.
Deploying SQL Server 2016 PowerPivot and Power View in SharePoint 2016
Deploying SQL Server 2016 PowerPivot and Power View in a Multi-Tier SharePoint 2016 Farm
For SharePoint 2016, you will need to create, and configure, an Excel Services Application. For more information,
see the following:
The section "Configure Excel Services for Analysis Services integration" in Install Analysis Services in
Power Pivot Mode.
Manage Excel Services data model settings (SharePoint Server 2013).
Also, the application pool security account used by the Reporting Services service application, must be an
administrator on the Analysis Services Server.
Provision subscriptions and alerts
The Reporting Services subscription and data alert features may require the configuration of SQL Server Agent
permissions. If you see an error message that indicates SQL Server Agent is required and you have verified SQL
Server Agent is running, update the permissions. You can click the link Provision Subscriptions and Aler ts
on the create service application success page to go to another page for provisioning SQL Server Agent. The
provision step is needed if your deployment crosses computer boundaries, for example when the SQL Server
database instance is on a different computer. For more information, see Provision Subscriptions and Alerts for
SSRS Service Applications
Configure e -mail for SSRS service applications
The Reporting Services data alerts feature sends alerts in e-mail messages. To send e-mail you may need to
configure your Reporting Services service application and you may need to modify the e-mail delivery
extension for the service application. If you plan to use the e-mail delivery extension for the Reporting Services
subscription feature, the e-mail settings are required. For more information, see Configure E-mail for a
Reporting Services Service Application (SharePoint 2013 and SharePoint 2016).
Add Reporting Services content types to content libraries
Reporting Services provides predefined content types that are used to manage shared data source (.rsds) files,
and Report Builder report definition (.rdl) files. Adding a Repor t Builder Repor t and Repor t Data Source
content type to a library enables the New command so that you can create new documents of that type. For
more information, see Add Reporting Services Content Types to a SharePoint Library.
Activate the Report Server File Sync Feature
If users will frequently upload published report items directly to SharePoint document libraries, the Repor t
Ser ver File Sync site level feature will be beneficial. The file sync feature will synchronize the report server
catalog with items in document libraries on a more frequent basis. For more information, see Activate the
Report Server File Sync Feature in SharePoint Central Administration.

Verify the installation


The following are suggested steps and procedures to verify the Reporting Services SharePoint mode
deployment.
See the SharePoint section in the verification topic Verify a Reporting Services Installation.
In a SharePoint document library, create a basic Reporting Services report that only contains a text box,
for example a title. The report does not contain any data sources or datasets. The goal is to verify you can
open Report Builder, build a basic report, and preview the report.
Save the report to the document library and the run the report from the library. For more information on
creating reports with Report Builder, see Start Report Builder (Report Builder).

Next steps
PowerShell cmdlets for Reporting Services SharePoint Mode
Upgrade and Migrate Reporting Services
Editions and Supported Features for SQL Server 2016
Reporting Services SharePoint Service and Service Applications
More questions? Try asking the Reporting Services forum
Install or Uninstall the Reporting Services Add-in for
SharePoint (SSRS)
3/5/2021 • 11 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services (2016) ❌ Power BI Report Server ✔
️ SharePoint
Run the installation package Microsoft SQL Server Reporting Services Add-in for SharePoint products
(rsSharePoint.msi) on SharePoint servers to enable Reporting Services features within a SharePoint deployment.
Features include Power View, a Report Viewer Web Part, a URL proxy endpoint, Reporting Services content types
and application pages so that you can create, view, and manage reports, data sources and other report server
content on a SharePoint site. The Reporting Services Add-in for SharePoint products is a required component
for a report server that runs in SharePoint mode. The add-in can be installed from either the SQL Server 2016
setup wizard or by downloading the rsSharePoint.msi from the SQL Server 2016 feature pack. For a list of the
versions of the add-in and download pages, see Where to find the Reporting Services add-in for SharePoint
Products.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

Prerequisites
Installing the Reporting Services Add-in is one of several steps that are necessary for integrating a report server
with an instance of a SharePoint product. For more information on installing and configuring Reporting
Services, see Install the first Report Server in SharePoint mode.
If you are integrating Reporting Services with a SharePoint farm that has multiple Web front end
applications, install the add-in to each computer in the farm that has a Web server front-end. Do this only
for Web front ends that will be used to access report server content.
To install the Reporting Services Add-in, you must be an administrator on the computer. For example if
you are going to run the rsSharePoint.msi at the command prompt, you should open the command
prompt with administrator privileges by using the Run as administrator option.
To install the Reporting Services Add-in, you must be a member of the SharePoint Farm Administrators
group.
You must be a Site Collection administrator to activate the Reporting Services integration feature.

What Does The Add-in Install?


The add-in setup process is composed of two phases, both are completed automatically when you complete a
standard installation:
The first phase is to install files to the proper folders. The folders are standard for SharePoint
deployments. One of the files that is installed is rsCustomAction.exe.
The second portion of the installation is to run a set of custom actions to register the Reporting Services
files with SharePoint. The custom actions are run from rsCustomAction.exe. The exe is removed when the
full two phase installation completes. You can run a files only installation and rsCustomAction.exe is not
run at the end of installation and it is left on the drive.
The Reporting Services Installation order
The add-in can be installed before installing SharePoint or after SharePoint installation. The add-in follows
SharePoint pre-deployment standards and installs files in locations used by the SharePoint installation.

NOTE
The advantage of installing the add-in prior to the SharePoint product is that as new servers are added to the farm, the
Reporting Services Add-in will be configured and activated by the SharePoint farm.

Overview of the Installation Methods


The SQL Server 2016 Reporting Services Add-in for SharePoint products can be installed using one of the
following two methods:
The installation wizard: In SQL Server 2016, the add-in can be installed by the SQL Server
installation wizard. Choose Repor ting Ser vices Add-in for SharePoint Products on the Feature
Selection page of the wizard.
rsSharepoint.msi: The add-in can be installed directly from the installation media or downloaded and
installed. The rsSharepoint.msi supports both a graphical user interface and a command line installation.
You must run the .msi with administrator privileges by first opening a command prompt with elevated
permissions, and then running the rsSharepoint.msi from the command line. For more information on
downloading the add-in, see Where to find the Reporting Services add-in for SharePoint Products.

NOTE
If you use the /q switch for a silent command line installation, the end-user license agreement will not be
displayed. Regardless of the installation method, the use of this software is governed by a license agreement and
you are responsible for complying with the license agreement.

Install the add-in using the installation file rsSharePoint.msi


This section is related to installing the rssharepoint.msi directly, by either running the .msi installation wizard or
a command line installation. If you installed the add-in using the SQL Server installation Wizard, you do not
need to follow these steps.
You can see a full list of command line switches by running the following command:

Rssharepoint.msi /?

1. Download the Setup program (rsSharepoint.msi ) for the Reporting Services Add-in. For more
information on downloading the add-in, see Where to find the Reporting Services add-in for SharePoint
Products.
2. As an administrator, run rsSharepoint.msi to run the Installation Wizard. The wizard displays a
Welcome page, the Software license terms, and a registration information page. Setup creates folders
under the following path and copies files to the folders:
%program files%\common files\Microsoft Shared\Web Server Extensions\15\ (SharePoint 2013)
or
%program files%\common files\Microsoft Shared\Web Server Extensions\16\ (SharePoint 2016)
3. Configure the report server settings and feature activation in SharePoint Central Administration. . For
more information on installing and configuring Reporting Services SharePoint mode, see Install the first
Report Server in SharePoint mode.
Files-only installation
To install the files but skip the custom action phase of installation, run the rssharepoint.msi from the command
line with the SKIPCA option.:
1. Open a command prompt with administrator permissions .
2. Run the following command:

Msiexec.exe /i rsSharePoint.msi SKIPCA=1

The installation user interface will open and run as normal and the rsCustomAction.exe file is installed.
However, the .exe will not run at the end of the installation and rsCustomAction.exe will remain on the
computer when the installation is completed.
Use a Two -Step Installation to Troubleshoot Installation Issues
If you get errors during installation, you can run Setup as a two-step process from the command line:
1. Open a command prompt with administrator permissions and run a files only installation as
described in the previous section.
2. Run the custom actions executable:
a. Navigate to the folder that contains the file rsCustomAction.exe . This file is copied to your
computer by the files only installation of the add-in. rsCustomAction.exe is located in the
%Temp% directory. To navigate to the file, type the following from the command prompt:
CD %temp% .
The file should be located in: \Users\<your name>\AppData\Local\Temp
b. Type the following command. This configuration step will take several minutes to finish. The
W3SVC service will be restarted during this process. Several Status messages will be displayed as
the program copies files, registers components, and runs the SharePoint Product Configuration
Wizard.

rsCustomAction.exe /i

c. The amount of time it takes for the changes to take effect may vary, depending on your server
environment. You can also run iisreset to force a quicker update.
Quiet installation for scripting
You can use the /q or /quiet switches for a "quiet" installation that will not display any dialogs or warnings. The
quiet installation is useful if you want to script the installation of the add-in.

NOTE
If you use the /q switch for a silent command line installation, the end-user license agreement will not be displayed.
Regardless of the installation method, the use of this software is governed by a license agreement and you are responsible
for complying with the license agreement.

To perform a quiet installation:


1. Open a command prompt with administrator permissions .
2. Run the following command:

Msiexec.exe /i rsSharePoint.msi /q

How to Remove the Reporting Services Add-in


You can uninstall the Reporting Services Add-in for SharePoint Products from Microsoft Windows control panel
or the command line.
1. Using control panel will run a complete uninstall of the files on the current computer AND it will remove
the Reporting Services object and features from the SharePoint farm. When the Reporting Services object
and features are removed you can no longer review and update reports.
2. The command line method to uninstall the add-in allows you to use the LocalOnly parameter to only
remove the add-in files from the local computer and the Reporting Services object and features in the
farm will not be changed.
Uninstalling the add-in will remove server integration features that are used to process reports on a report
server. It will also remove the Reporting Services pages from SharePoint Central Administration and other
custom Reporting Services pages. You may also want to remove any reports and other report server items that
you no longer use on the affected SharePoint sites. They will not run after the Reporting Services Add-in is
removed.
To uninstall the Reporting Services Add-in, you must have a SharePoint installation still running. If you uninstall
SharePoint first, you must reinstall it to uninstall the Reporting Services Add-in.
The steps for uninstalling the add-in are the same for both stand-alone servers and server farms. Setup will
remove program files and any configuration settings that were added during installation.
Uninstalling the add-in will not remove the following:
Logins created for the Report Server service account that is used to access the SharePoint configuration
and content databases. You must delete any logins for the Report Server service account from the SQL
Server Database Engine instance used to host the SharePoint databases.
Permissions or groups that you created for report users. If you created custom permission levels or
SharePoint groups to grant access to report server features, you should revoke any permissions that are
no longer required.
Data files that you uploaded to a SharePoint library, including report definition (.rdl), shared data source
(.rsds), and published report items (.rsc) files. They are not deleted, but they will no longer run. You must
delete the files manually.
Setup will not delete the report server database or modify the report server instance that was used for
integrated operations.
To Uninstall from Windows Control Panel
To start the wizard from Microsoft Windows Control Panel and remove the add-in:
1. In Control Panel, in Programs , select Uninstall a Program
2. Select Microsoft SQL Ser ver RS Add-in for SharePoint . You can also start the uninstall wizard by
running rssharepoint.msi from the command prompt with no switches.
3. Click Remove .
Uninstall from the command line
To uninstall the add-in from the command line:
1. Open a command prompt with administrator permissions .
2. Run the following command:

msiexec.exe /uninstall rsSharePoint.msi

3. You will see a confirmation message box. Click Yes .


Uninstall the add-in from the local server only
The previous methods of uninstalling the add-in will remove the Reporting Services features and object from
the farm. If you have a multi-server farm and want to uninstall the add-in from only the local computer and
leave the SharePoint farm in a functional state, complete the following steps:
1. Open a command prompt with administrator permissions .
2. Run the following command:

Msiexec.exe /uninstall rsSharePoint.msi LocalOnly=1

This will unregister the Reporting Services components from SharePoint and remove the files, but for the local
computer only.
If you want to unregister the Reporting Services features from SharePoint but leave the files on the disk for use
later, complete the following steps:
1. Open a command prompt with administrator permissions .
2. Run the following command:

rsCustomAction.exe /p

The above steps assume you completed an installation of the .msi with SkipCA=1 and the rscusstomaction.exe is
available. For more information, see the section describing the files only installation.

How to Repair rssharepoint.msi from the Command Line


To repair or uninstall the Reporting Services add-in using the command line, complete the following steps:
1. Open a command prompt with administrator permissions .
2. Run the following command:

msiexec.exe /f rssharepoint.msi

Setup Log Files


When Setup runs, it logs information to a log file in the %temp% folder for the user who installed the Reporting
Services Add-in. For example c:\Users\<username>\AppData\Local\Temp .The file name is
RS_SP_<number>.log , for example RS_SP_0.log . Each error in the log starts with the string
"SSRSCustomActionError".
NOTE
AppData is a hidden folder in the Windows operating system. You may need to modify your Windows Explorer folder
settings so you can see hidden files and folders.

View a log file with Windows Notepad


1. The following commands will change the command prompt path, list the rs log files and then open one of
the files with Windows Notepad:

cd %temp%

Dir rs_sp*.log

notepad rs_sp_3.log

View a Log file with PowerShell


1. Type the following command from the SharePoint Management Shell to return a filtered list of rows from
the file, that contain "ssrscustomactionerror":

Get-content -path C:\Users\<UserName\AppData\Local\Temp\rs_sp_0.log | select-string


"ssrscustomactionerror"

2. The output will look similar to the following:


2011-05-23 12:40:12: SSRSCustomActionError: SharePoint is installed, but not configured .

Upgrade
If you have an existing installation of the Reporting Services Add-in, you can upgrade to the current version. The
add-in setup will detect the existing version and prompt you to confirm the update. The message will be similar
to the following:
A Lower version of this product has been detected on your system. Would you like to upgrade
your existing installation?
If you confirm, the older version of the add-in will be removed and then the new version will be installed.
Note that the Reporting Services Add-in is not instance-aware. You can only have one instance of the add-in on
a computer. You cannot run different versions side-by-side the current version.

RsCustomAction.exe
The following table summarizes the rscustomaction.exe switches:

SW ITC H DESC RIP T IO N

i Install the custom actions. This will register the Reporting


Services components in SharePoint. This will restart the
W3SVCservice.

r Repair
SW ITC H DESC RIP T IO N

u Uninstall. This will unregister the Reporting Services


components from the entire SharePoint farm but leave the
files on disk. This will restart the W3SVCservice.

p Local uninstall. This will unregister the Reporting Services


components from only the local computer. The files will
remain on disk. This will restart the W3SVCservice.

t SQL Server Reporting Services 2005 only. The switch tests if


the report server has a working connection to the report
server database.

Configuring Reporting Services


After you have installed the add-in on all the necessary computers, you need to configure the report server
from SharePoint Central Administration. The steps that are needed depend on the order which the different
technologies were installed. For more information, see Install the first Report Server in SharePoint mode and
Reporting Services Report Server (SharePoint Mode)

See Also
Install the first Report Server in SharePoint mode
Reporting Services Report Server (SharePoint Mode)
More questions? Try asking the Reporting Services forum
Add an Additional Report Server to a Farm (SSRS
Scale-out)
3/5/2021 • 4 minutes to read • Edit Online

Adding a second or more SharePoint mode report servers to your SharePoint farm can improve the
performance and response time of the report server processing. If you find performance slowing down as you
added more users, reports, and other applications to the report server, then adding additions report servers can
improve performance. It is also recommended to add a second report server to increase the availability of
report servers when there are issues with hardware or you are conducting general maintenance on individual
servers in your environment. Starting with the SQL Server 2012 (11.x) release, the steps to scale-out a
Reporting Services environment in SharePoint mode follows standard SharePoint farm deployment and
leverages the SharePoint load balancing features.

IMPORTANT
Scale-out of Reporting Services is not supported on all editions of SQL Server. For more information, see the Reporting
Services section of Features Supported by the Editions of SQL Server.

TIP
Starting with SQL Server 2012 (11.x) you do not use Reporting Services Configuration Manager to add servers and scale
out report servers. SharePoint products manage the scale-out of reporting services as SharePoint servers with the
Reporting Services service are added to the farm.

For information on how to scale-out native mode report servers, see Configure a Native Mode Report Server
Scale-Out Deployment (Report Server Configuration Manager).

Load Balancing
The Load balancing of Reporting Services service applications will be managed automatically by SharePoint
unless your environment has a custom or third-party load balancing solution. The default SharePoint load
balancing behavior is that each Reporting Services Service Application will be balanced across all the application
servers where you have started the Reporting Services service. To verify if the Reporting Services service is
installed and started, click Manage ser vices on ser ver in SharePoint Central Administration.

Prerequisites
You must be a local administrator to run SQL Server Setup.
The computer must be joined to a domain.
You need to know the name of the existing database server that is hosting the SharePoint configuration
and content databases.
The database server must be configured to allow for remote database connections. If it is not, you will not
be able to join the new server to the farm because the new server will not be able to make a connection
to the SharePoint configuration databases.
The new server will need to have the same version of SharePoint installed that the current farm servers
are running. For example if the farm already has SharePoint 2013 Service Pack 1 (SP1) installed, you will
need to also install SP1 on the new server before it can join the farm.

Steps
The steps in this topic assume that a SharePoint farm administrator is installing and configuring the server. The
diagram shows a typical three tier environment and the numbered items in the diagram are described in the
following list:
(1) Multiple web front-end (WFE) servers. The WFE servers require the Reporting Services add-in for
SharePoint 2016.
(2) A single application server running Reporting Services and web sites, for example Central
Administration. The following steps add a second application server to this tier.
(3) Two SQL Server database servers.
(4) Represents a software or hardware network load balancing solution (NLB)

The following steps assume that an administrator is installing and configuring the server. The server will be
setup as a new application server in the farm and not used as a web front-end (WFE).

ST EP DESC RIP T IO N A N D L IN K

Add a SharePoint server to a farm. You will need to install SharePoint to deploy another
Reporting Services application.

For SharePoint 2013, see Add SharePoint server to a farm in


SharePoint Server 2013.

For SharePoint 2016, see Add SharePoint server to a farm in


SharePoint Server 2016.
ST EP DESC RIP T IO N A N D L IN K

Install and configure Reporting Services SharePoint mode. Run SQL Server installation. For more information on the
installation of Reporting Services SharePoint mode, see
Install the first Report Server in SharePoint mode

If the server will only be used as an application server and


the server will not be used as a WFE, you do not need to
select Repor ting Ser vices add-in for SharePoint
products .

1) On the Setup Role page, select SQL Ser ver Feature


Installation

2) On the Feature Selection page, select Repor ting


Ser vices - SharePoint

3) On the Repor ting Ser vices Configuration page verify


the Install Only option is selected for Repor ting Ser vices
SharePoint Mode .

Verify that Reporting Services is operational. 1) In SharePoint Central Administration, click Manage
ser vers in this farm in the System Settings group.

2) Verify the service SQL Ser ver Repor ting Ser vices
Ser vice .

For more information, see Verify a Reporting Services


Installation

Additional Configuration
You can optimize individual Reporting Services servers in a scaled out deployment to perform background
processing only so they do not compete for resources with interactive report execution. Background processing
includes schedules, subscriptions, and data alerts.
To change the behavior of individual report servers, set <IsWebSer viceEnable> to false in the
RSrepor tSer ver.config configuration file.
By default reports servers are configured with <IsWebServiceEnable> set to TRUE. When all servers are
configured for TRUE, interactive and background will be load balanced across all nodes in the farm.
If you configure all report servers with <IsWebServiceEnable> set to False, you will see an error message
similar to the following when you try to use Reporting Services features:

The Reporting Services Web Service is not enabled. Configure at least one instance of the Reporting Services
SharePoint Service to have <IsWebServiceEnable> set to true.

For more information, see Modify a Reporting Services Configuration File (RSreportserver.config)

Next steps
Add SharePoint server to a farm in SharePoint Server 2016
Add SharePoint server to a farm in SharePoint Server 2013
More questions? Try asking the Reporting Services forum
Add an Additional Reporting Services Web Front-
end to a Farm
3/5/2021 • 2 minutes to read • Edit Online

Reporting Services SharePoint mode includes components needed for application servers and web front-end
(WFE) servers. This topic focuses on installing the required Reporting Services components for a WFE server,
including the application pages used by Reporting Services features such as subscriptions, data alerts, and
Power View. The primary Reporting Services installation needed for a WFE is to install the Reporting Services
add-in for SharePoint 2016 products.

Prerequisites
You must be a local administrator to run SQL Server Setup.
The computer must be joined to a domain.
You need to know the name of the existing database server that is hosting the SharePoint configuration
and content databases.
The database server must be configured to allow for remote database connections. If it is not, you will not
be able to join the new server to the farm because the new server will not be able to make a connection
to the SharePoint configuration databases.
The new server will need to have the same version of SharePoint installed that the current farm servers
are running. For example if the farm already has SharePoint 2013 Service Pack 1 (SP1) installed, you will
need to also install SP1 on the new server before it can join the farm.

Steps
The steps in this topic assume that a SharePoint farm administrator is installing and configuring the server. The
diagram shows a typical three tier environment and the numbered items in the diagram are described in the
following list:
(1) Multiple web front-end (WFE) servers. The WFE servers require the Reporting Services add-in for
SharePoint 2010. The following steps add a second application server to this tier.
(2) Two application servers running Reporting Services and web sites, for example Central
Administration.
(3) Two SQL Server database servers.
(4) Represents a software or hardware network load balancing solution (NLB)
The following steps assume that an administrator is installing and configuring the server.

ST EP DESC RIP T IO N A N D L IN K

Add a SharePoint server to a farm. You will need to intall SharePoint to deploy another
Reporting Services application.

For SharePoint 2013, see Add SharePoint server to a farm in


SharePoint Server 2013.

For SharePoint 2016, see Add SharePoint server to a farm in


SharePoint Server 2016.

Install the SQL Server Reporting Services add-in for There are several methods for installing the add-in. The
SharePoint 2016 products. following steps use the SQL Server setup wizard. For more
information on installing the add-in, see Install or Uninstall
the Reporting Services Add-in for SharePoint

1) Run SQL Server installation.

2) On the Setup Role page, select SQL Ser ver Feature


Installation

3) On the Feature Selection page, select Repor ting


Ser vices add-in for SharePoint products

4) Click Next on the next several pages to complete the


setup options.

For more information on installing Reporting Services, see


Install the first Report Server in SharePoint mode

Verify the new server is operational. 1) In SharePoint Central Administration, click Manage
ser vers in this farm in the System Settings group.

2) Verify the new server is in the list.


ST EP DESC RIP T IO N A N D L IN K

Update your NLB solution. If appropriate, update your hardware or software NLB
environment to include the new server.

Next steps
Add SharePoint server to a farm in SharePoint Server 2016
Add SharePoint server to a farm in SharePoint Server 2013
More questions? Try asking the Reporting Services forum
Configure E-mail for a Reporting Services Service
Application
3/5/2021 • 2 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services (2016) ❌ Power BI Report Server ✔
️ SharePoint
Reporting Services data alerting sends alerts in e-mail messages. To send e-mail you may need to configure
your Reporting Services service application and you may need to modify the e-mail delivery extension for the
service application. The e-mail settings are also required if you plan to use the e-mail delivery extension for the
Reporting Services subscription feature.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

To configure e -mail for the shared service


1. In SharePoint Central Administration, click the Application Management .
2. In the Ser vice Applications group, click Manage ser vice applications .
3. In the Name list, click the name of your Reporting Services service application.
4. Click E-mail Settings on the Manage Repor ting Ser vices Application page.
5. Select Use SMTP ser ver .
6. In the Outbound SMTP ser ver box, type the name of an SMTP server.
7. In the From address box, type an e-mail address.
This address is the sender of all alert e-mail messages.
The account of the user specified in From address must be a managed account that you specified when
you configured the application pool for the Reporting Services service application. If you have
permission, you can view a list of existing managed accounts on the Service Accounts page in SharePoint
Central Administration.
8. Click OK .
NTLM Authentication
1. If your email environment requires NTLM authentication and does not allow anonymous access, you
need to modify the e-mail delivery extension configuration for your Reporting Services service
applications. For example, if you see the following message in the for the Last Results on the Manage
Subscriptions page:subscriptions.
Failure sending mail: The SMTP server requires a secure connection or the client was not
authenticated. The server response was: 5.7.1 Client was not authenticatedMail will not be resent.
Change the SMTPAuthenticate to use a value of "2". This value cannot be changed from the user
interface. The following PowerShell script example, updates the full configuration for the report server e-
mail delivery extension for the service application named "SSRS_TESTAPPLICATION". Note some of the
nodes listed in the script can also be set from the user interface, for example the "From" address.
$app=get-sprsserviceapplication |where {$_.name -like "SSRS_TESTAPPLICATION *"}
$emailCfg = Get-SPRSExtension -identity $app -ExtensionType "Delivery" -name "Report Server Email" |
select -ExpandProperty ConfigurationXml
$emailXml = [xml]$emailCfg
$emailXml.SelectSingleNode("//SMTPServer").InnerText = "your email server name"
$emailXml.SelectSingleNode("//SendUsing").InnerText = "2"
$emailXml.SelectSingleNode("//SMTPAuthenticate").InnerText = "2"
$emailXml.SelectSingleNode("//From").InnerText = "your FROM email address"
Set-SPRSExtension -identity $app -ExtensionType "Delivery" -name "Report Server Email" -
ExtensionConfiguration $emailXml.OuterXml

2. If you need to verify the name of your service application, run the Get-SPRSSer viceApplication
cmdlet .

get-sprsserviceapplication

3. The following example will return the current values of the e-mail extension for the service application
named "SSRS_TESTAPPLICATION".

$app=get-sprsserviceapplication |where {$_.name -like "SSRSTEST_APPLICATION*"}


Get-SPRSExtension -identity $app -ExtensionType "Delivery" -name "Report Server Email" | select -
ExpandProperty ConfigurationXml

4. The following example will create a new file named "emailconfig.txt" with the current values of the e-mail
extension for the service application named "SSRS_TESTAPPLICATION"

$app=get-sprsserviceapplication |where {$_.name -like "SSRS_TESTAPPLICATION*"}


Get-SPRSExtension -identity $app -ExtensionType "Delivery" -name "Report Server Email" | select -
ExpandProperty ConfigurationXml | out-file c:\emailconfig.txt

More questions? Try asking the Reporting Services forum


Provision Subscriptions and Alerts for SSRS Service
Applications
3/5/2021 • 3 minutes to read • Edit Online

Reporting Services subscriptions and data alerts require SQL Server Agent and require the configuration of
permissions for SQL Server Agent. If you see error messages that indicate SQL Server Agent is required and you
have verified SQL Server Agent is running, then update or verify permissions. The scope of this topic is
Reporting Services in SharePoint mode and the topic describes three ways you can update the permissions of
SQL Server Agent with Reporting Services subscriptions. The credentials you use for the steps in this topic need
to have sufficient permissions to grant execute permissions to the RSExecRole for objects in the service
application, msdb, and master databases.

Applies to: SharePoint 2016 | SharePoint 2013

DESC RIP T IO N

1 The instance of SQL Server Database engine that is hosting


the Reporting Services service application databases.

2 The instance of SQL Server agent for the instance of the SQL
database engine.

3 The Reporting Services service application databases. The


names are based on the information used for creating the
service application. The following are example database
names:

ReportingService_2fbae157295d49df86d0b85760c704b0

ReportingService_2fbae157295d49df86d0b85760c704b0_Al
erting

ReportingService_2fbae157295d49df86d0b85760c704b0Te
mpDB

4 The master and MSDB database of the instance of the SQL


Server Database engine.

Use one the following three methods to update the permissions:


1. From the Provisions and Subscriptions and Aler ts page, type credentials and click ok .
2. From the Provisions and Subscriptions and Alerts page, click the Download Script button to download
a transact SQL script that can be used to configure permissions.
3. Run a PowerShell cmdlet to build a transact SQL script that can be used to configure permissions.
To update permissions using the provision page
1. From SharePoint Central Administration, in the Application Management group click Manage
Ser vice Applications
2. Find your service application in the list and click the name of the application or click the Type column to
select the services application and click the Manage button in the SharePoint ribbon.
3. On the Manage Repor ting Ser vices Application page, click Provision Subscriptions and Aler ts .
4. If the SharePoint administrator has enough privileges to the Master database and the service application
databases, type those credentials.
5. Click the OK button.

To download the Transact-SQL Script


1. From SharePoint Central Administration, in the Application Management group click Manage
Ser vice Applications
2. Find your service application in the list and click the name of the application or click the Type column to
select the services application and click the Manage button in the SharePoint ribbon.
3. On the Manage Repor ting Ser vices Application page, click Provision Subscriptions and Aler ts .
4. In the View Status area, verify SQL Server Agent is running.
5. Click Download Script to download a transact SQL script you can run in SQL Server Management
studio to grant permissions. The script file name that is created will contain the name of your Reporting
Services service application name, for example [name of the ser vice application]-GrantRights.sql .
To generate the Transact-SQL statement with PowerShell
1. You can also use a Windows PowerShell cmdlet in the SharePoint 2016, or SharePoint 2013, Management
Shell to create the Transact-SQL script.
2. On the Star t menu, click All Programs .
3. Expand Microsoft SharePoint 2016 Products and click SharePoint 2016 Management Shell .
4. Update the following PowerShell cmdlet by replacing the name of the report server database, application
pool account, and the path of the statement.
Syntax of cmdlet:
Get-SPRSDatabaseRightsScript -DatabaseName <ReportingServices database name> -UserName <app pool
account> -IsWindowsUser | Out-File <path of statement>

Sample cmdlet:
Get-SPRSDatabaseRightsScript -DatabaseName ReportingService_46fd00359f894b828907b254e3f6257c -UserName
"NT AUTHORITY\NETWORK SERVICE" -IsWindowsUser | Out-File c:\SQLServerAgentrights.sql

Using the Transact-SQL Script


The following procedures can be used with scripts download from the provisions page or scripts created using
PowerShell.
To load the Transact-SQL script in SQL Server Management Studio
1. To open SQL Server Management Studio, on the Star t menu, click Microsoft SQL Ser ver and click SQL
Ser ver Management Studio .
2. In the Connect to Ser ver dialog box set the following options:
In the Ser ver type list, select Database Engine
In Ser ver Name , type the name of the SQL Server instance on which you want to configure SQL
Server Agent.
Select an authentication mode.
If connecting using SQL Server Authentication, provide a login and password.
3. Click Connect .
To run the Transact-SQL statement
1. On the toolbar of SQL Server Management Studio, click New Quer y .
2. On the File menu, click Open , and then click File .
3. Navigate to the folder where you saved the Transact-SQL statement that you generated in SharePoint
2016, or SharePoint 2013, Management Shell.
4. Click the file and then click Open .
The statement is added to the query window.
5. Click Execute .
Claims to Windows Token Service (C2WTS) and
Reporting Services
3/5/2021 • 5 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server 2016 Reporting Services and later ✔
️ SharePoint ✔
️ Power BI Report Server
The SharePoint Claims to Windows Token Service (C2WTS) is required if you want to view native mode reports
within the SQL Server Reporting Services Report Viewer web part.
C2WTS is also required with SQL Server Reporting Services SharePoint mode if you want to use Windows
authentication for data sources that are outside the SharePoint farm. C2WTS is needed even if your data
source(s) are on the same computer as the shared service. However in this scenario, constrained delegation is
not needed.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

Report Viewer (Native Mode) web part configuration


The Report Viewer web part can be used to embed SQL Server Reporting Services native mode reports within
your SharePoint site. This web part is available for SharePoint 2013 and SharePoint 2016. Both SharePoint 2013
and SharePoint 2016 make use of claims authentication. As a result, C2WTS needs to be configured properly
and Reporting Services needs to be configured for Kerberos authentication for reports to render correctly.
1. Configure your Reporting Services (Native Mode) instance for Kerberos Authentication by determining
the SSRS Service account, setting an SPN, and updating the rsreportserver.config file to use
RSWindowsNegotiate Authentication Type. Register a Service Principal Name (SPN) for a Report Server
2. Follow steps from Steps needed to configure c2WTS

SharePoint mode integration


This section only applies to SQL Ser ver 2016 Repor ting Ser vices and earlier.
The SharePoint Claims to Windows Token Service (C2WTS) is required with SQL Server Reporting Services
SharePoint mode if you want to use Windows Authentication for data sources that are outside the SharePoint
farm. This is true even if the user accesses the data sources with Windows Authentication because the
communication between the web front-end (WFE) and the Reporting Services shared service will always be
Claims Authentication.

Steps needed to configure c2WTS


The tokens created by C2WTS will only work with constrained delegation (constrains to specific services) and
the configuration option "using any authentication protocol"(Protocol Transition).
If your environment will use Kerberos constrained delegation, then the SharePoint Server service and external
data sources need to reside in the same Windows domain. Any service that relies on the Claims to Windows
token service (c2WTS) must use Kerberos constrained delegation to allow c2WTS to use Kerberos protocol
transition to translate claims into Windows credentials. These requirements are true for all SharePoint Shared
Services. For more information, see Plan for Kerberos authentication in SharePoint 2013.
1. Configure the C2WTS service domain account.
As a best practice C2WTS should run under its own domain identity.
Create an Active Directory account and register the account as a managed account in SharePoint
Server.
Configure C2WTS Service to use the managed account through SharePoint Central Administration
> Security > Configure Service Accounts > Windows Service - Claims to Windows Token Service
Add the C2WTS service account to the local Administrators group on each server that C2WTS will be
used. For the Repor t Viewer web par t , this will be the Web Front End (WFE) servers. For SharePoint
integrated mode , this will be the application servers where the Reporting Services service is running.
Grant the C2WTS account the following permissions in the local security policy under Local Policies >
User Rights Assignment:
Act as part of the operating system
Impersonate a client after authentication
Log on as a service
2. Configure delegation for the C2WTS service account.
The account needs Constrained Delegation with Protocol Transitioning and permissions to delegate to the
services it is required to communicate with (i.e. SQL Server Database Engine, SQL Server Analysis
Services). To configure delegation you can use the Active Directory Users and Computer snap-in and will
need to be a domain administrator.

IMPORTANT
Whatever settings you configure for the C2WTS service account, on the delegation tab, needs to match the main
service account being used. For the Repor t Viewer web par t , this will be the service account for the SharePoint
web application. For SharePoint integrated mode , this will be the Reporting Services service account.
For example, if you allow the C2WTS service account to delegate to a SQL Service, you need to do the same on
the Reporting Services service account for SharePoint integrated mode.

Right-click each service account and open the properties dialog. In the dialog click the Delegation
tab.
The delegation tab is only visible if the object has a Service Principal Name (SPN) assigned to it.
C2WTS does not require an SPN on the C2WTS Account, however, without an SPN, the
Delegation tab will not be visible. An alternative way to configure constrained delegation is to use
a utility such as ADSIEdit .
Key configuration options on the delegation tab are the following:
Select Trust this user for delegation to specified ser vices only
Select Use any authentication protocol
Select Add to add a service to delegate to.
Select Users or Computers...* and enter the account that hosts the service. For example, if a SQL
Server is running under an account named sqlservice, enter sqlservice . For the Repor t Viewer
web par t , this will be the service account for the Reporting Services (Native Mode) Instance.
Select the service listing. This will show the SPNs that are available on that account. If you don't
see the service listed on that account, it may be missing or placed on a different account. you can
use the SetSPN utility to adjust SPNs. For the Repor t Viewer web par t , you will see the http SPN
configured in Report Viewer web part configuration.
Select OK to get out of the dialogs.
3. Configure C2WTS AllowedCallers.
C2WTS requires the 'callers' identities explicitly listed in the configuration file, C2WTShost.exe.config .
C2WTS does not accept requests from all authenticated users in the system unless it is configured to do
so. In this case the 'caller' is the WSS_WPG Windows group. The C2WTShost.exe.confi file is saved in the
following location:
Changing the service account within SharePoint Central Admin, for the C2WTS service, will add that
account to the WSS_WPG group.
\Program Files\Windows Identity Foundation\v3.5\c2WTShost.exe.config
The following is an example of the configuration file:

<configuration>
<windowsTokenService>
<!--
By default no callers are allowed to use the Windows Identity Foundation Claims To NT Token
Service.
Add the identities you wish to allow below.
-->
<allowedCallers>
<clear/>
<add value="WSS_WPG" />
</allowedCallers>
</windowsTokenService>
</configuration>

4. Start (stop and start if already started) the Claims to Windows Token Service through SharePoint Central
Administration on the Manage Ser vices on Ser ver page. The service should be started on the server
that will be performing the action. For example if you have a server that is a WFE and another server that
is an Application Server that has the SQL Server Reporting Services shared service running, you only
need to start C2WTS on the Application Server. C2WTS is only required on a WFE server if you are
running the Report Viewer web part.
More questions? Try asking the Reporting Services forum
Install Reporting Services 2016 at the Command
Prompt
3/5/2021 • 2 minutes to read • Edit Online

APPLIES TO: ✔ ️ SQL Server Reporting Services (2016) ❌ SQL Server Reporting Services (2017) ❌ Power BI
Report Server
Reporting Services supports a command-line installation from the SQL Server setup program. This topic
contains several examples of command-line installations that are specific to Reporting Services. For a complete
description of the command-line options available for all SQL Server components, see Install SQL Server from
the Command Prompt. This topic does not describe command-line options for the Reporting Services add-in for
SharePoint products. For information on command installation of the add-in, see Install the add-in using the
installation file rsSharePoint.msi.

Native mode Reporting Services


RSINSTALLMODE (Native Mode )
The primary input setting for installing Reporting Services is the /RSINSTALLMODE input setting. The setting
has two options: DefaultNativeMode and FilesOnlyMode
If the installation includes the SQL Server Database engine, the default RSINSTALLMODE is
DefaultNativeMode.If the installation does not include the SQL Server Database engine, the default
RSINSTALLMODE is FilesOnlyMode.If you choose DefaultNativeMode but the installation does not include the
SQL Server Database engine, the installation automatically changes the RSINSTALLMODE to FilesOnlyMode. For
more information on the input settings, see Install SQL Server from the Command Prompt.
Examples of Native Mode Installation
The following example installs the following and configures the accounts for :
Reporting Services in native mode.
The SQL Server Database Engine.
SQL Server Agent, which is needed for the Reporting Services subscriptions features.
SQL Server Management Studio.

Setup.exe /q /IACCEPTSQLSERVERLICENSETERMS /ACTION="install" /ERRORREPORTING=1 /UPDATEENABLED="False"


/INSTANCENAME="MSSQLSERVER" /FEATURES="SQLEngine,Adv_SSMS,RS" /RSINSTALLMODE="DefaultNativeMode"
/SQLSVCACCOUNT="[DOMAIN\ACCOUNT]" /SQLSVCPASSWORD="[PASSWORD]" /AGTSVCACCOUNT="[DOMAIN\ACCOUNT]"
/AGTSVCPASSWORD="[PASSWORD]" /SQLSYSADMINACCOUNTS="[DOMAIN\ACCOUNT]"

SharePoint mode Reporting Services


RSSHPINSTALLMODE (SharePoint Mode )
The input setting to install Reporting Services in SharePoint mode is /RSSHPINSTALLMODE . The input setting
has one option: SharePointFilesOnlyMode. The option installs all the files needed for SharePoint mode but,
configuration is required following installation. The additional configuration steps are completed using
SharePoint Central Administration. For more information, see Install the first Report Server in SharePoint mode.
Examples of SharePoint Mode Installation
The following example installs SQL Server the database engine service and Reporting Services in SharePoint
mode as well as the Reporting Services add-in for SharePoint (RS_SHPWFE).

setup /q /ACTION=install /FEATURES=SQL, RS_SHP, RS_SHPWFE,TOOLS /INSTANCENAME=MSSQLSERVER


/SQLSYSADMINACCOUNTS="BUILTIN\ADMINISTRATORS" /RSSVCACCOUNT="NT AUTHORITY\NETWORK SERVICE"
/SQLSVCACCOUNT="NT AUTHORITY\NETWORK SERVICE" /AGTSVCACCOUNT="NT AUTHORITY\NETWORK SERVICE"

The following example installs only Reporting Services SharePoint mode.

Setup.exe /q /ACTION="Install" /IACCEPTSQLSERVERLICENSETERMS /FEATURES="RS_SHP" /INSTANCEDIR="C:\Program


Files\Microsoft SQL Server" /INSTALLSHAREDDIR="C:\Program Files\Microsoft SQL Server"
/INSTALLSHAREDWOWDIR="C:\Program Files (x86)\Microsoft SQL Server" /INSTALLSQLDATADIR="C:\Program
Files\Microsoft SQL Server" /SECURITYMODE="SQL" /SAPWD="[PASSWORD]" /PID="[Your PID Value]"
/SQLSYSADMINACCOUNTS="[Account Name]" "AutoSql Admin Group" /ASSYSADMINACCOUNTS="[Account Name]"
/UPDATEENABLED="False"

Examples of SharePoint Mode Upgrade


The following example upgrades Reporting Services SharePoint mode. RSUPGRADEPASSWORD is the
password of the existing Report Server service account. RSUPGRADEPASSWORD is a required field in an
upgrade scenario unless the Reporting Services service account is a built-in account.

Setup.exe /q /ACTION="Upgrade" /INSTANCENAME="MSSQLSERVER" /PID="[PID value]" /FTSVCACCOUNT="


[DOMAIN\ACCOUNT]" /FTSVCPASSWORD="[PASSWORD]" /UPDATEENABLED="False" /IACCEPTSQLSERVERLICENSETERMS
/RSUPGRADEPASSWORD="[PASSWORD]"

The following example can be used to upgrade a SharePoint Mode installation that is based on the SharePoint
shared service architecture. The example uses switch ALLOWUPGRADEFORSSRSSHAREPOINTMODE. The switch
is not needed for upgrading older versions that are not based on the shared service architecture:
SQL Server 2008 R2
SQL Server 2008

Setup.exe /q /ACTION="Upgrade" /INSTANCENAME="MSSQLSERVER" /PID="[Your PID Value]" /FTSVCACCOUNT="[ACCOUNT


Name]" /FTSVCPASSWORD="[PASSWORD]" /UPDATEENABLED="False" /IACCEPTSQLSERVERLICENSETERMS
/ALLOWUPGRADEFORSSRSSHAREPOINTMODE="True"

Next steps
Install SQL Server from the Command Prompt
SysPrep Parameters
Install Power Pivot from the Command Prompt
More questions? Try asking the Reporting Services forum
Install Report Builder
7/29/2021 • 4 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server 2016 Reporting Services and later ✔
️ Power BI Report Server
Report Builder is a stand-alone app, installed on your computer by you or an administrator. You can install it
from the Microsoft Download Center, from a SQL Server 2016 Reporting Services or later (SSRS) report server,
or from a SharePoint site integrated with Reporting Services.

NOTE
Looking for installation information for Power BI Report Builder instead? Head to the Microsoft Power BI Report Builder
page on the Download Center.

An administrator typically installs and configures Reporting Services, grants permission to download Report
Builder from the web portal, and manages folders and permissions to reports, report parts, and shared datasets
saved to the report server. For more information about Reporting Services administration, see Reporting
Services Report Server (Native Mode).

Install Report Builder from a web portal or SharePoint library


NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

You can start Report Builder from a Reporting Services web portal or a SharePoint site integrated with
Reporting Services. For information, see Start Report Builder.
SharePoint site integrated with Reporting Services
On a SharePoint site integrated with Reporting Services, if the New Document menu does not list Repor t
Builder Repor t , Repor t Builder Model , and Repor t Data Source , their content types need to be added to
the SharePoint library. For more information, see Add Reporting Services Content Types to a SharePoint Library.

Install Report Builder with Microsoft Endpoint Configuration Manager


An administrator can also use software such as Microsoft Endpoint Configuration Manager to push the program
to your computer. To learn how to use specific software to install Report Builder, consult the documentation for
the software. For more information, see Microsoft Endpoint Configuration Manager documentation.

IMPORTANT
Windows Vista and Windows 7 security features require elevated permissions to run command line operations and will
prompt for permission to run the command line. The installation is not silent. To make the installation silent, you need to
run the command line as an administrator.

System Requirements
See the System Requirements section of the Report Builder download page on the Microsoft Download
Center.
To install Report Builder from the download site
1. On the Report Builder page of the Microsoft Download Center , click Download .
2. After Report Builder has finished downloading, click Run .
This launches the SQL Server Report Builder Wizard.
3. Accept the terms in the license agreement and click Next .
4. On the Default Target Ser ver page, optionally provide the URL to the target report server if it is
different from the default. Click Next .

NOTE
If you plan to work with Report Builder when it is connected to a report server, it is convenient to provide the URL
to the server at this time. You can also do this from the Options dialog box in Report Builder.

5. Click Install to complete the installation of Report Builder.

To install Report Builder from a share


1. Contact your administrator for the location of ReportBuilder.msi that you run to install Report Builder on
your local computer.
2. Browse to locate ReportBuilder.msi, the Windows Installer Package (MSI) for Report Builder, and click it.
This launches the SQL Server Report Builder Wizard.
3. Complete rest of the steps in To install Report Builder from the download site.

To install Report Builder from the command line


You can also perform a command line installation of Report Builder and provide arguments to customize the
installation. In addition to the standard MSI intrinsic parameters, you can use the custom parameters that Report
Builder provides: RBINSTALLDIR and RBSERVERURL. RBINSTALLDIR specifies the root installation folder for
Report Builder. RBSERVERURL specifies the default report server that Report Builder uses to save reports on the
server.
If you want a completely silent installation, with no user interface interaction at all, specify the /quiet option. By
design, the quiet option flag suppresses installation errors. It is therefore recommended that you include the /l
option, which specifies logging, when you use the quiet option.
1. On the Report Builder page of the Microsoft Download Center, click Download .
2. After Report Builder has finished downloading, click Save .
3. On the Star t menu, click Run .
4. In the Open box, type cmd.
5. In the Command Prompt window, navigate to the folder where you saved ReportBuilder.msi.
6. Type a command with the following format:
msiexec /i ReportBuilder.msi OPTION=OptionValue [OPTION=OptionValue]

The two options specific to installing Report Builder are: RBINSTALLDIR and RBSERVERURL. You don't
have to include these arguments in the command line. The following is the baseline command:
msiexec /i ReportBuilder3_x86.msi /quiet

7. To run the command, press ENTER.

Set Report Builder defaults


After you install Report Builder, you can set some default options. Click File > Options .
Setting the default Reporting Services web portal or SharePoint site is the most useful. For more
information, see Set default options for Report Builder.
Click Repor t Builder .
If you don't see the report server in the list of existing servers, close the Open Repor t dialog box and
then click Connect at the bottom of Report Builder to connect to the server.

See Also
Start Report Builder
Uninstall Report Builder
Uninstall Report Builder
11/2/2020 • 2 minutes to read • Edit Online

You can uninstall the stand-alone version of Report Builder from the control panel or the command line.
Uninstalling Report Builder from the command line uses syntax that is identical to the syntax you use to install
Report Builder, except you use the /x option instead of the /i option. Command lines for uninstalling can also
include the /quiet option and other standard options. If the Report Builder Windows Installer Package
(ReportBuilder3_x86.msi) has been removed, you cannot use the command line easily to uninstall Report
Builder. To learn more about how you might be able to remove Report Builder by using its GUID, see the
documentation for the msiexec program in Command-Line Options.
If folders used by Report Builder include custom files, the folders and the files are preserved when Report
Builder is removed. Only the Report Builder files are removed.
To uninstall Report Builder from the control panel
1. On the Star t menu, click Control Panel .
2. In the Control Panel, click Programs and Features .
3. Locate Microsoft SQL Server Report Builder in the Name list and click it.
4. Click Uninstall .
5. If prompted to confirm the uninstall of Report Builder, click Yes .
To uninstall Report Builder from the command line
1. On the Star t menu, click Run .
2. In the Open text box, type cmd.
3. In the command prompt window, navigate to the folder with ReportBuilder3_x86.msi.
4. Type a basic command line such as the following:
msiexec /x ReportBuilder3_x86.msi /quiet /l*v install.log

If you can to include logging, use a command line such as the following:
msiexec /x ReportBuilder3_x86.msi /quiet /l*v c:\junk\install.log

5. Press Enter .

Next steps
Install Report Builder
More questions? Try asking the Reporting Services forum
Verify a Reporting Services Installation
3/5/2021 • 4 minutes to read • Edit Online

Reporting Services report servers can be installed in one of two modes, Native or SharePoint. The steps you
should follow for verifying the installation depend on the report server mode.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

Verify SharePoint Mode Installation


To verify the Reporting Services Service
1. From SharePoint central administration, click Manage ser vices on ser ver in the System Settings
group.
2. Verify the SQL Ser ver Repor ting Ser vices Ser vice is installed and in the Running state.
If you do not see the Reporting Services service in the list, verify the service is installed. For more
information, see Install the first Report Server in SharePoint mode.
To verify the Service Application
1. To verify from Central Administration you have at least one Reporting Services service application, click
Manage Ser vice Applications in the Application Management group.
2. Verify there is a service application of type SQL Ser ver Repor ting Ser vices Ser vice Application and
a corresponding application proxy.
3. Click near the name of the service application and then click Proper ties in the SharePoint toolbar. If you
click the name of the service application it will open the Management pages of the service application,
not the properties page.
4. Verify the Web Application Association is configured to point to the desired web application.
To verify the Site collection Feature
1. In site settings, click Site collection Features in the Site Collection Administration group.
2. Verify the Repor t Ser ver Integration Feature is active.
To Verify Reporting Server content types
1. To verify or add Reporting Services report server content types, see Add Reporting Services Content Types to
a SharePoint Library.
To verify you can launch Report Builder
1. From a document library, click Documents in the SharePoint ribbon.
2. Click New Document and click Repor t Builder Repor t . If you do not see this option, review the
previous procedure on adding the report server content types to a library.
Create a basic report
1. In a SharePoint document library, create a basic Reporting Services report that only contains a text box,
for example a title. The report does not contain any data sources or datasets. The goal is to verify you can
open Report Builder and a basic report will preview.
2. Save the report to the document library and the run the report from the library. For more information on
creating reports with Report Builder, see Start Report Builder.
Reporting Services samples
1. Complete one of the Reporting Services tutorials. For more information, see Reporting Services Tutorials
(SSRS).
2. Download the Adventure works sample database and the Reporting Services sample reports from
GitHub. For more information, see AdventureWorks sample databases.

Verify a Native Mode Installation


When you install a Native mode report server using the default configuration, Setup installs and deploys the
server. You can verify whether Setup deployed the report server by performing a few simple tests. You must be a
local administrator to perform these steps. To enable other users to perform testing, you must configure report
server access for those users.
To verify that the report server is installed and running
1. Run the Reporting Services Configuration tool and connect to the report server instance you just
installed. The Web Service URL page includes a link to the Report Server Web service. Click the link to
verify you can access the server. If the report server database is not configured, do that first before
clicking the link.
2. Open the Services console applications and verify that the Report Server service is running. To view the
status of the Report Server service, click Star t , point to Control Panel , double-click Administrative
Tools , and then double-click Ser vices . When the list of services appears, scroll to Repor t Ser ver
(MSSQLSERVER) . The status should be Star ted .
3. Open a browser and type the report server URL in the address bar. The address consists of the server
name and the virtual directory name that you specified for the report server during setup. By default, the
report server virtual directory is named Repor tSer ver . You can use the following URL to verify report
server installation: https://<computer name>/ReportServer*<_instance name>*. The URL will be
different if you installed the report server as a named instance. For more information about the URL
format, see Configure Report Server URLs (Report Server Configuration Manager). If you are a local
administrator on Windows Vista or Windows Server 2008, see Configure a Native Mode Report Server
for Local Administration (SSRS).
4. Run reports to test report server operations. For this step, you can create a sample report from a tutorial.
For more information, see Create a Basic Table Report (SSRS Tutorial).
To verify that the web portal is installed and running
1. Open a browser and type the Web Portal URL in the address bar. The address consists of the server name
and the virtual directory name that you specified for the web portal during setup or in the Web Portal
URL page in the Reporting Services Configuration tool. By default, the web portal virtual directory is
Repor ts . You can use the following URL to verify the web portal installation:
https://<computer name>/Reports*<_instance name>*.
2. Use the web portal to create a new folder or upload a file to test whether definitions are passed back to
the report server database. If these operations are successful, the connection is functional.
For more information, see Web Portal (SSRS Native Mode).
To verify that Report Designer is installed and running
1. Open SQL Server Data Tools (SSDT), and create a new project based on a Report Server project type. For
more information on using the Report Server Project Wizard, see Reporting Services in SQL Server Data
Tools (SSDT).
2. If you installed report samples, open the sample report project files and publish the reports to a report
server.

See Also
Troubleshoot a Reporting Services Installation
Cause and Resolution of Reporting Services Errors
Troubleshoot a Reporting Services installation
3/5/2021 • 11 minutes to read • Edit Online

If you cannot install Reporting Services because of errors that occur during setup, use the instructions in this
article to address the conditions that are most likely to cause installation errors.
For information about other errors and issues related to Reporting Services, see Troubleshoot SSRS issues and
errors.
Review the Online release notes in case the issue you encounter is described in the release notes.

Check setup logs


Setup errors are recorded in log files in the C:\Program Files\Microsoft SQL Ser ver\ nnn \Setup
Bootstrap\Log folder. A subfolder is created each time you run Setup. The subfolder name is the time and date
you ran Setup. For instructions on how to view the Setup log files, see View and Read SQL Server Setup Log
Files.
The log files include a collection of files.
Open the *_summary.txt file to view product, component, and instance information.
Open the *_errorlog.txt file to view error information generated during Setup.
Open the *_RS_*_ComponentUpdateSetup.log to view Reporting Services setup information.

Check prerequisites
Setup checks prerequisites automatically. However, if you are troubleshooting setup problems, it is helpful to
know which requirements Setup is checking for.
Account requirements for running Setup include membership in the local Administrators group. Setup
must have permission to add files, registry settings, create local security groups, and set permissions. If
you are installing a default configuration, Setup must have permission to create a report server database
on the SQL Server instance on which you are installing.
Operating System must support HTTP.SYS 1.1.
HTTP service must be enabled and running.
Distributed Transaction Coordinator (DTC) must be running if you are also installing SQL Server Agent
service.
Authz.dll must be present in the System32 folder.
Setup no longer checks for Internet Information Services (IIS) or ASP.NET. Reporting Services requires MDAC 2.0
and the Microsoft .NET Framework version 2.0; Setup will install these, if they are not already installed.

Troubleshoot problems with SharePoint mode installations


Report Server Configuration Manager Does not start
You do not see the SQL Server Reporting Services service in SharePoint Central Administration after
installing SQL Server 2016 SSRS in SharePoint mode
Reporting Services PowerShell cmdlets are not available and commands are not recognized
You see an error message indicating the URL is not configured
Setup fails on a computer with SharePoint installed but it is not configured
SharePoint Central Administration Page is blank
You see an error Message when you try to create a new Report Builder Report
You see an error message that RS_SHP is not supported with PREPAREIMAGE
Report Server Configuration Manager does not start
Description: This issue is by design in SQL Server 2012 and later. Reporting Services is architected for the
SharePoint service architecture. The Configuration Manager is no longer needed to configure and administer
Reporting Services in SharePoint mode.
Workaround: Use SharePoint Central Administration to configure a report server in SharePoint mode. For
more information, see Manage a Reporting Services SharePoint Service Application
Troubleshoot Problems with SharePoint Mode installations
You do not see the SQL Server Reporting Services service in SharePoint Central Administration after
installing SQL Server 2016 SSRS in SharePoint mode
Description: If after successfully installing SQL Server 2016 Reporting Services in SharePoint mode and the
SQL Server 2016 Reporting Services Add-in for SharePoint 2013/2016, you do not see "SQL Server Reporting
Services" in the following two menus, then the Reporting Services service has not been registered:
SharePoint 2013/2016 Central Administration -> "Application Management" -> "Manage Services on
Server" page
SharePoint 2013/2016 Central Administration -> "Application Management" -> "Manage Service
Applications" -> "New" menu
Workaround: To register and start the Reporting Services SharePoint Services, complete the following steps:
1. On the computer that runs SharePoint 2013/2016 Central Administration
a. Open the SharePoint 2013/2016 Management Shell with administrator privileges. Right-click the
icon and click Run As Administrator . Run the following three cmdlets from the shell:

b. Install-SPRSService

c. Install-SPRSServiceProxy

d. Get-SPServiceInstance -all |where {$_.TypeName -like "SQL Server Reporting*"} | Start-


SPServiceInstance

2. Verify the Reporting Services Service shows status as "Star ted " on the page: SharePoint 2013/2016
Central Administration -> "Application Management " -> "Manage Ser vices on Ser ver "

Troubleshoot Problems with SharePoint Mode installations


Reporting Services PowerShell cmdlets are not available and commands are not recognized
Description: When you try to run a Reporting Services PowerShell cmdlet, you see an error message similar to
this one:
The term 'Install-SPRSServiceInstall-SPRSService' is not recognized as the name of a cmdlet, function,
script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path
is correct and try again. At line:1 char:39+ Install-SPRSServiceInstall-SPRSService <<<< + CategoryInfo :
ObjectNotFound: (Install-SPRSServiceInstall-SPRSService:String) [], CommandNotFoundExcep
Workaround: Complete one of the following actions:
Run the Reporting Services add-in for SharePoint products. rssharepoint.msi .
Install Reporting Services SharePoint mode from the SQL Server installation media.
If the SharePoint 2013/2016 Management Shell is open when you complete one of the workarounds, close
and reopen the management shell.
For more information, see the following articles:
Where to find the Reporting Services add-in for SharePoint Products
Install the first Report Server in SharePoint mode

Troubleshoot Problems with SharePoint Mode installations


You see an error message indicating the URL is not configured
Description: You see an error message similar to this one:
This SQL Server Reporting Services (SSRS) functionality is not supported. Use Central Administration to verify
and fix one or more of the following issues:
A report server URL is not configured. Use the SSRS Integration page to set it.
The SSRS service application proxy is not configured. Use the SSRS service application pages to
configure the proxy.
The SSRS service application is not mapped to this web application. Use the SSRS service application
pages to associate the SSRS service application proxy to the Application Proxy Group for this web
application.
Workaround: The error message contains three suggested steps to correct this issue. The first suggestion in
the message 'A report server URL is not configured.' is relevant when integrating with report server version
previous to SQL Server 2012 (11.x). SharePoint Configuration for the previous report server versions is
completed on the General Application Settings page, using the SQL Ser ver Repor ting Ser vices (2008
and 2008 R2) ..
More Information: You will see this error message when attempting to use any of the Reporting Services
functionality that requires a connection to the Reporting Services service. This includes:
Opening SQL Server Report Builder from a SharePoint document library.
Manage Subscriptions.
Manage a service application.

Troubleshoot Problems with SharePoint Mode installations


Setup fails on a computer with SharePoint installed but it is not configured
Description: If you select to install Reporting Services SharePoint Mode on a computer that has SharePoint
installed but SharePoint is not configured, you will see a message similar to the following and setup will stop:
SQL Server Setup has stopped working
Workaround: Configure SharePoint and then run SQL Server Installation.
More Information: When installing Reporting Services into and existing SharePoint installation, setup
attempts to install and start the Reporting Services SharePoint service. If SharePoint is not configured, the
service installation fails, causing setup to fail.
Troubleshoot Problems with SharePoint Mode installations
SharePoint Central Administration Page is blank
Description: You were able to successfully install SharePoint 2013/2016, with no installation errors. However
when you browse to Central Administration, you only see a blank page:
Workaround: This issue is not specific to Reporting Services but is related to the configuration of permissions
in your overall SharePoint installation. Here are some suggestions:
Review the SharePoint article on development environments. Set up a general development environment
for SharePoint
Review the forum post: Central Administration returns blank page after installation on Windows 7
The Service account you are using for SharePoint services such as the SharePoint 2013/2016 Central
Administration Service, should have administrative privileges in the local operating system.

Troubleshoot Problems with SharePoint Mode installations


You see an error Message when you try to create a new Report Builder Report
Description: You see an error message similar to the following when you attempt to create a Report Builder
report inside a document library:
This functionality is not supported because a SQL Server Reporting Services service application does not exist
or a report server URL has not been configured in Central Administration.
Workaround: Verify you have an Reporting Services service application and it is correctly configured. For more
information, see Install the first Report Server in SharePoint mode.
Troubleshoot Problems with SharePoint Mode installations
You see an error message that RS_SHP is not supported with PREPAREIMAGE
Description: When you try to run PREPAREIMAGE for Reporting Services you see an error message similar to
this one:
"The specified feature 'RS_SHP' is not supported when running the PREPAREIMAGE action, since it does not
support SysPrep. Remove the features that are not compatible with SysPrep and run setup again."
Workaround: There is no work-around. Reporting Services does not support SYSPREP (PREPAREIMAGE).
Reporting Services Native mode does support SYSPREP.
Troubleshoot Problems with SharePoint Mode installations

Troubleshoot problems with the native mode installations


Performance counters are not visible after upgrading to Windows Vista or Windows Server 2008
If you upgrade the operating system to Windows Vista or Windows Server 2008 on a computer that runs
Reporting Services, Reporting Services performance counters will not be set after the upgrade.
To reinstate Reporting Services performance counters
1. Delete the following registry keys:
HKLM\SYSTEM\CurrentControlSet\Ser vices\MSRS 2016 Web Ser vice
HKLM\SYSTEM\CurrentControlSet\Ser vices\MSRS 2016 Windows Ser vice
2. Open a command window and type the following command at the prompt:
run < .NET 4.0 Framework directory >\InstallUtil.exe < Report Server Bin directory
>\Repor tingSer vicesLibrar y.dll

NOTE
Replace <.NET 4.0 Framework directory> with the physical path of the .NET Framework 4.0 files and
replace <Report Server Bin directory> with the physical path of the report server bin files.

3. Restart the Reporting Services service.


To verify that the steps worked, open a Web browser and navigate to the web portal URL or the Report Server
URL. Then open Performance Monitor to verify that the counters are working.
To add the performance registry keys again by using Registry Editor
1. Open the Registry Editor:
a. Click Star t , and click Run .
b. In the Run dialog box, in the Open box, type regedit .
2. In Registry Editor, select the following registry key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSRS 2016 Web Service\Performance

3. Right-click the Performance node, point to New , and click Multi-String Value .
4. Type Counter Names and then press ENTER.
5. Repeat to add the Counter Types registry key in this node.
6. Navigate to the following registry key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSRS 2016 Web Service\Performance

7. Right-click the Performance node, point to New , and click Multi-String Value .
8. Type Counter Names and then press ENTER.
9. Repeat to add the Counter Types registry key in this node.
After you repair the 64-bit instance or add the registry keys again manually, you can use Performance Monitor
to configure the Reporting Services performance objects that you want to monitor.
ReportServerExternalURL and PassThroughCookies configuration properties are not configured after an
upgrade from SQL Server 2005
When you upgrade from SQL Server 2005 (9.x) to SQL Server 2016 Reporting Services or later (SSRS), the
Repor tSer verExternalURL and PassThroughCookies configuration properties are not configured by the
upgrade process. Repor tSer verExternalURL is an optional property, and it should be set only if you are using
SharePoint 2.0 Web Parts and you want users to be able to retrieve a report and open it in a new browser
window. For more information about Repor tSer verExternalURL , see URLs in Configuration Files (Report
Server Configuration Manager). PassThroughCookies is required only when using Custom authentication
method. For more information about PassThroughCookies , see Configure the Web Portal to Pass Custom
Authentication Cookies.
NOTE
When you use Custom authentication, it is recommended that you migrate your installation rather than performing an
upgrade. For more information about migrating Reporting Services, see Migrate a Reporting Services Installation (Native
Mode).

By default, these properties do not exist in the SQL Server 2016 Reporting Services or later (SSRS)
configuration. If you configured these properties in SQL Server 2005 (9.x) and you continue to require the
functionality that they provide, you must manually add them to the RSRepor tSer ver.config file following the
upgrade process. For more information, see Modify a Reporting Services Configuration File
(RSreportserver.config).
401-Unauthorized error when using Windows authentication after an upgrade from SQL Server 2005 to SQL
Server 2016
If you upgrade from SQL Server 2005 (9.x) Reporting Services to SQL Server 2016 Reporting Services or later
(SSRS), and you use NTLM authentication with a built-in account for the Report Server service account, you
might encounter a 401-Unauthorized error when you access the report server or the web portal after the
upgrade.
You see this message because of a change in the default SQL Server 2016 Reporting Services or later (SSRS)
configuration for Windows authentication. Negotiate is configured when the Report Server service account is
either Network Service or Local System. NTLM is configured when the Report Server service account is not one
of those built-in accounts. To fix this issue after you upgrade, you can edit the RSReportServer.config file and
configure the AuthenticationType to be RSWindowsNTLM . For more information, see Configure Windows
Authentication on the Report Server.
Uninstalling 32-bit instance of SQL Server 2016 Reporting Services in side -by-side deployment with a 64-bit
instance breaks the 64-bit instance
When you install a 32-bit instance and a 64-bit instance of SQL Server 2016 Reporting Services or later (SSRS)
side by side on a computer, and you uninstall the 32-bit instance, four Reporting Services registry keys are
removed. Removing the keys breaks the 64-bit instance of Reporting Services. The Reporting Services registry
keys that are removed when you uninstall the 32-bit instance are:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSRS 2016 Web Service\Performance:Counter Names
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSRS 2016 Windows Service\Performance:Counter Names
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSRS 2016 Web Service\Performance:Counter Types
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSRS 2016 Windows Service\Performance:Counter Types

To fix this issue, you can repair the 64-bit instance. Although it is recommended to use repair, you can add the
registry keys again manually by using Registry Editor.
Cau t i on

Incorrectly editing the registry can severely damage your system. Before making changes to the registry, you
should back up any valued data on the computer.

Additional resources
The following are additional resources you can review to assist you with troubleshooting issues:
TechNet Wiki: Troubleshoot SQL Server Reporting Services (SSRS) in SharePoint 2010 Integrated Mode
Microsoft Q & A: SQL Server Reporting Services
Got feedback or more questions? Visit Microsoft SQL Server UserVoice.
Upgrade and Migrate Reporting Services
5/7/2021 • 14 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server 2016 Reporting Services and later ❌ Power BI Report Server ✔
️ SharePoint
This topic is an overview of the upgrade and migration options for SQL Server Reporting Services. Here are the
general approaches to upgrading a SQL Server Reporting Services deployment:
Upgrade to Repor ting Ser vices 2016 and older from Repor ting Ser vices 2016 and older : You
upgrade the Reporting Services components on the servers and instances where they are currently
installed. This is commonly called an "in place" upgrade. In-place upgrade is not supported from one
mode of Reporting Services server to another. For example, you cannot upgrade a Native Mode report
server to a SharePoint mode report server. You can migrate your report items from one mode to another.
For more information, see the SharePoint mode upgrade and migration scenarios section later in this
document.
Upgrade to Repor ting Ser vices 2017 and later from Repor ting Ser vices 2016 and older isn’t
the same upgrade scenario as in previous versions. When upgrading to Reporting Services 2016 and
older versions, you could following an in-place upgrade process using SQL Server installation media.
When upgrading to Reporting Services 2017 and later from Reporting Services 2016 and older, you can’t
follow the same steps because the new Reporting Services installation is a standalone product. It's no
longer part of the SQL Server installation media.
To upgrade from Reporting Services 2016 and older versions to Reporting Services 2017 and later, follow
the Migrate a Reporting Services Installation (Native Mode) article, with Reporting Services 2017 or later
as your destination instance.
Upgrade from Repor ting Ser vices 2017 to future versions is again an in-place upgrade scenario,
because the product installation GUIDs are the same. Run the SQLServerReportingServices.exe
installation file to begin the in-place upgrade on the server where Reporting Services is currently
installed.
Migrate : You install and configure a new SharePoint environment, copy your report items and resources
to the new environment, and configure the new environment to use existing content. A lower level form
of migration is to copy the Reporting Services databases, configuration files, and if you are using
SharePoint mode, the SharePoint content databases.

NOTE
Reporting Services integration with SharePoint isn't available after SQL Server 2016.

Known Upgrade Issues and Best Practices


For a detailed list of the supported editions and versions you can upgrade, see Supported Version and Edition
Upgrades.

TIP
For the latest information regarding issues with SQL Server, see SQL Server 2016 Release Notes.
Side By Side Installations
SQL Server Reporting Services Native mode can be installed side-by-side with a SQL Server 2012 (11.x) or SQL
Server 2014 (12.x) Native mode deployment.
There is no support for side-by-side deployments of SQL Server Reporting Services in SharePoint mode and
any previous versions of Reporting Services SharePoint mode components.

In-place Upgrade
Upgrade is completed by SQL Server Setup. SQL Server Setup can be used to upgrade any or all SQL Server
components, including Reporting Services. Setup detects the existing instances and prompts you to upgrade.
SQL Server Setup provides upgrade options that you can specify as a command-line argument or in the Setup
wizard.
When you run SQL Server Setup, you can select the option to upgrade from one of the following versions or
you can install a new instance of SQL Server Reporting Services that runs side-by-side existing installations:
SQL Server 2014 (12.x)
SQL Server 2012 (11.x)
SQL Server 2008 R2
SQL Server 2008
For more information on SQL Server, see the following:
Upgrade to SQL Server 2016
Upgrade to SQL Server 2016 Using the Installation Wizard (Setup)
Install SQL Server 2016 from the Command Prompt

Pre-Upgrade Checklist
Before upgrading to SQL Server Reporting Services, review the following:
Review requirements to determine whether your hardware and software can support SQL Server 2016
Reporting Services or later (SSRS). For more information, see Hardware and Software Requirements for
Installing SQL Server 2016.
Use System Configuration Checker (SCC) to scan the report server computer for any conditions that
might prevent a successful installation of SQL Server Reporting Services. For more information, see
Check Parameters for the System Configuration Checker.
Review security best practices and guidance for SQL Server. For more information, see Security
Considerations for a SQL Server Installation.
Back up your symmetric key. For more information, see Back Up and Restore Reporting Services
Encryption Keys.
Back up your report server databases and configuration files. For more information, see Backup and
Restore Operations for Reporting Services.
Back up any customizations to existing Reporting Services virtual directories in IIS.
Remove invalid TLS/SSL certificates. This includes certificates that are expired and you do not plan to
update prior to upgrading Reporting Services. Invalid certificates will cause upgrade to fail and an error
message similar to the following will be written to the Reporting Services Log file:
Microsoft.Repor tingSer vices.WmiProvider.WMIProviderException: A Secure Sockets Layer
(SSL) cer tificate is not configured on the Web site..
Before you upgrade a production environment, always run a test upgrade in a pre-production environment that
has the same configuration as your production environment.

IMPORTANT
These steps must be completed in full for a later rollback to be possible. Microsoft Support cannot recover backups,
encryption keys, or configuration files that were not backed up.

Overview of Migration Scenarios


If you are upgrading from a supported version of Reporting Services to SQL Server, you can usually run the SQL
Server Setup Wizard to upgrade the report server program files, database, and all application data.
However, migrating a report server installation manually is required if you encounter any of the following
conditions:
You want to change the type of report server used in your deployment. For example, you cannot upgrade
or convert a native mode report server to SharePoint mode. For more information, see Native to
SharePoint Migration (SSRS).
You want to minimize the amount of time the report server is taken offline during the upgrade process.
Your current installation remains online while you copy content data to a new report server instance and
test the installation without changing the state of your existing report server installation.
You want to migrate a SharePoint 2010 deployment of Reporting Services to SharePoint 2013/2016.
SharePoint 2013/2016 does not support in-place upgrade from SharePoint 2010. For more information,
see Migrate a Reporting Services Installation (SharePoint Mode).

Native Mode Upgrade and Migration Scenarios


Upgrade: In-place upgrade for native mode is the same process for each of the supported versions that are
listed earlier in this topic. Run the SQL Server installation wizard or a command line installation. Following
installation the report server database will automatically upgrade to the new report server database schema.
For more information, see the In-place Upgrade section in this topic.
The upgrade process begins when you select an existing report server instance to upgrade.
1. If the report server database is on a remote computer and you do not have permission to update that
database, Setup prompts you to provide credentials to update to a remote report server database. Be
sure to provide credentials that have sysadmin or database update permissions.
2. Setup checks for conditions or settings that prevent upgrade and reads configuration settings. Examples
include custom extensions deployed on the report server. If upgrade is blocked, you must either modify
your installation so that upgrade is no longer blocked, or migrate to a new SQL Server Reporting
Services instance. For more information, see the Upgrade Advisor documentation.
3. If upgrade can proceed, Setup prompts you to continue with the upgrade process.
4. Setup creates new folders for SQL Server Reporting Services program files. The program folders for a
Reporting Services installation include MSRS13.<instance name>.
5. Setup adds the SQL Server Reporting Services report server program files, configuration tools, and
command line utilities that are part of the report server feature.
a. Program files from the previous version are removed.
b. Report server configuration tools and utilities that are upgraded to the new version include the
Native Mode Reporting Services Configuration tool, command line utilities such as RS.exe, and
Report Builder.
c. Other client tools such as SQL Server Management Studio are a separate download and need to
be upgraded separately. For more information, see Download SQL Server Management Studio
(SSMS).
d. SQL Server Data Tools (SSDT) is a separate download. For more information, see SQL Server Data
Tools in Visual Studio 2015.
6. Setup reuses the service entry in Service Control Manager for the SQL Server Reporting Services Report
Server service. This service entry includes the Report Server Windows service account.
7. Setup reserves new URLs based on existing virtual directory settings in IIS. Setup might not remove
virtual directories in IIS, so be sure to remove those manually after upgrade is finished.
8. Setup merges settings in the configuration files. Using the configuration files from the current installation
as the basis, new entries are added. Obsolete entries are not removed, but they will no longer be read by
the report server after upgrade is finished. Upgrade will not delete old log files, the obsolete
RSWebApplication.config file, or virtual directory settings in IIS. Upgrade will not remove older versions
of Report Designer, Management Studio, or other client tools. If you no longer require them, be sure to
remove these files and tools after upgrade is finished.
Migration: Migrating a previous version of a native mode installation to SQL Server Reporting Services is the
same steps for all of the supported versions that are listed earlier in this topic. For more information, see
Migrate a Reporting Services Installation (Native Mode)

Upgrade a Reporting Services Native Mode Scale-out Deployment


The following is a summary of how to upgrade a Reporting Services Native mode deployment that is scaled-out
to more than one report server. This process requires downtime of the Reporting Services deployment:
1. Backup the report server databases and encryption keys. For more information, see Backup and Restore
Operations for Reporting Services and Add and Remove Encryption Keys for Scale-Out Deployment
(Report Server Configuration Manager).
2. Use the Reporting Services Configuration Manager and remove all of the report servers from the scaled-
out deployment. For more information, see Configure a Native Mode Report Server Scale-Out
Deployment (Report Server Configuration Manager).
3. Upgrade one of the report servers to SQL Server Reporting Services.
4. Use the Reporting Services Configuration Manager to add the report servers back to the scale-out
deployment. For more information, see Configure a Native Mode Report Server Scale-Out Deployment
(Report Server Configuration Manager).
For each server, repeat the upgrade and Scale-out steps.

Roll back a Reporting Services Cumulative Update


Cumulative Updates in Reporting Services versions 2017 and later support in-place upgrade but cannot be
selectively uninstalled. To roll back an upgrade, you must uninstall the entire service and reinstall the prior
version following the directions below:
IMPORTANT
These steps require that the pre-upgrade checklist has been followed completely. Step 2 will render existing configuration
files, service configurations, and encryption keys irrecoverable. Microsoft Support cannot recover these configuration files
or decrypt these encryption keys to assist in rollback.

1. Take note of any custom configurations including service credentials, email or file share settings, or
report server URLs.
2. Uninstall SQL Server Reporting Services. In a scale-out deployment, repeat for all nodes in the scale-out.
For more information, see Uninstall Native Mode
3. Restore backups of ReportServer database. For more information, see Backup and Restore Operations for
Reporting Services
4. Reinstall the prior update of SQL Server Reporting Services.
5. Restore pre-upgrade configuration files.
6. Restore the encryption key backup. For more information, see Back Up and Restore Encryption Keys
7. Recreate all of the custom configurations noted in step 1.
8. In a scale-out deployment, repeat steps 4 through 7 for all other nodes in the scale-out deployment.

SharePoint Mode Upgrade and Migration Scenarios


The following sections describe the issues and basic steps needed to upgrade or migrate from specified versions
of Reporting Services SharePoint mode to SQL Server Reporting Services Reporting Services SharePoint mode.
There are two installation components to upgrade a Reporting Services SharePoint Mode deployment.
Reporting Services SharePoint Shared Service.

TIP
Use the Reporting Services SharePoint cmdlet Get-SPRSServiceApplicationServers to determine servers in the
SharePoint farm that are currently running the Reporting Services SharePoint Shared Service and therefore require
an upgrade.

Reporting Services Add-in for SharePoint products. For more information, see Install or Uninstall the
Reporting Services Add-in for SharePoint.
For detailed steps on Migrating a SharePoint mode installation, see Migrate a Reporting Services Installation
(SharePoint Mode).

IMPORTANT
Some of the following scenarios require down time of the SharePoint environment due to the different technologies that
need to be upgraded. If your situation does not allow for down time, you will need to complete a migration instead of an
in-place upgrade.

SQL Server 2014 (12.x) to SQL Server Reporting Services


Star ting environment: SQL Server 2014 (12.x) or SQL Server 2014 (12.x) SP1, SharePoint 2010 or SharePoint
2013.
Ending environment: SQL Server Reporting Services, SharePoint 2013 or SharePoint 2016.
SharePoint 2013/2016: SharePoint 2013/2016 does not support in-place upgrade from SharePoint
2010. However the procedure of database-attach upgrade is supported.
If you have a Reporting Services installation integrated with SharePoint 2010, you cannot upgrade in-
place the SharePoint server. However you can migrate content databases and service application
databases from the SharePoint 2010 farm to a SharePoint 2013/2016 farm.
SQL Server 2012 (11.x) to SQL Server Reporting Services
Star ting environment: SQL Server 2012 (11.x) or SQL Server 2012 SP1 (11.0.3x), SharePoint 2010.
Ending environment: SQL Server Reporting Services, SharePoint 2013 or SharePoint 2016.
SharePoint 2013/2016: SharePoint 2013/2016 does not support in-place upgrade from SharePoint
2010. However the procedure of database-attach upgrade is supported.
If you have a Reporting Services installation integrated with SharePoint 2010, you cannot upgrade in-
place the SharePoint server. However you can migrate content databases and service application
databases from the SharePoint 2010 farm to a SharePoint 2013/2016 farm.
SQL Server 2008 R2 to SQL Server Reporting Services
Star ting environment: SQL Server 2008 R2, SharePoint 2010.
Ending environment: SQL Server Reporting Services, SharePoint 2013 or SharePoint 2016.
SharePoint 2013/2016: SharePoint 2013/2016 does not support in-place upgrade from SharePoint
2010. However the procedure of database-attach upgrade is supported.
SharePoint must be migrated first before you can upgrade Reporting Services.
Install the SQL Server Reporting Services version of the Reporting Services add-in for SharePoint on
each web front-end in the farm. You can install the add-in by using the SQL Server Reporting Services
installation wizard or by downloading the add-in.
Run SQL Server Reporting Services installation to upgrade SharePoint mode for each 'report server'. The
SQL Server installation wizard will install the Reporting Services Service and create a new Service
application.

Considerations for a Migration


When moving application data, you should be aware of the following concerns and restrictions:
Protection of encryption key includes a hash that incorporates machine identity.
Report server database names are fixed and cannot be renamed on new computer.
Encryption Key Considerations
Always back up the encryption keys before moving a report server database to a new computer.
Moving a report server installation to another computer will invalidate the hash that protects the encryption
keys used to help secure sensitive data stored in the report server database. Each report server instance that
uses the database has its copy of the encryption key, which is encrypted with the identity of the service account
as it is defined on the current computer. If you change computers, the service will no longer have access to its
key, even if you use the same account name on the new computer.
To re-establish reversible encryption on the new report server computer, you must restore the key that you
previously backed up. The complete key set that is stored in the report server database consists of a symmetric
key value, plus service identity information used to restrict access to the key so that it can be used only by the
report server instance that stored it. During key restoration, the report server replaces existing copies of the key
with new versions. The new version includes machine and service identity values as defined on the current
computer. For more information, see the following topics:
SharePoint mode: See the "Key Management" section of Manage a Reporting Services SharePoint Service
Application
Native Mode: See Back Up and Restore Reporting Services Encryption Keys
Fixed Database Name
You cannot rename the report server database. The identity of the database is recorded in report server stored
procedures when the database is created. Renaming either the report server primary or temporary databases
will cause errors to occur when the procedures run, invalidating your report server installation.
If the database name from the existing installation is not suited for the new installation, you should consider
creating a new database that has the name that you prefer, and then load existing application data using the
techniques in the following list:
Write a Visual Basic script that calls Report Server Web service SOAP methods to copy data between
databases. You can use the RS.exe utility to run the script. For more information about this approach, see
Scripting and PowerShell with Reporting Services.
Write code that calls the WMI provider to copy data between databases. For more information about this
approach, see Access the Reporting Services WMI Provider.
If you have just a few items, you can republish reports, and shared data sources from Report Designer,
Model Designer, and Report Builder to the new report server. You must re-create role assignments,
subscriptions, shared schedules, report snapshot schedules, custom properties that you set on reports or
other items, model item security, and properties that you set on the report server. You will lose report
history and report execution log data.

Additional Resources
NOTE
For more information on SharePoint database-attach upgrade, see the following:

Overview of the upgrade process to SharePoint 2016.


Overview of the upgrade process to SharePoint 2013.
Clean up preparations before an upgrade to SharePoint 2013.
Upgrade databases from SharePoint 2013 to SharePoint 2016.
Upgrade databases from SharePoint 2010 to SharePoint 2013.

Next steps
Upgrade Reports
Upgrade to SQL Server 2016 Using the Installation Wizard (Setup)
More questions? Try asking the Reporting Services forum
Migrate a Reporting Services Installation (Native
Mode)
3/5/2021 • 13 minutes to read • Edit Online

This topic provides step-by-step instructions for migrating one of the following supported versions of a
Reporting Services native mode deployment to a new SQL Server Reporting Services instance:
SQL Server 2016 (13.x)
SQL Server 2014 (12.x)
SQL Server 2012 (11.x)
SQL Server 2008 R2
SQL Server 2008
SQL Server 2014 (12.x)
SQL Server 2012 (11.x)
SQL Server 2008 R2
SQL Server 2008
For information on migrating a Reporting Services SharePoint mode deployment, see Migrate a Reporting
Services Installation (SharePoint Mode).
Migration is defined as moving application data files to a new SQL Server instance. The following are common
reasons you must migrate your installation:
You have a large-scale deployment or uptime requirements.
You are changing the hardware or topology of your installation.
You encounter an issue that blocks upgrade.

Native Mode Migration Overview


The migration process for Reporting Services includes manual and automated steps. The following tasks are
part of a report server migration:
Back up database, application, and configuration files.
Back up the encryption key.
Install a new instance of SQL Server. If you are using the same hardware, you can install SQL Server side
by side with your existing installation if it was one of the supported versions.

TIP
A side-by-side installation may require that you install SQL Server as a named instance.

Move the report server database and other application files from your existing installation to your new
SQL Server installation.
Move any custom application files to the new installation.
Configure the report server.
Edit RSRepor tSer ver.config to include any custom settings from your previous installation.
Optionally, configure custom Access Control Lists (ACLs) for the new Reporting Services Windows
service group.
Remove unused applications and tools after you have confirmed that the new instance is fully
operational.
There are restrictions on the editions of SQL Server that host the report server database. Review the following
topic if you are reusing a report server database that was created in a previous installation.
Create a Report Server Database

Fixed Database Name


You cannot rename the report server database. The identity of the database is recorded in report server stored
procedures when the database is created. Renaming either the report server primary or temporary databases
cause errors when the procedures run, invalidating your report server installation.
If the database name from the existing installation is not suited for the new installation, you should consider
creating a new database that has the name, and then load existing application data using the techniques in the
following list:
Write a Visual Basic script that calls Report Server Web service SOAP methods to copy data between
databases. You can use the RS.exe utility to run the script. For more information about this approach, see
Scripting and PowerShell with Reporting Services.
Write code that calls the WMI provider to copy data between databases. For more information about this
approach, see Access the Reporting Services WMI Provider.
If you have just a few items, you can republish reports and shared data sources from Report Designer,
Model Designer, and Report Builder to the new report server. Re-create the role assignments,
subscriptions, shared schedules, report snapshot schedules, custom properties that you set on reports or
other items, model item security, and properties that you set on the report server. Be prepared to lose
report history and report execution log data if you follow these actions.

Before You Start


Even though you are migrating rather than upgrading the installation, consider running Upgrade Advisor on
your existing installation help identify any issues that could affect migration. This step is especially helpful if you
are migrating a report server that you did not install or configure. By running Upgrade Advisor, you can find out
about custom settings that might not be supported in a new SQL Server installation.
In addition, you should be aware of several important changes in SQL Server Reporting Services that affect how
you migrate your installation:
The new web portal has replaced Report Manager.
Starting with SQL Server 2008, IIS is no longer a prerequisite. If you are migrating a report server
installation to a new computer, you do not need to add the Web server role. In addition, steps for
configuring URLs and authentication are different from the previous release, as are techniques and tools
for diagnosing and troubleshooting problems.
Report Server Web service, the web portal, and the Report Server Windows service run under the same
account. All three applications read configuration settings from RSReportServer.config file.
The web portal and SQL Server Management Studio are designed to remove overlapping features. Each
tool supports a distinct set of tasks.
ISAPI filters are not supported in SQL Server 2008 Reporting Services and later versions. If you use ISAPI
filters, you must redesign your reporting solution prior to migration.
IP address restrictions are not supported in SQL Server 2008 Reporting Services and later versions. If
you use IP address restrictions, you must redesign your reporting solution prior to migration or use a
technology such as a firewall, router, or Network Address Translation (NAT) to configure addresses that
are restricted from accessing the report server.
Client Transport Layer Security (TLS), previously known as Secure Sockets Layer (SSL), certificates are not
supported in SQL Server 2008 Reporting Services and later versions. If you use client TLS certificates,
you must redesign your reporting solution prior to migration.
If you use an authentication type other than Windows-Integrated authentication, you must update the
<AuthenticationTypes> element in the RSRepor tSer ver.config file with a supported authentication
type. The supported authentication types are NTLM, Kerberos, Negotiate, and Basic. Anonymous, .NET
Passport, and Digest authentication are not supported in SQL Server 2008 Reporting Services and later
versions.
If you use custom cascading style sheets in your reporting environment, they can't be migrated. Manually
move them following migration.
For more information about changes in SQL Server Reporting Services, see the Upgrade Advisor
documentation and What's New in Reporting Services.

Backup Files and Data


Before you install a new instance of Reporting Services, be sure to back up all of the files in your current
installation.
1. Back up the encryption key for the report server database. This step is critical to migration success.
Further on in the migration process, you must restore it for the report server to regain access to
encrypted data. To back up the key, use the Report Server Configuration Manager.
2. Back up the report server database using any of the supported methods for backing up a SQL Server
database. For more information, see the instructions on how to back up the report server database in
Moving the Report Server Databases to Another Computer (SSRS Native Mode).
3. Back up the report server configuration files. Files to back up include:
a. Rsreportserver.config
b. Rswebapplication.config
c. Rssrvpolicy.config
d. Rsmgrpolicy.config
e. Reportingservicesservice.exe.config
f. Web.config for the Report Server ASP.NET application.
g. Machine.config for ASP.NET if you modified it for report server operations.

Install SQL Server Reporting Services


Install a new report server instance in files-only mode so that you can configure it to use non-default values. For
command-line installation, use the FilesOnly argument. In the Installation Wizard, select the Install but do
not configure option .
Click one of the following links to view instructions on how to install a new instance of Reporting Services:
Install SQL Server Reporting Services 2016 and older from the Installation Wizard (Setup)
Install SQL Server Reporting Services 2016 and older from the Command Prompt
Install SQL Server Reporting Services 2017 and later

Move the Report Server Database


The report server database contains published reports, models, shared data sources, schedules, resources,
subscriptions, and folders. It also contains system and item properties, and permissions for accessing report
server content.
If your migration includes using a different Database Engine instance, you must move the report server
database to the new Database Engine instance. If you are using the same Database Engine instance, skip to
section Move Custom Assemblies or Extensions.
To move the report server database, follow these steps:
1. Choose the Database Engine instance to use. SQL Server Reporting Services requires that you use one of
the following versions to host the report server database:
SQL Server 2016 (13.x)
SQL Server 2014 (12.x)
SQL Server 2012 (11.x)
SQL Server 2008 R2
SQL Server 2008
SQL Server 2014 (12.x)
SQL Server 2012 (11.x)
SQL Server 2008 R2
SQL Server 2008
2. Start SQL Server Management Studio and connect to the Database Engine.
3. Create the RSExecRole in the system databases if the Database Engine has never hosted a report server
database. For more information, see Create the RSExecRole.
4. Follow the instructions in Moving the Report Server Databases to Another Computer (SSRS Native
Mode).
Remember that both the report server database and the temporary database are interdependent and must be
moved together. Do not copy the databases; copying does not transfer all of the security settings to the new
installation. Do not move SQL Server Agent jobs for scheduled report server operations. The report server
recreates these jobs automatically.

Move Custom Assemblies or Extensions


If your installation includes custom report items, assemblies, or extensions, you must redeploy the custom
components. If you are not using custom components, skip to section Configure the Report Server.
To redeploy the custom components, follow these steps:
1. Determine whether the assemblies are supported or need recompilation:
Custom security extensions must be rewritten using the IAuthenticationExtension2 interface.
Custom rendering extensions for SQL Server 2008 Reporting Services must be rewritten using the
Rendering Object Model (ROM).
HTML 3.2 and HTML OWC renderers are not supported in SQL Server 2008 Reporting Services
and later versions.
Other custom assemblies should not require recompilation.
2. Move the assemblies to the new report server \bin folder. In SQL Server, the report server binaries are
located in the following location for the default report server instance:
\Program files\Microsoft SQL Server\MSRS13.MSSQLSERVER\Reporting Services\ReportServer\bin

3. Modify the configuration files to add entries for your custom component. The entries vary depending on
the kind of assembly you are using. For instructions on where to place files and add configuration entries,
see below:
a. Deploying a Custom Assembly
b. How to: Deploy a Custom Report Item
c. Deploying a Data Processing Extension
d. Deploying a Delivery Extension
e. Deploying a Rendering Extension
f. Implementing a Security Extension

Configure the Report Server


Configure URLs for the Report Server Web service and web portal, and configure the connection to the report
server database.
If you are migrating a scale-out deployment, take all of the report server nodes offline and migrate each server
one at a time. Once the first report server is migrated and it successfully connects to the report server database,
the report server database version is automatically upgraded to the SQL Server database version.

IMPORTANT
If any of the report servers in the scale-out deployment are online and have not been migrated, they might encounter an
rsInvalidReportServerDatabase exception because they are using an older schema when connected to the upgraded.

If the report server you migrated is configured as the shared database for a scale-out deployment, you need to
delete any of the old encryption keys from the Keys table in the Repor tSer ver database, before configuring
the report server service. If the keys are not removed, the migrated report server will try to initialize in scale-out
deployment mode. For more information, see Add and Remove Encryption Keys for Scale-Out Deployment
(Report Server Configuration Manager) and Configure and Manage Encryption Keys (Report Server
Configuration Manager).
The scale-out keys cannot be deleted by using the Reporting Services Configuration Manager. The old keys must
be deleted from the Keys table in the Repor tSer ver database using SQL Server Management Studio. Delete all
rows in the Keys table. This action clears the table and prepares it for restoring the Symmetric key only, as
documented in the following steps.
Prior to deleting the keys it is recommended you first back up the Symmetric Encryption key. You can use the
Reporting Services Configuration Manager to back up the key. Open the Configuration Manager open, click the
Encryption Keys tab, and then click the Backup button. You can also script WMI commands to back up the
encryption key. For more information on WMI, see BackupEncryptionKey Method (WMI
MSReportServer_ConfigurationSetting).
1. Start the Report Server Configuration Manager and connect to the Reporting Services instance you
installed. For more information, see Report Server Configuration Manager (Native Mode).
2. Configure URLs for the report server and the web portal. For more information, see Configure a URL
(Report Server Configuration Manager).
3. Configure the report server database, selecting the existing report server database from your previous
installation. After successful configuration, the report server service restarts, and once a connection is
made to the report server database, the database automatically upgrades to SQL Server Reporting
Services. For more information about how to run the Change Database Wizard that you use to create or
select a report server database, see Create a Native Mode Report Server Database.
4. Restore the encryption keys. This step is necessary for enabling reversible encryption on pre-existing
connection strings and credentials that are already in the report server database. For more information,
see Back Up and Restore Reporting Services Encryption Keys.
5. If you installed report server on a new computer and you are using Windows Firewall, be sure that the
TCP port on which the report server listens is open. By default, this port is 80. For more information, see
Configure a Firewall for Report Server Access.
6. If you want to administer your native mode report server locally, you need to configure the operating
system to allow local administration with the web portal. For more information, see Configure a Native
Mode Report Server for Local Administration.

Copy Custom Configuration Settings to RSReportServer.config File


If you modified the RSReportServer.config file or RSWebApplication.config file in the previous installation, you
should make the same modifications in the new RSReportServer.config file. The following list summarizes some
of the reasons why you might have modified the previous configuration file and provides links to additional
information about how to configure the same settings in SQL Server 2016.

C USTO M IZ AT IO N IN F O RM AT IO N

Report Server E-mail delivery with custom settings E-Mail Settings * Reporting Services Native mode.

Device information settings Customize Rendering Extension Parameters in


RSReportServer.Config

Windows Service Group and Security ACLs


In SQL Server 2016 Reporting Services or later (SSRS), there is one service group, the Reporting Services
Windows Service group, which is used to create security ACLs for all the registry keys, files, and folders that are
installed with SQL Server Reporting Services. This Windows group name appears in the format
SQLServerReportServerUser$<computer_name>$<instance_name>.

Verify Your Deployment


1. Test the report server and web portal virtual directories by opening a browser and typing in the URL
address. For more information, see Verify a Reporting Services Installation.
2. Test reports and verify they contain the data you expect. Review data source information to see whether
the data source connection information is still specified. The report server uses the report object model
when processing and rendering reports, but it does not replace SQL Server 2008, SQL Server 2008 R2,
SQL Server 2012 (11.x), or SQL Server 2014 (12.x) constructs with new report definition language
elements. To learn more about how existing reports run on a new version of your report server, see
Upgrade Reports.

Remove Unused Programs and Files


Once you have successfully migrated your report server to a new instance, you might want to perform the
following steps to remove programs and files that are no longer necessary.
1. Uninstall the previous version of Reporting Services if you no longer need it. This step does not delete the
following items, but you can manually remove them if you no longer need them:
The old Report Server database
RsExec role
Report Server service accounts
Application pool for the Report Server Web service
Virtual directories for Report Manager and the report server
Report server log files
2. Remove IIS if you no longer need it on this computer.

Next steps
Migrate a Reporting Services Installation
Report Server Database
Upgrade and Migrate Reporting Services
Reporting Services Backward Compatibility
Report Server Configuration Manager
More questions? Try asking the Reporting Services forum
Migrate a Reporting Services Installation
(SharePoint Mode)
3/5/2021 • 7 minutes to read • Edit Online

APPLIES TO: ✔️ SQL Server Reporting Services (2016) ❌ Power BI Report Server ❌ SQL Server Reporting
Services (2017) ✔
️ SharePoint
This topic is an overview of the steps needed to migrate a Reporting Services SharePoint mode deployment
from one SharePoint environment to another. The specific steps can be different depending on the version you
are migrating from. For more information on Upgrade and Migration scenarios for SharePoint mode, see
Upgrade and Migrate Reporting Services. If you only want to copy the report items from one server to another,
see Sample Reporting Services rs.exe Script to Copy Content between Report Servers.
For information on migrating a Reporting Services native mode deployment, see Migrate a Reporting Services
Installation (Native Mode).
A common reason you complete a migration is when you want to upgrade your SharePoint 2010 deployment to
SharePoint 2013/2016. SharePoint 2013/2016 does not support in-place upgrade from SharePoint 2010 and
you must complete the procedure of database-attach upgrade or a content only migration.
For more information on upgrading SharePoint 2013/2016, see the following:
Overview of the upgrade process to SharePoint 2016.
Overview of the upgrade process to SharePoint 2013.
Clean up preparations before an upgrade to SharePoint 2013.
Upgrade databases from SharePoint 2013 to SharePoint 2016.
Upgrade databases from SharePoint 2010 to SharePoint 2013.
Move content databases in SharePoint 2016.
Move content databases in SharePoint 2013.

Migrate from Reporting Services SharePoint mode versions prior to


SQL Server 2012
The Reporting Services SharePoint mode architecture changed in SQL Server 2012 (11.x), including the service
application database schema. If you want to migrate to SQL Server 2016 Reporting Services or later (SSRS)
SharePoint mode from a version prior to SQL Server 2012 (11.x), first create the new SharePoint environment
by installing SharePoint and SQL Server 2016 Reporting Services SharePoint mode. For more information, see
Install Reporting Services SharePoint Mode.
Once the new SharePoint environment is running, you can choose between a content only migration or a full
migration at the database level that includes content databases.
Content Only Migration
Repor ting Ser vices Content only migration: If you want to copy the Reporting Services content to a new
farm, then you need to use tools such as rs.exe to copy the content to the new SharePoint installation. For more
information on content only migrations, see the following:
Repor ting Ser vices RSS scripts: The Scripts can migrate content and resources between Native mode
and SharePoint mode report servers. For more information, see Sample Reporting Services rs.exe Script
to Copy Content between Report Servers and Reporting Services RS.exe script that migrates content
from one report server to another.
Repor ting Ser vices Migration Tool: The tool can copy your report items from a native mode server
to a SharePoint mode server. For more information, see Reporting Services Migration Tool
(https://www.microsoft.com/download/details.aspx?id=29560).
Full Migration
Full Migration: If you are migrating SharePoint content databases along with the Reporting Services catalog
databases to a new farm you can follow a series of backup and restore options summarized in this topic. In
some cases you will need to use a different tool for the restore phase than you used for the backup phase. For
example you can use Reporting Services Configuration Manager to backup encryption keys from a previous
version of Reporting Services but you need to use SharePoint Central administration or PowerShell to restore
the encryption keys to a SQL Server 2016 Reporting Services SharePoint mode installation.
Databases you will see in the completed migration
The following table describes the SQL Server Databases related to Reporting Services you will have after you
successfully migrate your Reporting Services SharePoint installation:

DATA B A SE EXA M P L E N A M E N OT ES

Catalog database ReportingService_[service application User migrates.


GUID] (*)

Temp database ReportingService_[service application User migrates.


GUID]TempDB (*)

Alerting database ReportingService_[service application Created when a Reporting Services


GUID]_Alerting service application is created.

(*) The example names shown in the table follow the naming convention SSRS uses when you create a new
SSRS service application. If you are migrating from a different server, your catalog and tempDBs will have the
names from the original installation.
Backup operations
This section describes the types of information you need to migrate and the tools or process you use to
complete the backup.

IT EM O B JEC T S M ET H O D N OT ES
IT EM O B JEC T S M ET H O D N OT ES

1 Reporting Services Rskeymgmt.exe or The noted tools can used


encryption keys. Reporting Services for the backup but for the
Configuration Manager. See restore operation you will
Back Up and Restore use the Reporting Services
Reporting Services service application
Encryption Keys. management pages or
PowerShell.

2 SharePoint content Backup the database and


databases. detach it.

See the section "Database


attach upgrade " in
Determine upgrade
approach (SharePoint
Server 2010)
(/SharePoint/upgrade-and-
update/determine-strategy-
for-upgrade-to-sharepoint-
2013).

3 SQL Server database that is SQL Server database


the Reporting backup and restore
Servicescatalog database.
or

SQL Server database detach


and attach.

4 Reporting Services Simple file copy. You only need to copy


configuration files. rsreportserver.config if you
have made customizations
to the file. Example of the
default location of the files:
C:\Program Files\Common
Files\Microsoft Shared\Web
Server
Extensions\15\WebServices\
Reporting\*:

Rsreportserver.config

Rssvrpolicy.config

Web.config for the Report


Server ASP.NET application.

Machine.config for ASP.NET.

Restore Operations
This section describes the types of information you need to migrate and the tools or process you use to
complete the restore. The tools you use for restoring may be different than the tools you used for the backup.
Before you complete the restore steps, you need to install and configuring the new SharePoint Farm and
Reporting Services SharePoint mode. For more information on a basic installation of Reporting Services
SharePoint mode, see Install Reporting Services SharePoint Mode.
IT EM O B JEC T S M ET H O D N OT ES

1 Restore SharePoint Content SharePoint "Database Basic Steps:


databases to the new farm. attach upgrade" Method.
1) Restore the database on
the new server.

2) Attach the content


database to a web
application by indicating the
URL.

3) Get-SPWebapplication
lists all web applications and
the URLs.

See the section "Database


attach upgrade " in
Determine upgrade
approach (SharePoint
Server 2010)
(/SharePoint/upgrade-and-
update/determine-strategy-
for-upgrade-to-sharepoint-
2013)and Attach databases
and upgrade to SharePoint
Server 2010
(/SharePoint/upgrade-and-
update/upgrade-content-
databases).

2 Restore the SQL Server SQL Database backup and The first time the database
database that is the restore. is used, Reporting Services
Reporting Services catalog will update the database
database (ReportServer). or schema as needed so it will
work with the SQL Server
SQL Server database 2016 environment.
attached and detach.
IT EM O B JEC T S M ET H O D N OT ES

3 Create a new Reporting Create a new Reporting When you create the new
Services service application. Services service application. service application,
configure it to use the
report server database you
copied over.

For more information on


using SharePoint Central
Administration, see the
"Step 3: Create a Reporting
Services Service Application"
section in Install The First
Report Server in SharePoint
Mode.

For examples using


PowerShell, see the section
"To create a Reporting
Services Service Application
using PowerShell" in
Reporting Services
SharePoint Service and
Service Applications.

4 Restore Reporting Services Simple file copy. Example of the default


configuration files. location of the files:
C:\Program Files\Common
Files\Microsoft Shared\Web
Server
Extensions\15\WebServices\
Reporting.

5 Restore the Reporting Restore the key back up file See the section "Key
Servicesencryption keys. using the Reporting Management" in the topic
Services Service Application Manage a Reporting
"SystemSettings" page. Services SharePoint Service
Application.
or

PowerShell.

Migrate from a SQL Server 2012 or SQL Server 2014 Deployment


In a multi-server farm, users will likely have the Content and Catalog databases on a different machine, in which
case you really just need to add a new server with the Reporting Services service installed, to the SharePoint
farm and then remove the old server. There should be no need to copy databases.
Backup Operations
1. Backup the Reporting Services encryption keys.
2. Backup the Reporting Services Service application in SharePoint central Administration (or use
PowerShell). This will also backup the service application databases in SharePoint. See topic Backup and
Restore Reporting Services SharePoint Service Applications
3. If you have an Unattended Execution account (UEA) and windows authentication, make a note of the
credentials so you can use them for the restore process.
4. For more information, see Back up service applications in SharePoint 2013.
Restore Operations
1. Restore the Reporting Services service application using SharePoint Central Administration. You could
also use PowerShell.
2. Restore Reporting Services encryption keys.
See the section "Key Management" in the topic Manage a Reporting Services SharePoint Service
Application
3. Configure the UEA and windows credentials on the service application.
4. For more information, see Restore service applications in SharePoint 2013.

Additional Resources
Get started with upgrades to SharePoint 2013 (/SharePoint/upgrade-and-update/get-started-with-
upgrade).
Overview of the upgrade process to SharePoint 2013 (/SharePoint/upgrade-and-update/overview-of-
the-upgrade-process).

Next steps
Upgrade and Migrate Reporting Services
Migrate a Reporting Services Installation
More questions? Try asking the Reporting Services forum
Native to SharePoint Migration (SSRS)
3/5/2021 • 2 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services (2016) ❌ Power BI Report Server ✔
️ SharePoint
You cannot upgrade or convert from one Reporting Services server mode to another. For example, you cannot
upgrade or convert a Native mode report server to SharePoint mode. You cannot copy the report server
databases between modes because they use different database schemas. You can migrate the content from one
report server to another. The tools you use depend on the type of report server mode that is configured for the
source and destination servers.

Reporting Services Migration tool


The tool supports content migration from a native mode Deployment to a SharePoint mode deployment. The
tool does not support migration from SharePoint mode to SharePoint mode or from SharePoint mode to Native
mode.
For more information, see Reporting Services Migration Tool
(https://www.microsoft.com/download/details.aspx?id=29560).

Use Script to migrate content


If the migration tool does not meet your needs, you can manually migrate the report server data. The following
is a summary of the steps to complete to migrate report items from a one Reporting Services deployment ot
another. The approach supports either Native or SharePoint mode as the source or destination servers.
1. Backup and restore encryption keys. This is the key that is used to encrypt data. The encryption key is
also used to encrypt passwords such as the passwords stored for data source connections. However,
passwords cannot be migrated and you will need to enter them again in the destination environment.
2. Repor ting Ser vices RSS scripts: Write a Visual Basic script that calls Report Server Web service SOAP
methods to copy data between databases. Use the RS.exe utility to run the script. Rs.exe is installed with
Reporting Services.
Sample Reporting Services rs.exe Script to Copy Content between Report Servers. The topics
explains how to use the sample script you can download from CodePlex.
The sample rss script on CodePlex, Reporting Services RS.exe script that migrates content from
one report server to another
Scripting and PowerShell with Reporting Services
The following table summarizes the Reporting Services objects you can migrate with scripts:

O B JEC T C A N B E SC RIP T ED C O M M EN T S

Reports Yes Following migration, to re-enter


passwords for datasources.

Datasources Yes Following migration, Re-link reports to


datasources.
O B JEC T C A N B E SC RIP T ED C O M M EN T S

Models Yes

Datasets Yes

Report Parts Following migration, verify or update


the path to the report parts.

Schedules Yes See the ListSchedules method


Subscription and Delivery Methods

Subscriptions yes See the List Subscriptions method


Subscription and Delivery Methods
and the ChangeSubscriptionOwner
method.

Snapshots

More questions? Try asking the Reporting Services forum


Upgrade a Report Server Database
3/5/2021 • 4 minutes to read • Edit Online

The report server database provides storage for one or more report server instances. Because the report server
database schema can change with each new release of Reporting Services, it is required that the database
version match the version of the report server instance you are using. In most cases, a report server database
can be upgraded automatically with no specific action on your part.
Native Mode: In Reporting Services Native mode, the report server database actually comprises two databases
that have default names of ReportServer and ReportServerTempDB.
SharePoint mode: In SQL Server 2016 Reporting Services SharePoint mode, the report server database is
actually a collection of databases that is created for each instance of the Reporting Services service application.

Ways to Upgrade a Native Mode Report Server Database


The following list identifies the conditions under which a report server database is upgraded:
SQL Server Setup upgrades a single instance of a report server. The report server database schema is
automatically upgraded after service startup and the report server determines that the database schema
version does not match the server version.
At service startup, the report server checks the database schema version to verify that it matches the
server version. If the database schema version is an older version, it is automatically upgraded to the
schema version that is required by the report server. Automatic upgrade is especially useful if you
restored or attached an older report server database. A message is entered in the report server trace log
file indicating that the database schema version was upgraded.
The Reporting Services Configuration Manager upgrades a local or remote report server database when
you select an older version to use with a newer report server instance. In this case, you must confirm the
upgrade action before it happens.
The Reporting Services Configuration Manager no longer provides a separate Upgrade button or
upgrade script. Those features are obsolete starting with SQL Server 2008 due to the automatic upgrade
feature of the Report Server service.
After the schema is updated, you cannot roll back the upgrade to an earlier version. Always back up the report
server database in case you need to recreate a previous installation.

How the Schema, Metadata, and Report Server Content is Updated


The report server database is upgraded in three stages:
1. The schema is upgraded automatically after setup and service startup, or when you select a SQL Server
Native mode report server database in the Reporting Services Configuration Manager that is an older
version. In addition, the Report Server service checks the database version at startup. If the report server
is connected to a database that is an earlier version, the report server will update the database during
startup.
2. Security descriptors are upgraded on first use of the report server database after the schema is updated.
3. Published reports and compiled report snapshots are updated on first use. For more information, see
Upgrade Reports.
In addition to the report server database, a report server also uses a temporary database. The temporary
database is upgraded automatically when you upgrade the report server database.

Permissions required to upgrade a Report Server Database


If you are upgrading a Reporting Services installation that includes a report server database, you may see an
error message if the database upgrade is performed with insufficient permissions. By default, Setup uses the
security token of the user who is running the Setup program to connect to the remote SQL Server instance and
update the schema. If you have SQL Server sysadmin permissions on the database server that hosts the report
server databases, the database upgrade will succeed. Similarly, if you run Setup from the command prompt and
specify the RSUPGRADEDATABASEACCOUNT and RSUPGRADEPASSWORD arguments for an account that has
sysadmin permission to modify the schema on the remote computer, the database upgrade will succeed.
However, if you do not have sysadmin permission to the database on the remote computer, the connection will
be refused with the following error:
"Setup was not able to upgrade the report server database schema. You must update the database schema
manually after setup is finished. To update the schema, run the Report Server Configuration Manager, open the
Database Setup page, re-select the database, and click Apply. The database will be upgraded automatically."

At this point, the report server program files will be upgraded, but the report server database will be in the
format of the previous version. The report server will be unavailable until you finish the upgrade process by
upgrading the database manually.
To upgrade a Native Mode database With Scripts
You can use WMI scripts to upgrade a report server database. For more information, see
GenerateDatabaseUpgradeScript Method (WMI MSReportServer_ConfigurationSetting)

Next steps
Report Server Configuration Manager
Create a Report Server Database
Upgrade and Migrate Reporting Services
Migrate a Reporting Services Installation
More questions? Try asking the Reporting Services forum
Upgrade Reports (SSRS)
11/2/2020 • 10 minutes to read • Edit Online

APPLIES TO: SQL Server 2016 Power BI Report Server


Report definition (.rdl) files are automatically upgraded in the following ways:
When you open a paginated report in Report Designer in SQL Server Data Tools (SSDT), the report
definition is upgraded to the currently supported RDL schema. When you specify a SQL Server 2008,
SQL Server 2008 R2, SQL Server 2012 (11.x), or SQL Server 2014 (12.x) report server in the project
properties, the report definition is saved in a schema that is compatible with the target server.
When you upgrade a Reporting Services installation to a SQL Server 2016 Reporting Services or later
(SSRS) installation, existing reports and snapshots that have been published to a report server are
compiled and automatically upgraded to the new schema the first time they are processed. If a report
cannot be automatically upgraded, the report is processed using the backward-compatibility mode. The
report definition remains in the original schema.
After a report is upgraded locally or on the report server, you might notice additional errors, warnings, and
messages. This is the result of changes to the internal report object model and processing components, which
cause messages to appear when underlying problems in the report are detected. For more information, see
Reporting Services Backward Compatibility.
For more information about new features for SQL Server 2016 Reporting Services or later (SSRS), see What's
new in SQL Server Reporting Services (SSRS).

Versions Supported by Upgrade


Reports that were created in any previous version of Reporting Services can be upgraded. This includes the
following versions:
SQL Server 2008
SQL Server 2008 R2
SQL Server 2012 (11.x)
SQL Server 2014 (12.x)

Report Definition (.rdl) Files and Report Designer


A report definition file includes a reference to the RDL namespace that specifies the version of the report
definition schema that is used to validate the .rdl file.
When you open an .rdl file in Report Designer in SQL Server Data Tools (SSDT), if the report was created for a
previous namespace, Report Designer automatically creates a backup file and upgrades the report to the current
namespace. This is the only way you can upgrade a report definition file.
Deployment properties that you set can affect which schema the report definition file is saved in. For more
information, see Deployment and Version Support in SQL Server Data Tools (SSRS).
You can upload an .rdl file created in an earlier version of Reporting Services to the new version and it is
automatically upgraded on first use. The report server stores the report definition file in the original format. The
report is automatically upgraded the first time it is viewed, but the stored report definition file remains
unchanged.
To identify the current RDL schema for a report, for a report server, or for Report Designer, see Find the Report
Definition Schema Version (SSRS).

Published Reports and Report Snapshots


On first use, the report server tries to upgrade existing published reports and report snapshots to the new
report definition schema, requiring no specific action on your part. When a user views a report or a report
snapshot, or when the report server processes a subscription, the upgrading attempt occurs. The report
definition is not replaced but continues to be stored on the report server in its original schema. If a report
cannot be upgraded, the report runs in backward-compatibility mode.

Backward-Compatibility Mode
A report that is successfully upgraded is processed by the SQL Server 2016 Reporting Services or later (SSRS)
report processor. A report that cannot be upgraded is processed by the SQL Server 2008, SQL Server 2008 R2,
SQL Server 2012 (11.x), or SQL Server 2014 (12.x) Reporting Services report processor in backward-
compatibility mode. A report cannot be processed by both report processors. On first use, a report is either
successfully upgraded or marked for backward compatibility.
Only the SQL Server 2016 Reporting Services or later (SSRS) report processor supports new features. If a
report cannot be upgraded, you can still view the rendered report but new features are not available. To take
advantage of the new features, a report must be successfully upgraded.

Upgrading a Report with Subreports


When a report contains subreports, one of four possible states can occur during upgrade:
The main report and all subreports can be successfully upgraded. They are processed by the SQL Server
2016 Reporting Services or later (SSRS) report processor.
The main report and all subreports cannot be upgraded. They are processed by the SQL Server 2008,
SQL Server 2008 R2, SQL Server 2012 (11.x), or SQL Server 2014 (12.x) Reporting Services report
processor.
The main report can be upgraded but one or more subreports cannot be upgraded. The main report is
processed by the SQL Server 2016 Reporting Services or later (SSRS) report processor, but the rendered
report shows the message "Error: Subreport could not be processed" in the location where the subreport
that could not be upgraded would appear.
The main report cannot be upgraded but one or more subreports can be upgraded. The main report is
processed by the SQL Server 2016 Reporting Services or later (SSRS) report processor, but the rendered
report shows the message "Error: Subreport could not be processed" in the location where the subreport
would appear.
If you see the error "Error: Subreport could not be processed", you must change the definition of the main
report or the subreport so that the reports can be processed by the same version of the report processor.
Drillthrough reports do not have this limitation because they are processed as independent reports.

Upgrading a Report with Custom Report Items


SQL Server 2008, SQL Server 2008 R2, SQL Server 2012 (11.x), or SQL Server 2014 (12.x) Reporting Services
reports might contain custom report items (CRIs) provided by third-party software vendors and installed by the
system administrator on the report authoring computer and the report server. Reports that contain CRIs can be
upgraded in the following ways:
A SQL Server 2008, SQL Server 2008 R2, SQL Server 2012 (11.x), or SQL Server 2014 (12.x) Reporting
Services report server is upgraded to a SQL Server 2016 Reporting Services or later (SSRS) report
server. Published reports on the report server are automatically upgraded on first use.
A SQL Server 2008, SQL Server 2008 R2, SQL Server 2012 (11.x), or SQL Server 2014 (12.x) Reporting
Services report is uploaded to a SQL Server 2016 Reporting Services or later (SSRS) report server. The
report is automatically upgraded on first use.
A SQL Server 2008, SQL Server 2008 R2, SQL Server 2012 (11.x), or SQL Server 2014 (12.x) Reporting
Services report is opened in Report Designer in SQL Server Data Tools (SSDT). A backup copy of the
original report is created. One of the following two cases occurs:
1. All CRIs in the report have no unsupported features. The CRIs are converted to report items in the
new report definition schema, so the entire report is upgraded. If you save the file, it is saved in the
current RDL namespace.
2. One or more CRIs in the report have unsupported features. A dialog box prompts the user
whether to convert the CRIs are leave them unchanged.
For more information, see Opening a Report in Report Designer later in this topic.
For information about identifying the current RDL namespace for a report server, SQL Server Data Tools, or a
report, see Find the Report Definition Schema Version (SSRS).
Upgrading Reports on a Report Server
The first time a SQL Server 2008, SQL Server 2008 R2, SQL Server 2012 (11.x), or SQL Server 2014 (12.x)
Reporting Services report runs on a report server that has been upgraded to a SQL Server 2016 Reporting
Services or later (SSRS) report server, the report is automatically upgraded to the current report definition
namespace supported by the report server. The report could have existed on the report server before the
upgrade, or the report could have been uploaded via the web portal or published to the report server from
Report Designer in SQL Server 2008, SQL Server 2008 R2, SQL Server 2012 (11.x), or SQL Server 2014 (12.x)
SQL Server Data Tools.
The following table lists the upgrade action that is performed by the report server for specific types of CRIs in a
report.

C RI T Y P E REP O RT SERVER UP GRA DE A C T IO N

Third-party CRIs Upgrade not performed.

Processed by the SQL Server 2008, SQL Server 2008 R2,


SQL Server 2012 (11.x), or SQL Server 2014 (12.x)Reporting
Services report processor.

Opening a Report with CRIs in Report Designer


When you open a SQL Server 2008, SQL Server 2008 R2, SQL Server 2012 (11.x), or SQL Server 2014
(12.x)Reporting Services report with CRIs in Report Designer in SQL Server Data Tools (SSDT), the report will be
upgraded to the new report definition schema. Depending on the CRIs contained in the report, one of the
following actions will take place:
Third-party CRIs detected. If the version of the CRI that is installed on the report authoring computer is not
compatible with the new RDL schema, the design surface shows a text box with a red X. You must contact
your system administrator to install new versions of the CRI from third-party vendors that are compatible
with the new RDL schema.
Saving a report after it is upgraded in the report authoring environment is the only way to upgrade an existing
report to the new report definition schema.
Convert CRI Dialog Box
This report contains custom report items (CRIs) with unsupported features. CRIs are extensions to the Report
Definition Language (RDL) that support custom objects that display data in a report. CRIs include design-time
and run-time components that are supplied by third-party software vendors.

NOTE
Choosing to support custom report items on a report server is a decision made by the system administrator. To view CRIs
in a report, the CRI components must be installed on the report authoring client to preview a report and on the report
server to view a published or uploaded report. For more information, see Custom Report Items and documentation from
the third-party software vendor.

Some CRIs can be converted to report items in the new report definition format. Use the following list to decide
whether to convert the CRIs in this report:
Yes Choose Yes to convert all the CRIs in the report, where possible. Unsupported features in the CRIs
cannot be upgraded and are removed from the report definition file. When you view the report, you
might see differences in the way the CRI displays in the report.
No Choose No when you do not want to convert the CRIs in the report. These CRIs cannot be displayed
by the report processor in their current version. If your system administrator is planning to install a new
version of the CRI from the third-party software vendor that is compatible with the new report definition
format, you should choose No . Until new versions are available, the CRIs display in the report as an
empty text box with a red X.
In either case, the report is upgraded to the new report definition format and a backup copy of the original
report is saved as <Report Name> - Backup.rdl. If you save the report in your report authoring tool, you are
saving the upgraded report in the new report definition format. If you publish the report, the report is first
saved on your computer, and then published to the report server. You are publishing the upgraded version of
the report to the report server.
If you do not save the report, the original report remains unchanged. However, you cannot edit this report in the
SQL Server 2016 version of SQL Server Data Tools or a report authoring environment that uses a newer report
definition format. You can continue to run the original version of the report by uploading it to a SQL Server
2016 Reporting Services or later (SSRS) report server by using the web portal. For more information, see Web
Portal.
For reports that you upload instead of publish to a report server, the report processor determines whether the
report can be upgraded on first use. Reports that cannot be upgraded are processed in backward-compatibility
mode, and continue to display as they did in the earlier version of Reporting Services.

Next steps
Upgrade and Migrate Reporting Services
Breaking Changes in SQL Server Reporting Services in SQL Server 2016
Behavior Changes to SQL Server Reporting Services in SQL Server 2016
Discontinued Functionality to SQL Server Reporting Services in SQL Server 2016
Custom Report Items
Upgrade a Report Server Database
More questions? Try asking the Reporting Services forum
Backup and Restore Operations for Reporting
Services
3/5/2021 • 3 minutes to read • Edit Online

This article provides an overview of all data files used in a Reporting Services installation and describes when
and how you should back up the files. Developing a backup and restore plan for the report server database files
is the most important part of a recovery strategy. However, a more complete recovery strategy would include
backups of the encryption keys, custom assemblies or extensions, configuration files, and source files for
reports.
Applies to: Reporting Services Native Mode | Reporting Services SharePoint Mode

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

Backup and restore operations are often used to move all or part of a Reporting Services installation:
If you are moving just the report server databases, you can use backup and restore or attach and detach
to relocate the databases on a different SQL Server instance. For more information, see Moving the
Report Server Databases to Another Computer (SSRS Native Mode).
Moving a Reporting Services installation to a new computer is called a migration. When you migrate an
installation, you run Setup to install a new report server instance and then copy instance data to the new
computer. For more information about migrating a Reporting Services installation, see the following
articles:
Upgrade and Migrate Reporting Services
Migrate a Reporting Services Installation (Native Mode)
Migrate a Reporting Services Installation (SharePoint Mode)

Backing Up the Report Server Databases


Because a report server is a stateless server, all application data is stored in the repor tser ver and
repor tser ver tempdb databases that run on a SQL Server Database Engine instance. You can back up the
repor tser ver and repor tser ver tempdb databases using one of the supported methods for backing up SQL
Server databases. Here are some recommendations specific to the report server databases:
Use the full recovery model to back up the repor tser ver database.
Use the simple recovery model to back up the repor tser ver tempdb database.
You can use different backup schedules for each database. The only reason to back up the
repor tser ver tempdb is to avoid having to recreate it if there is a hardware failure. In the event of
hardware failure, it is not necessary to recover the data in repor tser ver tempdb , but you do need the
table structure. If you lose repor tser ver tempdb , the only way to get it back is to recreate the report
server database. If you recreate the repor tser ver tempdb , it is important that it have the same name as
the primary report server database.
For more information about backup and recovery of SQL Server relational databases, see Back Up and Restore
of SQL Server Databases.
IMPORTANT
If your report server is in SharePoint mode, there are additional databases to be concerned with, including SharePoint
configuration databases and the Reporting Services alerting database. In SharePoint mode, three databases are created
for each Reporting Services service application. The repor tser ver , repor tser ver tempdb , and dataaler ting databases.
For more information, see Backup and Restore Reporting Services SharePoint Service Applications

Backing Up the Encryption Keys


You should back up the encryption keys when you configure a Reporting Services installation for the first time.
You should also back up the keys any time you change the identity of the service accounts or rename the
computer. For more information, see Back Up and Restore Reporting Services Encryption Keys.
For SharePoint mode report servers, see the "Key Management" section of Manage a Reporting Services
SharePoint Service Application.

Backing Up the Configuration Files


Reporting Services uses configuration files to store application settings. You should back up the files when you
first configure the server and after you deploy any custom extensions. Files to back up include:
Rsreportserver.config
Rssvrpolicy.config
Rsmgrpolicy.config
Reportingservicesservice.exe.config
Web.config for the Report Server ASP.NET application
Machine.config for ASP.NET

Backing Up Data Files


Back up the files that you create and maintain in Report Designer. These include report definition (.rdl) files,
shared data source (.rds) files, data view (.dv) files, data source (.ds) files, report server project (.rptproj) files, and
report solution (.sln) files.
Remember to back up any script files (.rss) that you created for administration or deployment tasks.
Verify that you have a backup copy of any custom extensions and custom assemblies you are using.

Next steps
Report Server Database
Reporting Services Configuration Files
rskeymgmt Utility
Copy Databases with Backup and Restore
Administer a Report Server Database
Configure and Manage Encryption Keys
More questions? Try asking the Reporting Services forum
The web portal of a report server (SSRS Native
Mode)
8/6/2021 • 5 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server 2016 Reporting Services and later ✔
️ Power BI Report Server
The web portal of a Reporting Services report server is a web-based experience. In the portal, you can view
reports, mobile reports, KPIs, and navigate through the elements in your report server instance. You can also
use the web portal to administer a single report server instance.

What is the web portal


You can use the web portal to perform the following tasks:
View, search, print, and subscribe to reports.
Create, secure, and maintain the folder hierarchy to organize items on the server.
Configure role-based security that determines access to items and operations. See Role definitions -
predefined roles for details.
Configure report execution properties, report history, and report parameters.
Create shared schedules and shared data sources to make schedules and data source connections more
manageable.
Create data-driven subscriptions that role out reports to a large recipient list.
Create linked reports to reuse and repurpose an existing report in different ways.
Download common tools such as Report Builder and Mobile Report Publisher.
Create KPIs.
Send feedback or make feature requests.
You can use the web portal to browse the report server folders or search for specific reports. You can view a
report, its general properties and past copies of the report that are captured in report history. Depending on
your permissions, you might also be able to subscribe to reports for delivery to an e-mail inbox or a shared
folder on the file system.

NOTE
For information on supported browsers and versions, see Planning for Reporting Services Browser Support.

The web portal is used only for a report server that runs in native mode. It is not supported for a report server
that you configure for SharePoint integrated mode.
Some web portal features are only available in specified editions of SQL Server. For more information, see
Reporting Services Features supported by the Editions of SQL Server.
On a new installation, only local administrators have sufficient permissions to work with content and settings. To
grant permissions to other users, a local administrator must create role assignments that provide access to the
report server. The application pages and tasks that a user can subsequently access will depend on the role
assignments for that user. For more information, see Grant User Access to a Report Server

NOTE
If you are browsing to the web portal on the local machine that the server is running on, you may see a message
indicating that you are not allowed to view this folder. This is due to Universal Access Control (UAC) and that you are not
running the browser as an admin. You will need to give your account content manager rights on the folder by either
browsing to the server remotely, or use Edge locally to configure the permissions. You are not able to run Microsoft Edge
as an admin via the "Run as administrator" context menu. However, you can run Edge as the local administrator account
by holding SHIFT + right-clicking on the edge shortcut and selecting "Run as a different user" then providing the local
machine administrator account information in the login dialog. If you want to use the web portal remotely, you will need
to give your account content manager rights on the folder.

Start and use the web portal


The web portal is a web application that you open by typing the web portal URL in the address bar of the
browser window. When you start the web portal, the pages, links, and options that you see will vary based on
the permissions you have on the report server. To perform a task, you must be assigned to a role that includes
the task. A user who is assigned to a role that has full permissions has access to the complete set of application
menus and pages available for managing a report server. A user assigned to a role that has permissions to view
and run reports sees only the menus and pages that support those activities. Each user can have different role
assignments for different report servers, or even for the various reports and folders that are stored on a single
report server.
For more information about roles, see Granting Permissions on a Native Mode Report Server.
Start the web portal
To start the web portal from a browser, follow these steps:
1. Open your web browser. For a list of supported web browsers, see Planning for Reporting Services
Browser Support.
2. In the address bar of the web browser, type the web portal URL.
By default, the URL is https://[ComputerName]/reports.
The report server might be configured to use a specific port. For example,
https://[ComputerName]:80/reports or https://[ComputerName]:8080/reports.

Grouping by categories
The web portal will group items into different categories. The available categories are the following.
KPIs
Mobile Reports
Paginated Reports
Power BI Desktop Reports
Excel Workbooks
Datasets
Data Sources
Resources
You can control what is displayed by selecting View in the upper right. If you select Show Hidden, those items
will be displayed in a lighter color.

Power BI Desktop Reports and Excel Workbooks


You can upload, organize, and manage permissions for Power BI Desktop reports and Excel workbooks. They will
be grouped together within the web portal.

The files are stored within Reporting Services, similar to other resource files. Selecting one of these items will
download them locally to your desktop. You can save changes you've made by reuploading them to the report
server.

Search for items


Enter a search term, and see everything you can access. The results are categorized into KPIs, reports, datasets,
and other items. You can then interact with the results and add them to your favorites.
Web portal tasks
Branding the web portal
Working with KPIs
Working with shared datasets

See also
Create mobile reports with SQL Server Mobile Report Publisher
Configure a URL (Report Server Configuration Manager)
Reporting Services Tools
Planning for Reporting Services Browser Support
Reporting Services Features supported by the Editions of SQL Server
More questions? Try the Reporting Services forum
Branding the web portal
5/7/2021 • 4 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server 2016 Reporting Services and later ✔
️ Power BI Report Server
You can alter the appearance of the web portal by branding it to your business. This is done through a brand
package. The brand package is designed so you don't need deep cascading style sheet (CSS) knowledge to
create it.
https://www.youtube.com/embed/m08kLuofwFA

Creating the brand package


A brand package for Reporting Services consists of three items and is packaged as a zip file.
colors.json
metadata.xml
logo.png (optional)
The files must have the names listed above. The zip file can be named however you like.
metadata.xml
The metadata.xml file allows you to set the name of the brand package, and has a reference entry for both your
colors.json and logo.png files.
To change the name of your brand package, change the name attribute of the SystemResourcePackage
element.

name="Multicolored example brand"

You can optionally include a logo picture in your brand package. This item would be listed within the Contents
element.
Example without a logo file.

<Contents>
<Item key="colors" path="colors.json" />
</Contents>

Example with a logo file.

<Contents>
<Item key="colors" path="colors.json" />
<Item key="logo" path="logo.png" />
</Contents>

Colors.json
When the brand package is uploaded, the server extracts the appropriate name/value pairs from the colors.json
file and merges them with the master LESS stylesheet, brand.less. This LESS file is then processed and the
resulting CSS file is served to the client. All colors in the stylesheet follow the six-character hexadecimal
representation of a color.
The LESS stylesheet contains blocks that reference some predefined LESS variables like the following.

/* primary buttons */
.btn-primary {
color:@primaryButtonColor;
background-color:@primaryButtonBg;
}

While this resembles CSS syntax, the color values, prefixed with the @symbol, are unique to LESS. They are
variables whose values are set by the json file.
For example, if the colors.json file had the following values.

"primary":"#009900",
"primaryContrast":"#ffffff"

The processed output would look up the @primar yButtonBg LESS variable and see that it maps to the json
property called primar y , which in this example is #009900. It would therefore output the proper CSS.

.btn-primary {
color:#ffffff;
background-color:#009900;
}

All of the primary buttons would be rendered dark green with white text.
The colors.json file, for Reporting Services, has two main categories which items are grouped.
Interface : includes items that are specific to the Reporting Services web portal.
Theme : includes items that are specific to mobile reports that you create.
The interface section is broken down into the following groupings.

SEC T IO N DESC RIP T IO N

Primary Button and hover colors.

Secondary Title bar, search bar, left hand menu (if displayed) and text
color for those items

Neutral Primary Home and report area backgrounds.

Neutral Secondary Text box and folder options backgrounds, and the settings
menu.

Neutral Tertiary Site settings backgrounds.

Danger/Warning/Success messages Colors for those messages.

KPI Controls the colors for a good (1), neutral (0), neutral (-1)
and none.

The first time you connect to a server with the Mobile Report Publisher, that has a brand package deployed, the
theme will be added to the available themes you can use in the upper right-hand menu of the app.
You can then use that theme for any mobile reports that you create, even if they aren't for the same server that
you have the theme deployed on.
Using a logo
If you include a logo with your brand package, it will appear in the web portal in place of the name you set for
the web portal in the Site Settings menu.
The file you include for the logo must use the PNG file format. The file dimensions will be scaled once uploaded
to the server. It should scale to around 290px x 60px.

Applying the brand package to the web portal


To add, download, or remove a brand package, you can do the following.
1. Select the gear in the upper right.
2. Select Site Settings .

3. Select Branding .
Currently installed brand package will either display the name of the package that has been uploaded, or it
will display None.
Upload brand package will apply the package to the web portal. You will see it take effect immediately.
You can also Download or Remove the package. Removing the package will reset the web portal to the default
brand immediately.

metadata.xml example
<?xml version="1.0" encoding="utf-8"?>
<SystemResourcePackage
xmlns="http://schemas.microsoft.com/sqlserver/reporting/2016/01/systemresourcepackagemetadata"
type="UniversalBrand"
version="2.0.2"
name="Multicolored example brand"
>
<Contents>
<Item key="colors" path="colors.json" />
<Item key="logo" path="logo.png" />
</Contents>
</SystemResourcePackage>

Colors.json example
{
"name":"Multicolored example brand",
"version":"1.0",
"interface":{
"primary":"#b31e1e",
"primaryAlt":"#ca0806",
"primaryAlt2":"#621013",
"primaryAlt3":"#e40000",
"primaryAlt4":"#e14e50",
"primaryContrast":"#fff",

"secondary":"#042200",
"secondaryAlt":"#0f4400",
"secondaryAlt2":"#155500",
"secondaryAlt3":"#217700",
"secondaryContrast":"#49e63c",

"neutralPrimary":"#d8edff",
"neutralPrimaryAlt":"#c9e6ff",
"neutralPrimaryAlt2":"#aedaff",
"neutralPrimaryAlt3":"#88c8ff",
"neutralPrimaryContrast":"#0a2b4c",

"neutralSecondary":"#e9d8eb",
"neutralSecondaryAlt":"#d9badc",
"neutralSecondaryAlt2":"#b06cb5",
"neutralSecondaryAlt3":"#a75bac",
"neutralSecondaryContrast":"#250a26",
"neutralSecondaryContrast":"#250a26",

"neutralTertiary":"#f79220",
"neutralTertiaryAlt":"#f8a54b",
"neutralTertiaryAlt2":"#facc9b",
"neutralTertiaryAlt3":"#fce3c7",
"neutralTertiaryContrast":"#391d00",

"danger":"#ff0000",
"success":"#00ff00",
"warning":"#ff8800",
"info":"#00ff",
"dangerContrast":"#fff",
"successContrast":"#fff",
"warningContrast":"#fff",
"infoContrast":"#fff",

"kpiGood":"#4fb443",
"kpiBad":"#de061a",
"kpiNeutral":"#d9b42c",
"kpiNone":"#333",
"kpiGoodContrast":"#fff",
"kpiBadContrast":"#fff",
"kpiNeutralContrast":"#fff",
"kpiNoneContrast":"#fff"
},
"theme":{
"dataPoints":[
"#0072c6",
"#f68c1f",
"#269657",
"#dd5900",
"#5b3573",
"#22bdef",
"#b4009e",
"#008274",
"#fdc336",
"#ea3c00",
"#00188f",
"#9f9f9f"
],

"good":"#85ba00",
"bad":"#e90000",
"neutral":"#edb327",
"none":"#333",

"background":"#fff",
"foreground":"#222",
"mapBase":"#00aeef",
"panelBackground":"#f6f6f6",
"panelForeground":"#222",
"panelAccent":"#00aeef",
"tableAccent":"#00aeef",

"altBackground":"#f6f6f6",
"altForeground":"#000",
"altMapBase":"#f68c1f",
"altPanelBackground":"#235378",
"altPanelForeground":"#fff",
"altPanelAccent":"#fdc336",
"altTableAccent":"#fdc336"
}
}

Next steps
More questions? Try asking the Reporting Services forum
Work with shared datasets - web portal
11/2/2020 • 3 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server 2016 Reporting Services and later ✔
️ Power BI Report Server
With a shared dataset, you can manage the settings for a dataset separately from reports and other catalog
items that use it. Shared datasets can be used with paginated and mobile reports, along with KPIs.
You can view and manage the properties of a shared dataset within the web portal. The web portal can launch
you into Report Builder to create or edit shared datasets.

Create a shared dataset


To create a new shared dataset, you can do the following.
1. Select new from the menu bar.
2. Select Dataset .

3. This will either launch Report Builder, or prompt you to download it.
4. On the New Repor t or Dataset dialog, select a data source connection to use for this dataset. You may
need to browse to the location of the shared data source.
5. Select Create .
6. Build your dataset and then select the save icon in the upper left to save the dataset back to the report
server.

Manage an existing shared dataset


To manage an existing shared dataset, you can do the following.

NOTE
If you don't see the shared dataset in the folder, make sure you are viewing datasets. You can select View from the menu
bar in the upper right of the web portal. Make sure Datasets is checked.

1. Select the ellipsis (...) for the dataset you want to manage.
2. Select Manage which will take you to the edit screen.

Properties
On the properties screen, you can change the name and description for the dataset. You can also Delete ,
Move , Edit in Repor t Builder , Download or Replace .

Caching
You have options when it comes to caching data for a dataset. You will start off with a simple selection.
1. Always run this repor t with the most recent data will issue queries to the data source when
requested.
2. Cache copies of this repor t and use them when available will place a temporary copy of the data
in a cache for use with items that use this dataset. Caching usually improves performance because the
data is returned from the cache instead of running the dataset query again.
Selecting Cache Copies of this repor t and use them when available will present you with some more
options.

Cache Expiration
You can control whether you want to expire the cache, for the shared dataset, after a certain amount of time, or if
you would prefer to do that on a schedule. You can use a shared schedule.

NOTE
Setting an expiration does not refresh the cache. Without a cache refresh plan, the data will be refreshed on the next
execution of the dataset.

Cache Refresh Plans


You can use Cache Refresh Plans to create schedules for preloading the cache with temporary copies of data for
a shared dataset. A refresh plan includes a schedule and the option to specify or override values for parameters.
You cannot override values for parameters that are marked read-only. You can create and use more than one
refresh plan.
Default role assignments that enable you to add, delete, and change shared datasets for cache refresh plans are
Content Manager, My Reports, and Publisher.
After you apply the cache option above, you can then define a cache refresh plan. To do that select the Manage
Refresh Plans link that appears after you apply the cache settings. This will take you to the cache refresh plan
page.
To create a new cache refresh plan, select New Cache Refresh Plan . You can then enter a name for the plan
and specify a schedule. If the dataset has parameters defined, you will see those listed and be able to provide
values unless they are marked as read-only.
Once you are done, you can select Create Cache Refresh Plan .

NOTE
SQL Server Agent needs to be running to create a cache refresh plan.

You can then Edit or Delete plans that are listed. The New From Existing option is enabled when one, and
only one, cache refresh plan is selected. This option will create a new refresh plan which is copied from the
original plan. The cache refresh plan page opens pre-populated with details from the plan that was selected. You
can then modify the refresh plan options and save the plan with a new description.
More questions? Try asking the Reporting Services forum
Working with paginated reports (web portal)
11/2/2020 • 10 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server 2016 Reporting Services and later ✔
️ Power BI Report Server
You can view and manage the properties of a paginated report within the web portal. The web portal can launch
you into Report Builder to create or edit paginated reports.

Create a paginated report


To create a new shared dataset, you can do the following.
1. Select new from the menu bar.
2. Select Paginated Repor t .

3. This will either launch Report Builder, or prompt you to download it.
4. Build your report and then select the save icon in the upper left to save the paginated report back to the
report server.

Manage an existing paginated report


To manage an existing paginated report, you can do the following.

NOTE
If you don't see paginated reports in the folder, make sure you are viewing paginated reports. You can select View from
the menu bar in the upper right of the web portal. Make sure Paginated Repor ts is checked.

1. Select the ellipsis (...) for the dataset you want to manage.

2. Select Manage which will take you to the edit screen.


Properties
On the properties screen, you can change the name and description for the paginated report. You can also
Delete , Move , Create Linked Repor t , Edit in Repor t Builder , Download or replace .

Parameters
You can modify existing parameters of a paginated report. To add a new parameter, you must edit the report in
Report Builder or SQL Server Data Tools.
Data Source
You can point to a shared data source, or enter connection information for a custom data source.

The following options are used to specify a custom data source.


Type
Specify a data processing extension that is used to process data from the data source. For a list of built-in data
extensions, see [Data Sources Supported by Reporting Services (SSRS)]. Additional data processing extensions
may be available from third-party vendors.
Connection string
Specify the connection string that the report server uses to connect to the data source. The connection type
determines the syntax you should use. For example, a connection string for the XML data processing extension is
a URL to an XML document. In most cases, a typical connection string specifies the database server and a data
file. The following example illustrates a connection string used to connect to a SQL Server database that is
named MyData:
data source=(a SQL Server instance);initial catalog=MyData

A connection string can be configured as an expression so that you can specify the data source at run time. Data
source expressions are defined in the report in Report Designer. Data source expressions cannot be defined,
viewed, or modified in the web portal. However, you can replace a data source expression by clicking Override
Default to type in a static connection string. If you want to switch back to the expression, click Rever t to
Defaul . The report server stores the original connection string in case you need to restore it. To use data source
expressions, you must use the data source connection information that was originally published in the report.
Shared data sources do not support the use of expressions in the connection string.
Credentials
You can specify the option that determines how credentials are obtained.
IMPORTANT
If credentials are provided in the connection string, the options and values provided in this section are ignored. Note that
if you specify credentials on the connection string, the values are displayed in clear text to all users who view this page.

As the user viewing the repor t


Use the Windows credentials of the current user to access the data source. Select this option when the
credentials that are used to access a data source are the same as those used to log on to the network domain.
This option works best when Kerberos authentication is enabled for your domain, or when the data source is on
the same computer as the report server. If Kerberos is not enabled, Windows credentials cannot be passed to
another service, or remote machine. If additional computer connections are required, you will get an error
instead of the data you expect.
A report server administrator can disable the use of Windows integrated security for accessing report data
sources. If this value is grayed out, the feature is not available.
Do not use this option if you plan to schedule or subscribe to this report. Scheduled or unattended report
processing requires credentials that can be obtained without user input or the security context of a current user.
Only stored credentials provide this capability. For this reason, the report server prevents you from scheduling
report or subscription processing if the report is configured for the Windows integrated security credential type.
If you choose this option for a report that is already subscribed to or that has scheduled operations, the
subscriptions and scheduled operations will stop.
Using these credentials
Store an encrypted user name and password in the report server database. Select this option to run a report
unattended (for example, reports that are initiated by schedules or events instead of user action).
You can also choose the type of credential this would be. Either Windows authentication (Windows user name
and password), or a specific database credential (Database user name and password) such as SQL
authentication.
If the account is a windows credential, the account you specify must have log on locally permissions on the
computer that hosts the data source used by the report.
Select Log in using these credentials, but then tr y to impersonate the user viewing the repor t to
allow delegation of credentials, but only if a data source supports impersonation. For SQL Server databases, this
option sets the SETUSER function. For Analysis Services, this uses EffectiveUserName.
By Prompting the user viewing the repor t for credentials
Each user must type in a user name and password to access the data source. You can define the prompt text that
requests user credentials. For example, "Enter a user name and password to access the data source."
You can also choose the type of credential this would be. Either Windows authentication (Windows user name
and password), or a specific database credential (Database user name and password) such as SQL
authentication.
Without any credentials
This allows you to not provide any credentials for the data source. If a data source requires a user logon,
choosing this option will have no effect. You should only choose this option if the data source connection does
not require user credentials.
To use this option, you must have previously configured the unattended execution account for your report
server. The unattended execution account is used to connect to external data sources when other courses of
credentials are not available. If you specify this option and the account is not configured, the connection to the
report data source will fail and report processing will not occur. For more information about this account, see
Configure the Unattended Execution Account (Report Server Configuration Manager).

Subscriptions
A Reporting Services subscription is a configuration that delivers a report at a specific time or in response to an
event, and in a file format that you specify. For example, every Wednesday, save the MonthlySales.rdl report as a
Microsoft Word document to a file share. Subscriptions can be used to schedule and automate the delivery of a
report and with a specific set of report parameter values. For more information, see Working with subscriptions.

Dependent Items
Use the Dependent Items page to view a list of items that are referencing this report. The icon for each item type
indicates what it is. You can then select the ellipsis (...) on each item to manage those items further.

Caching
You have options when it comes to caching data for a paginated report. You will start off with a simple selection.
1. Always run this repor t with the most recent data will issue queries to the data source every time
you run the report. This results in an on-demand report that contains the most up-to-date data. A new
instance of the report will be created each time the report is opened which will contain the results of a
new query. With this approach, if ten users open the report at the same time, ten queries are sent to the
data source for processing.
2. Cache copies of this repor t and use them when available will place a temporary copy of the data
in a cache for later use. Caching usually improves performance because the data is returned from the
cache instead of running the dataset query again. With this approach, if ten users open the report, only
the first request results a query to the data source. The report is subsequently cached, and the remaining
nine users view the cached report.
3. Always run this repor t against pregenerated snapshots will cache the report layout and data for a
given time period. You can run a report as a report snapshot to prevent the report from being run at
arbitrary times (for example, during a scheduled backup). The snapshot can be refreshed on a schedule.
[Learn more]
Selecting Cache Copies of this repor t and use them when available will present you with some more
options.

For more information, see Working with snapshots.


Cache Expiration
You can control whether you want to expire the cache, for the paginated report, after a certain amount of time,
or if you would prefer to do that on a schedule. You can use a shared schedule.

NOTE
This does not refresh the cache.

Cache Refresh Plans


You can use Cache Refresh Plans to create schedules for preloading the cache with temporary copies of data for
a paginated report. A refresh plan includes a schedule and the option to specify or override values for
parameters. You cannot override values for parameters that are marked read-only. You can create and use more
than one refresh plan.
Default role assignments that enable you to add, delete, and change paginated reports for cache refresh plans
are Content Manager, My Reports, and Publisher.
After you apply the cache option above, you can then define a cache refresh plan. To do that select the Manage
Refresh Plans link that appears after you apply the cache settings. This will take you to the cache refresh plan
page.
To create a new cache refresh plan, select New Cache Refresh Plan . You can then enter a name for the plan
and specify a schedule. If the dataset has parameters defined, you will see those listed and be able to provide
values unless they are marked as read-only.
Once you are done, you can select Create Cache Refresh Plan .

NOTE
SQL Server Agent needs to be running to create a cache refresh plan.

You can then Edit or Delete plans that are listed. The New From Existing option is enabled when one, and
only one, cache refresh plan is selected. This option will create a new refresh plan which is copied from the
original plan. The cache refresh plan page opens pre-populated with details from the plan that was selected. You
can then modify the refresh plan options and save the plan with a new description.

History Snapshots
Use the History Snapshots page to view report snapshots that are generated and stored over time. Depending
on options that are set, report history may contain only the more recent snapshots.
Report history is always viewed within the context of the report from which it originates. You cannot view the
history of all reports on a report server in one place.
To generate a snapshot, the report must be able to run unattended (that is, it must use stored credentials;
parameterized reports must contain default parameter values for all parameters). Snapshots can be generated
manually or as a scheduled operation.
You can click a report history snapshot to view it. Snapshots that appear in report history are distinguished only
by the date and time at which they were created. There is no visual indication to distinguish whether a snapshot
was generated in response to a schedule or a manual operation.
Security
Use the Security properties page to view or modify the security settings that determine access to the report. This
page is available for items that you have permission to secure.
Access to items is defined through role assignments that specify the tasks that a group or user can perform. A
role assignment consists of one user or group name and one or more role definitions that specify a collection of
tasks.
Edit Item Security
Select to change how security is defined for the current item.

Next steps
Web portal
Work with Shared Datasets
More questions? Try asking the Reporting Services forum
Working with snapshots (web portal)
11/2/2020 • 2 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server 2016 Reporting Services and later ✔
️ Power BI Report Server
You can control if snapshots are created for a report by selecting the ellipsis (...) of a report, selecting Manage
and selecting Caching or Histor y Snapshots .

NOTE
The SQL Server Agent service needs to be started.

You can create a cache snapshot, to allow for faster loading of specific execution properties. You can also work
with history snapshots to capture points in time.

Creating a cache snapshot


You can create a snapshot by doing the following.

1. On the Caching page, select Always run this repor t against pregenerated snapshots to enable the
options for creating a snapshot.
2. Select Create Cache snapshots on a schedule if you want to schedule a recurring snapshot. You can
then use a shared schedule, or define a custom schedule to refresh the snapshot.
3. Select Create a cache snapshot when I click Apply on this page if you want to create a cache
snapshot right now. If you select only this option, the snapshot will not be refreshed.

Create, Modify, and Delete history snapshots


To work with history snapshots, manage a report and select Histor y Snapshots .
Use the Histor y Snapshots page to view report snapshots that are generated and stored over time.
Depending on options that are set on the report server, the history may contain only the more recent snapshots.
Report history is always viewed within the context of the report from which it originates. You cannot view the
history of all reports on a report server in one place.
To generate a history snapshot, the report must be able to run unattended (that is, it must use stored credentials;
parameterized reports must contain default parameter values for all parameters). Report history can be
generated manually or as a scheduled operation. History properties on the report determine the ways in which
report history can be created.

1. To create a history snapshot, select + New Histor y Snapshot . This will process the report and add an
entry to the list.
2. You can go into the settings to define schedules and retention policies.
3. You can select a history snapshot to view it. Snapshots that appear in report history are distinguished
only by the date and time at which they were created. There is no visual indication to distinguish whether
a snapshot was generated in response to a schedule or a manual operation.
Schedule and settings
Selecting Schedule and Settings will provide additional options to schedule and control retention of created
snapshots.

You can optionally create a schedule for the snapshots to get created. You can also prevent other people from
creating new snapshots. Unchecking Allow people to create snapshots manually will disable the + New
Snapshot Histor y button .
You can also define how you want to retain snapshots.
Save cache snapshots in repor t histor y as well
Selecting this will copy a report snapshot that you generate based on report execution properties to report
history. You can set report execution properties to run a report from a generated snapshot. By setting this report
history property, you can keep a record of all reports snapshots that are generated over time by placing copies
of them in report history.

Next steps
Web portal
Working with paginated reports
Work with Shared Datasets
More questions? Try asking the Reporting Services forum
Working with subscriptions (web portal)
11/2/2020 • 4 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server 2016 Reporting Services and later ✔
️ Power BI Report Server
Use the Subscriptions page to list all of the subscriptions for the current report. If you have sufficient permission
(as conveyed by the "Manage all subscriptions" task), you can view the subscriptions of all users. Otherwise, this
page shows only the subscriptions that you own.
Before you can create a new subscription, you must verify that the report data source uses stored credentials.
Use the Data Sources properties page to store credentials.

NOTE
The SQL Server Agent service needs to be started.

You get to the Subscriptions page by selecting the ellipsis (...) of a report, selecting Manage and selecting
Subscriptions .
From the Subscriptions page, you can create new subscriptions by selecting + New Subscription . You can also
edit existing subscriptions, or delete subscriptions that you have selected.
This page also provides the result status of subscription runs on the Result column. If an error occurred for a
subscription, you will want to check the result column first to see what the message was.
You can also run a subscription whenever you want by selecting Run now on the Subscriptions page.

Creating or editing a subscription


Use the New Subscription or Edit Subscription page to create a new subscription or modify an existing
subscription to a report. The options on this page vary depending on your role assignment. Users with
advanced permissions can work with additional options.
Subscriptions are supported for reports that can run unattended. At a minimum, the report must use stored or
no credentials. If the report uses parameters, a default value must be specified. Subscriptions may become
inactive if you change report execution settings or remove the default values used by parameter properties. For
more information, see Create and Manage Subscriptions for Native Mode Report Servers .

Type of subscription
You can select between a Standard subscription and a Data-driven subscription .

A data-driven subscription is one that queries a subscriber database for subscription information each time the
subscription runs. Data-driven subscriptions use query results to determine the recipients of the subscription,
delivery settings, and report parameter values. At run time, the report server runs a query to get values used for
subscription settings.
To create a data-driven subscription, you must know how to write a query or command that gets the data for the
subscription. You must also have a data store that contains the subscriber data (for example, subscriber names
and email addresses) to use for the subscription.
This option is available to users with advanced permissions. If you are using default security, data-driven
subscriptions cannot be used for reports located in a My Reports folder.

Destination
Select the delivery extension to use to distribute the report.
The availability of a delivery extension depends on whether it is installed and configured on the report server.
Report Server email is the default delivery extension, but it must be configured before you can use it. File Share
delivery does not require configuration, but you must define a shared folder before you can use it.

Depending on the delivery extension you select, the following settings appear:
Email subscriptions provide fields that are familiar to email users (for example, To, Subject, and Priority
fields). Specify Include Repor t to embed or attach the report, or Include Link to include a URL to the
report. Specify Render Format to choose a presentation format for the attached or embedded report.
See Create an email subscription for details.
File share subscriptions provide fields that allow you to specify a target location. You can deliver any
report to a file share. However, reports that support interactive features (including matrix reports that
support drill-down to supporting rows and columns) are rendered as static files. You cannot view drill-
down rows and columns in a static file. The file share name must be specified in Uniform Naming
Convention (UNC) format (for example, \mycomputer\public\myreportfiles). Do not include a trailing
backslash in the path name. The report file will be delivered in a file format that is based on the render
format (for example, if you choose Excel, the report is delivered as an .xlsx file). See Create a file share
subscription for details.

Data-driven subscription dataset


For a data-driven subscription, you will need to define the dataset used for the subscription. Select Edit Dataset
to supply that information.

You need to first provide a data source to use for the query. This can be either a shared data source, or you can
supply a custom data source.
You will need to then supply a quer y that will list the different options needed for the subscription to run. The
screen will provide the fields that need to be returned. These fields will vary depending on your delivery method
and the parameters of the report.
For best result, run the query in SQL Server Management Studio first, before using it in the data-driven
subscription. You can then examine the results to verify that it contains the information you require. Important
points to recognize about the query results are:
Columns in the result set determine the values that you can specify for delivery options and report
parameters. For example, if you are creating a data-driven subscription for email delivery, you should
have a column of email addresses.
Rows in the result set determine the number of report deliveries that are generated. If you have 10,000
rows, the report server will generate 10,000 notifications and deliveries.

You can then validate the query. You can also define a quer y timeout .
After the query has been created, you can then assign values to the required fields. You can either enter your
manual data, or select a field from the dataset you created.
Next steps
Create and Manage Subscriptions for Native Mode Report Servers Web portal
Working with paginated reports
Work with Shared Datasets
More questions? Try asking the Reporting Services forum
Working with KPIs in Reporting Services
11/2/2020 • 3 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server 2016 Reporting Services and later ✔
️ Power BI Report Server
A Key Performance Indicator (KPI) is a visual cue that communicates the amount of progress made toward a
goal. Key Performance Indicators are valuable for teams, managers, and businesses to evaluate quickly the
progress made against measurable goals.
By using KPIs in SQL Server Reporting Services, you can easily visualize answers to the following questions:
What am I ahead or behind on?
How far ahead or behind am I?
What are the minimum amounts I have completed?

NOTE
KPIs are only accessible in the Enterprise (Developer) editions of the SSRS portal.

Creating a Dataset
A KPI will only use the first row of data from a shared dataset. Make sure that the data you want to use is located
on that first row. To create a shared dataset, you can use either Report Builder or SQL Server Data Tools.

Note : The Dataset does not need to be in the same folder as the KPI.

Placement of KPIs
KPIs can be created in any folder in your report server. Before you create a KPI, you will want to think about
where is the right location to place it in. You can place it in a folder that is visible to the users, at the same time
being relevant to other reports, and KPIs, around it.

Adding a KPI
After you have determined the location of your KPI, go to that folder and select New > KPI from the top menu.

This will present you with the New KPI screen.


You can either assign static values, or use data from a shared dataset. When you create a new KPI, it will be
populated with a random set of manual data.

F IEL D DESC RIP T IO N

Value format Used to change the format of the value being displayed.

Value The value to display for the KPI.

Goal Used as a comparison to a numeric value and shown as a


percent difference.

Status Numerical value used to determine the KPI Tile color. Valid
values are 1 (green), 0 (amber) and -1 (red).

Trend set Comma-separated numeric values used for chart


visualization. This can also be set to a column of a dataset
with values that represent the trend.

Related content The ability to set a drill-through link. This link can either be a
mobile report published on the portal or a custom URL.

Warning : While you can use the word value for the Status field at design time, you should use the number
value if refreshing a dataset. If you refresh a dataset with the word value, instead of the number, it could
corrupt the KPIs on your server.
Note : The Value , Goal and Status fields can only choose a value from the first row of a dataset's result. The
Trend set field, however, can choose which column reflects the trend.
To use data from a shared dataset, you can do the following steps.
1. Change the fields drop down box from Set manually , or Not set , to Dataset field .

2. Select the ellipsis (...) in the data box. This will bring up the Pick a Dataset screen.

3. Select the dataset that has the data you want to display.
4. Choose the field you want to use. Select OK .

5. Change Value format to match the format of your value. In this example, the value is a currency.

6. Select Apply .
Configuring related content
When you choose Mobile Repor t , you can choose the destination in a dialog.

When you now click on the KPI in the portal, a thumbnail of the mobile report shows under the related content
dropdown. Clicking on this thumbnail can directly navigate you to this report.
You can also specify a custom URL. This task can be anything: a website, a SharePoint site, a URL to an SSRS
report (which would allow you to pass along hardcoded parameters).

When you now click on the KPI, the URL shows under related content.
It's only possible to add one mobile report or one custom URL.

Removing a KPI
To remove a KPI, you can do the following steps.
1. Select the ellipsis (...) of the KPI you want to remove. Select Manage .
2. Select Delete . Select Delete again on the confirmation dialog.

Refreshing a KPI
To refresh the KPI, you will need to configure a caching for the shared dataset. For more information regarding
cache refresh plans, see Work with Shared Datasets.

Next steps
Web portal
Work with Shared Datasets
More questions? Try asking the Reporting Services forum
My Settings for Power BI Integration (web portal)
11/2/2020 • 2 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server 2016 Reporting Services and later ✔
️ Power BI Report Server
The My Settings page in the Reporting Services web portal is used by individual users to manage their sign-in
with Power BI. When you go through the steps to pin a report item, you will automatically be prompted to sign.
However, you can use the My Settings page if you need to manually sign in or if you need to sign out. If the My
Settings menu option is not visible, the report server has not been integrated with Power BI. For more
information, see Power BI Report Server Integration (Configuration Manager).

Why Sign-in
When you sign in, you establish a relationship between your Reporting Services user account and your Power BI
account. The sign-in creates a security token that is good for 90 days. If the token expires, and you have items
pinned to Power BI, you will see a notification.

Tiles within Power BI dashboards will not refresh until you sign in again through MySettings .

Once you sign in, a new security token will be created. Your dashboard tiles will begin updating on their
previously configured schedules.
Next steps
Power BI Report Server Integration
Pin Reporting Services items to Power BI Dashboards
Dashboards in Power BI
Web portal
More questions? Try asking the Reporting Services forum
Reporting Services Report Server (Native Mode)
8/25/2021 • 6 minutes to read • Edit Online

A report server configured for native mode runs as an application server that provides all processing and
management capability exclusively through Reporting Services components.
You can use either SQL Server Management Studio or the web portal to manage Reporting Services reports.
Use the Reporting Services configuration manager to manage a report server in native mode.
If the report server is configured for SharePoint mode, you must use the content management pages on the
SharePoint site to manage reports, shared data sources, and other report server items.
This article contains the following information:
Summary of native mode
Managing content
Securing and managing a resource
Referencing an image resource from a report

Summary of native mode


A Reporting Services native mode installation consists of several server-side features that you need to manage
and maintain. The server features include the following:
The Report Server Web service, which runs within the Report Server service.
The background processing applications, which handle scheduled operations and report delivery.
The report server database.
To fully administer a Reporting Services installation, you must have the following permissions:
Membership in the local Administrator group on the report server computer. If your installation includes
server features that run on remote computers, you must have administrator permissions on those
computers if you want to manage those servers over a remote connection.
Database administrator permissions for the SQL Server instance that hosts the database.
If you are installing Reporting Services on a domain controller, you must be a domain administrator.

Managing content
In Reporting Services, content management refers to the management of reports, models, folders, resources,
and shared data sources. All these items can be managed independently of each other through properties and
security settings. Any item can be moved to a different location in the report server folder namespace. To
manage items effectively, you need to know which tasks a content manager performs.
NOTE
Content management is different from report server administration. For more information about how to manage the
environment in which a report server runs, see Configuration and Administration of a Report Server (Reporting Services
SharePoint Mode).

Content management includes the following tasks:


Securing the report server site and items by applying the role-based security provided with Reporting
Services.
Structuring the report server folder hierarchy by adding, modifying, and deleting folders.
Setting defaults and properties that apply to items managed by the report server. For example, you can
set baseline maximum values that determine report history storage policies.
Creating shared data source items that can be used in place of report-specific data source connections. A
publisher or content manager can select a data source that is different from the one originally defined for
a report; for example, to replace a reference to a test database with a reference to a production database.
Creating shared schedules that can be used in place of report-specific and subscription-specific
schedules, making it easier to maintain schedule information over time.
Creating data-driven subscriptions that generate recipient lists by retrieving data from a data store.
Balancing report-processing demands that are placed on the server by scheduling report processing and
specifying which ones can be run on demand and which ones are loaded from cache.
Permission to perform management tasks are provided through two predefined roles: System Administrator
and Content Manager . Effective management of report server content requires that you are assigned to both
roles. For more information about these predefined roles, see Roles and Permissions (Reporting Services).
Tools for managing report server content include Management Studio or the web portal. Management Studio
allows you to set defaults and enable features. The web portal is used to grant user access to report server items
and operations, view and use reports and other content types, and view and use all shared items and report
distribution features.

Securing and managing a resource


A resource is a managed item that is stored on a report server, but is not processed by a report server. Typically,
a resource provides external content to report users. Examples include an image in a .jpg file or an HTML file
that describes the business rules used in a report. The JPG or HTML file is stored on the report server, but the
report server passes the file directly to the browser rather than processing it first.
To add a resource to a report server, you upload or publish a file:

O P ERAT IO N F IL E T Y P E

Upload All files are uploaded as resources except report definition


(.rdl) and report model (.smdl) files.

To upload a resource, you must use the web portal if the


report server runs in native mode or an application page on
a SharePoint site if the server runs in SharePoint integrated
mode. For more information, see Upload a File or Report in
the Report Server or Upload Documents to a SharePoint
Library (Reporting Services in SharePoint Mode).
O P ERAT IO N F IL E T Y P E

Publish All files in a project are uploaded as resources except for .rdl,
.smdl, and .rds data source files. To publish a resource, add
an existing item to a project in Report Designer and then
publish the project to a report server.

All resources originate as files on a file system, which are subsequently uploaded to a report server. There are no
restrictions on the kinds of files you can upload, file sizes up to 1 GB. However, when published to a report
server as a resource, file types that have equivalent MIME types are more optimal than others. For example,
resources that are based on HTML and JPG files will open in a browser window when the user clicks the
resource, rendering the HTML as a Web page and the JPG as an image that the user can see. In contrast,
resources that do not have equivalent MIME types, such as desktop application files, for example, may not be
rendered in the browser window.
Whether a resource can be viewed by report users depends on the viewing capabilities of the browser. Because
resources are not processed by the report server, the browser must provide the viewing capability to render a
specific MIME type. If the browser cannot render the content, users who view the resource see only the general
properties of the resource.
Resources exist alongside reports, shared data sources, shared schedules, and folders as named items in the
report server folder hierarchy. You can search for, view, secure, and set properties on resources just as you
would any item stored on a report server. To view or manage a resource, you must have the View resources or
Manage resources tasks in your role assignment.

Referencing an image resource from a report


Resources can contain an image that you reference in a report. If report requirements include the use of external
images, consider the following advantages to storing the image as a resource:
Centralized storage in the report server database. If you move the report server database and its
contents to another computer, the external image stays with the report. You do not have to keep track of
image files that are stored on disk on different computers.
Secured through role assignments rather than file system security. The same permissions used to view a
report can be applied to the resource. In contrast, if you store the image on disk, you must ensure that
either the Anonymous user account or the unattended execution account have permission to access the
file.
To use an image resource in a report, add the image file to the project and publish it along with the report. Once
the image is published, you can update the image reference in the report so that it points to the resource on the
report server, and then republish just the report to save your changes. You can now subsequently update the
image independently of the report by republishing the resource. The report uses the most current version of the
image available on the report server.

See also
Configure and Administer a Report Server (SSRS Native Mode)
Troubleshoot a Reporting Services Installation
Comparing native and SharePoint Reporting
Services report servers
11/2/2020 • 10 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server 2016 Reporting Services and later ✔
️ SharePoint ✔
️ Power BI Report Server
For content related to previous versions of SQL Server Reporting Services (SSRS), see SQL Server 2014
Reporting Services.
Learn about the central piece of a SQL Server Reporting Services installation. It consists of a processing engine
along with extensions to add functionality.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

A Reporting Services report server runs in one of two deployment modes; Native mode or SharePoint mode.
See the Feature Comparison of SharePoint and Native Mode section for a comparison of features.
Installation: For information on Reporting Services installation, see Install Reporting Services.

Overview of report server modes


Processing engines (processors) are the core of the report server. The processors support the integrity of the
reporting system and cannot be modified or extended. Extensions are also processors, but they perform very
specific functions. Reporting Services includes one or more default extensions for every type of supported
extension. You can add custom extensions to a report server. Doing so allows you to extend a report server to
support features that are not supported out of the box; examples of custom functionality might include support
for single sign-on technologies, report output in application formats that are not already handled by the default
rendering extensions, and report delivery to a printer or application.
A single report server instance is defined by the complete collection of processors and extensions that provide
end-to-end processing, from the handling of the initial request to the presentation of a finished report. Through
its subcomponents, the report server processes report requests and makes reports available for on-demand
access or scheduled distribution.
Functionally, a report server enables report authoring experiences, report rendering, and report delivery
experiences for a variety of data sources as well as extensible authentication and authorization schemes.
Additionally a report server contains report server databases that store published reports, shared data sources,
shared datasets, report parts, shared schedules and subscriptions, report definition source files, model
definitions, compiled reports, snapshots, parameters, and other resources. A report server also enables
administration experiences for configuring the report server to process report requests, maintain snapshot
histories, and manage permissions for reports, data sources, datasets, and subscriptions.
A Reporting Services report server supports two modes of deployment for report server instances:
Native mode : including native mode with SharePoint web parts, where a report server runs as an
application server that provides all processing and management capability exclusively through Reporting
Services components. You configure a native mode report server with Report Server Configuration
Manager and SQL Server Management Studio.
SharePoint mode : where a report server is installed as part of a SharePoint server farm. Deploy and
configure SharePoint mode by using PowerShell commands or SharePoint content management pages.
In SQL Server Reporting Services you cannot switch a report server from one mode to the other. If you want to
change the type of report server that your environment uses, you must install the desired mode of report server
and then copy or move the report items or report server database from the older versioned report server to the
new report server. This process is typically referred to as a 'migration'. The steps needed to migrate depend on
the mode you are migrating to and the version you are migrating from. For more information, see Upgrade and
Migrate Reporting Services

Feature comparison of SharePoint and native mode


F EAT URE O R C O M P O N EN T N AT IVE M O DE SH A REP O IN T M O DE

URL addressing Yes URL addressing is different in


SharePoint integrated mode.
SharePoint URLs are used to reference
reports, report models, shared data
sources, and resources. The report
server folder hierarchy is not used. If
you have custom applications that rely
on URL access as supported on a
native mode report server, that
functionality will no longer work when
the report server is configured for
SharePoint integration.

For more information on URL access,


see URL Access Parameter Reference

Custom security extensions Yes Reporting Services custom security


extensions cannot be deployed or used
on the report server. The report server
includes a special-purpose security
extension that is used whenever you
configure a report server to run in
SharePoint integrated mode. This
security extension is an internal
component, and it is required for
integrated operations.

Configuration Manager Yes ** Impor tant ** Configuration


Manager cannot be used to manage a
SharePoint mode report server.
Instead, use SharePoint central
administration.

Web por tal Yes You can't manage SharePoint mode in


the web portal. Use the SharePoint
application pages. For more
information, see Reporting Services
SharePoint Service and Service
Applications.

Linked Repor ts Yes No.

My Repor ts Yes No
F EAT URE O R C O M P O N EN T N AT IVE M O DE SH A REP O IN T M O DE

My Subscriptions and batching Yes No


methods.

Data Aler ts No Yes

Power View No Yes

Requires Silverlight in the client


browser. For more information on
browser requirements, see Browser
Support for Reporting Services and
Power View

.RDL repor ts Yes Yes

.RDL reports can run on Reporting


Services report servers in native mode
or in SharePoint mode.

.RDLX repor ts No Yes

Power View .RDLX reports can only run


on Reporting Services report servers in
SharePoint mode.

SharePoint user token credentials No Yes


for the SharePoint list extension

AAM zones for internet facing No Yes


deployments

SharePoint backup and recover y No Yes

ULS log suppor t No Yes

Native mode
In native mode, a report server is a stand-alone application server that provides all viewing, management,
processing, and delivery of reports and report models. This is the default mode for report server instances. You
can install a native mode report server that is configured during setup or you can configure it for native mode
operations once setup is complete.
The following diagram shows the three-tier architecture of a Reporting Services Native mode deployment. It
shows the report server database and data sources in the data tier, the report server components in the middle
tier, and the client applications and built-in or custom tools in the presentation tier. It shows the flow of requests
and data among the server components and which components send and retrieve content from a data store.
The report server is implemented as a Microsoft Windows service, called the "Report Server service", that hosts
a Web service, background processing, and other operations. In the Services console application, the service is
listed as SQL Server Reporting Services (MSSQLSERVER).
Third-party developers can create additional extensions to replace or extend the processing capability of the
report server. To learn more about the programmatic interfaces available to application developers, see the
Technical Reference.
Native mode with SharePoint web parts
Reporting Services provides two web parts that you can install and register on an instance of Windows
SharePoint Services 2.0 or later, or SharePoint Portal Server 2003 or later. From a SharePoint site, you can use
the web parts to find and view reports that are stored and processed on a report server that runs in native
mode. These web parts were introduced in earlier releases of Reporting Services.

SharePoint mode
In SharePoint mode, a report server must run within a SharePoint server farm. The report server processing,
rendering, and management features are represented by a SharePoint application server running the Reporting
Services SharePoint shared service and one or more Reporting Services service applications. A SharePoint site
provides the front-end access to report server content and operations.
SharePoint mode requires:
SharePoint Foundation 2010 or SharePoint Server 2010.
An appropriate version of the Reporting Services Add-in for SharePoint 2010 Products.
A SharePoint application server with the Reporting Services shared service installed and at least one
Reporting Services service application.
The following illustration shows a SharePoint mode Reporting Services environment:
DESC RIP T IO N

(1) Web servers or web front-ends (WFE). The Reporting


Services add-in must be installed on each web server from
which you want to utilize the web application features such
as viewing reports or Reporting Services management pages
for tasks such as managing data sources or subscriptions.

(2) The add-in installs URL and SOAP endpoints for clients to
communicate with the Application servers, through the
Reporting Services service proxy.

(3) Application servers running Reporting Services shared


service. Scale-out of report processing is managed as part of
the SharePoint farm and by adding the Reporting Services
service to additional application servers.

(4) You can create more than one Reporting Services service
application, with different configurations including
permissions, e-mail, proxy, and subscriptions.

(5) Reports, data sources, and other items are stored in the
SharePoint content databases.

(6) Reporting Services service applications create three


databases for report server, temp, and data alerting
features. Configuration settings that apply to all SSRS service
applications are stored in the RSRepor tser ver.config file.

Report process and schedule and delivery process


The report server includes two processing engines that perform preliminary and intermediate report
processing, and scheduled and delivery operations. The Report Processor retrieves the report definition or
model, combines layout information with data from the data processing extension, and renders it in the
requested format. The Scheduling and Delivery Process processes reports triggered from a schedule, and
delivers reports to target destinations.

Report server database


The report server is a stateless server that stores all properties, objects, and metadata in a SQL Server database.
Stored data includes published reports, compiled reports, report models, and the folder hierarchy that provides
the addressing for all items managed by the report server. A report server database can provide internal storage
for a single Reporting Services installation or for multiple report servers that are part of a scale-out
deployment. If you configure a report server to run within a larger deployment of a SharePoint product or
technology, the report server uses the SharePoint databases in addition to the report server database. For more
information about data stores used in Reporting Services installation, see Report Server Database (SSRS Native
Mode).

Authentication, rendering, data, and delivery extensions


The report server supports the following types of extensions: authentication extensions, data processing
extensions, report processing extensions, rendering extensions, and delivery extensions. A report server
requires at least one authentication extension, data processing extension, and rendering extension. Delivery and
custom report processing extensions are optional, but necessary if you want to support report distribution or
custom controls.
Reporting Services provides default extensions so that you can use all of the server features without having to
develop custom components. The following table describes the default extensions that contribute to a complete
report server instance that provides ready-to-use functionality:

TYPE DEFA ULT

Authentication A default report server instance supports Windows


Authentication, including impersonation and delegation
features if they are enabled in your domain.

Data processing A default report server instance includes data processing


extensions for SQL Server, Analysis Services, Oracle,
Hyperion Essbase, SAPBW, OLE DB, Parallel Data Warehouse,
and ODBC data sources.

Rendering A default report server instance includes rendering


extensions for HTML, Excel, CSV, XML, Image, Word,
SharePoint list, and PDF.

Delivery A default report server instance includes an e-mail delivery


extension and a file share delivery extension. If the report
server is configured for SharePoint integration, you can use a
delivery extension that saves reports to a SharePoint library.

NOTE
Reporting Services includes a complete set of tools and applications that you can use to administer the server, create
content, and make that content available to users in your organization.
Related tasks
The following articles provide additional information on installing, using, and maintaining a report server:

TA SK L IN K

Review Hardware and software requirements. Hardware and Software Requirements for Reporting Services
in SharePoint Mode.

Install Reporting Services in SharePoint mode. Install Reporting Services SharePoint Mode for SharePoint
2010

Explains how to tune the memory settings for the Report Configure Available Memory for Report Server Applications
Server Web service and Windows service.

Explains recommended steps to configure are report server Configure a Report Server for Remote Administration
for remote administration.

Provides instructions for configuring the availability of My Enable and Disable My Reports
Repor ts on a Native report server instance.

Provides instructions for setting up the RSClientPrint control Enable and Disable Client-Side Printing for Reporting
that provides print functionality from within supported Services
browsers. For more information on browser requirements,
see Browser Support for Reporting Services and Power View.

Next steps
Reporting Services Extensions
Reporting Services Tools
Subscriptions and Delivery (Reporting Services)
Report Server Database (SSRS Native Mode)
Implementing a Security Extension
Implementing a Data Processing Extension
Data Sources Supported by Reporting Services (SSRS)
More questions? Try asking the Reporting Services forum
Configure and Administer a Report Server (SSRS
Native Mode)
11/2/2020 • 2 minutes to read • Edit Online

This article summarizes the approaches that you can use to configure Reporting Services. It also includes a list
of topics that explain how to configure specific components, features, or server capabilities. To configure
Reporting Services, you can:
Use the Report Server Configuration Manager. Many of the topics in this section contain information
about how to configure specific features through this tool.
Use Management Studio to customize server properties, enable My Reports, enable trace logs, and set
site-wide defaults. For more information about site settings, see Reporting Services Report Server
(Native Mode) for Management Studio. Note that you can create and run script that sets server
properties programmatically. For more information, see Script Deployment and Administrative Tasks and
Report Server System Properties.
Use the web portal to grant permissions to access the report server. Permissions are conveyed through
role assignments that you define for each user or group account. For more information, see Roles and
Permissions (Reporting Services).
Optionally, modify configuration files to change application settings. For more information about each file
and guidelines for modifying them, see Reporting Services Configuration Files.

In this section
Configure Report Server URLs (Report Server Configuration Manager)
Describes how to define the URLs used to access the report server and the web portal.
Configure the Report Server Service Account (Report Server Configuration Manager)
Provides recommendations and steps on how to modify service account and password.
Create a Report Server Database (Report Server Configuration Manager)
Describes how to create a report server database, required for storing server metadata and objects.
Configure a Report Server Database Connection (Report Server Configuration Manager)
Describes how to modify the connection string used by the report server to connect to the report server
database.
E-Mail Delivery in Reporting Services
Describes how to configure a report server to support e-mail report distribution.
Configure the Unattended Execution Account (Report Server Configuration Manager)
Describes how to configure a user account to process reports in unattended mode.

See also
Reporting Services Configuration Files
Report Server Configuration Manager (Native Mode)
Reporting Services Security and Protection
Reporting Services Report Server (Native Mode)
Configure a Report Server (Reporting Services
Native Mode)
11/2/2020 • 2 minutes to read • Edit Online

Depending on options you selected during installation, the Report Server might require additional configuration
before you can use it. At a minimum, a report server configuration consists of the following:
A Report Server service account (configured during installation).
A Web service URL that provides access to the report server.
A report server database that stores application data, reports, and other items.
Setup configures the minimum settings if you select either of the following installation options: Native mode
default configuration or SharePoint integrated mode default configuration. If you installed the report server in
files-only mode (this is the Install but do not configure option in the Installation wizard), only the service
account is configured. The Web service URL and report server database must be configured after Setup is
finished.
It's recommended that you configure web portal so that you can grant user access to the report server and
manage report server content. If you deploy a report server in SharePoint integrated mode, use the Web front
end of a SharePoint server to grant access.
Additional features, such as report server e-mail and the unattended execution account, can be configured as
needed. For more information, see Manage a Reporting Services Native Mode Report Server.
To configure a report server, use the Reporting Services Configuration tool.

To minimally configure a report server installation


1. Start the Reporting Services Configuration tool and connect to the report server instance. For
instructions, see Report Server Configuration Manager (Native Mode).
2. Click Web Ser vice URL to open the page for configuring a URL for the report server. For instructions on
how to define the URL, see Configure a URL (Report Server Configuration Manager).
3. Click Database to create the report server database. For instructions, see Create a Native Mode Report
Server Database (Report Server Configuration Manager).
4. Go back to the Web Ser vice URL page and click the URL to verify it works.
5. Follow the instructions in "Next Steps" to complete your deployment.

Next Steps
To complete your deployment, you should configure the web portal or SharePoint integration. For more
information, see Configure the web portal.
If Windows Firewall is turned on, the port that the report server is configured to use is most likely closed. One
indication that a port might be closed is a blank page when you attempt to open the web portal from a remote
client computer. For information on configuring the firewall, see Configure a Firewall for Report Server Access.
If you are using Windows Vista or Windows Server 2008, additional steps are required before you can open the
web portal locally. For more information, see Configure a Native Mode Report Server for Local Administration
(SSRS).
Verify your installation by creating folders, uploading items, and running reports. Follow the instructions in
Verify a Reporting Services Installation to verify your installation.

See also
Manage a Reporting Services Native Mode Report Server
Configure a Firewall for Report Server Access
Configure a Native Mode Report Server for Local Administration (SSRS)
Configure a Report Server for Remote Administration
Report Server Configuration Manager (Native Mode)
Configure the web portal
11/2/2020 • 4 minutes to read • Edit Online

the web portal is a Web front end application used to view reports, manage report server content, and grant
user access to a native mode report server. the web portal is installed with the Report Server Web service within
the same report server instance and optionally configured if you select the Install in the default native
mode configuration option in Setup. You can also configure the web portal as a post-installation task. This
topic provides information about the following the web portal configuration scenarios:

Prerequisites
To use the web portal, you must satisfy the following prerequisites:
You must have a minimally configured report server. For more information about minimally configuring
a report server, see Configure a Report Server.
Your report server must run in native mode. You cannot use the web portal with a report server that is
configured for SharePoint integrated mode. In SQL Server 2012 you cannot switch a report server from
one mode to the other. If you want to change the type of report server that your environment uses, you
must install the desired mode of report server and then copy or move the report items to the new report
server. This process is typically referred to as a 'migration'. The steps needed to migrate depend on the
mode you are migrating to and the version you are migrating from. For more information, see Upgrade
and Migrate Reporting Services.
You must also have Internet Explorer 11 or later with scripting enabled. For more information, see
Browser Support for Reporting Services and Power View.

Configure the web portal to use the default URL


The web portal is a Web application that users access in a Web browser. Minimally, you must define the URL
used to open the application in a browser window. The URL consists of a host name, port, and virtual directory.
Default values for this URL include the host name and port values that you defined for the Report Server Web
service URL, plus the repor ts virtual directory name. If you have a named instance, the virtual directory is
repor ts_instance , where instance is the name of your Reporting Services instance.
By default, the web portal URL consists of a unique virtual directory name, plus the port and host name that is
defined for the Report Server Web service that runs in the same instance. In most cases, the host name is the
network name of the report server computer, but it can also be an IP address or host header that resolves the
computer. To configure the web portal to use the default URL, use the Web Por tal URL page in the Reporting
Services Configuration tool.

TIP
If you try to access the web portal on a remote computer and you receive connection error messages in your browser, a
common cause is Firewall settings. For more information, see Configure a Firewall for Report Server Access.

To configure the default the web portal URL and virtual directory
1. Start the Reporting Services Configuration tool and connect to the report server instance.
2. In the Reporting Services Configuration tool, select Web Por tal URL to open the page for configuring
the URL.
3. Enter a unique virtual directory name for the web portal.
4. Click Apply .
5. If you are using Windows Vista or Windows Server 2008, additional steps might be required before you
can use the web portal. For more information, see Configure a Native Mode Report Server for Local
Administration (SSRS).

Configure the web portal to use a specific report server URL


By default, the web portal connects to the Report Server Web service that runs in the same Report Server
service. The web portal uses the Report Server Web service URL to make the connection. If you define multiple
URLs for the Report Server Web service, the web portal uses the last one that you defined. However, for some
deployments, you might want the web portal to always connect to the Web service through a static URL. An
example of why you might want to do so is if you configured packet filtering on a specific port or IP address,
and you want all connections to the report server to go through the filter rules you defined.
When you configure URLs in the Reporting Services Configuration tool, the web portal automatically detects
and uses any new and updated URLs for the report server that runs in the same server instance. If your
deployment requires that you use a single, static URL for all report server requests, you can specify that URL in
the RSReportServer.config file.
To configure a static report server URL
1. Open the RSRepor tSer ver.config file in a text editor. By default, it is located at \Program Files\Microsoft
SQL Server\MSRS12.<instancename>\Reporting Services\ReportServer.
2. Find Repor tSer verURL .
3. Replace it with the URL of the report server instance.
4. Save your changes and close the file.
For more information about the configuration file, see Modify a Reporting Services Configuration File
(RSreportserver.config) and RsReportServer.config Configuration File.

Customize Styles or Application Title


You can create a custom brand package to alter the colors used for the web portal. For more information, see
Branding the web portal
To modify application title
1. Log on using an account that is assigned System Administrator permissions on the report server.
2. Open Internet Explorer.
3. Enter the web portal URL. By default, it is https://<your-ser ver-name >/reports, but if you installed
Reporting Services as a named instance, the default URL will be https://<your-ser ver-
name >/reports<_instancename >.
4. Select Site Settings .
5. On the General tab, in Name , replace SQL Ser ver Repor ting Ser vices with a different name.
6. Select Apply .

Next steps
Web portal
Browser Support for Reporting Services Configure a URL
Verify a Reporting Services Installation
Turn Reporting Services Features On or Off
Manage a Reporting Services Native Mode Report Server
RsReportServer.config Configuration File
Configure a Native Mode Report Server for Local Administration
More questions? Try asking the Reporting Services forum
Manage a Reporting Services Native Mode Report
Server
11/2/2020 • 2 minutes to read • Edit Online

This section contains procedures for configuring a native mode report server instance using the Report Server
Configuration Manager.

In This Section
The topics in this section are organized into categories so that you can more easily find the instructions you
want. The first section contains topics for basic configuration tasks for a native mode report server. The second
section contains advanced configuration topics. The third section contains topics for configuring a report server
to run in SharePoint integrated mode.
Basic Configuration
Report Server Configuration Manager (Native Mode)
Provides steps for starting the Reporting Services Configuration tool.
Configure a Service Account (Report Server Configuration Manager)
Explains how to specify account and password information for the Report Server service.
Register a Service Principal Name (SPN) for a Report Server
Explains how to manually register an SPN for a report server that runs under a domain user account on a
network that uses Kerberos authentication.
Configure a URL (Report Server Configuration Manager)
Explains how to establish one or more URLs used to access the Report Server Web service and the web portal.
Create a Native Mode Report Server Database (Report Server Configuration Manager)
Provides steps for creating a report server database. This step is required for deploying a Reporting Services
installation.
Advanced or Optional Configuration
Configure a Native Mode Report Server Scale-Out Deployment (Report Server Configuration Manager)
Provides steps for configuring multiple report servers to share a report server database.
E-Mail Delivery in Reporting Services
Provides steps for configuring a report server for e-mail distribution.
Configure a Firewall for Report Server Access
Explains how to open ports used for inbound requests and outbound responses from a report server.
Configure a Native Mode Report Server for Local Administration (SSRS)
Describes additional steps required to connect to the web portal or a report server using https://localhost .
Configure a Report Server for Remote Administration
Explains how to configure a remote report server instance so that you can connect to and configure it from a
different computer.
Turn Reporting Services Features On or Off
Explains how to remove unused features in a Reporting Services installation.
Enable Remote Errors (Reporting Services)
Explains how to set server properties on a report server to return additional information about error conditions
that occur on remote servers.

See Also
Configure and Administer a Report Server (SSRS Native Mode)
Configuration and Administration of a Report Server (Reporting Services SharePoint Mode)
Configure a Firewall for Report Server Access
11/2/2020 • 3 minutes to read • Edit Online

Reporting Services Report server applications and published reports are accessed through URLs that specify an
IP address, port, and virtual directory. If Windows Firewall is turned on, the port that the report server is
configured to use is most likely closed. Indications that a port might be closed are receiving a blank page when
you attempt to open the web portal from a remote client computer, or a blank Web page after requesting a
report.
To open a port, you must use the Windows Firewall utility on the report server computer. Reporting Services will
not open ports for you; you must perform this step manually.
By default, the report server listens for HTTP requests on port 80. As such, the following instructions include
steps that specify that port. If you configured the report server URLs to use a different port, you must specify
that port number when following the instructions below.
If you are accessing SQL Server relational databases on external computers, or if the report server database is
on an external SQL Server instance, you must open port 1433 and 1434 on the external computer. For more
information, see Configure a Windows Firewall for Database Engine Access. For more information about the
default Windows firewall settings, and a description of the TCP ports that affect the Database Engine, Analysis
Services, Reporting Services, and Integration Services, see Configure the Windows Firewall to Allow SQL Server
Access.

Prerequisites
These instructions assume that you already configured the service account, created the report server database,
and configured URLs for the Report Server Web service and the web portal. For more information, see Manage
a Reporting Services Native Mode Report Server.
You should also have verified that the report server is accessible over a local Web browser connection to the
local report server instance. This step establishes that you have a working installation. You should verify that the
installation is configured correctly before you begin opening ports. To complete this step on Windows Server,
you must have also added the report server site to Trusted Sites. For more information, see Configure a Native
Mode Report Server for Local Administration (SSRS).

Opening Ports in Windows Firewall


To open port 80
1. From the Star t menu, click Control Panel , click System and Security , and then click Windows
Firewall . Control Panel is not configured for 'Category' view, you only need to select Windows
Firewall.
2. Click Advanced Settings .
3. Click Inbound Rules.
4. Click New Rule in the Actions window.
5. Click Rule Type of Por t.
6. Click Next .
7. On the Protocol and Por ts page click TCP .
8. Select Specific Local Por ts and type a value of 80 .
9. Click Next .
10. On the Action page click Allow the connection .
11. Click Next .
12. On the Profile page click the appropriate options for your environment.
13. Click Next .
14. On the Name page enter a name ofRepor tSer ver (TCP on por t 80)
15. Click Finish .
16. Restart the computer.

Next steps
After you open the port and before you confirm whether remote users can access the report server on the port
that you open, you must grant user access to the report server through role assignments on Home and at the
site level. You can open a port correctly and still have report server connections fail if users do not have
sufficient permissions. For more information, see Grant user access to a report server.
You can also verify that the port is opened correctly by starting the web portal on a different computer. For more
information, see The web portal of a report server.

See also
Configure the Report Server Service Account (Report Server Configuration Manager)
Configure Report Server URLs (Report Server Configuration Manager)
Create a Report Server Database (Report Server Configuration Manager)
Configure the Report Server Service Account (Report Server Configuration Manager)
Manage a Reporting Services Native Mode Report Server
Configure a Native Mode Report Server for Local
Administration (SSRS)
11/2/2020 • 5 minutes to read • Edit Online

Deploying a Reporting Services report server on one of the following operating systems requires more
configuration steps if you want to administer the report server instance locally. This topic explains how to
configure the report server for local administration. If you have not yet installed or configured the report server,
see Install SQL Server from the Installation Wizard (Setup) and Manage a Reporting Services Native Mode
Report Server.

Applies to: Reporting Services Native mode

Windows Server 2012 R2


Windows 8.1
Windows 8
Windows Server 2012
Windows Server 2008 R2
Windows 7
Windows Server 2008
Because the noted operating systems limit permissions, members of the local Administrators group run most
applications as if they are using the Standard User account.
While this practice improves the overall security of your system, it prevents you from using the predefined,
built-in role assignments that Reporting Services creates for local administrators.
Overview of Configuration Changes
To Configure Local Report Server and the web portal Administration
To Configure SQL Server Management Studio (SSMS) for local report server administration
To Configure SQL Server Data Tools (SSDT) to Publish to a Local Report Server
Additional Information

Overview of configuration changes


The following configuration changes configure the server so that you can use standard user permissions to
manage report server content and operations:
Add Reporting Services URLs to trusted sites. By default, Internet Explorer running on the listed operating
systems runs in Protected Mode , a feature that blocks browser requests from reaching high-level
processes that run on the same computer. You can disable protected mode for the report server
applications by adding them as Trusted Sites.
Create role assignments that grant you, the report server administrator, permission to manage content
and operations without having to use the Run as administrator feature on Internet Explorer. By
creating role assignments for your Windows user account, you gain access to a report server with
Content Manager and System Administrator permissions through explicit role assignments that replace
the predefined, built-in role assignments that Reporting Services creates.

To configure local Report Server and web portal administration


Complete the configuration steps in this section if you are browsing to a local report server and you see errors
similar to the following:
User 'Domain\[user name] ' does not have required permissions. Verify that sufficient permissions have been
granted and Windows User Account Control (UAC) restrictions have been addressed.
Trusted Site settings in the browser
1. Open a browser window with Run as administrator permissions. From the Star t menu, right-click
Internet Explorer , and select Run as administrator .
2. Select Yes when prompted to continue.
3. In the URL address, enter the web portal URL. For instructions, see The web portal of a report server
(SSRS Native Mode).
4. Click Tools .
5. Click Internet Options .
6. Click Security .
7. Click Trusted Sites .
8. Click Sites .
9. Add https://<your-server-name> .
10. Clear the check box Require ser ver cer tification (https:) for all sites in this zone if you are not
using HTTPS for the default site.
11. Click Add .
12. Select OK .
Web portal folder settings
1. In the web portal, on the Home page, click Manage folder .
2. In the Manage folder page, click Security and then select Add group or user .
3. In the New Role Assignment page, in the Group or user field, type your Windows user account in this
format: <domain>\<user> .
4. Select Content Manager .
5. Select OK .
Web portal site settings
1. Open your browser with administrative privileges and browse to web portal,
https://<server name>/reports .

2. Select the gear icon on the top row the Home page and then Site Settings from the dropdown menu.
.

TIP
Note: If you do not see the Site Settings option, close and reopen your browser and browse to web portal with
administrative privileges.

3. On the Site settings page, Select Security and then select Add group or user .
4. In the Group or user name field, type your Windows user account in this format: <domain>\<user> .
5. Select System Administrator .
6. Select OK .
7. Close web portal.
8. Re-open the web portal in Internet Explorer, without using Run as administrator .

To configure SQL Server Management Studio (SSMS) for local report


server administration
By default, you cannot access all of the report server properties available in SQL Server Management Studio
unless you start Management Studio with administrative privileges.
To configure Repor ting Ser vices role properties and role assignments so you do not need to start
Management Studio with elevated permissions each time:
From the Star t menu, right-click Microsoft SQL Ser ver Management Studio , and then click Run as
administrator .
Connect to your local Reporting Services server.
In the Security node, click System Roles .
Right-click System Administrator and then click Proper ties .
In the System Role Proper ties page, select View repor t ser ver proper ties . Select any other
properties you want associated with members of the system administrators role.
Click OK .
Close Management Studio
To add a user to the system role "system administrator", see the Web portal Site Settings section earlier in
this article.
Now when you open Management Studio and do not explicitly select Run as administrator you have access
to the report server properties.
To configure SQL Server Data Tools (SSDT) to publish to a local report
server
If you installed SQL Server Data Tools on one of the operating systems listed in the first section of this topic, and
you want SSDT to interact with a local Native mode report server, you will experiences permission errors unless
you open SQL Server Data Tools (SSDT) with elevated permissions or configure reporting services roles. For
example, if you do not have sufficient permissions, you experience issues similar to the following:
When you attempt to deploy report items to the local report server, you see an error message similar to
the following in the Error List window:
The permissions granted to user 'Domain\<user name>' are insufficient for performing this
operation.
To run with elevated permissions each time you open SSDT:
1. From the start menu, select Microsoft SQL Ser ver and then right-click SQL Ser ver Data Tools . Click
Run as administrator
2. Select Yes when prompted to continue.
You should now be able to deploy reports and other items to a local report server.
To configure Repor ting Ser vices role assignments so you do not need to star t SSDT with elevated
permissions each time:
See the Web portal folder settings and Web portal Site Settings sections earlier in this topic.

Additional information
An additional and common configuration step related to Reporting Services administration is to open port 80 in
Windows Firewall to allow access to the report server computer. For instructions, see Configure a Firewall for
Report Server Access.

See also
Manage a Reporting Services Native Mode Report Server
Configure a Report Server for Remote
Administration
3/5/2021 • 4 minutes to read • Edit Online

In Reporting Services, you can configure report server instances locally or remotely. To configure a remote
report server instance, you can use the Reporting Services Configuration tool or write custom code that uses
the Reporting Services Windows Management Instrumentation (WMI) provider. The Reporting Services
Configuration tool provides a graphical interface to the WMI provider so that you can configure a report server
without having to write code. When you start the tool, you can specify a remote server to connect to.
Before you can use the tool to configure a remote report server, you must follow the instructions in this topic to
enable ports in Windows Firewall, enable remote connections, and enable remote WMI requests.
Proper configuration helps you avoid the following error:
The machine could not be found.

"The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)".

Prerequisites
To modify firewall settings, you must be logged on locally and you must be a member of the local
Administrators group. You cannot modify the Windows firewall settings of a remote computer over a remote
connection.
If you want to enable remote administration for a non-administrator user, you must grant the account
Distributed Component Object Model (DCOM) Remote Activation permissions. Instructions for configuring the
server for non-administrator access are provided in this topic.
Some organizations have group policies that prevent remote server administration for certain operating
systems or users. Before you begin modifying firewall settings, check with your network administrator to verify
whether there are restrictions on remote administration.
For more information, see Connecting Through Windows Firewall in the Platform SDK documentation on
MSDN.

Tasks
Tasks that enable remote report server configuration include the following:
Enable ports in Windows Firewall to allow requests on ports used by the report server and by the SQL
Server Database Engine instance. See Configure a Firewall for Report Server Access and Configure a
Windows Firewall for Database Engine Access.
Enable remote connections to the instance of the Database Engine instance that hosts the report server
database. A remote connection is necessary for configuring the report server database connection and
managing the encryption keys.
Enable remote WMI requests to pass through the Microsoft Windows firewall.
If you are configuring a remote report server for administration by a non-administrative user, you must
set DCOM permissions to enable remote WMI access to a standard Windows user account. Because WMI
uses DCOM as transport for remote calls, you must set the DCOM permissions so that users who are not
logged on as the local administrator can configure the server.
If you are configuring a remote report server for administration by a non-administrative user, you must
also set WMI permissions on the report server WMI namespace. By default, all members of the local
Administrator group have access to the report server WMI namespace. If you want to grant access to
non-administrators, you must set permissions.
Instructions on how to perform these tasks are provided in this topic.
To configure remote connections to the report server database
1. Click Star t , point to Programs , point to Microsoft SQL Ser ver , point to Configuration Tools , and
click SQL Ser ver Configuration Manager .
2. In the left pane, expand SQL Ser ver Network Configuration , and then click Protocols for the
instance of SQL Server.
3. In the details pane, enable the TCP/IP and Named Pipes protocols, and then restart the SQL Server
service.
To enable remote administration in Windows Firewall
1. Log on as a local administrator to the computer for which you want to enable remote administration.
2. Open a command prompt with administrative privileges.
3. Run the following command:

netsh.exe firewall set service type=REMOTEADMIN mode=ENABLE scope=ALL

You can specify different options for Scope. For more information, see the Windows Firewall product
documentation.
4. Verify that remote administration is enabled. You can run the following command to show the status:

netsh.exe firewall show state

5. Reboot the computer.


To set DCOM permissions to enable remote WMI access for non-administrators
1. On the Start menu, point to Administrative Tools , click Component Ser vices .
For Windows Vista, on the Start menu, click All Programs , click Run , and then enter mmc
comexp.msc .
2. Open the Component Services folder.
3. Open the Computers folder.
4. Select My Computer.
5. On the Action menu, and select Proper ties .
6. Click COM Security .
7. In Launch and Activation Permissions , click Edit Limits .
8. If you do not see your name in Launch Permission , click Add .
9. Type the name of your user account, and then click OK .
10. In Permissions for <User or Group> , in the Allow column, select Remote Launch and Remote
Activation , and then click OK .
To set permissions on the report server WMI namespace for non-administrators
1. On the Start menu, point to Administrative Tools , click Computer Management .
2. Open the Services and Applications folder.
3. Right-click WMI Control , and select Proper ties .
4. Click Security .
5. Open the Root folder.
6. Open the Microsoft folder.
7. Open the SQLServer folder.
8. Open the ReportServer folder.
9. Open instance folder. If you installed the default instance, the folder is MSSQLSERVER.
10. Open the v10 folder.
11. Select the Admin folder, and then click Security .
12. Click Add , and then type the user account you will use to manage the server.
13. In the Allow column, select Enable Account , Remote Enable , and Read Security , and then click OK .

See Also
Report Server Configuration Manager (Native Mode)
Configure a Report Server on a Network Load
Balancing Cluster
4/5/2021 • 9 minutes to read • Edit Online

If you are configuring a report server scale-out to run on a Network Load Balancing (NLB) cluster, you must do
the following:
Ensure that the NLB cluster is accessible through a virtual server name that maps to the virtual server IP
address. A virtual server name is necessary so that you can configure a single point of entry to the NLB
cluster. When you configure a URL for each report server instance, you will specify the virtual server
name as the host.
Configure view state validation to support interactive report viewing. Interactive reports are typically
rendered numerous times during a single user session to visualize new or different data in response to
user actions. By configuring view state validation, continuity is preserved within the user session
regardless of which report server services the actual request.
Reporting Services does not provide functionality for load balancing a scale-out deployment or for defining a
single point of access through a shared URL. You must implement a separate software or hardware NLB cluster
solution to support a Reporting Services scale-out deployment.
You can install Reporting Services on nodes that are already part of an NLB cluster, or you can configure a scale-
out deployment first and then install cluster software.

Steps for Report Server Deployment on an NLB Cluster


Use the following guidelines to install and configure your deployment:

ST EP DESC RIP T IO N M O RE IN F O RM AT IO N

1 Before you install Reporting Services Configure a Native Mode Report


on server nodes in an NLB cluster, Server Scale-Out Deployment
check the requirements for scale-out
deployment.

2 Configure the NLB cluster and verify it For more information, see the
is working correctly. Windows Server product
documentation for the version of the
Be sure to map a host header name to Windows operating system that you
the virtual server IP of the NLB cluster. run.
The host header name is used in the
report server URL, and is easier to
remember and type than an IP
address.
ST EP DESC RIP T IO N M O RE IN F O RM AT IO N

3 Add the NetBIOS and Fully Qualified This step is required if your server
Domain Name (FQDN) for the host environment involves NTLM
header to the list of authentication on the local computer,
BackConnectionHostNames stored creating a loop back connection.
in the Windows Registry.
If this is the case, you will experience
For example, if the host header name the requests between Report Manager
<MyServer> is a virtual name for the and Report Server to fail with 401
Windows computer name of "contoso", (Unauthorized).
you can probably reference the FQDN
form as "contoso.domain.com". You will
need to add both the hostheader
name (MyServer ) and FQDN name
(contoso.domain.com) to the list in
BackConnectionHostNames .

Then reboot the computer to ensure


the changes take effect.

4 Install Reporting Services in files-only Configure a Native Mode Report


mode on nodes that are already part Server Scale-Out Deployment (Report
of an NLB cluster, and configure the Server Configuration Manager)
report server instances for scale-out
deployment.

The scale-out that you configure might


not respond to requests that are
directed to the virtual server IP.
Configuring the scale-out to use the
virtual server IP occurs at a later step,
after you configure view state
validation.

5 Configure view state validation. How to Configure View State


Validation in this topic.
For best results, perform this step after
you configure the scale-out
deployment, and before you configure
the report server instances to use the
virtual server IP. By configuring view
state validation first, you can avoid
exceptions about failed state validation
when users attempt to access
interactive reports.

6 Configure Hostname and UrlRoot to How to Configure Hostname and


use the virtual server IP of the NLB UrlRoot in this topic.
cluster.

7 Verify the servers are accessible Verify Report Server Access in this
through the host name you specified. topic.

How to Configure View State Validation


To run a scale-out deployment on an NLB cluster, you must configure view state validation so that users can
view interactive HTML reports. You must do this for the Report Server Web Service.
To run a scale-out deployment on an NLB cluster, you must configure view state validation so that users can
view interactive HTML reports.
View state validation is controlled by the ASP.NET. By default, view state validation is enabled and uses the
identity of the Web service to perform the validation. However, in an NLB cluster scenario, there are multiple
service instances and web service identities that run on different computers. Because the service identity varies
for each node, you cannot rely on a single process identity to perform the validation.
To work around this issue, you can generate an arbitrary validation key to support view state validation, and
then manually configure each report server node to use the same key. You can use any randomly generated
hexadecimal sequence. The validation algorithm (such as SHA1) determines how long the hexadecimal sequence
must be.
APPLIES TO: ✔
️ SQL Server Reporting Services (2016)
1. Generate a validation key and decryption key by using the autogenerate functionality provided by the
.NET Framework. In the end, you must have a single < machineKey > entry that you can paste into the
Web.config file for each Report Server instance in the scale-out deployment.
The following example provides an illustration of the value you must obtain. Do not copy the example
into your configuration files; the key values are not valid.

<machineKey validationKey="123455555" decryptionKey="678999999" validation="SHA1" decryption="AES"/>

2. Open the Web.config file for Reportserver, and in the < system.web > section paste the < machineKey >
element that you generated. By default, the Web.config file is located in \Program Files\Microsoft SQL
Server\MSRS13.MSSQLSERVER\Reporting Services\Reportserver\Web.config.
3. Save the file.
4. Repeat the previous step for each report server in the scale-out deployment.
5. Verify that all Web.Config files for all report servers in the scale-out deployment contain identical <
machineKey > elements in the < system.web > section.

APPLIES TO: ✔
️ SQL Server Reporting Services (2017 and later) ✔
️ Power BI Report Server
1. Generate a validation key and decryption key by using the autogenerate functionality provided by the
.NET Framework. In the end, you must have a single <MachineKey > entry that you can paste into the
RSReportServer.config file for each report server instance in the scale-out deployment.
The following example provides an illustration of the value you must obtain. Do not copy the example
into your configuration files; the key values are not valid. Report server requires the correct casing.

<MachineKey ValidationKey="123455555" DecryptionKey="678999999" Validation="SHA1" Decryption="AES"/>

2. Open the RSReportServer.config file for Reportserver, and in the < Configuration > section paste the
<MachineKey > element that you generated. By default, the RSReportServer.config file is located in
\Program Files\Microsoft SQL Server Reporting Services\SSRS\ReportServer\RSReportServer.config for
Reporting Services and \Program Files\Microsoft Power BI Report
Server\PBIRS\ReportServer\RSReportServer.config for Power BI Report Server.
3. Save the file.
4. Repeat the previous step for each report server in the scale-out deployment.
5. Verify that all RSReportServer.config files for all report servers in the scale-out deployment contain
identical <MachineKey > elements in the < Configuration > section.

How to Configure Hostname and UrlRoot


To configure a report server scale-out deployment on an NLB cluster, you must define a single virtual server
name that provides a single point of access to the server cluster. Then register this virtual server name with the
Domain Name Server (DNS) in your environment.
After you define the virtual server name, you can configure the Hostname and UrlRoot properties in the
RSReportServer.config file to include the virtual server name in the report server URL.
Configure the Hostname property when you are using wildcard URL reservations in your reporting
environment. When you specify the Hostname property to be the virtual server name of the NLB server,
network traffic for the reporting environment is directed to the NLB server. The NLB then distributes requests
among the report server nodes.
Additionally, configure the UrlRoot property so that report links work in reports that have been exported to
static reports, such as in an Excel or PDF format, or in reports that are generated by subscriptions, such as e-mail
subscriptions.
If you integrate Reporting Services with Windows SharePoint Services 3.0 or Office SharePoint Server 2007, or
you host your reports in a custom Web application, you might need to configure only the UrlRoot property. In
this case, configure the UrlRoot property to be the URL of the SharePoint site or Web application. This will
direct network traffic for the reporting environment to the application that handles the reports rather than to
the report server or NLB cluster.
Do not modify Repor tSer verUrl . If you modify this URL, you will introduce an extra roundtrip through the
virtual server each time an internal request is handled. For more information, see URLs in Configuration Files
(Report Server Configuration Manager). For more information about editing the configuration file, see Modify a
Reporting Services Configuration File (RSreportserver.config).
1. Open RSReportServer.config in a text editor.
2. Find the <Ser vice> section, and add the following information to the configuration file, replacing the
Hostname value with the virtual server name for your NLB server:

<Hostname>virtual_server</Hostname>

3. Find UrlRoot . The element is unspecified in the configuration file, but the default value used is a URL in
this format: https:// or https://<computername>/<reportserver> , where <reportserver> is the virtual
directory name of the Report Server Web service.
4. Type a value for UrlRoot that includes the virtual name of the cluster in this format: https:// or
https://<virtual_server>/<reportserver> .

5. Save the file.


6. Repeat these steps in each RSReportServer.config file for each report server in the scale-out deployment.

Verify Report Server Access


Verify that you can access the scale-out deployment through the virtual server name (for example,
https://MyVirtualServerName/reportserver and https://MyVirtualServerName/reports ).

You can check which node actually processes reports by looking at the report server log files or by checking the
RS execution log (the execution log table contains a column called InstanceName that shows which instance
processed a particular request). For more information, see Reporting Services Log Files and Sources .
If you cannot connect to the report server, check the NLB to ensure that requests are sent to the report server
and view the report server HTTP log to ensure that the server is receiving the requests.
Troubleshooting Failed Requests
If requests do not reach the report server instances, check the RSReportServer.config file to verify that the
virtual server name is specified as the host name for the report server URLs:
1. Open the RSReportServer.config file in a text editor.
2. Find <Hostname >, <Repor tSer verUrl >, and <UrlRoot >, and check the host name for each setting. If
the value is not the host name you expect, replace it with the correct host name.
If you start the Reporting Services Configuration tool after making these changes, the tool might change the
<Repor tSer verUrl > settings to the default value. Always keep a backup copy of the configuration files in case
you need to replace them with the version that contains the settings you want to use.

See Also
Configure a URL (Report Server Configuration Manager)
Configure a Native Mode Report Server Scale-Out Deployment (Report Server Configuration Manager)
Report Server Configuration Manager (Native Mode)
Manage a Reporting Services Native Mode Report Server
Enable Remote Errors (Reporting Services)
11/2/2020 • 2 minutes to read • Edit Online

You can set server properties on a Reporting Services report server to return additional information about error
conditions that occur on remote servers. If an error message contains the text "For more information about this
error, navigate to the report server on the local server machine, or enable remote errors", you can set the
EnableRemoteErrors property to access additional information that can help you troubleshoot the problem.
For more information, see Report Server System Properties.
In this topic:
Enable Remote Errors for SharePoint Mode
Enable remote errors through SQL Server Management Studio (Native Mode)
Enable remote errors through script (Native Mode)
Modifying the ConfigurationInfo table (Native Mode)

Enable Remote Errors for SharePoint Mode


There are two different procedures for enabling remote errors for Reporting Services SharePoint mode. The
procedure is different for the two different report server architectures. The newer SharePoint service based
architecture that was introduced in the SQL Server 2012 (11.x) release, utilizes a setting that can be configured
for each Reporting Services service application. The older architecture utilizes a single site level setting.
Enable Remote errors for a Reporting Services Service Application
1. For a SharePoint mode report server installed with SQL Server 2012 (11.x) or a newer version of
Reporting Services, enable the service application setting Enable remote errors . The setting can be
configured for each Reporting Services service application.
2. In SharePoint Central Administration, click Manage ser vice applications in the Application
Management group.
3. Find your Reporting Services service application and click the name of your service application.
4. Click System Settings .
5. Click Enable Remote Errors in the Security section.
6. Click OK .
Enable Remote Errors for a SharePoint Site
1. For a SharePoint mode report server installed with a version of Reporting Services prior to SQL Server
2012 (11.x), enable the site setting Enable remote errors in local mode .
2. In Site Actions click Site Settings for the site you want to modify.
3. Click Repor ting Ser vices Site Settings in the Repor ting Ser vices group.
4. Click Enable remote errors in local mode .
5. Click OK

Enable remote errors through SQL Server Management Studio


(Native Mode)
1. Start Management Studio and connect to a report server instance. For more information, see Connect to
a Report Server in Management Studio.
2. Right-click the report server node, and select Proper ties .
3. Click Advanced to open the properties page. For more information, see Server Properties (Advanced
Page) - Reporting Services.
4. In the Security section, in EnableRemoteErrors , select True .
5. Click OK .

Enable remote errors through script (Native Mode)


1. Create a text file and copy the following script into the file.

Public Sub Main()


Dim P As New [Property]()
P.Name = "EnableRemoteErrors"
P.Value = True
Dim Properties(0) As [Property]
Properties(0) = P
Try
rs.SetSystemProperties(Properties)
Console.WriteLine("Remote errors enabled.")
Catch SE As SoapException
Console.WriteLine(SE.Detail.OuterXml)
End Try
End Sub

2. Save the file as EnableRemoteErrors.rss.


3. Click Star t , point to Run , type cmd , and click OK to open a command prompt window.
4. Navigate to the directory that contains the .rss file you just created.
5. Type the following command line, replacing servername with the actual name of your server:

rs -i EnableRemoteErrors.rss -s https://servername/ReportServer

6. For more information, see RS.exe Utility (SSRS)

Modifying the ConfigurationInfo table (Native Mode)


NOTE
You can edit the ConfigurationInfo table in the report server database to set EnableRemoteErrors to True , but if the
report server is actively used, you should use SQL Server Management Studio or script to modify the settings. If you
modify the setting in the database, you need to restart the Reporting Services service before the changes take effect.
Register a Service Principal Name (SPN) for a
Report Server
3/5/2021 • 2 minutes to read • Edit Online

If you are deploying Reporting Services in a network that uses the Kerberos protocol for mutual authentication,
you must create a Service Principal Name (SPN) for the Report Server service if you configure it to run as a
domain user account.

About SPNs
An SPN is a unique identifier for a service on a network that uses Kerberos authentication. It consists of a service
class, a host name, and sometimes a port. HTTP SPNs do not require a port. On a network that uses Kerberos
authentication, an SPN for the server must be registered under either a built-in computer account (such as
NetworkService or LocalSystem) or user account. SPNs are registered for built-in accounts automatically.
However, when you run a service under a domain user account, you must manually register the SPN for the
account you want to use.
To create an SPN, you can use the SetSPN command line utility. For more information, see the following:
Setspn (https://docs.microsoft.com/previous-versions/windows/it-pro/windows-server-2012-R2-and-
2012/cc731241(v=ws.11)).
Service Principal Names (SPNs) SetSPN Syntax (Setspn.exe)
(https://social.technet.microsoft.com/wiki/contents/articles/717.service-principal-names-spns-setspn-
syntax-setspn-exe.aspx).
You must be a domain administrator to run the utility on the domain controller.

Syntax
When you manipulate SPNs with the setspn, the SPN must be entered in the correct format. The format of an
HTTP SPN is http/host . The command syntax for using SetSPN utility to create an SPN for the report server
resembles the following:

Setspn -s http/<computer-name>.<domain-name> <domain-user-account>

SetSPN is available with Windows Server. The -s argument adds a SPN after validating no duplicate exists.
NOTE:-s is available in Windows Server starting with Windows Server 2008.
HTTP is the service class. The Report Server Web service runs in HTTP.SYS. A by-product of creating an SPN for
HTTP is that all Web applications on the same computer that run in HTTP.SYS (including applications hosted in
IIS) will be granted tickets based on the domain user account. If those services run under a different account, the
authentication requests will fail. To avoid this problem, be sure to configure all HTTP applications to run under
the same account, or consider creating host headers for each application and then creating separate SPNs for
each host header. When you configure host headers, DNS changes are required regardless of the Reporting
Services configuration.
The values that you specify for <computername> and <domainname> identify the unique network address of
the computer that hosts the report server. This can be a local host name or a fully qualified domain name
(FQDN). If you only have one domain, you can omit <domainname> from your command line. <domain-user-
account> is the user account under which the Report Server service runs and for which the SPN must be
registered.

Register an SPN for Domain User Account


To register an SPN for a Report Server service running as a domain user
1. Install Reporting Services and configure the Report Server service to run as a domain user account. Note
that users will not be able to connect to the report server until you complete the following steps.
2. Log on to the domain controller as domain administrator.
3. Open a Command Prompt window.
4. Copy the following command, replacing placeholder values with actual values that are valid for your
network:

Setspn -s http/<computer-name>.<domain-name> <domain-user-account>

For example: Setspn -s http/MyReportServer.MyDomain.com MyDomainUser

5. Run the command.


6. Open the RsRepor tSer ver.config file and locate the <AuthenticationTypes> section.
7. Add <RSWindowsNegotiate /> as the first entry in this section to enable Kerberos.

See Also
Configure a Service Account (Report Server Configuration Manager)
Configure the Report Server Service Account (Report Server Configuration Manager)
Manage a Reporting Services Native Mode Report Server
Turn Reporting Services Features On or Off
11/2/2020 • 2 minutes to read • Edit Online

You can turn off report server features that you do not use as part of a lockdown strategy for reducing the
attack surface of a production report server. In most cases, you will want to run Reporting Services features
concurrently to use all of the functionality provided in Reporting Services. However, depending on your
deployment model, you can disable the features that you do not require. For example, you can enable only the
background processing if all report processing is configured as scheduled operations. Similarly, you can run just
the Report Server web service if you only want interactive, on-demand reporting.
The procedures in this article show you how to turn off native mode Reporting Services features. Features can
be configured in different ways, such as by editing the RsReportServer.config file directly or by using the
Surface Area Configuration for Repor ting Ser vices facet of Policy-Based Management in SQL Server
Management Studio. Use the links to locate the procedure or procedures that explain how to turn a feature on or
off:
Report server web service
Scheduled events and processing
Web portal
Windows integrated security for report data sources

Report server web service


To turn on or off the report server web service by editing configuration
1. Open the RsReportServer.config file in a text editor. For more information, see Modify a Reporting
Services Configuration File (RSreportserver.config).
2. To turn on the Report Server web service, set IsWebSer viceEnabled to true :

<IsWebServiceEnabled>true</IsWebServiceEnabled>

3. To turn off the Report Server web service, set IsWebSer viceEnabled to false :

<IsWebServiceEnabled>false</IsWebServiceEnabled>

4. Save your changes and then close the file.


To turn on or off the Report Server web service by using SQL Server Management Studio
1. Open SQL Server Management Studio and connect to the Reporting Services instance that you want to
configure.
2. In Object Explorer, right-click the Reporting Services node, point to Policies , and click Facets .
3. In the Facet list, select Surface Area Configuration for Repor ting Ser vices .
4. Under Facet Proper ties :
To turn on the Report Server Web service, set WebSer viceAndHTTPAccessEnabled to True .
To turn off the Report Server Web service, set WebSer viceAndHTTPAccessEnabled to False .
5. Click OK .

Scheduled Events and Delivery


To turn on or off scheduled events and delivery by editing configuration
1. Open the RsReportServer.config file in a text editor. For more information, see Modify a Reporting
Services Configuration File (RSreportserver.config).
2. To turn on scheduled report processing and delivery, set IsSchedulingSer vice , IsNotificationSer vice ,
and IsEventSer vice to true :

<IsSchedulingService>true</IsSchedulingService>
<IsNotificationService>true</IsNotificationService>
<IsEventService>true</IsEventService>

3. To turn off scheduled report processing and delivery, set IsSchedulingSer vice , IsNotificationSer vice ,
and IsEventSer vice to false :

<IsSchedulingService>false</IsSchedulingService>
<IsNotificationService>false</IsNotificationService>
<IsEventService>false</IsEventService>

4. Save your changes and then close the file.

NOTE
You cannot turn off background processing completely because it provides database maintenance functionality that is
required for server operations.

Web portal
As of SQL Server 2016 Reporting Services Cumulative Update 2, the web portal will always be enabled.

Windows Integrated Security


To turn on or off Windows integrated security by using SQL Server Management Studio
1. Open SQL Server Management Studio and connect to the Reporting Services instance that you want to
configure.
2. In Object Explorer, right-click the Reporting Services node, and click Proper ties .
3. In the Ser ver Proper ties dialog box, under Select a page , select Security .
To turn on Windows integrated security, select the Enable Windows integrated security for
repor t data sources option.
To turn off Windows integrated security, unselect the Enable Windows integrated security for
repor t data sources option.
4. Select OK .

See also
Report Server Configuration Manager (Native Mode)
More questions? Try the Reporting Services forum
Enable a report server for Power BI Mobile access
11/2/2020 • 2 minutes to read • Edit Online

You can use the Power BI Mobile app to consume Mobile Reports. There are a few things that you need to
configure to allow the Power BI Mobile app to connect to Reporting Services.
Mobile Reports require Reporting Services Native Mode
Enable basic authentication for Reporting Services (for CTP 3.2)
Recommended to enable HTTPS along with a valid certificate trust for the client device
Review firewall settings

Reporting Services Native Mode required


Mobile Reports are a feature of Native Mode. They are not available in SharePoint Integrated mode. The Power
BI Mobile app will only work with a Native Mode instance.

Enable basic authentication


The iOS Power BI Mobile app requires basic authentication in order to connect and consume Mobile Reports.
Reporting Services is not configured with basic authentication enabled by default. For information on how to
configure basic authentication, see Configure Basic Authentication on the Report Server.
You will also need to have Windows authentication enabled to allow the publisher app to publish Mobile Report.

Enable HTTPS
It is recommended that you enable HTTPS in Reporting Services if you enable basic authentication. If you enable
HTTPS, make sure that the certificates used can be trusted with the client devices running the iOS Power BI
Mobile app. This means that the certification chain needs to be valid and available to the client device.
If you need to use a self-signed certificate for development or evaluation purposes, you can export the
certificate from the report server and install it on the mobile device. Please refer to your device documentation
on how to install it on that device.
For more information on enabling TLS, see Configure TLS Connections on a Native Mode Report Server.
## Review firewall settings It is recommended that you review your firewall settings to ensure that all devices can
connect successfully to Reporting Services. For more information on how to configure the Windows Firewall, see
[Configure a Firewall for Report Server Access](../../reporting-services/report-server/configure-a-firewall-for-
report-server-access.md). ## See also [Configure Basic Authentication on the Report Server](../../reporting-
services/security/configure-windows-authentication-on-the-report-server.md) [Configure TLS Connections on a
Native Mode Report Server](../../reporting-services/security/configure-ssl-connections-on-a-native-mode-report-
server.md) [Configure a Firewall for Report Server Access](../../reporting-services/report-server/configure-a-
firewall-for-report-server-access.md)
Report Server Content Management (SSRS Native
Mode)
11/2/2020 • 13 minutes to read • Edit Online

In Reporting Services, content management refers to the management of report server items. All items can be
managed independently of each other through properties and security settings. Any item can be moved to a
different location in the report server folder namespace. To manage items effectively, you need to know which
tasks a content manager performs. Starting in SQL Server 2016 Reporting Services or later (SSRS) CTP 3.2, the
Reporting Services web portal is available. This article will look at the web portal and the new web portal
experience.

NOTE
Content management is different from report server administration. For more information about how to manage the
environment in which a report server runs, see Reporting Services Report Server (Native Mode).

Content management includes the following tasks:


Secure report server site and items by applying the role-based security provided with Reporting Services.
Create a report server folder hierarchy by adding, modifying, and deleting folders.
Set default values and properties that apply to items managed by the report server. For example, you can
set baseline maximum values that determine report history storage policies.
Create shared data source items that can be used in place of report-specific data source connections. A
publisher or content manager can select a data source that is different from the one originally defined for
a report; for example, to replace a reference to a test database with a reference to a production database.
Create shared schedules that can be used in place of report-specific and subscription-specific schedules,
making it easier to maintain schedule information over time.
Create data-driven subscriptions that generate recipient lists by retrieving data from a data store.
Balance report-processing demands that are placed on the server by scheduling report processing and
specifying which ones can be run on demand and which ones are loaded from cache.
Provide permission to perform management tasks by using predefined roles: System Administrator
and Content Manager . Effective management of report server content requires that you are assigned to
both roles.
Tools for managing report server content include Management Studio, and the web portal. Management Studio
allows you to set defaults and enable features. The web portal is used to grant user access to report server items
and operations, view and use reports and other content types, and view and use all shared items and report
distribution features. The web portal is a updated site that allows for much of the functionality of the deprecated
Report Manager. For more information, see Reporting Services Tools.

Report Server items


Report server items include reports, shared data sources, shared datasets, report parts, resources (items that are
stored on but not processed by a report server), and folders. Items can depend on other items, for example, a
report can depend on the shared data sources it references. If you move a dependent item, the report server
updates the reference information automatically.
You can move report server items to different folder locations in the report server folder hierarchy. When you
move an item, all properties (including security settings) move with the item to the new location. When you
move a folder, all the items in the folder move with it.

NOTE
For CTP 3.2, if you want to move the location of an item, you need to perform that action in the web portal.

In the web portal, the items that you can move are indicated in the folder hierarchy. The following image shows
the icon for each movable item.

Not all items that you work with can be moved. You cannot move items that are associated with a report, such
as subscriptions or report history. Those items move with their associated reports. Similarly, you cannot move
items, such as shared schedules, that exist outside of the folder hierarchy. You cannot move items if you lack
permission to do so. Permission to move an item is conveyed when the following tasks are selected in your role
assignment for the item in question: "Manage reports," "Manage folders," and "Manage data sources."

Folders
A folder hierarchy is used for addressing items that are stored and managed by a report server. By default, the
folder structure consists of a root node named Home, and reserved folders that support the optional My
Reports feature. Additional folders are user-defined. Report server folders are useful if you want to grant the
same level of access to multiple items. Permissions that you set on the folder can be inherited by items in the
folder and to additional folders that branch from that folder. For example, you can create a set of folders under
the Home folder, assign team permissions to each folder, and then let team members customize folders under
the team folder as needed.
If you are using a browser to connect directly to a report server, the root node of the folder structure is the name
of the report server virtual directory. From the root node, you can create, modify, and delete folders as
necessary to organize report server content. You can add content to a folder, move items between folders,
modify folder names or locations, and delete folders that are no longer required.
Folders are virtual containers for published items that you access through the web portal or a browser
connection to the report server. Neither the folders nor their contents actually exist in a file system. Instead, they
are stored in the report server database and accessed through the Report Server Web service endpoint. The
report server folder namespace is a hierarchy that includes a root node, predefined folders, and user-defined
folders. The namespace uniquely identifies items that are stored on a report server. It provides an addressing
scheme for specifying items in a URL. When you select or locate a report, the folder path becomes part of the
URL for that report.
How you work with folders depends on tasks that are part of your role assignment. If you are using default
security, Content Managers and Publishers can create and manage folders. If you use custom role assignments,
the role assignment must include tasks that support folder management. For more information about role
assignments and tasks, see Granting Permissions on a Native Mode Report Server and Tasks and Permissions.
Report server folders can contain the following items:
Reports
Shared data sources
Shared datasets
Report Parts
KPIs
Mobile Reports
Resources (items that are stored on but not processed by a report server)
Other folders
Reserved folders
Predefined folders are reserved by Reporting Services; they cannot be moved, renamed, or deleted. User-
defined folders include any folders created by a user or report server administrator with permission to add
items to a folder.
The following table describes predefined folders that anchor the folder hierarchy and provide a framework for
several features.

F O L DER P URP O SE

Home The root node of the folder hierarchy.

Users This folder appears when you enable the My Reports feature.
It contains subfolders for all users who use the My Reports
feature, and it is accessible only to report server
administrators. Each subfolder name matches the user's
name.

My Reports Provides a personal workspace for each user.

Creating folders
You can create a folder in any available folder in the hierarchy.
If you are creating folders for the purpose of restricting access to specific reports and models, you should
specify role assignments that allow users to browse, but not view the contents of, parent folders that are in the
folder path.
Modifying folder properties
After a folder is created, you can modify properties to rename the folder, add or modify the description, or move
the folder to another location. These properties are available on the General properties page for the folder. For
more information about setting properties that grant access to a folder, see Secure Folders.
Deleting folders and folder contents
When you delete a folder, you delete all the items that it contains. Before you delete a folder, you should inspect
its contents to determine whether it contains items that may be referenced or used by other items in another
part of the folder hierarchy. Referenced items include report definitions that support linked reports, shared data
sources, and resources.
If you delete a report that has one or more linked reports that reference it, the linked reports will become invalid
after you delete the report. You cannot determine in advance which linked reports are affected, because a report
does not retain information about linked reports that are based on it. You can, however, review the properties of
a linked report to find out which report it is based on. In contrast, shared data source items list all reports that
currently use the item so that you can easily determine whether the connection information is in use. For more
information, see Create, Modify, and Delete Shared Data Sources (SSRS). Finally, resources that are used by
reports do not identify those reports.
Before you delete a folder, consider whether you need to retain the report history of any report you are about to
delete or a report-specific construct (such as a data-driven subscription) that is part of a report. If you may need
any of this information, move the item out of the folder before you delete the folder.
The visibility of an item in a folder depends on both role assignments (that is, permission to view an item) and
viewing options in effect for a folder. In the web portal, you can set the Contents page to list view or details view.
In some cases, a report or item may be hidden in list view. Be sure to view a folder in details view before
deleting its contents.

Resources
A resource is a managed item that is stored on a report server, but is not processed by a report server. Typically,
a resource provides external content to report users. Examples include an image in a .jpg file, an ESRI shapefile
that contains spatial data, or an HTML file that describes the business rules used in a report. The JPG, SHP, or
HTML file is stored on the report server, but the report server passes the file directly to the browser rather than
processing it first. For more information, see Images (Report Builder and SSRS) and the section "Adding Data to
a Map" in Maps (Report Builder and SSRS).
Adding and viewing a resource
To add a resource to a report server, you upload or publish a file:

O P ERAT IO N F IL E T Y P E

Upload To upload a resource, you must use the web portal if the
report server runs in native mode or an application page on
a SharePoint site if the server runs in SharePoint integrated
mode. For more information, see Upload a File or Report in
the Report Server or Upload Documents to a SharePoint
Library (Reporting Services in SharePoint Mode).

Publish All files in a project that are not reports, report parts, data
sources, or datasets, are uploaded as resources. To publish a
resource, add an existing item to a project in Report
Designer and then publish the project to a report server.

All resources originate as files on a file system, which are subsequently uploaded to a report server. Except for
the 4 megabyte default file size limitations imposed by ASP.NET, there are no restrictions on the kinds of files
you can upload. However, when published to a report server as a resource, file types that have equivalent MIME
types are more optimal than others. For example, resources that are based on HTML and JPG files will open in a
browser window when the user clicks the resource, rendering the HTML as a Web page and the JPG as an image
that the user can see. In contrast, resources that do not have equivalent MIME types, such as desktop application
files, for example, may not be rendered in the browser window.
Whether a resource can be viewed by report users depends on the viewing capabilities of the browser. Because
resources are not processed by the report server, the browser must provide the viewing capability to render a
specific MIME type. If the browser cannot render the content, users who view the resource see only the general
properties of the resource.
Securing and managing a resource
Resources exist alongside reports, shared data sources, shared schedules, and folders as named items in the
report server folder hierarchy. You can search for, view, secure, and set properties on resources just as you
would any item stored on a report server. To view or manage a resource, you must have the View resources or
Manage resources tasks in your role assignment.
Referencing an image resource from a report
Resources can contain an image that you reference in a report. If report requirements include the use of external
images, consider the following advantages to storing the image as a resource:
Centralized storage in the report server database. If you move the report server database and its
contents to another computer, the external image stays with the report. You do not have to keep track of
image files that are stored on disk on different computers.
Secured through role assignments rather than file system security. The same permissions used to view a
report can be applied to the resource. In contrast, if you store the image on disk, you must ensure that
either the Anonymous user account or the unattended execution account have permission to access the
file.
To use an image resource in a report, add the image file to the project and publish it along with the report. Once
the image is published, you can update the image reference in the report so that it points to the resource on the
report server, and then republish just the report to save your changes. You can now subsequently update the
image independently of the report by republishing the resource. The report uses the most current version of the
image available on the report server.
For more information, see Update a Resource (web portal).

My Reports
The My Reports folder is a personal workspace for each user who logs in to a report server with a valid domain
account. This special-purpose folder provides storage for work-in-progress reports, reports that are not
intended for wide distribution, or reports that have been modified to fit a need. You cannot restrict the number
or size of items that are stored in a My Reports folder, or configure a My Reports folder to be shared among
users.
Technically, My Reports maps the name of a virtual folder that each user sees (My Reports) to a master Users
Folders folder and unique subfolder based on user name. When a user accesses his or her My Reports folder, the
user is actually redirected to his or her subfolder under Users Folders. Each subfolder provides storage for the
reports and items a user adds to his or her My Reports folder. In the web portal, you will not see My Reports at
the root level. You will need to drill into the Users folder.
The Users Folders folder is created when the report server is installed. Subsequent user-based subfolders are
created when a user opens My Reports for the first time (for example, by clicking My Reports in the web portal).
Each folder name is in the following format:

/Users Folders/<username>/My Reports


Only users with valid system accounts are allocated folders. If a user name contains special characters, it is
created with escape character equivalents. Escape character equivalents are listed in the following table.

C H A RA C T ER ESC A P E VA L UE EXA M P L E

(space) [] Firstname Lastname becomes


Firstname[ ]Lastname

\ (backslash) Replaced with a single space character DomainName\Username becomes


DomainName Username

@ (at symbol) [at] username@hotmail.com becomes


username[at]hotmail.com

& (ampersand) [amp] username@company&company.com


becomes
username[at]company[amp]company.c
om

$ (dollar sign) [dollar] User $Name becomes User[ ]


[dollar]Name

The My Reports feature is optional. When you install a report server, My Reports is disabled by default. For more
information about enabling this feature, see Enable and Disable My Reports. For more information, see Secure
My Reports.

Tasks
Upload Files to a Folder
Create, Delete, or Modify a Folder (web portal)
Update a Resource (web portal)
Upload Files to a Folder

See also
Reporting Services Tools
Roles and Permissions (Reporting Services)
Reporting Services Reports (SSRS)
Create, Delete, or Modify a Folder - Reporting
Services
3/5/2021 • 3 minutes to read • Edit Online

You can create folders to organize and manage the items you publish to a report server. Creating folders can
help users find reports of interest to them. For content managers, folders provide a framework for applying
permissions. You can create role assignments on specific folders to restrict access to reports that are in
development or that should not be widely distributed.

To create a folder
1. Start Report Manager (SSRS Native Mode).
2. In Report Manager, select the Home folder and click New Folder . Or, to create a folder under an existing
folder, navigate to that folder in the Contents page and click the folder to open it. Then click New
Folder .
The New Folder page opens.
3. Type a folder name. A folder name can include spaces, but cannot include reserved characters that are
used for URL encoding: ; ? : @ & = + , $ / * < > |. You cannot type a series of folder names to create
several folders at once.
4. Optionally type a description.
5. Select Hide in list view if you do not want to display the folder in the default view of the Contents
page. The folder will be visible to users only when they click Show Details on the Contents page.
6. Click OK .

To delete a folder
1. In Report Manager, navigate to the Contents page, and locate the item that you want to modify.
2. Hover over the item, and click the drop-down arrow.
3. In the drop-down menu, click Delete .
4. Click OK .

To modify or delete a folder


1. In Report Manager, navigate to the Contents page, and locate the item that you want to modify.
2. Hover over the item, and click the drop-down arrow.
3. In the drop-down menu, click Manage . The General Properties page opens.
4. To change the folder location, click Move . Type the location of the destination folder, or choose the
destination folder from the tree, and then click OK .
5. Or, modify folder properties in the following ways:
To modify display text about the folder, type a name or description.
To display the folder in the default view on the Contents page, clear Hide in list view .
6. Or, to remove the folder and its contents, click Delete .
7. Click Apply to save changes.

To create a folder
1. Open the web portal of a report server (SSRS Native Mode).
2. Navigate to folder or sub-folder where you want to locate the new folder. Select the Home folder by
selecting the Browse button on the toolbar at the top left of the page to create it at the top of the folder
hierarchy.
3. Select the New button on the top right of the report server toolbar, and then select Folder from the
drop-down menu.
4. In the Create a new folder in (current folder name) dialog box, enter the name of the new folder to
be created. A folder name can include spaces, but can't include reserved characters that are used for URL
encoding: ; ? : @ & = + , $ / * < > |. You also can't type a series of folder names to create several folders at
once.
5. Select Create to complete the action.

To delete a folder
1. In the web portal, navigate the folder hierarchy and locate the folder that you want to delete.
2. Right-click-the folder, and select Delete from the drop-down menu.
3. Select the Delete button in the Delete dialog box to confirm the deletion.

To modify a folder's properties


1. In the web portal, navigate the folder hierarchy and locate the folder that you want to delete.
2. Right-click-the folder, and select Delete from the drop-down menu.
3. Select the Proper ties tab. The Proper ties page is displayed by default.
4. You can change the name of the folder in the Name* textbox.
5. You can add or change the description of the folder in the Description* textbox.
6. You can hide or un-hide the folder by checking or un-checking the Hide this item checkbox respectively.
7. Select Apply to save the properties changes.
8. Optionally, you can move or delete the folder by selecting the Move or Delete buttons at the top of the
Proper ties page. See the Move or Delete an Item (web portal) article for more information.

See also
Create, Delete, or Modify a Folder (web portal)
Report Server Content Management (SSRS Native Mode)
Finding, Viewing, and Managing Reports (Report Builder and SSRS )
Move or Delete an Item (Report Manager)
11/2/2020 • 2 minutes to read • Edit Online

Reports and report-related items that you publish to a report server are stored in folders. You can move items to
a different folder and references to those items are maintained automatically by the report server. Before you
delete an item, consider whether other items depend on it.

Move an Item
You can move report server items to different folder locations in the report server folder hierarchy. When you
move an item, all properties (including security settings) move with the item to the new location. When you
move a folder, all the items in the folder move with it.
In Report Manager, the items that you can move are indicated in the folder hierarchy. The following table shows
the icon for each movable item.

IC O N M O VEA B L E IT EM

Report

Linked report

Folder

Generic resource

Shared data source

Shared dataset

Not all items that you work with can be moved. You cannot move items that are associated with a report, such
as subscriptions or report history. Those items move with their associated reports. Similarly, you cannot move
items, such as shared schedules, that exist outside of the folder hierarchy. You cannot move items if you lack
permission to do so. Permission to move an item is conveyed when the following tasks are selected in your role
assignment for the item in question: "Manage reports," "Manage models", "Manage folders," and "Manage data
sources."
To move an item from within the Contents page
1. Start Report Manager (SSRS Native Mode).
2. In Report Manager, navigate to the Contents page, and locate the item that you want to move.
3. Hover over the item, and click the drop-down arrow.
4. In the drop-down menu, click Move .
5. Click OK .
6. For Location , specify the folder you want to move the item to. You can type the fully qualified folder
name or use the tree control to navigate to the folder.
7. Click OK .
Alternatively, you can navigate to the object you want to move, click Proper ties , and then click Move at the top
of the page.

Delete an item
Before you delete an item, determine if it is used by other items. For example, if you delete a shared data source,
reports and models that use that data source will no longer run. If you delete a report, subscriptions and report
history associated with that report are also deleted. To find dependent items for an item, see Dependent Items
Page (Report Manager).
To delete a report or item
1. Start Report Manager (SSRS Native Mode).
2. In Report Manager, navigate to the Contents page, and locate the item that you want to delete.
3. Hover over the item, and click the drop-down arrow.
4. In the drop-down menu, click Delete .
5. Click OK .

See Also
Contents Page (Report Manager)
Finding, Viewing, and Managing Reports (Report Builder and SSRS )
Upload Files to a Folder
11/2/2020 • 2 minutes to read • Edit Online

You can upload files from the file system and store them as managed items in a report server database. What
happens when you upload a file depends on the file type.
Uploading an .rdl file is equivalent to publishing a report.
Uploading any other file adds it to the report server database as a single binary object. These files are
published to a report server as a resource. Resources can be any file type. If the file extension matches a
known MIME type, an icon for that MIME type is used to identify the resource type. Otherwise, a generic
file icon indicates a resource.

NOTE
You cannot upload a report data source (.rds) file to create a shared data source. An .rds file is used only in Report
Designer. It cannot provide the content for a shared data source item that you define and manage through the
web portal. As an alternative to uploading, you can write a script that creates a shared data source based on a .rds
file.

The maximum file size for uploaded items is 2 GB, and can be set using the MaxFileSizeMb property in
Management Studio.
Visually, files that you upload to a report server database are represented in the folder hierarchy with the
following icons.

When you upload a file, it is always placed in the folder that is currently selected. You can navigate to the folder
that you want to contain the item first, or you can upload a file and then move it to a final location later.
To upload a file, use the web portal. Whether you can upload files to a report server depends on tasks that are
part of your role assignment. If you are using default security, local administrators can add items to a report
server. If My Reports is enabled, any user who has a My Reports folder has permission to upload items to that
folder. If you use custom role assignments, the role assignment must include tasks that support folder
management.
TO DO T H IS IN C L UDE T H ESE TA SK S

Upload an .rdl file to a folder Manage reports

Upload any file as a binary object Manage resources

View the contents of a folder View resources, View reports

See also
The web portal of a report server (SSRS Native Mode)
Granting Permissions on a Native Mode Report Server
Tasks and Permissions
Upload a File or Report in the Report Server
Update a Resource (web portal)
11/2/2020 • 2 minutes to read • Edit Online

You can update a resource by replacing it with a newer version. Resources are items stored on a report server
that contain content from a file that you upload. You can replace an existing resource by importing new or
different file content into the existing resource. Updating a resource provides a way to update content while
preserving existing properties and security settings on the resource.

To update a resource
1. Start The web portal of a report server (SSRS Native Mode).
2. Navigate to or search for the resource you want to update.
3. Right-click the resource and select Manage from the drop-down menu.
4. Select the Proper ties page and then select Replace .
5. From the Open dialog box, navigate to the directory containing the file you want as the new resource.
6. Select the file that you want to use to replace the current resource. You can use an updated version of the
resource file, or specify a file with a different name or file type.
7. Select Open to upload the resource file, and save your changes to the report server.
If the resource you are updating contains an image that is used in a report, you need to refresh the report to see
the updated image.

See also
Report Server Content Management (SSRS Native Mode)
Upload Files to a Folder
Start and stop the report server service
4/5/2021 • 2 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server 2016 Reporting Services and later ✔
️ Power BI Report Server
A report server is implemented as a Windows service that contains the Report Server web service, the web
portal, and a background processing application. The service must be running if you want to use any report
server functionality. Stopping the service stops all report server operations.
While the service is stopped, requests for scheduled report and subscription processing that would have
occurred had the service been running are added to the queue. This is because jobs that are run by SQL Server
Agent create the events. If you want to avoid a backlog of operations while the service is off, consider stopping
SQL Server Agent as well.
You can use a variety of tools to start or stop the Report Server service, including the Reporting Services
Configuration tool, SQL Server Configuration Manager, and the Services tool provided in Microsoft Windows.

NOTE
SQL Server Configuration Manager is only an option for SQL Server Reporting Services 2016 and earlier. It does not
include Reporting Services 2017 and later or Power BI Report Server.

If you're doing more than starting or stopping the service, such as changing the service account, you must use
the Reporting Services Configuration tool. Using other tools to change the service account can break your
Reporting Services installation and encryption key. For more information, see Configure the Report Server
Service Account (Report Server Configuration Manager).
You can't pause and resume the service. There aren't start parameters. Although there are no explicit
dependencies, SQL Server Agent must be running if you support any subscriptions or scheduled report
operations on the report server.

Use the Reporting Services Configuration tool


1. Start Reporting Services Configuration tool and connect to the report server.
2. On the Report Server Status page, select Stop or Star t .

Use Administrative Tools


1. In Administrative Tools, open Ser vices .
2. Right-click SQL Ser ver Repor ting Ser vices (MSSQLSERVER) , SQL Ser ver Repor ting Ser vices , or
Power BI Repor t Ser ver .
3. Select Stop or Restar t .
For Reporting Services 2016 and earlier versions, if you are running multiple instances or if the report server is
running as a named instance, verify that the instance name in parentheses corresponds to the report server
instance you want to stop or restart.

See also
Report Server Configuration Manager (Native Mode)
Start, Stop, or Pause the SQL Server Agent Service
Application Domains for Report Server Applications
11/2/2020 • 6 minutes to read • Edit Online

In Reporting Services, the report server is implemented as a single service that contains the Report Server Web
service, Report Manager, and a background processing application. Each application runs in its own application
domain within the single report server process. For the most part, application domains are created, configured,
and managed internally. However, knowing how recycle operations occur for report server application domains
can be helpful if you are investigating performance or memory issues or troubleshooting service disruptions.

NOTE
If you configure Report Builder access on a report server that uses Basic authentication, Report Builder will run in its own
application domain. This application domain is different from other application domains that run in the server process. It is
managed by the Service Controller and is not subject memory management features that re-adjust memory allocation in
response to memory pressure on the to report server.

The following list describes the events that cause application domain recycle operations for Reporting Services
applications:
Scheduled recycle operations that occur at predefined intervals.
Configuration changes on the report server.
ASP.NET configuration changes.
Memory allocation failures.
The following table summarizes application domain recycling behavior in response to these events:

REC Y C L E O P ERAT IO N
EVEN T EVEN T DESC RIP T IO N A P P L IES TO C O N F IGURA B L E DESC RIP T IO N

Scheduled recycle By default, Report server Web Yes. RecycleTime ASP.NET manages the
operations that occur application domains service configuration setting recycle operation for
at predefined are recycled every 12 in the the Web service and
intervals hours. Report Manager RSReportServer.confi Report Manager.
g file determines the
Scheduled recycle Background recycle interval. For the background
operations are a processing processing
common practice for application MaxAppDomainUn application, the
ASP.NET applications loadTime sets the report server creates
that promote overall wait time during a new application
process health. which background domain for new jobs
processing is allowed that are initiated
to complete. from schedules. Jobs
already in progress
are allowed to
complete in the
current application
domain until the wait
time expires.
REC Y C L E O P ERAT IO N
EVEN T EVEN T DESC RIP T IO N A P P L IES TO C O N F IGURA B L E DESC RIP T IO N

Configuration Reporting Services Report server Web No. You cannot stop
changes on the will recycle service recycle operations
report server application domains from occurring.
in response to Report Manager However, recycle
changes in the operations that occur
RSReportServer.confi Background in response to
g file. processing configuration
application changes are handled
the same way as the
scheduled recycle
operations. New
application domains
are created for new
requests while
current requests and
jobs complete in the
current application
domain.

ASP.NET ASP.NET will recycle Report server Web No. ASP.NET manages the
configuration application domains service operation.
changes if there are changes
to the files that it Report Manager Recycle operations
monitors (for that are initiated by
example, ASP.NET do not affect
machine.config and the background
Web.config files, and processing
ASP.NET program application domain.
files).
REC Y C L E O P ERAT IO N
EVEN T EVEN T DESC RIP T IO N A P P L IES TO C O N F IGURA B L E DESC RIP T IO N

Memory pressure SQL Server CLR will Report server Web No. Under high memory
and memory immediately recycle service pressure, the report
allocation failures application domains server will not accept
in the event of a Report Manager new requests in the
memory allocation current application
failure or when the Background domain. During the
server is under high processing period in which the
memory pressure application server denies new
conditions. requests, HTTP 503
errors occur. New
application domains
will not be created
until the old
application domain is
unloaded. This means
that if you make a
configuration file
change while the
server is under high
memory pressure,
requests and jobs
that are in progress
might not start or
complete.

In the event of
memory allocation
failure, all application
domains are
immediately
restarted. Jobs and
requests that were in
progress are
dropped. You must
restart those jobs
and requests
manually.

Planned and Unplanned Recycle Operations


Recycle operations are either planned or unplanned depending on the conditions that bring about the operation:
Planned recycle operations occur at regular intervals that are defined in the RSReportServer.config file.
The default is every 12 hours. This is a common practice for ASP.NET applications that promote overall
process health. For planned recycle operations, the report server creates additional application domains
for new requests. Requests already in progress are allowed to complete in the current application domain
until the wait time expires. Configuration settings that govern planned recycle operations are set for the
server as a whole. You cannot configure a different recycle schedule or memory threshold for each
application.
Unplanned recycle operations occur at arbitrary times in response to configuration changes, memory
pressure, and memory allocation failures:
For configuration changes, the report server will try to use a soft recycle that redirects new
requests to a new instance of the application domain. If the soft recycle fails, the server initiates a
hard application domain recycle that cancels all in-progress requests, shuts down the current
application domains, and restarts the application domains.
Memory allocation failures indicate that system resources are insufficient for the amount of report
processing performed by the server. A hard recycle operation for all application domains occurs in
response to a memory allocation failure. All request queues are cleared. Canceled requests are not
restarted. Users who were interactively viewing a report must refresh or reopen the report.
Scheduled processing will occur at the next scheduled time. If the delay is unacceptable, you can
refresh a report snapshot manually or modify a subscription schedule or report snapshot schedule
so that it runs immediately.
The application domains for the Report Server Web service, Report Manager, and the background processing
application might be recycled together or individually, depending on the circumstances that cause the recycling
to occur:
Recycle operations initiated by ASP.NET affect only the Reporting Services ASP.NET applications: Report
Server Web service and Report Manager. ASP.NET will recycle application domains based if there are
changes to the files that it monitors. Recycle operations that are initiated by ASP.NET are typically
independent of recycle operations for the background processing application.
Recycle operations initiated by the report server typically affect Report Server Web service, Report
Manager, and the background processing application. Recycle operations occur in response to changes to
the configuration settings and service restarts.

RSReportServer Configuration Settings for Application Domains


Configuration settings are specified in the in the RSReportServer.config file. The following example shows the
default configuration settings for planned application domain recycling behavior.
<RecycleTime>720</RecycleTime>

<MaxAppDomainUnloadTime>30</MaxAppDomainUnloadTime>

The following table describes these elements.

EL EM EN T A P P L IES TO DEF IN IT IO N

RecycleTime All three Reporting Services application Specifies how often the application
domains domains are recycled. The default
recycle schedule conforms to the 12-
hour pattern typically followed for
ASP.NET application domain recycling.
At the scheduled time, all new requests
are forwarded to a new instance of the
application domain. Requests that are
currently in progress in the original
instance are allowed to complete. Once
all processes are complete, the original
instance is deleted and the new
instance becomes the sole active
application domain instance.

The default value is 720 minutes.


EL EM EN T A P P L IES TO DEF IN IT IO N

MaxAppDomainUnloadTime Background processing application By default, a report server allocates a


domain only wait time of 30 minutes, during which
an application domain is allowed to
shut down during a recycle operation.
If the jobs that are currently in process
cannot be completed during the
allotted time (or if a job is taking
longer than the wait time allows), the
application domain instance is
restarted immediately. All incomplete
jobs are terminated.

For more information about how to


view status or cancel jobs that running
on the report server, see Cancel
Report Server Jobs (Management
Studio).

NOTE
Although the Report Server Web service and Report Manager are ASP.NET applications, neither application responds to
scheduled application domain recycling that might be specified in machine.config for ASP.NET applications hosted in IIS.

See Also
RsReportServer.config Configuration File
Modify a Reporting Services Configuration File (RSreportserver.config)
Configure Available Memory for Report Server Applications
Enable and Disable Client-Side Printing for
Reporting Services
11/2/2020 • 3 minutes to read • Edit Online

The print button on the report viewer toolbar uses the Portable Document Format (PDF) format for client-side
printing of Reporting Services reports viewed in a browser. The new remote printing experience uses the PDF
rendering extension that is included with Reporting Services, to render the report in PDF format. You can
download a .PDF form of the report or if you have an application installed for viewing .PDF files, the print button
displays a print dialog box for page common configuration items such as page size an orientation and a preview
of the .PDF file. Although client-side printing is enabled by default, you can disable the feature to prevent it from
being used.
Previous versions of Reporting Services used an ActiveX control that required downloading to the client
computer from the report server. If you upgrade your report server to SQL Server 2016 or later, the print
control is not removed from the report server or client computers.

The Print Experience


When you click the print button on the report viewer toolbar, the experience varies depending on what .PDF
viewing applications are installed on the client computer and what browser you are using. You can download the
PDF file or configure print options from a dialog, or both, depending on the client computer.

IN T ERA C T IO N USER IN T ERFA C E

The first dialog is the same for all browsers and allows you
change basic layout properties such as orientation. When
you click Print , the experience will be slightly different
depending on the browser you are using.
IN T ERA C T IO N USER IN T ERFA C E

In Chrome, a detailed browser print dialog opens. You can


change the print configuration, print, and open the
operating systems print dialog.

If you have a PDF reader application installed, the print


button will open a preview windows of the PDF file and you
can save or print.

If you do not have a PDF reader application installed, there


are two user experiences:

The report will automatically render and use your browsers


download process to download the PDF file. Note: The more
complicated the report is, the longer the delay between the
time you click Print and when you see your browsers
download notification. You can also force the download
again by clicking Click here to view the PDF of your
repor t. .

Force the PDF download by clicking Click here to view


the PDF of your repor t. .

Troubleshoot Client-Side Printing


If the print button the report viewer toolbar is disabled, verify the following:
Client-side printing is disabled for the report server in Management Studio. See the section Enable and
Disable Client-Side Printing in this topic.
The SQL Server 2016 Reporting Services or later (SSRS) PDF rendering extension is disabled. Review the
<Extension Name="PDF" section of the rsrepor tser ver.config file.

You are viewing the reporting in comparability mode, which uses the old SQL Server 2016 Reporting
Services or later (SSRS) HTML4 rendering engine. The PDF printing experience requires the HTML 5
rendering engine. Click the Tr y Preview button on the toolbar.

Enable and Disable Client-Side Printing


Report server administrators have the option of disabling the remote print feature by setting the report server
system property EnableClientPrinting to false . This will disable client-side printing for all reports managed
by that server. By default, EnableClientPrinting is set to true . You can disable client-side printing in the
following ways:
For a Native mode repor t ser ver :
1. Start Management Studio with administrative privileges.
2. Connect to a report server instance in Management Studio.
3. Right-click the report server node, and then click Proper ties . If the Proper ties option is disabled,
verify you started Management Studio with administrative privileges.
4. Click Advanced .
5. Select EnableClientPrinting .
6. Set to True or False and then Click OK .

For a SharePoint mode repor t ser ver :


1. In SharePoint Central Administration, click Application Management .
2. Click Manage ser vice applications .
3. Click the name of your Reporting Services service application, and then click Manage in the
SharePoint ribbon.
4. Click System Settings .
5. Select Enable Client Printing . The Enable Client Printing option is near the bottom of the
page.
6. Click OK .
Write script or code to set the report server system property EnableClientPrinting to false.
The following sample script illustrates one approach for disabling client-side printing. Compile and then run the
following Microsoft Visual Basic code to set the EnableClientPrinting property to False . After you run the
code, restart IIS.
Sample Script

Imports System
Imports System.Web.Services.Protocols
Class Sample
Public Shared Sub Main()
Dim rs As New ReportingService()
rs.Credentials = System.Net.CredentialCache.DefaultCredentials
Dim props(0) As [Property]
Dim setProp As New [Property]
setProp.Name = "EnableClientPrinting"
setProp.Value = "False"
props(0) = setProp
Try
rs.SetSystemProperties(props)
Catch ex As System.Web.Services.Protocols.SoapException
Console.Write(ex.Detail.InnerXml)
Catch e as Exception
Console.Write(e.Message)
End Try
End Sub 'Main
End Class 'Sample

More questions? Try asking the Reporting Services forum


Enable and Disable My Reports
11/2/2020 • 3 minutes to read • Edit Online

The My Reports feature allocates personal storage in the report server database so that users can save reports
that they own in a private folder. As a report server administrator, you can enable or disable this feature or
change how the feature works by modifying the security settings that control what users can do with this
workspace.
The My Reports feature is disabled by default. You can either enable or disable the feature for all users, but you
cannot enable it for a subset of users. Most users and organizations find this feature valuable; study the
advantages and disadvantages presented later in this topic to determine whether it is a good fit for your
organization.

How to Enable and Disable My Reports


To enable My Reports by using SQL Server Management Studio, connect to the report server instance and open
the Ser ver Proper ties page. Then on the General tab, select the Enable a My Repor ts folder for each
user option.
The role definition used for My Reports determines what actions are supported in the My Reports workspace.
For example, if the My Reports role excludes "Create linked reports," users cannot create linked reports in the
My Reports folders. For more information, see Secure My Reports.
To deactivate My Reports, clear Enable a My Repor ts folder for each user . Deactivating My Reports
removes for users all visible indications of the My Reports folder. The folders that provide actual storage (that is,
the subfolders in Users Folders) must be deleted manually once the feature is disabled.
When My Reports Is Activated
Once the feature is activated, users see a My Reports folder located under the root folder, Home. In addition to a
My Reports folder, report server administrators also see a Users Folders folder that contains the subfolder for
each user.
While the feature is activated, Users Folders and its subfolders cannot be deleted. Furthermore, the name "My
Reports" becomes a reserved name for folders created under the root node (Home).
If you activate My Reports after it has been deactivated, the report server creates a new Users Folders folder if
one does not already exist. If Users Folders exists, the report server adds new subfolders as users log on to their
My Reports folders.
When My Reports Is Deactivated
Once the feature is deactivated, the name "My Reports" is no longer reserved; users can create a personal folder
named My Reports under the Home folder. In addition, redirection from My Reports to user-specific My Reports
subfolders is no longer performed. Lastly, any report links that include a user-specific My Reports folder in the
URL address will no longer work.

Choosing to Use My Reports


Deciding whether to use My Reports depends on whether you want to dedicate server resources to support a
user workspace. My Reports is a powerful feature that allows users to have control over information resources
that help them do their jobs. It also provides a way for users to work with reports that are not intended for
general use. One of the most compelling reasons to use My Reports is that it provides secure, manageable
support for the segment of users who need to author and review reports. Without this feature, you may find
yourself creating folders and security policies for various users on an ad hoc basis. As users and user needs
change, this approach results in ever-increasing numbers of folders and policies that are difficult to maintain
over time.
Note that if you do activate My Reports, the report server creates a My Reports folder for every user with a
domain account who clicks the My Reports link, even if the user does not want or need a My Reports folder.
There is no systematic way to determine which folders are being used. You must review the folders manually to
see whether they contain anything.

See Also
Secure My Reports
Report Server Content Management (SSRS Native Mode)
Rename a Report Server Computer
11/2/2020 • 2 minutes to read • Edit Online

Renaming a computer causes a corresponding name change for the Web server and SQL Server instance (if it is
on the same computer). In some cases, SQL Server Reporting Services may not be accessible after a computer
name change. Use the steps provided in this article to reconfigure a report server after a computer name
change.

Renaming a SQL Server Database Engine


If you rename the SQL Server Database Engine instance that runs the report server database, do the following:
1. Start the Reporting Services Configuration tool and connect to the report server that uses the report
server database on the renamed server.
2. Open the Database Setup page.
3. In Ser ver Name , type or select the SQL Server name, and then click Connect .
4. Click Apply .
If the report server is using a local Database Engine instance, you can use (local) or (local)\instancename to
specify the server. If you use (local) to refer to the server, you can rename the server and the connections will
continue to work. If you are using a remote server, or if Reporting Services is configured using the server name,
you must update the database connection information whenever the server name is changed.

Renaming a Report Server Computer


If you rename a computer that runs a report server, do the following:
1. Open RSReportServer.config in a text editor and modify the UrlRoot setting to reflect the new server
name. The UrlRoot setting is used by delivery extensions to compose the URL used to access items
stored on the report server. Changing the report server URL address requires that you update the
UrlRoot setting so that subscriptions continue to deliver reports as expected.
2. In the same file, if it is set, modify the Repor tSer verUrl setting to reflect the new server name. Note that
this setting is not used in every installation. If it is empty, do nothing.

NOTE
If you are using Windows Internet Naming Service (WINS) on your corporate network, the report server and web
portal may continue to be available under the previous name for a period of time. WINS maps an IP address to
each computer it services. After WINS refreshes the IP address for the renamed computer, the old computer name
can no longer be used to access the report server or web portal.

See also
RsReportServer.config Configuration File
Report Server Configuration Manager (Native Mode)
Reporting Services Report Server (Native Mode)
Start and Stop the Report Server Service
rsconfig Utility (SSRS)
Report Server Database (SSRS Native Mode)
11/2/2020 • 3 minutes to read • Edit Online

A report server is a stateless server that uses the SQL Server Database Engine to store metadata and object
definitions. A native mode Reporting Services installation uses two databases to separate persistent data
storage from temporary storage requirements. The databases are created together and bound by name. By
default, the database names are Repor tSer ver and Repor tSer verTempDB , respectively.
A SharePoint mode Reporting Services installation will also create a database for the data alerting feature. The
three databases in SharePoint mode are associated with Reporting Services service applications. For more
information, see Manage a Reporting Services SharePoint Service Application
The databases can run on a local or remote Database Engine instance. Choosing a local instance is useful if you
have sufficient system resources or want to conserve software licenses, but running the databases on a remote
computer can improve performance.
You can port or reuse an existing report server database from previous installation or a different instance with
another report server instance. The schema of the report server database must be compatible with the report
server instance. If the database is in an older format, you will be prompted to upgrade it to the current format.
Newer versions cannot be down graded to an older version. If you have a newer report server database, you
can't use it with an earlier version of a report server instances. For more information about how report server
databases are upgraded to newer formats, see Upgrade a Report Server Database.

IMPORTANT
The table structure for the databases is optimized for server operations and should not be modified or tuned. Microsoft
might change the table structure from one release to the next. If you modify or extend the database, you might limit or
prevent the capability to perform future upgrades or apply service packs. You might also introduce changes that impair
report server operations. For example if you turn on READ_COMMITTED_SNAPSHOT on the ReportServer database, you
will break the interactive sorting feature.

All access to a report server database must be handled through the report server. To access content in a report
server database, you can use report server management tools, (such as the web portal and SQL Server
Management Studio), or programmatic interfaces such as URL access, Report Server Web service, or the
Windows Management Instrumentation (WMI) provider.
The connection to the report server database is usually defined through the Reporting Services Configuration
Manager. However, it can be defined during setup if you choose to install the default configuration. For more
information about the report server connection to the database, see Configure a Report Server Database
Connection (Report Server Configuration Manager).

Report Server database


The report server database is a SQL Server database that stores the following content:
Items managed by a report server (reports and linked reports, shared data sources, report models,
folders, resources) and all of the properties and security settings that are associated with those items.
Subscription and schedule definitions.
Report snapshots (which include query results) and report history.
System properties and system-level security settings.
Report execution log data.
Symmetric keys and encrypted connection and credentials for report data sources.
Because the report server database stores application state and persistent data, you should create a backup
schedule for this database to prevent data loss. For recommendations and instructions on how to back up the
database, see Moving the Report Server Databases to Another Computer (SSRS Native Mode).

Report Server temporary database


Each report server database uses a related temporary database to store session and execution data, cached
reports, and work tables that are generated by the report server. Background server processes will periodically
remove older and unused items from the tables in the temporary database.
Reporting Services does not re-create the temporary database if it is missing, nor does it repair missing or
modified tables. Although the temporary database does not contain persistent data, you should back up a copy
of the database anyway so that you can avoid having to re-create it as part of a failure recovery operation.
If you back up the temporary database and subsequently restore it, you should delete the contents. Generally, it
is safe to delete the contents of the temporary database at any time. However, you must restart the Report
Server Windows service after you delete the contents.

See also
Host a Report Server Database in a SQL Server Failover Cluster
Store Encrypted Report Server Data (Report Server Configuration Manager)
Reporting Services Report Server
Administer a Report Server Database (SSRS Native Mode)
Create a Report Server Database (Report Server Configuration Manager)
Backup and Restore Operations for Reporting Services
Administer a Report Server Database (SSRS Native
Mode)
11/2/2020 • 4 minutes to read • Edit Online

A Reporting Services deployment uses two SQL Server relational databases for internal storage. By default, the
databases are named ReportServer and ReportServerTempdb. ReportServerTempdb is created with the primary
report server database and is used to store temporary data, session information, and cached reports.
In Reporting Services, database administration tasks include backing up and restoring the report server
databases and managing the encryption keys that are used to encrypt and decrypt sensitive data.
To administer the report server databases, SQL Server provides a variety of tools.
To back up or restore the report server database, move a report server database, or recover a report
server database, you can use SQL Server Management Studio, the Transact-SQL commands, or the
database command prompt utilities. For instructions, see Moving the Report Server Databases to Another
Computer (SSRS Native Mode).
To copy existing database content to another report server database, you can attach a copy of a report
server database and use it with a different report server instance. Or, you can create and run a script that
uses SOAP calls to recreate report server content in a new database. You can use the rs utility to run the
script.
To manage connections between the report server and report server database, and to find out which
database is used for a particular report server instance, you can use Database Setup page in the
Reporting ServicesConfiguration tool. To learn more about the report server connection to the report
server database, see Configure a Report Server Database Connection (Report Server Configuration
Manager).

SQL Server Login and Database Permissions


The report server databases are used internally by the report server. Connections to either database are made
by the Report Server service. You use the Reporting Services Configuration tool to configure the report server
connection to the report server database.
Credentials for the report server connection to the database can be the service account, a Windows local or
domain user account, or a SQL Server database user. You must choose an existing account for the connection;
Reporting Services does not create accounts for you.
A SQL Server login to the report server database is created for you automatically for the account you specify.
Permissions to the database are also configured automatically. The Reporting Services Configuration tool will
assign the account or database user to the Public and RSExecRole roles for the report server databases. The
RSExecRole provides permissions for accessing the database tables and for executing stored procedures. The
RSExecRole is created in master and msdb when you create the report server database. The RSExecRole is a
member of the db_owner role for the report server databases, allowing the report server to update its own
schema in support of an auto-upgrade process.

Naming Conventions for the Report Server Databases


When creating the primary database, the name of the database must follow the rules specified for Database
Identifiers. The temporary database name always uses the same name as the primary report server database
but with a Tempdb suffix. You cannot choose a different name for the temporary database.
Renaming a report server database is not supported because the report server databases are considered
internal components. Renaming the report server databases causes errors to occur. Specifically, if you rename
the primary database, an error message explains that the database names are out of sync. If you rename the
ReportServerTempdb database, the following internal error occurs later when you run reports:
"An internal error occurred on the report server. See the error log for more details. (rsInternalError)
Invalid object name 'ReportServerTempDB.dbo.PersistedStream'."
This error occurs because the ReportServerTempdb name is stored internally and used by stored procedures to
perform internal operations. Renaming the temporary database will prevent the stored procedures from
working properly.

Enabling Snapshot Isolation on the Report Server Database


You cannot enable snapshot isolation on the report server database. If snapshot isolation is turned on, you will
encounter the following error: "The selected report is not ready for viewing. The report is still being rendered or
a report snapshot is not available."
If you did not purposely enable snapshot isolation, the attribute might have been set by another application or
the model database might have snapshot isolation enabled, causing all new databases to inherit the setting.
To turn off snapshot isolation on the report server database, start Management Studio, open a new query
window, paste and then run the following script:

ALTER DATABASE ReportServer


SET ALLOW_SNAPSHOT_ISOLATION OFF
ALTER DATABASE ReportServerTempdb
SET ALLOW_SNAPSHOT_ISOLATION OFF
ALTER DATABASE ReportServer
SET READ_COMMITTED_SNAPSHOT OFF
ALTER DATABASE ReportServerTempDb
SET READ_COMMITTED_SNAPSHOT OFF

About Database Versions


In Reporting Services, explicit information about the database version is not available. However, because
database versions are always synchronized to product versions, you can use product version information to tell
when the database version has changed. Product version information for Reporting Services is indicated
through file version information that appears in the log files, in the headers of all SOAP calls, and when you
connect to the report server URL (for example, when you open a browser to https://localhost/reportserver ).

See Also
Create a Native Mode Report Server Database (Report Server Configuration Manager)
Configure the Report Server Service Account (Report Server Configuration Manager)
Configure a Report Server Database Connection (Report Server Configuration Manager)
Create a Report Server Database (Report Server Configuration Manager)
Report Server Configuration Manager (Native Mode)
Backup and Restore Operations for Reporting Services
Report Server Database (SSRS Native Mode)
Reporting Services Report Server (Native Mode)
Store Encrypted Report Server Data (Report Server Configuration Manager)
Configure and Manage Encryption Keys (Report Server Configuration Manager)
Moving Report Server Databases to Another
Computer (SSRS Native Mode)
11/2/2020 • 8 minutes to read • Edit Online

You can move the report server databases that are used in an installation of SQL Server Database Engine to an
instance that is on a different computer. Both the reportserver and reportservertempdb databases must be
moved or copied together. A Reporting Services installation requires both databases; the reportservertempdb
database must be related by name to the primary reportserver database you are moving.
Applies to: Reporting Services Native mode.
Moving a database does not effect scheduled operations that are currently defined for report server items.
Schedules will be recreated the first time that you restart the Report Server service.
SQL Server Agent jobs that are used to trigger a schedule will be recreated on the new database instance.
You do not have to move the jobs to the new computer, but you might want to delete jobs on the
computer that will no longer be used.
Subscriptions, cached reports, and snapshots are preserved in the moved database. If a snapshot is not
picking up refreshed data after the database is moved, clear the snapshot options and select Apply to
save your changes, re-create the schedule, and select Apply again to save your changes.
Temporary report and user session data that is stored in reportservertempdb are persisted when you
move that database.
SQL Server provides several approaches for moving databases, including backup and restore, attach and detach,
and copy. Not all approaches are appropriate for relocating an existing database to a new server instance. The
approach that you should use to move the report server database will vary depending on your system
availability requirements. The easiest way to move the report server databases is to attach and detach them.
However, this approach requires that you take the report server offline while you detach the database. Backup
and restore is a better choice if you want to minimize service disruptions, but you must run Transact-SQL
commands to perform the operations. Copying the database is not recommended (specifically, by using the
Copy Database Wizard); it does not preserve permission settings in the database.

IMPORTANT
The steps provided in this article are recommended when relocation of the report server database is the only change you
are making to the existing installation. Migrating an entire Reporting Services installation (that is, moving the database
and changing the identity of the Report Server Windows service that uses the database) requires connection
reconfiguration and an encryption key reset.

Detaching and Attaching the Report Server Databases


If you can take the report server offline, you can detach the databases to move them to the SQL Server instance
you want to use. This approach preserves permissions in the databases. If you are using a SQL Server database,
you must move it to another SQL Server instance. After you move the databases, you must reconfigure the
report server connection to the report server database. If you are running a scale-out deployment, you must
reconfigure the report server database connection for each report server in the deployment.
Use the following steps to move the databases:
1. Backup the encryption keys for the report server database you want to move. You can use the Reporting
Services Configuration tool backup the keys.
2. Stop the Report Server service. You can use the Reporting Services Configuration tool to stop the service.
3. Start SQL Server Management Studio and open a connection to the SQL Server instance that hosts the
report server databases.
4. Right-click the report server database, point to Tasks, and click Detach . Repeat this step for the report
server temporary database.
5. Copy or move the .mdf and .ldf files to the Data folder of the SQL Server instance you want to use.
Because you are moving two databases, make sure that you move or copy all four files.
6. In Management Studio, open a connection to the new SQL Server instance that will host the report server
databases.
7. Right-click the Databases node, and then click Attach .
8. Click Add to select the report server database .mdf and .ldf files that you want to attach. Repeat this step
for the report server temporary database.
9. After the databases are attached, verify that the RSExecRole is a database role in the report server
database and temporary database. RSExecRole must have select, insert, update, delete, and reference
permissions on the report server database tables, and execute permissions on the stored procedures. For
more information, see Create the RSExecRole.
10. Start the Reporting Services Configuration tool and open a connection to the report server.
11. On the Database page, select the new SQL Server instance, and then click Connect .
12. Select the report server database that you just moved, and then click Apply .
13. On the Encryption Keys page, click Restore. Specify the file that contains the backup copy of the keys and
the password to unlock the file.
14. Restart the Report Server service.

Backing Up and Restoring the Report Server Databases


If you cannot take the report server offline, you can use backup and restore to relocate the report server
databases. You must use Transact-SQL statements to do the backup and restore. After you restore the databases,
you must configure the report server to use the database on the new server instance. For more information, see
the instructions at the end of this topic.
Using BACKUP and COPY_ONLY to Backup the Report Server Databases
When backing up the databases, set the COPY_ONLY argument. Be sure to back up both of the databases and
log files.
-- To permit log backups, before the full database backup, alter the database
-- to use the full recovery model.
USE master;
GO
ALTER DATABASE ReportServer
SET RECOVERY FULL

-- If the ReportServerData device does not exist yet, create it.


USE master
GO
EXEC sp_addumpdevice 'disk', 'ReportServerData',
'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\BACKUP\ReportServerData.bak'

-- Create a logical backup device, ReportServerLog.


USE master
GO
EXEC sp_addumpdevice 'disk', 'ReportServerLog',
'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\BACKUP\ReportServerLog.bak'

-- Back up the full ReportServer database.


BACKUP DATABASE ReportServer
TO ReportServerData
WITH COPY_ONLY

-- Back up the ReportServer log.


BACKUP LOG ReportServer
TO ReportServerLog
WITH COPY_ONLY

-- To permit log backups, before the full database backup, alter the database
-- to use the full recovery model.
USE master;
GO
ALTER DATABASE ReportServerTempdb
SET RECOVERY FULL

-- If the ReportServerTempDBData device does not exist yet, create it.


USE master
GO
EXEC sp_addumpdevice 'disk', 'ReportServerTempDBData',
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\BACKUP\ReportServerTempDBData.bak'

-- Create a logical backup device, ReportServerTempDBLog.


USE master
GO
EXEC sp_addumpdevice 'disk', 'ReportServerTempDBLog',
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\BACKUP\ReportServerTempDBLog.bak'

-- Back up the full ReportServerTempDB database.


BACKUP DATABASE ReportServerTempDB
TO ReportServerTempDBData
WITH COPY_ONLY

-- Back up the ReportServerTempDB log.


BACKUP LOG ReportServerTempDB
TO ReportServerTempDBLog
WITH COPY_ONLY

Using RESTORE and MOVE to Relocate the Report Server Databases


When restoring the databases, be sure to include the MOVE argument so that you can specify a path. Use the
NORECOVERY argument to perform the initial restore; this keeps the database in a RESTORING state, giving you
time to review log backups to determine which one to restore. The final step repeats the RESTORE operation
with the RECOVERY argument.
The MOVE argument uses the logical name of the data file. To find the logical name, execute the following
statement: RESTORE FILELISTONLY FROM DISK='C:\ReportServerData.bak';

The following examples include the FILE argument so that you can specify the file position of the log file to
restore. To find the file position, execute the following statement:
RESTORE HEADERONLY FROM DISK='C:\ReportServerData.bak';

When restoring the database and log files, you should run each RESTORE operation separately.

-- Restore the report server database and move to new instance folder
RESTORE DATABASE ReportServer
FROM DISK='C:\ReportServerData.bak'
WITH NORECOVERY,
MOVE 'ReportServer' TO
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ReportServer.mdf',
MOVE 'ReportServer_log' TO
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ReportServer_Log.ldf';
GO

-- Restore the report server log file to new instance folder


RESTORE LOG ReportServer
FROM DISK='C:\ReportServerData.bak'
WITH NORECOVERY, FILE=2
MOVE 'ReportServer' TO
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ReportServer.mdf',
MOVE 'ReportServer_log' TO
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ReportServer_Log.ldf';
GO

-- Restore and move the report server temporary database


RESTORE DATABASE ReportServerTempdb
FROM DISK='C:\ReportServerTempDBData.bak'
WITH NORECOVERY,
MOVE 'ReportServerTempDB' TO
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ReportServerTempDB.mdf',
MOVE 'ReportServerTempDB_log' TO
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\REportServerTempDB_Log.ldf';
GO

-- Restore the temporary database log file to new instance folder


RESTORE LOG ReportServerTempdb
FROM DISK='C:\ReportServerTempDBData.bak'
WITH NORECOVERY, FILE=2
MOVE 'ReportServerTempDB' TO
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ReportServerTempDB.mdf',
MOVE 'ReportServerTempDB_log' TO
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\REportServerTempDB_Log.ldf';
GO

-- Perform final restore


RESTORE DATABASE ReportServer
WITH RECOVERY
GO

-- Perform final restore


RESTORE DATABASE ReportServerTempDB
WITH RECOVERY
GO

How to Configure the Report Server Database Connection


1. Start the Reporting Services Configuration Manager and open a connection to the report server.
2. On the Database page, click Change Database . Click Next .
3. Click Choose an existing repor t ser ver database . Click Next .
4. Select the SQL Server that now hosts the report server database and click Test Connection . Click Next .
5. In Database Name, select the report server database that you want to use. Click Next .
6. In Credentials, specify the credentials that the report server will use to connect to the report server
database. Click Next .
7. Click Next and then Finish .

NOTE
A Reporting Services installation requires that the SQL Server Database Engine instance include the RSExecRole role. Role
creation, login registration, and role assignments occur when you set the report server database connection through the
Reporting Services Configuration tool. If you use alternate approaches (specifically, if you use the rsconfig.exe command
prompt utility) to configure the connection, the report server will not be in a working state. You might have to write WMI
code to make the report server available. For more information, see Access the Reporting Services WMI Provider.

Next steps
Create the RSExecRole
Start and Stop the Report Server Service
Configure a Report Server Database Connection
Configure the Unattended Execution Account
Report Server Configuration Manager
rsconfig Utility
Configure and Manage Encryption Keys
Report Server Database
More questions? Try asking the Reporting Services forum
Reporting Services Configuration Files
11/2/2020 • 4 minutes to read • Edit Online

Reporting Services stores component information in the registry and in configuration files that are copied to the
file system during setup. Configuration files contain a combination of internal-use-only and user-defined values.
User-defined values are specified through Setup, the configuration tools, the command line utilities, and by
manually editing the configuration files.
Modifying the configuration files is only necessary if you are adding or configuring advanced settings.
Configuration settings are specified as either XML elements or attributes. If you understand XML and
configuration files, you can use a text or code editor to modify user-definable settings. For more information
about how to modify a configuration file or to learn more about how the report server reads new and updated
configuration settings, see Modify a Reporting Services Configuration File (RSreportserver.config).

NOTE
In previous releases, Report Manager had its own configuration file named RSWebApplication.config. That file is now
obsolete. If you upgraded from a previous installation, the file will not be deleted but the report server will not read any
settings from it. If the file exists on your computer, you should delete it. In SQL Server 2008 and later versions, all Report
Manager and web portal configuration settings are stored in and read from the RSReportServer.config file. To review a list
of which settings were deleted or moved, see Breaking Changes in SQL Server Reporting Services in SQL Server 2016.

In this article:
Summary of Configuration Files (Native Mode)
Summary of Configuration Files (SharePoint Mode)

Summary of configuration files (native mode)


The following table provides a description of where configuration settings are stored. Most configuration
settings are stored in configuration files that are included with Reporting Services. By default, the installation
directory is the following:

Install Paths
C:\Program Files\Microsoft SQL Server\MSRSxx.MSSQLSERVER (where xx is the MS SQL version number)
or
C:\Program Files\Microsoft SQL Server Reporting Services\SSRS
depending on the SSRS version

STO RED IN : DESC RIP T IO N LO C AT IO N

RSReportServer.config Stores configuration settings for <Installation directory> \Reporting


feature areas of the Report Server Services \ReportServer
service: Report Manager or the web
portal, the Report Server Web service,
and background processing. For more
information about each setting, see
RsReportServer.config Configuration
File.
STO RED IN : DESC RIP T IO N LO C AT IO N

RSSrvPolicy.config Stores the code access security policies <Installation directory> \Reporting
for the server extensions. For more Services \ReportServer
information about this file, see Using
Reporting Services Security Policy Files.

RSMgrPolicy.config Stores the code access security policies <Installation directory> \Reporting
for the web portal. For more Services \ReportManager
information about this file, see Using
Reporting Services Security Policy Files.

Web.config for the Report Server Web Includes only those settings that are <Installation directory> \Reporting
service required for ASP.NET. Services \ReportServer

Web.config for Report Manager Includes only those settings that are <Installation directory> \Reporting
required for ASP.NET if applicable for Services \ReportManager
the SSRS version.

ReportingServicesService.exe.config Stores configuration settings that <Installation directory> \Reporting


specify the trace levels and logging Services \ReportServer \Bin
options for the Report Server service.
For more information about the
elements in this file, see
ReportingServicesService
Configuration File.

Registry settings Stores configuration state and other HKEY_LOCAL_MACHINE \SOFTWARE


settings used to uninstall Reporting \Microsoft \Microsoft SQL Server \
Services. If you are troubleshooting an <InstanceID> \Setup
installation or configuration problem,
you can view these settings to get - And -
information about how the report
server is configured. HKEY_LOCAL_MACHINE\SOFTWARE\
Microsoft\Microsoft SQL
Do not modify these settings directly Server\Services\ReportServer
as this can invalidate your installation.

RSReportDesigner.config Stores configuration settings for <drive>:\Program Files \Microsoft


Report Designer. For more information, Visual Studio 10 \Common7 \IDE
see RSReportDesigner Configuration \PrivateAssemblies.
File.

RSPreviewPolicy.config Stores the code access security policies C:\Program Files\Microsoft Visual
for the server extensions used during Studio
report preview. For more information 10.0\Common7\IDE\PrivateAssemblies
about this file, see Using Reporting r
Services Security Policy Files.

Summary of configuration Files (SharePoint mode)


The following table provides a description of configuration files used for a SharePoint mode report server. Most
configuration settings are stored in SharePoint service application databases. For more information, see
Reporting Services SharePoint Service and Service Applications.
By default, the installation directory for SharePoint mode is the following:
Install path
C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\WebServices\Reporting

STO RED IN : DESC RIP T IO N LO C AT IO N

RSReportServer.config Stores configuration settings for <Installation directory> \Reporting


feature areas of the Report Server Services \ReportServer
service: Report Manager or the web
portal, the Report Server Web service,
and background processing. For more
information about each setting, see
RsReportServer.config Configuration
File.

RSSrvPolicy.config Stores the code access security policies <Installation directory> \Reporting
for the server extensions. For more Services \ReportServer
information about this file, see Using
Reporting Services Security Policy Files.

Web.config for the Report Server Web Includes only those settings that are <Installation directory> \Reporting
service required for ASP.NET if applicable for Services \ReportServer
the SSRS version.

Registry settings Stores configuration state and other HKEY_LOCAL_MACHINE \SOFTWARE


settings used to uninstall Reporting \Microsoft \Microsoft SQL Server \
Services. Also stores information about <InstanceID> \Setup
each Reporting Services service
application. Example instance ID:
MSSQL13.MSSQLSERVER
Do not modify these settings directly
as this can invalidate your installation. - And -

HKEY_LOCAL_MACHINE\SOFTWARE\
Microsoft\Microsoft SQL
Server\Reporting Services\Service
Applications

RSReportDesigner.config Stores configuration settings for <drive>:\Program Files \Microsoft


Report Designer. For more information, Visual Studio 10 \Common7 \IDE
see RSReportDesigner Configuration \PrivateAssemblies.
File.

See also
Reporting Services Report Server (Native Mode)
Reporting Services Extensions
rsconfig Utility (SSRS)
Start and Stop the Report Server Service
RsReportServer.config Configuration File
3/5/2021 • 38 minutes to read • Edit Online

The Reporting ServicesRsRepor tSer ver.config file stores settings that are used by the Report Server Web
service and background processing. All Reporting Services applications run within a single process that reads
configuration settings stored in the RSReportServer.config file. Both Native mode and SharePoint mode report
servers use the RSReportServer.config, however the two modes do not use all of the same settings in the
configuration file. The SharePoint mode version of the file is smaller as many of the settings for SharePoint
mode are stored in SharePoint configuration databases rather than the file. This topic describes the default
configuration file that is installed for Native mode and SharePoint mode and some of the important settings and
behaviors that are controlled by the configuration file.
In SharePoint mode, the configuration file contains those settings that apply to all service application instances
running on that computer. The SharePoint configuration database contains configuration settings that apply to
specific service applications. The settings that are stored in the Configuration database and managed through
the SharePoint management pages can be different for each Reporting Services service application.
The settings are presented in following content in the order in which they appear in the configuration file that is
installed by default. For instructions on how to edit this file, see Modify a Reporting Services Configuration File
(RSreportserver.config).

File Location
The RSReportServer.config is located in the following folders, depending on the report server mode:
Native mode report server
APPLIES TO: ✔
️ SQL Server Reporting Services (2016)

C:\Program Files\Microsoft SQL Server\MSRS13.MSSQLSERVER\Reporting Services\ReportServer

APPLIES TO: ✔
️ SQL Server Reporting Services (2017 and later)

C:\Program Files\Microsoft SQL Server Reporting Services\SSRS\ReportServer

APPLIES TO: ✔
️ Power BI Report Server

C:\Program Files\Microsoft Power BI Report Server\PBIRS\ReportServer

SharePoint mode report server

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\WebServices\Reporting

For more information on editing the file, see Modify a Reporting Services Configuration File
(RSreportserver.config).
General Configuration Settings (rsreportserver.config)
The following table provides information about general configuration settings that appear in the first part of the
file. Settings are presented in the order in which they appear in the configuration file. The last column of the
table indicates if the setting applies to a Native mode report server (N) or a SharePoint mode report server (S)
or both.

NOTE
In this topic, "maximum integer" refers to INT_MAX value of 2147483647. For more information, see Integer Limits
(https://msdn.microsoft.com/library/296az74e(v=vs.110).aspx).

SET T IN G DESC RIP T IO N M O DE

Dsn Specifies the connection string to the N,S


database server that hosts the report
server database. This value is
encrypted and is added to the
configuration file when you create the
report server database. For SharePoint,
the database connection information is
taken from the SharePoint
configuration database.

ConnectionType Specifies the type of credentials that N


the report server uses to connect to
the report server database. Valid
values are Default and Impersonate .
Default is specified if the report
server is configured to use a SQL
Server login or the service account to
connect to the report server database.
Impersonate is specified if the report
server uses a Windows account to
connect to the report server database.

LogonUser, LogonDomain, Stores the domain, user name, and N


LogonCred password of a domain account that is
used by a report server to connect to
a report server database. Values for
LogonUser , LogonDomain , and
LogonCred are created when the
report server connection is configured
to use a domain account. For more
information about a report server
database connection, see Configure a
Report Server Database Connection
(Report Server Configuration
Manager).
SET T IN G DESC RIP T IO N M O DE

InstanceID An identifier for the report server N,S


instance. Report server instance names
are based on SQL Server instance
names. This value specifies a SQL
Server instance name. By default, this
value is MSRS12 <instancename>. Do
not modify this setting. The following
is an example of the complete value:
<InstanceId>MSRS13.MSSQLSERVER</InstanceId>

The following is an example of


SharePoint mode:

<InstanceId>MSRS12.@Sharepoint</InstanceId>

InstallationID An identifier for the report server N


installation that Setup creates. This
value is set to a GUID. Do not modify
this setting.

SecureConnectionLevel Specifies the degree to which Web N,S


service calls must use Transport Layer
Security (TLS), previously known as
Secure Sockets Layer (SSL). This setting
is used for both the Report Server
Web service and the web portal. This
value is set when you configure a URL
to use HTTP or HTTPS in the Reporting
Services Configuration tool. In SQL
Server 2008 R2,
SecureConnectionLevel is made an
on/off switch. For earlier versions than
SQL Server 2008 R2 the valid values
range are from 0 through 3, where 0 is
least secure. For more information, see
ConfigurationSetting Method -
SetSecureConnectionLevel, Using
Secure Web Service Methods and
Configure TLS Connections on a Native
Mode Report Server.
SET T IN G DESC RIP T IO N M O DE

DisableSecureFormsAuthenticatio Default value is False. N


nCookie
Specifies whether to disable the forcing
of the cookie used for form and
custom authentication to be marked
secure. Starting with SQL Server 2012,
Reporting Services will automatically
mark forms authentication cookies
used with custom authentication
extensions, as a secure cookie when
sent to the client. By changing this
property, report server administrators
and custom security extension authors
can revert to the previous behavior
which allowed the custom security
extension author to determine
whether to mark the cookie as a
secure cookie. It is recommended that
secure cookies are used for forms
authentication to help prevent
network sniffing and replay attacks.

CleanupCycleMinutes Specifies the number of minutes after N,S


which old sessions and expired
snapshots are removed from the
report server databases. Valid values
range from 1 to maximum integer. The
default is 10.

MaxActiveReqForOneUser Specifies the maximum number of N,S


reports that one user can process at
the same time. Once the limit is
reached, further report processing
requests are denied. Valid values are 1
to a maximum integer. The default is
20.

Note that most requests process very


quickly so it is unlikely that a single
user will have more than 20 open
connections at any given time. If users
are opening more than 15 process-
intensive reports at the same time,
you might need to increase this value.

This setting is ignored for report


servers that run in SharePoint
integrated mode.

MaxActiveReqForAnonymous Specifies the maximum number of


anonymous requests that can be in
process at the same time. Once the
limit is reached, further processing
requests are denied. Valid values are 1
to a maximum integer. The default is
200.
SET T IN G DESC RIP T IO N M O DE

DatabaseQuer yTimeout Specifies the number of seconds after N


which a connection to the report
server database times out. This value is
passed to the
System.Data.SQLClient.SQLCommand.
CommandTimeout property. Valid
values range from 0 to 2147483647.
The default is 120. A value of 0
specifies an unlimited wait time and
therefore is not recommended.

Aler tingCleanupCycleMinutes The default is 20. S

Determines how often the cleanup of


temporary data stored in the Alerting
database occurs.

Aler tingDataCleanupMinutes The default is 360. S

Determines how long session data


used for creating or editing an alert
definition is retained within the
Alerting database. Default is 6 hours.

Aler tingExecutionLogCleanup Min The default is 10080. S


utes
Determines how long to keep Alerting
execution log values. Default is 7 days.

Aler tingMaxDataRetentionDays The default is 180. S

Determines how long to keep alert


data required to prevent duplicate
alert messages when the data for the
alert has not changed.

RunningRequestsScavengerCycle Specifies how often orphaned and N,S


expired requests are canceled. This
value is specified in seconds. Valid
values range from 0 to maximum
integer. The default is 60.

RunningRequestsDbCycle Specifies how often the report server N,S


evaluates running jobs to check
whether they have exceeded report
execution time outs, and when to
present running job information in the
Manage Jobs page of the web portal.
This value is specified in seconds. Valid
values range from 0 to 2147483647.
The default is 60.

RunningRequestsAge Specifies an interval in seconds after N,S


which the status of a running job
changes from new to running. Valid
values range from 0 to 2147483647.
The default is 30.
SET T IN G DESC RIP T IO N M O DE

MaxScheduleWait Specifies the number of seconds the N,S


Report Server Windows service waits
for a schedule to be updated by SQL
Server Agent service when Next Run
Time is requested. Valid values range
from 1 to 60.

In the default configuration file,


MaxScheduleWait is set to 5 .

If the report server cannot find or read


the configuration file, the server
defaults MaxScheduleWait to 1.

DisplayErrorLink Indicates whether a link to the N,S


Microsoft Help and Support site is
displayed when errors occur. This link
appears in error messages. Users can
click the link to open updated error
message content on the site. Valid
values include True (default) and
False .

WebSer viceuseFileShareStorage Specifies whether to store cached N,S


reports and temporary snapshots
(created by the Report Server Web
service for the duration of a user
session) on the file system. Valid values
are True and False (default). If the
value is set to false, temporary data is
stored in the reportservertempdb
database.

ProcessTimeout Specifies the number of seconds the N


report server Process Monitor will wait
for any service activity operation to
complete before stopping the service.
Valid values range from 0 to maximum
integer. The default is 150. This setting
is disabled by default and can be
enabled by removing the comment
syntax ( <!-- and --> ).

ProcessTimeoutGcExtension Specifies the number of seconds the N


report server Process Monitor will wait
for a service activity operation to
complete before stopping the service.
This setting applies only if .NET
Garbage Collection is in progress and
the ProcessTimeout value was reached.
Valid values range from 0 to maximum
integer. The default is 30. This setting is
disabled by default and can be enabled
by removing the comment syntax (
<!-- and --> ).
SET T IN G DESC RIP T IO N M O DE

WatsonFlags Specifies how much information is N,S


logged for error conditions that are
reported to Microsoft.

0x0430 = a full dump

0x0428 =a minidump

0x0002 = no dump

WatsonDumpOnExceptions Specifies a list of exceptions that you N,S


want to report in an error log. This is
useful when you have a recurring issue
and want to create a dump with
information to send to Microsoft for
analysis. Creating dumps affects
performance, so change this setting
only when you are diagnosing a
problem.

WatsonDumpExcludeIfContainsEx Specifies a list of exceptions that you N,S


ceptions do not want to report in an error log.
This is useful when you are diagnosing
a problem and do not want the server
to create dumps for a specific
exception.

URLReservations (RSReportServer.config file)


URLReser vations defines HTTP access to the Report Server Web service and the web portal for the current
instance. URLs are reserved and stored in HTTP.SYS when you configure the report server.

WARNING
For SharePoint mode, URL reservations are configured in SharePoint Central Administration. For more information, see
Configure alternate access mapping (https://technet.microsoft.com/library/cc263208(office.12).aspx).

Do not modify URL reservations in the configuration file directly. Always use the Reporting Services
Configuration Manager or the Report Server WMI provider to create or modify URL reservations for a Native
mode report server. If you modify the values in the configuration file, you might corrupt the reservation, which
will cause server errors at run time or leave orphan reservations in HTTP.SYS that are not removed if you
uninstall the software. For more information, see Configure Report Server URLs (Report Server Configuration
Manager) and URLs in Configuration Files (Report Server Configuration Manager).
URLReser vations is an optional element. If it is not present in the RSReportServer.config file, the server might
not be configured. If it is specified, all child elements except for AccountName are required.
The last column of the table indicates if the setting applies to a Native mode report server (N) or a SharePoint
mode report server (S) or both.

SET T IN G DESC RIP T IO N M O DE

Application Contains settings for Reporting N


Services applications.
SET T IN G DESC RIP T IO N M O DE

Name Specifies the Reporting Services N


applications. Valid values are
ReportServerWebService or
ReportManager.

Vir tualDirector y Specifies the virtual directory name of N


the application.

URLs, URL Contains one or more URL N


reservations for the application.

UrlString Specifies URL syntax that is valid for N


HTTP.SYS. For more information about
the syntax, see URL Reservation Syntax
(Report Server Configuration
Manager).

AccountSid Specifies the security identifier (SID) of N


the account for which the URL
reservation was created. This should
be the account under which the Report
Server service runs. If the SID does not
match the service account, the report
server might not be able to listen for
requests on that URL.

AccountName Specifies a readable account name that N


corresponds to the AccountSid . It is
not used, but it appears in the file so
that you can easily determine the
service account for the account that is
used for URL reservation.

Authentication (RSReportServer.config file)


Authentication specifies one or more authentication types accepted by the report server. The default settings
and values are a subset of the settings and values that are possible for this section. Only the default settings are
added automatically. To add other settings, you must use a text editor to add the element structure to the
RSReportServer.config file and set the values.
Default values include RSWindowsNegotiate and RSWindowsNTLM with EnableAuthPersistance set to
True :

<Authentication>
<AuthenticationTypes>
<RSWindowsNegotiate/>
<RSWindowsNTLM/>
</AuthenticationTypes>
<EnableAuthPersistence>true</EnableAuthPersistence>
</Authentication>

All other values must be added manually. For more information and examples, see Authentication with the
Report Server.
The last column of the following table indicates if the setting applies to a Native mode report server (N) or a
SharePoint mode report server (S) or both.
SET T IN G DESC RIP T IO N M O DE

AuthenticationTypes Specifies one or more authentication N


types. Valid values are:
RSWindowsNegotiate ,
RSWindowsKerberos ,
RSWindowsNTLM ,
RSWindowsBasic, and Custom .

RSWindows types and Custom are


mutually exclusive.

RSWindowsNegotiate ,
RSWindowsKerberos ,
RSWindowsNTLM , and
RSWindowsBasic are cumulative and
can be used together, as illustrated in
the default value example earlier in this
section.

Specifying multiple authentication


types is necessary if you expect
requests from a variety of client
applications or browsers that use
different types of authentication.

Do not remove RSWindowsNTLM ,


otherwise you will limit browser
support to a portion of the supported
browser types. For more information,
see Browser Support for Reporting
Services and Power View.

RSWindowsNegotiate The report server accepts either N


Kerberos or NTLM security tokens. This
is the default setting when the report
server is running in native mode and
the service account is Network Service.
This setting is omitted when the report
server is running in native mode and
the service account is configured as a
domain user account.

If a domain account is configured for


the Report Server Service account and
a Service Principle Name (SPN) is not
configured for the report server, this
setting might prevent users from
logging on to the server.

RSWindowsNTLM The server accepts NTLM security N, S


tokens.

If you remove this setting, browser


support will be limited for some of the
supported browser types. For more
information, see Browser Support for
Reporting Services and Power View.
SET T IN G DESC RIP T IO N M O DE

RSWindowsKerberos The server accepts Kerberos security N


tokens.

Use this setting or


RSWindowsNegotiate when you use
Kerberos authentication in a
constrained delegation authentication
scheme.

RSWindowsBasic The server accepts Basic credentials N


and issues a challenge/response when
a connection is made without
credentials.

Basic authentication passes credentials


in the HTTP requests in clear text. If
you use Basic authentication, use TLS
to encrypt network traffic to and from
the report server. To view example
configuration syntax for Basic
authentication in Reporting Services,
see Authentication with the Report
Server.

Custom Specify this value if you deployed a N


custom security extension on the
report server computer. For more
information, see Implementing a
Security Extension.

LogonMethod This value specifies the logon type for N


RSWindowsBasic. If you specify
RSWindowsBasic, this value is
required. Valid values are 2 or 3, where
each value represents the following:

2 = Network logon high-performance


servers to authenticate plaintext
passwords

3 = Cleartext logon, which preserves


logon credentials in the authentication
package that is sent with each HTTP
request, allowing the server to
impersonate the user when connecting
to other servers in the network.

Note: Values 0 (for interactive logon)


and 1 (for batch logon) are not
supported in SQL Server 2016
Reporting Services or later (SSRS).
SET T IN G DESC RIP T IO N M O DE

Realm This value is used for N


RSWindowsBasic. It specifies a
resource partition that includes
authorization and authentication
features used to control access to
protected resources in your
organization.

DefaultDomain This value is used for N


RSWindowsBasic. It is used to
determine the domain used by the
server to authenticate the user. This
value is optional, but if you omit it the
report server will use the computer
name as the domain. If you installed
the report server on a domain
controller, the domain used is the one
controlled by the computer.

RSWindowsExtendedProtectionLe The Default value is off . For more N


vel information, see Extended Protection
for Authentication with Reporting
Services

RSWindowsExtendedProtectionSc The default value is Proxy N


enario

EnableAuthPersistence Determines whether authentication is N,S


performed on the connection or for
every request.

Valid values are True (default) or False .


If set to True , subsequent requests
from the same connection assume the
impersonation context of the first
request.

This value must be set to False if you


are using proxy server software (such
as ISA Server) to access the report
server. Using a proxy server allows a
single connection from the proxy
server to be used by multiple users.
For this scenario, you should disable
authentication persistence so that each
user request can be authenticated
separately. If you do not set
EnableAuthPersistence to False , all
users will connect using the
impersonation context of the first
request.

Service (RSReportServer.config file)


Ser vice specifies the application settings that apply to the service as a whole.
The last column of the following table indicates if the setting applies to a Native mode report server (N), a
SharePoint mode report server (S), or Power BI Report Server (P).
SET T IN G DESC RIP T IO N M O DE

IsSchedulingSer vice Specifies whether the report server N,S,P


maintains a set of SQL Server Agent
jobs that correspond to schedules and
subscriptions created by Reporting
Services users. Valid values include
True (default) and False .

This setting is affected when you


enable or disable Reporting Services
features using the Surface Area
Configuration for Reporting Services
facet of Policy-Based Management. For
more information, see Start and Stop
the Report Server Service.

IsNotificationSer vice Specifies whether the report server N,S,P


processing notifications and deliveries.
Valid values include True (default) and
False . When the value is False ,
subscriptions are not delivered.

This setting is affected when you


enable or disable Reporting Services
features using the Surface Area
Configuration for Reporting Services
facet of Policy-Based Management. For
more information, see Start and Stop
the Report Server Service.

IsEventSer vice Specifies whether service processes N,S,P


events in the event queue. Valid values
include True (default) and False . When
the value is False , the report server
does not perform operations for
schedules or subscriptions.

This setting is affected when you


enable or disable Reporting Services
features using the Surface Area
Configuration for Reporting Services
facet of Policy-Based Management. For
more information, see Start and Stop
the Report Server Service.

IsAler tingSer vice The default value is True S

PollingInter val Specifies the interval, in seconds, N,S,P


between polls of the event table by the
report server. Valid values range from
0 to maximum integer. The default is
10.

IsDataModelRefreshSer vice Specifies whether service processes N


scheduled data model refresh events
for Power BI reports. Valid values
include True (default) and False . When
the value is False , the report server
does not perform operations for
scheduled data model refresh.
SET T IN G DESC RIP T IO N M O DE

WindowsSer viceUseFileShareStora Specifies whether to store cached N,S,P


ge reports and temporary snapshots
(created by the Report Server service
for the duration of a user session) on
the file system. Valid values are True
and False (default).

Memor ySafetyMargin Specifies a percentage of N,S,P


WorkingSetMaximum that defines
the boundary between medium and
low-pressure scenarios. The default
value is 80. For more information
about WorkingSetMaximum and
configuring available memory, see
Configure Available Memory for
Report Server Applications.

Memor yThreshold Specifies a percentage of N,S,P


WorkingSetMaximum that defines
the boundary between high and
medium pressure scenarios. The
default value is 90 . This value should
be greater than the value set for
Memor ySafetyMargin . For more
information, see Configure Available
Memory for Report Server
Applications.

WorkingSetMaximum Specifies a memory threshold after N


which no new memory allocation
requests are granted to report server
applications. By default, the report
server sets WorkingSetMaximum to
the amount of available memory on
the computer. This value is detected
when the service starts. This setting
does not appear in the
RSReportServer.config file unless you
add it manually. Valid values range
from 0 to maximum integer. This value
is expressed in kilobytes. For more
information, see Configure Available
Memory for Report Server
Applications.
SET T IN G DESC RIP T IO N M O DE

WorkingSetMinimum Specifies a lower limit for memory N


consumption. The report server will
not release memory if overall memory
use is below this limit. By default, the
value is calculated at service startup
and the initial memory allocation
request is for 60 percent of
WorkingSetMaximum . This setting
does not appear in the
RSReportServer.config file unless you
add it manually. If you want to
customize this value, you must add the
WorkingSetMaximum element to
the RSReportServer.config file. Valid
values range from 0 to maximum
integer. This value is expressed in
kilobytes. For more information, see
Configure Available Memory for
Report Server Applications.

RecycleTime Specifies a recycle time for the N,S


application domain, measured in
minutes. Valid values range from 0 to
maximum integer. The default is 720.

MaxAppDomainUnloadTime Specifies an interval during which the N,S,P


application domain is allowed to
unload during a recycle operation. If
recycling does not complete during
this time period, all processing in the
application domain is stopped. For
more information, see Application
Domains for Report Server
Applications.

This value is specified in minutes. Valid


values range from 0 to maximum
integer. The default is 30 .

MaxQueueThreads Specifies the number of threads used N,S,P


by the Report Server Windows service
for concurrent processing of
subscriptions and notifications. Valid
values range from 0 to maximum
integer. The default is 0. If you choose
0, the report server determines the
maximum number of threads. If you
specify an integer, the value you
specify sets the upper limit on threads
that can be created at one time. For
more information about how the
Report Server Windows service
manages memory for running
processes, see Configure Available
Memory for Report Server
Applications.
SET T IN G DESC RIP T IO N M O DE

UrlRoot Used by the report server delivery N,S,P


extensions to compose URLs that are
used by reports delivered in e-mail
and file share subscriptions, also used
by report processing when resolving
expressions using
Globals!ReportServerUrl. The value
must be a valid URL address to the
report server from which the
published report is accessed. Used by
the report server to generate URLs for
offline or unattended access. These
URLs are used in exported reports,
and by delivery extensions to compose
a URL that is included in delivery
messages such as links in e-mails. The
report server determines URLs in
reports based on the following
behavior:

When UrlRoot is blank (the default


value) and there are URL reservations,
the report server automatically
determines URLs the same way that
URLs are generated for the
ListReportServerUrls method. The first
URL returned by the
ListReportServerUrls method is used.
Or, if SecureConnectionLevel is greater
than zero (0), the first TLS URL is used.

When UrlRoot is set to a specific


value, the explicit value is used.

When UrlRoot is blank and there are


no URL reservations configured, the
URLs in rendered reports and in e-mail
links are incorrect.

UnattendedExecutionAccount Specifies a user name, password, and N,P


domain used by the report server to
run a report. These values are
encrypted. Use the Reporting Services
Configuration tool or the rsconfig
utility to set these values. For more
information, see Configure the
Unattended Execution Account (Report
Server Configuration Manager).

For SharePoint mode, you set the


execution account for a Reporting
Services service application using
SharePoint Central Administration. For
more information, see Manage a
Reporting Services SharePoint Service
Application
SET T IN G DESC RIP T IO N M O DE

PolicyLevel Specifies the security policy N,S,P


configuration file. The valid value is
Rssrvrpolicy.config. For more
information, see Using Reporting
Services Security Policy Files.

IsWebSer viceEnabled Specifies whether the Report Server N,S


Web service responds to SOAP and
URL access requests. This value is set
when you enable or disable service
using the Surface Area Configuration
for Reporting Services facet of Policy-
Based Management.

IsRepor tManagerEnabled This setting has been deprecated as of N


SQL Server 2016 Reporting Services
Cumulative Update 2. The web portal
will always be enabled.

FileShareStorageLocation Specifies a single folder on the file N,S,P


system for storing temporary
snapshots. Although you can specify
the folder path as a UNC path, doing
so is not recommended. The default
value is empty.

<FileShareStorageLocation>

<Path>

</Path>

</FileShareStorageLocation>

IsRdceEnabled Specifies whether Report Definition N,S,P


Customization Extension (RDCE) is
enabled. Valid values are True and
False .

IsDataModelRefreshSer vice Specifies whether the Server should P


process Power BI Reports refresh. Valid
values are True and False .

MaxCatalogConnectionPoolSizePe Specifies the maximum size of the P


rProcess connection pool when connecting to
the server catalog. The default value is
0. If you choose 0, the report server
determines the maximum number of
connections for the
reportingservices.exe process, for the
other processes it is the .Sql Client
Default.

UI (RSReportServer.config file)
UI specifies configuration settings that apply to the web portal application.
The last column of the following table indicates if the setting applies to a Native mode report server (N) or a
SharePoint mode report server (S) or both.

SET T IN G DESC RIP T IO N M O DE

Repor tSer verUrl Specifies the URL of the report server N,S
that the web portal connects to. Only
modify this value if you are configuring
the web portal to connect to a report
server in another instance or on a
remote computer.

Repor tBuilderTrustLevel Do not modify this value; it is not N,S


configurable. In SQL Server 2008
Reporting Services and later versions,
Report Builder runs only in FullTrust .
For more information about
discontinuing partial trust mode, see
Discontinued Functionality to SQL
Server Reporting Services in SQL
Server 2016.

PageCountMode For the web portal only, this setting N,S


specifies whether the report server
calculates a page count value before
the report is rendered, or as the report
is viewed. Valid values are Estimate
(default) and Actual. Use Estimate to
calculate page count information as
the user views the report. Initially, the
page count is set to 2 (for the current
page plus one additional page), but
adjusts upwards as the user pages
through the report. Use Actual if you
want to calculate page count in
advance before the report is displayed.
Actual is provided for backward
compatibility. Note that if you set
PageCountMode to Actual, the
entire report must be processed to get
a valid page count, increasing wait
time before the report is displayed.

Extensions (RSReportServer.config file) Native Mode


The Extensions section appears in the rsreportserver.config file only for native mode report servers. Extension
information for SharePoint mode report servers is stored in the SharePoint configuration database and is
configured per Reporting Services service application.
Extensions specifies configuration settings for the following extensible modules of a Reporting Services
installation:
Delivery extensions
DeliveryUI extensions
Rendering extensions
Data processing extensions
Semantic query extensions (internal only)
Model generation extensions (internal only)
Security extensions
Authentication extensions
Event processing extensions (internal only)
Report definition customization extensions
Some of these extensions are strictly for internal use by the report server. Configuration settings for internal-
use-only extensions are not documented. The following sections describe configuration settings for the default
extensions. If you are using report server that has custom extensions, your configuration files might contain
settings that are not described here. This section lists the extensions in the order in which they appear. Settings
that occur repeatedly for multiple instances of the same kind of extension are described once.
Delivery Extension(s) General configuration
Specifies default (and possibly custom) delivery extensions used to deliver reports through subscriptions. The
RSReportServer.config file includes application settings for four delivery extensions:
1. Report server e-mail
2. File share delivery.
3. Report server document library used for a report server that runs in SharePoint integrated mode.
4. Null delivery provider used to preload the report cache.
For more information about delivery extensions, see Subscriptions and Delivery (Reporting Services)
All delivery extensions have Extension Name , MaxRetries , SecondsBeforeRetr y , and Configuration . These
shared settings are documented first. Descriptions of extension-specific settings follow in a second table.

SET T IN G DESC RIP T IO N

Extension Name Specifies a friendly name and assembly of the delivery


extension. Do not modify this value.

MaxRetries Specifies the number of times a report server will retry a


delivery if the first attempt does not succeed. The default
value is 3.

SecondsBeforeRetr y Specifies the interval of time (in seconds) between each retry
attempt. The default value is 900.

Configuration Contains the configuration settings that are specific to each


delivery extension.

File Share Delivery Extension Configuration Settings


File Share delivery sends a report that has been exported to an application file format to a shared folder on the
network. For more information, see File Share Delivery in Reporting Services.

SET T IN G DESC RIP T IO N


SET T IN G DESC RIP T IO N

ExcludedRenderFormats , RenderingExtension These settings are used to intentionally exclude export


formats that do not work well with file share delivery. These
formats are typically used for interactive reporting, preview,
or to preload the report cache. They do not produce
application files that can be easily viewed from a desktop
application.

HTMLOWC

RGDI

Null

Report Server E-mail Extension Configuration Settings


Report Server Email uses an SMTP network device to send reports to e-mail addresses. This delivery extension
must be configured before it can be used. For more information, see E-Mail Delivery in Reporting Services.

SET T IN G DESC RIP T IO N

SMTPSer ver Specifies a string value indicating the address of a remote


SMTP server or forwarder. This value is required for remote
SMTP service. It can be an IP address, a UNC name of a
computer on your corporate intranet, or a fully qualified
domain name.

SMTPSer verPor t Specifies an integer value indicating the port on which the
SMTP service uses to send outgoing mail. Port 25 is typically
used to send e-mail.

SMTPAccountName Contains a string value that assigns Microsoft Outlook


Express account name. You can set this value if your SMTP
server is configured to use it in some way; otherwise you
can leave it blank. Use From to specify an e-mail account
used to send reports.

SMTPConnectionTimeout Specifies an integer value indicating the number of seconds


to wait for a valid socket connection with the SMTP service
before timing out. The default is 30 seconds, but this value is
ignored if SendUsing is set to 2.

SMTPSer verPickupDirector y Specifies a string value indicating the pickup directory for the
local SMTP service. This value must be a fully qualified local
folder path (for example, d:\rs-emails).

SMTPUseSSL Specifies a Boolean value that can be set to use Transport


Layer Security (TLS), previously known as Secure Sockets
Layer (SSL), when sending an SMTP message over the
network. The default value is 0 (or false). This setting can be
used when the SendUsing element is set to 2.

SendUsing Specifies which method to use for sending messages. Valid


values are:

1=Sends a message from the local SMTP service pickup


directory.

2=Sends the message from the network SMTP service.


SET T IN G DESC RIP T IO N

SMTPAuthenticate Specifies an integer value that indicates the kind of


authentication to use when sending messages to an SMTP
service over a TCP/IP connection. Valid values are:

0=No authentication.

1= (not supported).

2= NTLM (NT LanMan) authentication. The security context


of the Report Server Windows service is used to connect to
the network SMTP server.

From Specifies an e-mail address from which reports are sent in


the format abc@host.xyz. The address appears on the From
line of an outgoing e-mail message. This value is required if
you are using a remote SMTP server. It should be a valid e-
mail account that has permission to send mail.

EmbeddedRenderFormats, RenderingExtension Specifies the rendering format used to encapsulate a report


within the body of an e-mail message. Images within the
report are subsequently embedded within the report. Valid
values are MHTML and HTML4.0.

PrivilegedUserRenderFormats Specifies rendering formats that a user can select from for a
report subscription when subscribing is enabled through the
"Manage all subscriptions" task. If this value is not set, all
render formats that are not intentionally excluded are
available to use.

ExcludedRenderFormats, RenderingExtension Purposely excludes formats that do not work well with a
given delivery extension. You cannot exclude multiple
instances of the same rendering extension. Excluding
multiple instances will result in an error when the report
server reads the configuration file. By default, the following
extensions are excluded for e-mail delivery:

HTMLOWC

Null

RGDI

SendEmailToUserAlias This value works with DefaultHostName .

When SendEmailToUserAlias is set to True , users who


define individual subscriptions are automatically specified as
recipients of the report. The To field is hidden. If this value is
False , the To field is visible. Set this value to True if you
want maximum control over report distribution. Valid values
include the following:

True =The e-mail address of the user creating the


subscription is used. This is the default value.

False =Any e-mail address can be specified.


SET T IN G DESC RIP T IO N

DefaultHostName This value works with SendEmailToUserAlias .

Specifies a string value indicating the host name to append


to the user alias when the SendEmailToUserAlias is set to
true. This value can be a Domain Name System (DNS) name
or IP address.

PermittedHosts Limits report distribution by explicitly specifying which hosts


can receive e-mail delivery. Within PermittedHosts , each
host is specified as a HostName element, where the value is
either an IP address or a DNS name.

Only e-mail accounts defined for the host are valid


recipients. If you specified DefaultHostName , be sure to
include that host as HostName element of
PermittedHosts . This value must be one or more DNS
names or IP addresses. By default, this value is not set. If the
value is not set, there are no restrictions on who can receive
e-mailed reports.

Report Server SharePoint Document Library Extension Configuration


Report Server Document Library sends a report that has been exported to an application file format to a
document library. This delivery extension can only be used by a report server that is configured to run in
SharePoint integrated mode. For more information, see SharePoint Library Delivery in Reporting Services.

SET T IN G DESC RIP T IO N

ExcludedRenderFormats, RenderingExtension These settings are used to intentionally exclude export


formats that do not work well with document library
delivery. HTMLOWC, RGDI, and Null delivery extensions are
excluded. These formats are typically used for interactive
reporting, preview, or to preload the report cache. They do
not produce application files that can be easily viewed from a
desktop application.

NULL delivery Extension Configuration


The NULL delivery provider is used to preload the cache with pre-generated reports for individual users. There
are no configuration settings for this delivery extension. For more information, see Caching Reports (SSRS).
Delivery UI Extension(s) General Configuration
Specifies delivery extensions that contain a user interface component that appears in the subscription definition
pages used when defining individual subscriptions in the web portal. If you create and deploy a custom delivery
extension that has user-defined options and you want to use the web portal, you must register the delivery
extension in this section. By default, there are configuration settings for Report Server E-mail and Report Server
File Share. Delivery extensions used only in data-driven subscriptions or in SharePoint application pages do not
have settings in this section.

SET T IN G DESC RIP T IO N

DefaultDeliver yExtension This setting determines which delivery extension appears


first in the list of delivery types in the subscription definition
page. Only one delivery extension can contain this setting.
Valid values include True or False . When this value is set to
True , that extension is default selection.
SET T IN G DESC RIP T IO N

Configuration Specifies configuration options for a delivery extension. You


can set a default rendering format for each delivery
extension. Valid values are the rendering extension names
noted in the render section of the rsreportserver.config file.

DefaultRenderingExtension Specifies whether a delivery extension is the default. Report


Server E-Mail is the default delivery extension. Valid values
include True or False . If more than one extension contains a
value of True , the first extension is considered the default
extension.

Rendering Extensions General Configuration


Specifies default (and possibly custom) rendering extensions used in report presentation.
Do not modify this section unless you are deploying a custom rendering extension. For more information, see
Implementing a Rendering Extension.
Default rendering extensions include the following:
XML
Null
CSV
PDF
RGDI
HTML4.0
MHTML
EXCEL
RPL
IMAGE
Starting with the SQL Server 2012 (11.x) release, the MHTML and HTML 4.0 renders contain by default the
following device information setting to control the behavior of sizing data visualizations.

<DeviceInfo><DataVisualizationFitSizing>Approximate</DataVisualizationFitSizing></DeviceInfo>

For more information on DeviceInfo settings, see the following:


MHTML Device Information Settings
HTML Device Information Settings
Device Information Settings for Rendering Extensions (Reporting Services)
For information about the attributes for the child <Extension> element under <Render> , see the following:
Customize Rendering Extension Parameters in RSReportServer.Config
Deploying a Rendering Extension
Do not modify this section unless you are deploying a custom rendering extension. For more information, see
Implementing a Rendering Extension.
Data Extension(s) General Configuration
Specifies default (and possibly custom) data processing extensions used to process queries. Default data
processing extensions include the following:
SQL
SQLAZURE
SQLPDW
OLEDB
OLEDB-MD
ORACLE
ODBC
XML
SHAREPOINTLIST
SAPBW
ESSBASE
TERADATA
Do not modify this section unless you are adding custom data processing extensions. For more information, see
Implementing a Data Processing Extension.
Semantic Query Extensions General Configuration
Specifies semantic query processing extension used to process report models. The semantic query processing
extensions included with Reporting Services provide support for SQL Server relational data, Oracle, and
Analysis Services multidimensional data. Do not modify this section. Query processing is not extensible.
Model Generation Configuration
Specifies a model generation extension used to create report models from a shared data source that is already
published on a report server. You can generate models for SQL Server relational data, Oracle, and Analysis
Services multidimensional data sources. Do not modify this section. Model generation is not extensible.
Security Extension Configuration
Specifies the authorization component used by Reporting Services. This component is used by the
authentication extension registered in the Authentication element of the RSReportServer.config file. Do not
modify this section unless you are implementing a custom authentication extension. For more information
about adding custom security features, see Implementing a Security Extension. For more information about
authorization, see Authorization in Reporting Services.
Authentication Extension Configuration
Specifies the default and custom authentication extensions used by the report server. The default extension is
based on Windows Authentication. Do not modify this section unless you are implementing a custom
authentication extension. For more information about authentication in Reporting Services, see Authentication
in Reporting Services and Authentication with the Report Server. For more information about adding custom
security features, see Implementing a Security Extension.
Event Processing
Specifies default event handlers. Do not modify this section. This section is not extensible.
Report Definition Customization
Specifies the name and type of a custom extension that modifies a report definition.
RDLSandboxing
Specifies a Report Definition Language (RDL) mode that enables you to help detect and restrict the use of
specific types of report resources by individual tenants in a scenario where multiple tenants share a single Web
farm of report servers. For more information, see Enable and Disable RDL Sandboxing.

MapTileServerConfiguration (RSReportServer.config file)


MapTileSer verConfiguration defines configuration settings for Microsoft Bing Maps Web Services that
provides a tile background for a map report item in a report that is published on a report server. All child
elements are required.

SET T IN G DESC RIP T IO N

MaxConnections Specifies the maximum number of connections to Bing Maps


Web Services.

Timeout Specifies the timeout in seconds to wait for a response from


Bing Maps Web Services.

AppID Specifies the application identifier (AppID) to use for Bing


Maps Web Services. (Default) specifies the Reporting
Services default AppID.

For more information about the use of Bing map tiles in


your report, see Additional Terms of Use.

Do not change this value unless you must specify a custom


AppID for your own Bing Maps license agreement. When
you change the AppID, you do not have to restart Reporting
Services for the change to take effect.

CacheLevel Specifies a value from the HttpRequestCacheLevel


Enumeration of System.Net.Cache. The default value is
Default . For more information, see HttpRequestCacheLevel
Enumeration.

Default Configuration File for a Native Mode Report Server


The rsreportserver.config file is installed to the following location by default:
C:\Program Files\Microsoft SQL Ser ver\MSRS13.MSSQLSERVER\Repor ting Ser vices\Repor tSer ver

<Configuration>
<Dsn>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAR58DMGebHUeMvyR6HR04kQQAAAAiAAAAUgBlAHAAbwBy
AHQAaQBuAGcAIABTAGUAcgB2AGUAcgAAAANmAADAAAAAEAAAADczfLRgZ4GF44iBHkLrKY4AAAAA
BIAAAKAAAAAQAAAAJ9wQOmDNauH+LS30rboJ2OAAAAAp0kiFFBrc3r3ypKaldZJtjCORX9LTZRzt
0/JCSVIZc4GXx0peGKqd+f85UyrY/KOyUSHogOC/XoBp9Ppxv6ITbdunsS/LXEcMUBVqEdQD4ylh
x6K1NTC/u8hl9v0MgK+xMQKaiV7BuNYbgGgkaViABcNH0xVzcc5rMTHUkrABbGDFGKyAFniGQ1qu
/rqHibNNyvYbP/2uiqvgC0tQl6u8VkVbXpWrkvO+bFCqxlaJlCoDc2f3rIO321SZEvoFbsYNgPLd
+mIAkSCnH3Z3gm/bI8bqVkFaHblKyQuSfFsi6RQAAACb87b26dV0GjHmMJnE0Tk8CzNmhg==</Dsn>
<ConnectionType>Default</ConnectionType>
<LogonUser></LogonUser>
<LogonDomain></LogonDomain>
<LogonCred></LogonCred>
<InstanceId>MSRS13.MSSQLSERVER</InstanceId>
<InstallationID>{cd920604-a5c7-4554-b2a0-aadc04312fe5}</InstallationID>
<Add Key="SecureConnectionLevel" Value="0"/>
<Add Key="SecureConnectionLevel" Value="0"/>
<Add Key="DisableSecureFormsAuthenticationCookie" Value="false"/>
<Add Key="CleanupCycleMinutes" Value="10"/>
<Add Key="MaxActiveReqForOneUser" Value="20"/>
<Add Key="DatabaseQueryTimeout" Value="120"/>
<Add Key="RunningRequestsScavengerCycle" Value="60"/>
<Add Key="RunningRequestsDbCycle" Value="60"/>
<Add Key="RunningRequestsAge" Value="30"/>
<Add Key="MaxScheduleWait" Value="5"/>
<Add Key="DisplayErrorLink" Value="true"/>
<Add Key="WebServiceUseFileShareStorage" Value="false"/>
<!-- <Add Key="ProcessTimeout" Value="150" /> -->
<!-- <Add Key="ProcessTimeoutGcExtension" Value="30" /> -->
<!-- <Add Key="WatsonFlags" Value="0x0430" /> full dump-->
<!-- <Add Key="WatsonFlags" Value="0x0428" /> minidump -->
<!-- <Add Key="WatsonFlags" Value="0x0002" /> no dump-->
<Add Key="WatsonFlags" Value="0x0428"/>
<Add Key="WatsonDumpOnExceptions"
Value="Microsoft.ReportingServices.Diagnostics.Utilities.InternalCatalogException,Microsoft.ReportingService
s.Modeling.InternalModelingException,Microsoft.ReportingServices.ReportProcessing.UnhandledReportRenderingEx
ception"/>
<Add Key="WatsonDumpExcludeIfContainsExceptions"
Value="System.Threading.ThreadAbortException,System.Web.UI.ViewStateException,System.OutOfMemoryException,Sy
stem.Web.HttpException,System.IO.IOException,System.IO.FileLoadException,Microsoft.SharePoint.SPException,Mi
crosoft.ReportingServices.WmiProvider.WMIProviderException,System.AppDomainUnloadedException"/>
<URLReservations>
<Application>
<Name>ReportServerWebService</Name>
<VirtualDirectory>ReportServer</VirtualDirectory>
<URLs>
<URL>
<UrlString>https://+:80</UrlString>
<AccountSid>S-1-5-80-2885764129-887777008-271615777-1616004480-2722851051</AccountSid>
<AccountName>NT SERVICE\ReportServer</AccountName>
</URL>
</URLs>
</Application>
<Application>
<Name>ReportServerWebApp</Name>
<VirtualDirectory>Reports</VirtualDirectory>
<URLs>
<URL>
<UrlString>https://+:80</UrlString>
<AccountSid>S-1-5-80-2885764129-887777008-271615777-1616004480-2722851051</AccountSid>
<AccountName>NT SERVICE\ReportServer</AccountName>
</URL>
</URLs>
</Application>
</URLReservations>
<Authentication>
<AuthenticationTypes>
<RSWindowsNTLM/>
</AuthenticationTypes>
<RSWindowsExtendedProtectionLevel>Off</RSWindowsExtendedProtectionLevel>
<RSWindowsExtendedProtectionScenario>Proxy</RSWindowsExtendedProtectionScenario>
<EnableAuthPersistence>true</EnableAuthPersistence>
</Authentication>
<Service>
<IsSchedulingService>True</IsSchedulingService>
<IsNotificationService>True</IsNotificationService>
<IsEventService>True</IsEventService>
<PollingInterval>10</PollingInterval>
<WindowsServiceUseFileShareStorage>False</WindowsServiceUseFileShareStorage>
<MemorySafetyMargin>80</MemorySafetyMargin>
<MemoryThreshold>90</MemoryThreshold>
<RecycleTime>720</RecycleTime>
<MaxAppDomainUnloadTime>30</MaxAppDomainUnloadTime>
<MaxQueueThreads>0</MaxQueueThreads>
<UrlRoot>
</UrlRoot>
<UnattendedExecutionAccount>
<UserName></UserName>
<Password></Password>
<Domain></Domain>
</UnattendedExecutionAccount>
<PolicyLevel>rssrvpolicy.config</PolicyLevel>
<IsWebServiceEnabled>True</IsWebServiceEnabled>
<IsReportManagerEnabled>True</IsReportManagerEnabled>
<FileShareStorageLocation>
<Path>
</Path>
</FileShareStorageLocation>
<DefaultFileShareAccount>
<Domain></Domain>
<UserName></UserName>
<Password></Password>
</DefaultFileShareAccount>
</Service>
<UI>
<ReportServerUrl>
</ReportServerUrl>
<PageCountMode>Estimate</PageCountMode>
</UI>
<Extensions>
<Delivery>
<Extension Name="Report Server FileShare"
Type="Microsoft.ReportingServices.FileShareDeliveryProvider.FileShareProvider,ReportingServicesFileShareDeli
veryProvider">
<MaxRetries>3</MaxRetries>
<SecondsBeforeRetry>900</SecondsBeforeRetry>
<Configuration>
<FileShareConfiguration>
<ExcludedRenderFormats>
<RenderingExtension>HTMLOWC</RenderingExtension>
<RenderingExtension>NULL</RenderingExtension>
<RenderingExtension>RGDI</RenderingExtension>
</ExcludedRenderFormats>
</FileShareConfiguration>
</Configuration>
</Extension>
<Extension Name="Report Server Email"
Type="Microsoft.ReportingServices.EmailDeliveryProvider.EmailProvider,ReportingServicesEmailDeliveryProvider
">
<MaxRetries>3</MaxRetries>
<SecondsBeforeRetry>900</SecondsBeforeRetry>
<Configuration>
<RSEmailDPConfiguration>
<SMTPServer></SMTPServer>
<SMTPServerPort>
</SMTPServerPort>
<SMTPAccountName>
</SMTPAccountName>
<SMTPConnectionTimeout>
</SMTPConnectionTimeout>
<SMTPServerPickupDirectory>
</SMTPServerPickupDirectory>
<SMTPUseSSL>False</SMTPUseSSL>
<SendUsing>2</SendUsing>
<SMTPAuthenticate>0</SMTPAuthenticate>
<SendUserName></SendUserName>
<SendPassword></SendPassword>
<From></From>
<EmbeddedRenderFormats>
<RenderingExtension>MHTML</RenderingExtension>
</EmbeddedRenderFormats>
<PrivilegedUserRenderFormats>
</PrivilegedUserRenderFormats>
<ExcludedRenderFormats>
<ExcludedRenderFormats>
<RenderingExtension>HTMLOWC</RenderingExtension>
<RenderingExtension>NULL</RenderingExtension>
<RenderingExtension>RGDI</RenderingExtension>
</ExcludedRenderFormats>
<SendEmailToUserAlias>True</SendEmailToUserAlias>
<DefaultHostName>
</DefaultHostName>
<PermittedHosts>
</PermittedHosts>
</RSEmailDPConfiguration>
</Configuration>
</Extension>
<Extension Name="Report Server DocumentLibrary"
Type="Microsoft.ReportingServices.SharePoint.SharePointDeliveryExtension.DocumentLibraryProvider,ReportingSe
rvicesSharePointDeliveryExtension">
<MaxRetries>3</MaxRetries>
<SecondsBeforeRetry>900</SecondsBeforeRetry>
<Configuration>
<DocumentLibraryConfiguration>
<ExcludedRenderFormats>
<RenderingExtension>HTMLOWC</RenderingExtension>
<RenderingExtension>NULL</RenderingExtension>
<RenderingExtension>RGDI</RenderingExtension>
</ExcludedRenderFormats>
</DocumentLibraryConfiguration>
</Configuration>
</Extension>
<Extension Name="NULL"
Type="Microsoft.ReportingServices.NullDeliveryProvider.NullProvider,ReportingServicesNullDeliveryProvider"/>
<Extension Name="Report Server PowerBI"
Type="Microsoft.ReportingServices.PowerBIDeliveryProvider.PowerBIDeliveryProvider,ReportingServicesPowerBIDe
liveryProvider">
<MaxRetries>3</MaxRetries>
<SecondsBeforeRetry>900</SecondsBeforeRetry>
<Configuration>
<PowerBIDeliveryConfiguration>
</PowerBIDeliveryConfiguration>
</Configuration>
</Extension>
</Delivery>
<DeliveryUI>
<Extension Name="Report Server Email"
Type="Microsoft.ReportingServices.EmailDeliveryProvider.EmailDeliveryProviderControl,ReportingServicesEmailD
eliveryProvider">
<DefaultDeliveryExtension>True</DefaultDeliveryExtension>
<Configuration>
<RSEmailDPConfiguration>
<DefaultRenderingExtension>MHTML</DefaultRenderingExtension>
</RSEmailDPConfiguration>
</Configuration>
</Extension>
<Extension Name="Report Server FileShare"
Type="Microsoft.ReportingServices.FileShareDeliveryProvider.FileShareUIControl,ReportingServicesFileShareDel
iveryProvider"/>
<Extension Name="Report Server PowerBI"
Type="Microsoft.ReportingServices.PowerBIDeliveryProvider.PowerBIDeliveryUIControl,ReportingServicesPowerBID
eliveryProvider"/>
</DeliveryUI>
<Render>
<Extension Name="WORDOPENXML"
Type="Microsoft.ReportingServices.Rendering.WordRenderer.WordOpenXmlRenderer.WordOpenXmlDocumentRenderer,Mic
rosoft.ReportingServices.WordRendering"/>
<Extension Name="WORD"
Type="Microsoft.ReportingServices.Rendering.WordRenderer.WordDocumentRenderer,Microsoft.ReportingServices.Wo
rdRendering" Visible="false"/>
<Extension Name="EXCELOPENXML"
Type="Microsoft.ReportingServices.Rendering.ExcelOpenXmlRenderer.ExcelOpenXmlRenderer,Microsoft.ReportingSer
vices.ExcelRendering"/>
<Extension Name="EXCEL"
<Extension Name="EXCEL"
Type="Microsoft.ReportingServices.Rendering.ExcelRenderer.ExcelRenderer,Microsoft.ReportingServices.ExcelRen
dering" Visible="false"/>
<Extension Name="PPTX"
Type="Microsoft.ReportingServices.Rendering.PowerPointRendering.PptxRenderingExtension,Microsoft.ReportingSe
rvices.PowerPointRendering"/>
<Extension Name="PDF"
Type="Microsoft.ReportingServices.Rendering.ImageRenderer.PDFRenderer,Microsoft.ReportingServices.ImageRende
ring"/>
<Extension Name="IMAGE"
Type="Microsoft.ReportingServices.Rendering.ImageRenderer.ImageRenderer,Microsoft.ReportingServices.ImageRen
dering"/>
<Extension Name="MHTML"
Type="Microsoft.ReportingServices.Rendering.HtmlRenderer.MHtmlRenderingExtension,Microsoft.ReportingServices
.HtmlRendering">
<Configuration>
<DeviceInfo>
<DataVisualizationFitSizing>Approximate</DataVisualizationFitSizing>
</DeviceInfo>
</Configuration>
</Extension>
<Extension Name="CSV"
Type="Microsoft.ReportingServices.Rendering.DataRenderer.CsvReport,Microsoft.ReportingServices.DataRendering
"/>
<Extension Name="XML"
Type="Microsoft.ReportingServices.Rendering.DataRenderer.XmlDataReport,Microsoft.ReportingServices.DataRende
ring"/>
<Extension Name="ATOM"
Type="Microsoft.ReportingServices.Rendering.DataRenderer.AtomDataReport,Microsoft.ReportingServices.DataRend
ering"/>
<Extension Name="NULL"
Type="Microsoft.ReportingServices.Rendering.NullRenderer.NullReport,Microsoft.ReportingServices.NullRenderin
g" Visible="false"/>
<Extension Name="RGDI"
Type="Microsoft.ReportingServices.Rendering.ImageRenderer.RGDIRenderer,Microsoft.ReportingServices.ImageRend
ering" Visible="false"/>
<Extension Name="HTML4.0"
Type="Microsoft.ReportingServices.Rendering.HtmlRenderer.Html40RenderingExtension,Microsoft.ReportingService
s.HtmlRendering" Visible="false">
<Configuration>
<DeviceInfo>
<DataVisualizationFitSizing>Approximate</DataVisualizationFitSizing>
</DeviceInfo>
</Configuration>
</Extension>
<Extension Name="HTML5"
Type="Microsoft.ReportingServices.Rendering.HtmlRenderer.Html5RenderingExtension,Microsoft.ReportingServices
.HtmlRendering" Visible="false">
<Configuration>
<DeviceInfo>
<DataVisualizationFitSizing>Approximate</DataVisualizationFitSizing>
</DeviceInfo>
</Configuration>
</Extension>
<Extension Name="RPL"
Type="Microsoft.ReportingServices.Rendering.RPLRendering.RPLRenderer,Microsoft.ReportingServices.RPLRenderin
g" Visible="false" LogAllExecutionRequests="false"/>
</Render>
<!--
For the SQLPDW extension to work, install the SQL Server PDW Client Tools on the report server.
NOTE: The SQLPDW extension is deprecated. It supports old versions of SQL Server Parallel Data
Warehouse (PDW).
To connect to Analytics Platform System, use the SQL (SQL Server) extension.
For the ORACLE extension to work, install the Oracle Data Provider for NET (ODP.NET) on the report
server.
For TERADATA extension to work, install the .NET Provider for Teradata on the report server.
-->
<Data>
<Extension Name="SQL"
Type="Microsoft.ReportingServices.DataExtensions.SqlConnectionWrapper,Microsoft.ReportingServices.DataExtens
Type="Microsoft.ReportingServices.DataExtensions.SqlConnectionWrapper,Microsoft.ReportingServices.DataExtens
ions"/>
<Extension Name="SQLAZURE"
Type="Microsoft.ReportingServices.DataExtensions.SqlAzureConnectionWrapper,Microsoft.ReportingServices.DataE
xtensions"/>
<Extension Name="SQLPDW"
Type="Microsoft.ReportingServices.DataExtensions.SqlDwConnectionWrapper,Microsoft.ReportingServices.DataExte
nsions"/>
<Extension Name="OLEDB-MD"
Type="Microsoft.ReportingServices.DataExtensions.AdoMdConnection,Microsoft.ReportingServices.DataExtensions"
/>
<Extension Name="SHAREPOINTLIST"
Type="Microsoft.ReportingServices.DataExtensions.SharePointList.SPListConnection,Microsoft.ReportingServices
.DataExtensions"/>
<Extension Name="ORACLE"
Type="Microsoft.ReportingServices.DataExtensions.OracleClientConnectionWrapper,Microsoft.ReportingServices.D
ataExtensions"/>
<Extension Name="ESSBASE"
Type="Microsoft.ReportingServices.DataExtensions.Essbase.EssbaseConnection,Microsoft.ReportingServices.DataE
xtensions.Essbase"/>
<Extension Name="SAPBW"
Type="Microsoft.ReportingServices.DataExtensions.SapBw.SapBwConnection,Microsoft.ReportingServices.DataExten
sions.SapBw"/>
<Extension Name="TERADATA"
Type="Microsoft.ReportingServices.DataExtensions.TeradataConnectionWrapper,Microsoft.ReportingServices.DataE
xtensions"/>
<Extension Name="OLEDB"
Type="Microsoft.ReportingServices.DataExtensions.OleDbConnectionWrapper,Microsoft.ReportingServices.DataExte
nsions"/>
<Extension Name="ODBC"
Type="Microsoft.ReportingServices.DataExtensions.OdbcConnectionWrapper,Microsoft.ReportingServices.DataExten
sions"/>
<Extension Name="XML"
Type="Microsoft.ReportingServices.DataExtensions.XmlDPConnection,Microsoft.ReportingServices.DataExtensions"
/>
</Data>
<SemanticQuery>
<Extension Name="SQL"
Type="Microsoft.ReportingServices.SemanticQueryEngine.Sql.MSSQL.MSSqlSQCommand,Microsoft.ReportingServices.S
emanticQueryEngine">
<Configuration>
<EnableMathOpCasting>False</EnableMathOpCasting>
</Configuration>
</Extension>
<Extension Name="SQLAZURE"
Type="Microsoft.ReportingServices.SemanticQueryEngine.Sql.MSSQL.MSSqlSQCommand,Microsoft.ReportingServices.S
emanticQueryEngine">
<Configuration>
<EnableMathOpCasting>False</EnableMathOpCasting>
</Configuration>
</Extension>
<Extension Name="SQLPDW"
Type="Microsoft.ReportingServices.SemanticQueryEngine.Sql.MSSQLADW.MSSqlAdwSQCommand,Microsoft.ReportingServ
ices.SemanticQueryEngine">
<Configuration>
<EnableMathOpCasting>False</EnableMathOpCasting>
</Configuration>
</Extension>
<Extension Name="ORACLE"
Type="Microsoft.ReportingServices.SemanticQueryEngine.Sql.Oracle.OraSqlSQCommand,Microsoft.ReportingServices
.SemanticQueryEngine">
<Configuration>
<EnableMathOpCasting>True</EnableMathOpCasting>
<DisableNO_MERGEInLeftOuters>False</DisableNO_MERGEInLeftOuters>
<EnableUnistr>False</EnableUnistr>
<DisableTSTruncation>False</DisableTSTruncation>
</Configuration>
</Extension>
<Extension Name="TERADATA"
Type="Microsoft.ReportingServices.SemanticQueryEngine.Sql.Teradata.TdSqlSQCommand,Microsoft.ReportingService
Type="Microsoft.ReportingServices.SemanticQueryEngine.Sql.Teradata.TdSqlSQCommand,Microsoft.ReportingService
s.SemanticQueryEngine">
<Configuration>
<EnableMathOpCasting>True</EnableMathOpCasting>
<ReplaceFunctionName>oREPLACE</ReplaceFunctionName>
</Configuration>
</Extension>
<Extension Name="OLEDB-MD"
Type="Microsoft.AnalysisServices.Modeling.QueryExecution.ASSemanticQueryCommand,Microsoft.AnalysisServices.M
odeling"/>
</SemanticQuery>
<ModelGeneration>
<Extension Name="SQL"
Type="Microsoft.ReportingServices.SemanticQueryEngine.Sql.MSSQL.MsSqlModelGenerator,Microsoft.ReportingServi
ces.SemanticQueryEngine"/>
<Extension Name="SQLAZURE"
Type="Microsoft.ReportingServices.SemanticQueryEngine.Sql.MSSQL.MsSqlModelGenerator,Microsoft.ReportingServi
ces.SemanticQueryEngine"/>
<Extension Name="ORACLE"
Type="Microsoft.ReportingServices.SemanticQueryEngine.Sql.Oracle.OraSqlModelGenerator,Microsoft.ReportingSer
vices.SemanticQueryEngine"/>
<Extension Name="TERADATA"
Type="Microsoft.ReportingServices.SemanticQueryEngine.Sql.Teradata.TdSqlModelGenerator,Microsoft.ReportingSe
rvices.SemanticQueryEngine"/>
<Extension Name="OLEDB-MD"
Type="Microsoft.AnalysisServices.Modeling.Generation.ModelGeneratorExtention,Microsoft.AnalysisServices.Mode
ling"/>
</ModelGeneration>
<Security>
<Extension Name="Windows" Type="Microsoft.ReportingServices.Authorization.WindowsAuthorization,
Microsoft.ReportingServices.Authorization"/>
</Security>
<Authentication>
<Extension Name="Windows" Type="Microsoft.ReportingServices.Authentication.WindowsAuthentication,
Microsoft.ReportingServices.Authorization"/>
</Authentication>
<EventProcessing>
<Extension Name="SnapShot Extension"
Type="Microsoft.ReportingServices.Library.HistorySnapShotCreatedHandler,ReportingServicesLibrary">
<Event>
<Type>ReportHistorySnapshotCreated</Type>
</Event>
</Extension>
<Extension Name="Timed Subscription Extension"
Type="Microsoft.ReportingServices.Library.TimedSubscriptionHandler,ReportingServicesLibrary">
<Event>
<Type>TimedSubscription</Type>
</Event>
</Extension>
<Extension Name="Cache Refresh Plan Extension"
Type="Microsoft.ReportingServices.Library.CacheRefreshPlanHandler,ReportingServicesLibrary">
<Event>
<Type>RefreshCache</Type>
</Event>
</Extension>
<Extension Name="Shared Dataset Cache Update Extension"
Type="Microsoft.ReportingServices.Library.SharedDatasetCacheUpdatePlanHandler,ReportingServicesLibrary">
<Event>
<Type>SharedDatasetCacheUpdate</Type>
</Event>
</Extension>
<Extension Name="Cache Update Extension"
Type="Microsoft.ReportingServices.Library.ReportExecutionSnapshotUpdateEventHandler,ReportingServicesLibrary
">
<Event>
<Type>SnapshotUpdated</Type>
</Event>
</Extension>
</EventProcessing>
</Extensions>
</Extensions>
<MapTileServerConfiguration>
<MaxConnections>2</MaxConnections>
<Timeout>10</Timeout>
<AppID>(Default)</AppID>
<CacheLevel>Default</CacheLevel>
</MapTileServerConfiguration>
</Configuration>

Default Configuration File for a SharePoint Mode Report Server


The rsreportserver.config file is installed to the following location by default:
C:\Program Files\Common Files\Microsoft Shared\Web Ser ver
Extensions\15\WebSer vices\Repor ting

<Configuration>
<Dsn />
<ConnectionType>Default</ConnectionType>
<LogonUser>
</LogonUser>
<LogonDomain>
</LogonDomain>
<LogonCred>
</LogonCred>
<InstanceId>MSRS12.@Sharepoint</InstanceId>
<Add Key="SecureConnectionLevel" Value="0" />
<Add Key="CleanupCycleMinutes" Value="10" />
<Add Key="MaxActiveReqForOneUser" Value="20" />
<Add Key="AlertingCleanupCycleMinutes" Value="20" />
<Add Key="AlertingDataCleanupMinutes" Value="360" />
<Add Key="AlertingExecutionLogCleanupMinutes" Value="10080" />
<Add Key="AlertingMaxDataRetentionDays" Value="180" />
<Add Key="RunningRequestsScavengerCycle" Value="60" />
<Add Key="RunningRequestsDbCycle" Value="60" />
<Add Key="RunningRequestsAge" Value="30" />
<Add Key="MaxScheduleWait" Value="5" />
<Add Key="DisplayErrorLink" Value="true" />
<Add Key="WebServiceUseFileShareStorage" Value="false" />
<!-- <Add Key="ProcessTimeout" Value="150" /> -->
<!-- <Add Key="ProcessTimeoutGcExtension" Value="30" /> -->
<!-- <Add Key="WatsonFlags" Value="0x0430" /> full dump-->
<!-- <Add Key="WatsonFlags" Value="0x0428" /> minidump -->
<!-- <Add Key="WatsonFlags" Value="0x0002" /> no dump-->
<Add Key="WatsonFlags" Value="0x0428" />
<Add Key="WatsonDumpOnExceptions"
Value="Microsoft.ReportingServices.Diagnostics.Utilities.InternalCatalogException,Microsoft.ReportingService
s.Modeling.InternalModelingException,Microsoft.ReportingServices.ReportProcessing.UnhandledReportRenderingEx
ception" />
<Add Key="WatsonDumpExcludeIfContainsExceptions"
Value="System.Threading.ThreadAbortException,System.Web.UI.ViewStateException,System.OutOfMemoryException,Sy
stem.Web.HttpException,System.IO.IOException,System.IO.FileLoadException,Microsoft.SharePoint.SPException,Mi
crosoft.ReportingServices.WmiProvider.WMIProviderException" />
<RStrace>
<add name="FileName" value="ReportServerService" />
<add name="FileSizeLimitMb" value="32" />
<add name="KeepFilesForDays" value="14" />
<add name="Prefix" value="tid, time" />
<add name="TraceListeners" value="file" />
<add name="TraceFileMode" value="unique" />
<add name="Components" value="all:3" />
</RStrace>
<URLReservations>
<Application>
<Name>ReportServerWebService</Name>
<VirtualDirectory>ReportServer</VirtualDirectory>
<VirtualDirectory>ReportServer</VirtualDirectory>
<URLs>
<URL>
<UrlString>https://+:80</UrlString>
<AccountSid>
</AccountSid>
<AccountName>
</AccountName>
</URL>
</URLs>
</Application>
<Application>
<Name>ReportManager</Name>
<VirtualDirectory>Reports</VirtualDirectory>
<URLs>
<URL>
<UrlString>https://+:80</UrlString>
<AccountSid>
</AccountSid>
<AccountName>
</AccountName>
</URL>
</URLs>
</Application>
</URLReservations>
<Authentication>
<AuthenticationTypes>
<RSWindowsNTLM />
</AuthenticationTypes>
<EnableAuthPersistence>true</EnableAuthPersistence>
</Authentication>
<Service>
<IsSchedulingService>True</IsSchedulingService>
<IsNotificationService>True</IsNotificationService>
<IsEventService>True</IsEventService>
<IsAlertingService>True</IsAlertingService>
<PollingInterval>10</PollingInterval>
<WindowsServiceUseFileShareStorage>False</WindowsServiceUseFileShareStorage>
<MemorySafetyMargin>80</MemorySafetyMargin>
<MemoryThreshold>90</MemoryThreshold>
<RecycleTime>720</RecycleTime>
<MaxAppDomainUnloadTime>30</MaxAppDomainUnloadTime>
<MaxQueueThreads>0</MaxQueueThreads>
<UrlRoot>
</UrlRoot>
<PolicyLevel>rssrvpolicy.config</PolicyLevel>
<IsWebServiceEnabled>True</IsWebServiceEnabled>
<FileShareStorageLocation>
<Path>
</Path>
</FileShareStorageLocation>
</Service>
<UI>
<ReportServerUrl>
</ReportServerUrl>
<PageCountMode>Estimate</PageCountMode>
</UI>
<MapTileServerConfiguration>
<MaxConnections>2</MaxConnections>
<Timeout>10</Timeout>
<AppID>(Default)</AppID>
<CacheLevel>Default</CacheLevel>
</MapTileServerConfiguration>
</Configuration>

See Also
Modify a Reporting Services Configuration File (RSreportserver.config)
Configure Available Memory for Report Server Applications
Reporting Services Configuration Files
Initialize a Report Server (Report Server Configuration Manager)
Store Encrypted Report Server Data (Report Server Configuration Manager)
Report Server Configuration Manager (Native Mode)
More questions? Try the Reporting Services forum
ReportingServicesService Configuration File
11/2/2020 • 2 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services (2016)
The ReportingServicesService.exe.config file includes settings that configure tracing.

File location
This file could be located in either of the paths below:

\Reporting Services\Report Server\Bin


\Program Files\Microsoft SQL Server Reporting Services\SSRS\ReportServer\bin

Editing guidelines
You can modify this file to rename the log file or to increase or decrease trace levels. Do not modify any of the
other settings. For instructions, see Modify a Reporting Services Configuration File (RSreportserver.config). For
more information about trace logs, see Report Server Service Trace Log.

Example configuration
The following example shows the settings and default values found in the ReportingServicesService.exe.config
file.
<configSections>
<section name="RStrace"
type="Microsoft.ReportingServices.Diagnostics.RSTraceSectionHandler,Microsoft.ReportingServices.Diagnostics"
/>
</configSections>
\<system.diagnostics>
<switches>
<add name="DefaultTraceSwitch" value="3" />
</switches>
\</system.diagnostics>
<RStrace>
<add name="FileName" value="ReportServerService_" />
<add name="FileSizeLimitMb" value="32" />
<add name="KeepFilesForDays" value="14" />
<add name="Prefix" value="tid, time" />
<add name="TraceListeners" value="debugwindow, file" />
<add name="TraceFileMode" value="unique" />
<add name="Components" value="all" />
</RStrace>
<runtime>
<alwaysFlowImpersonationPolicy enabled="true"/>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.ReportingServices.Interfaces"
publicKeyToken="89845dcd8080cc91"
culture="neutral" />
<bindingRedirect oldVersion="8.0.242.0"
newVersion="10.0.0.0"/>
<bindingRedirect oldVersion="9.0.242.0"
newVersion="10.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
<gcServer enabled="true" />
</runtime>

Configuration settings
The following table provides information about specific settings. Settings are presented in the order in which
they appear in the configuration file.

SET T IN G DESC RIP T IO N

RStrace Specifies namespaces used for errors and tracing.

DefaultTraceSwitch Specifies the level of information that is reported to the


ReportServerService trace log. Each level includes the
information reported by all lower-numbered levels. Disabling
tracing is not recommended. Valid values include:

0= Disables tracing

1= Exceptions and restarts

2= Exceptions, restarts, warnings

3= Exceptions, restarts, warnings, status messages (default)

4= Verbose mode
SET T IN G DESC RIP T IO N

FileName Specifies the first portion of the log file name. The value
specified by Prefix completes the rest of the name. By
default, the name is ReportServerService_.

FileSizeLimitMb Specifies an upper limit on trace log size. The file is measured
in megabytes. Valid values are 0 to a maximum integer. The
default value is 32.

KeepFilesForDays Specifies the number of days after which a trace log file will
be deleted. Valid values are 0 to a maximum integer. The
default value is 14.

Prefix Specifies a generated value that distinguishes one log


instance from another. By default, timestamp values are
appended to trace log file names. This value is set to " tid,
time ". Do not modify this setting.

TraceListeners Specifies a target for outputting trace log content. You can
specify multiple targets using a comma to separate each
one. Valid values include:

DebugWindow (default)

File (default)

StdOut

TraceFileMode Specifies whether trace logs contain data for a 24-hour


period. You should have one unique trace log for each
component on each day. This value is set to "Unique
(default)". Do not modify this value.

Components Specifies the components for which trace logs are created.
The default value is all. Other valid values for this setting
include the names of internal components. Do not modify
this value.

Runtime Specifies configuration settings that support backward


compatibility with the previous version. Runtime settings are
used to redirect requests that target the previous version of
Microsoft.ReportingServices.Interfaces to the new version.

All of the configuration settings in this section are described


in the .NET Framework product documentation. For more
information, search for "Runtime Schema Settings" on the
MSDN Web site or in the .NET Framework documentation.

See also
Reporting Services Configuration Files
Report Server Service Trace Log
RSReportDesigner Configuration File
11/2/2020 • 3 minutes to read • Edit Online

The RSReportDesigner.config file stores settings about the rendering and data processing extensions available to
Report Designer. Data processing extension information is stored in the Data element. Rendering extension
information is stored in the Render element. The Designer element enumerates the query builders that are
used in Report Designer.
Report Designer uses embedded report server functionality to preview reports. Server-related settings can be
specified to support local server-side processing for preview operations. For more information about report
server configuration settings, see RsReportServer.config Configuration File.

File Location
This file is located in the \Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies.

Editing Guidelines
Do not modify the settings in this file unless you are deploying or removing a custom extension, disabling
caching during preview, or registering a new data processing extension after a Service Pack upgrade.
Specific instructions for editing configuration files are available if you are customizing rendering extension
settings. For more information, see Customize Rendering Extension Parameters in RSReportServer.Config.
For general instructions on how to edit configuration files, see Modify a Reporting Services Configuration File
(RSreportserver.config).

Example Configuration File


The following example illustrates the format of the RSReportDesigner.config file.

<Configuration>
<Add Key="SecureConnectionLevel" Value="0" />
<Add Key="InstanceName" Value="Microsoft.ReportingServices.PreviewServer" />
<Add Key="SessionCookies" Value="true" />
<Add Key="SessionTimeoutMinutes" Value="3" />
<Add Key="PolicyLevel" Value="rspreviewpolicy.config" />
<Add Key="CacheDataForPreview" Value="true" />
<Extensions>
<Render> . . . </Render>
<Data> . . . </Data>
<Designer> . . . </Designer>

Configuration Settings
SET T IN G DESC RIP T IO N

SecureConnectionLevel Specifies the degree of security of the Web service


connection. Valid values range from 0 through 3, where 0 is
least secure. For more information, see Using Secure Web
Service Methods.
SET T IN G DESC RIP T IO N

InstanceName An identifier for the preview server. Do not modify this value.

SessionCookies Specifies whether the report server uses browser cookies to


maintain session information. Valid values include true and
false . The default is true . If you set this value to false,
session data is stored in the repor tser ver tempdb
database.

SessionTimeoutMinutes Specifies the period for which a session cookie is valid. The
default is 3 minutes.

PolicyLevel Specifies the security policy configuration file. The valid value
is Rspreviewpolicy.config. For more information, see Using
Reporting Services Security Policy Files.

CacheDataForPreview When set to True , the Report Designer stores data in a


cache file on the local computer. Valid values are True
(default) and False . For more information, see Previewing
Reports.

Render Enumerates the rendering extensions that are available to


Report Designer for preview purposes. The set of rendering
extensions that are used for preview should be identical to
those installed with the report server.

Name specifies the rendering extension. If you are invoking


a rendering extension through code, use this value to call a
specific extension.

Type specifies the fully qualified class name of the extension


class, plus the library name, comma separated.

Visible specifies whether the name appears in any user


interface. This value can be True (default) or False . If True , it
appears in user interfaces.

Data Enumerates the data processing extensions that are available


to Report Designer for the purpose of connecting to data
sources that provide data to reports. The set of data
processing extensions used in Report Designer may be
identical to those installed with the report server. If you are
adding or removing custom extensions, see Deploying a
Data Processing Extension.

Name specifies the data processing extension.

Type specifies the fully qualified class name of the extension


class, plus the library name, comma separated.

Designer Enumerates the query builders that are available to Report


Designer. Query builders provide a user interface for
constructing queries that retrieve data used in reports.
Query builders may vary for different data processing
extensions. By default, Reporting Services provides one
visual data tool user interface for all data processing
extensions that are included in the product. However, if you
are building or using third-party data processing extensions,
other query builder interfaces may apply.
SET T IN G DESC RIP T IO N

PreviewProcessingSer viceStar tupTimeoutSeconds Specifies the period to wait for the preview processing
service to start up before showing an error message. The
default is 15 seconds.

See Also
Reporting Services Configuration Files
Query Design Tools (SSRS)
Modify a Reporting Services Configuration File
(RSreportserver.config)
11/2/2020 • 4 minutes to read • Edit Online

Reporting Services stores application settings in a set of configuration files. Setup creates the configuration files
for each report server instance you install. Within each file, values are either set during installation or when you
use tools and applications to configure a server for operation. In some cases, you must modify a file directly to
add or configure advanced settings. Configuration settings are specified as either XML elements or attributes. If
you understand XML and configuration files, you can use a text or code editor to modify user-definable settings.
Some configuration settings can be set only through a tool. Settings that contain encrypted values must be
modified through the Reporting Services Configuration tool, the Setup program, or the rsconfig command line
utility. You must be a member of the local Administrators group to run these tools.'

IMPORTANT
Use caution when modifying configuration files. If you modify a setting that is reserved for internal use, you may disable
your installation. Generally, modifying configuration settings is not recommended unless you are trying to solve a specific
problem. For more information about which settings are safe to change, see RsReportServer.config Configuration File or
RSReportDesigner Configuration File. For more information about configuration files, see the Microsoft.NET Framework
product documentation.

In this topic:
Reading and Using Configuration Values
About Default Values
Deleting Configuration Settings
To Edit a Reporting Services Configuration File

Reading and Using Configuration Values


A report server reads the configuration files when the service starts and whenever the configuration file is
saved. New and revised values take effect in a new application domain after the current application domain
expires. Whenever possible, requests that are still processing in the current application domain are allowed to
complete. However, a few settings require an immediate application domain recycle operation. In this case, all
requests that are in process are restarted in a new application domain.
If the report server detects an invalid value, the report server logs an error to the Windows application log and
either fails to start or uses a default value, depending on the error:
If the error is malformed XML, the report server will not start. If the report server is running when you
introduce the error, the report server ignores the invalid configuration file until the report server restarts
or the application domain is recycled. Once the error is detected, the report server will no longer start.
If the error is an invalid configuration value, the server will use internal default values and log an error to
the trace log files. In the few cases where internal default values are not available, the server will return
the rsServerConfigurationError error if the invalid configuration setting is critical to server operations.
Errors about missing or invalid critical settings are returned to the client application in an HTML error
page and logged to the event log.
All configuration file changes, including successful changes, are recorded in the report server trace log file. Only
errors are logged to the application event log.

About Default Values


Most configuration settings have default values that are specified internally in the report server. The report
server will use these values if a user-defined value is invalid or not specified. If a default value must be used due
to an invalid configuration setting, an error is written to the trace log file.

Deleting Configuration Settings


For configuration settings that have default values, removing the setting from the configuration file has no
effect. Most configuration settings are actually defined and configured internally. If you delete an item from the
configuration file, the internal copy is still available and uses the default value that is defined for it.

To Edit a Reporting Services Configuration File


1. Find the configuration file you want to edit:
RSRepor tSer ver.config is located in the following folder:

C:\Program Files\Microsoft SQL Server\MSRS13.MSSQLSERVER\Reporting Services\ReportServer

Applies to: January 2017 Technical Preview of Power BI reports in SQL Server Reporting Services

C:\Program Files\Microsoft SQL Server Reporting Services\RSServer\ReportServer

RSRepor tSer verSer vices.exe.config is located in the following folder:

NOTE
This is not available with the January 2017 Technical Preview of Power BI reports in SQL Server Reporting
Services.

C:\Program Files\Microsoft SQL Server\MSRS13.MSSQLSERVER\Reporting Services\ReportServer\bin

RSRepor tDesigner.config is located in the following folder:

C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies

2. Save a copy of the file in case you need to roll back your changes.
3. Open the original file in Notepad or a code editor. Do not use Textpad; it sets the file length before the file
is saved, causing an invalid character error to be written to the trace log file.
4. Type the element or value that you want to add or use. Elements are case-sensitive. If you are adding an
element, be sure to use the correct upper and lower case letters. Specific instructions for editing
configuration files are available if you are customizing rendering extension, authentication extensions, or
data processing extensions:
Authentication with the Report Server
Configure the Web Portal to Pass Custom Authentication Cookies
Customize Rendering Extension Parameters in RSReportServer.Config
5. Save the file.
6. Check the trace log files to verify that errors did not occur. If you see error conditions, a setting or its
value is specified incorrectly. Review the RsReportServer.config Configuration File for valid values for any
setting that is causing an error. For more information about how to view the trace log, see Report Server
Service Trace Log.

See Also
RsReportServer.config Configuration File
ReportingServicesService Configuration File
RSReportDesigner Configuration File
Deploying a Data Processing Extension
Deploying a Delivery Extension
Deploying a Rendering Extension
Reporting Services Configuration Files
Reporting Services Log Files and Sources
11/2/2020 • 2 minutes to read • Edit Online

A report server and report server environment uses a variety of log destinations to record information about
server operations and status. There are two basic categories of logging, execution logging and trace logging.
Execution logging includes information about report execution statistics, auditing, performance diagnosis and
optimization. Trace logging is information about error messages and general diagnostics.
Applies to: Reporting Services SharePoint mode | Reporting Services Native mode
The following table provides links to additional information about each log, including the log location and how
to view the log contents.

LO G DESC RIP T IO N

Report Server ExecutionLog and the ExecutionLog3 View The execution log is a SQL Server view stored in the report
server database.

The report server execution log contains data about specific


reports, including when a report was run, who ran it, where
it was delivered, and which rendering format was used.

SharePoint trace log For report servers running in SharePoint, the SharePoint
trace logs contains Reporting Services information. You can
also configure SSRS specific information for the SharePoint
Unified Logging service. For more information, see Turn on
Reporting Services events for the SharePoint trace log (ULS)

Report Server Service Trace Log The service trace log contains very detailed information that
is useful if you are debugging an application or investigating
an issue or event. The trace log files are
ReportServerService_<timestamp>.log and are located in
the following folder:

In SQL Server Reporting Services 2016 or earlier:


C:\Program Files\Microsoft SQL
Server\MSRS13.MSSQLSERVER\Reporting
Services\LogFiles

In SQL Server Reporting Services 2017:


C:\Program Files\Microsoft SQL Server Reporting
Services\SSRS\LogFiles

Report Server HTTP Log The HTTP log file contains a record of all HTTP requests and
responses handled by the Report Server Web service.

Windows Application Log The Microsoft Windows Application log contains information
about report server events.

Windows Performance logs The Windows Performance logs contain report server
performance data. You can create performance logs, and
then choose counters that determine which data to collect.
For more information, see Monitoring Report Server
Performance.
LO G DESC RIP T IO N

SQL Server Setup log files Log files are also created during Setup. If Setup fails or
succeeds with warnings or other messages, you can examine
the log files to troubleshoot the problem. For more
information, see View and Read SQL Server Setup Log Files.

IIS Logs Log files created by Microsoft Internet Information Services


(IIS). For more information, see How to enable logging in
Internet Information Services (IIS)
(https://support.microsoft.com/kb/313437).

See Also
Reporting Services Report Server (Native Mode)
Errors and Events Reference (Reporting Services)
Report Server ExecutionLog and the ExecutionLog3
View
3/5/2021 • 9 minutes to read • Edit Online

The Reporting Services, report server execution log contains information about the reports that execute on the
server or on multiple servers in a native mode scale-out deployment or a SharePoint farm. You can use the
report execution log to find out how often a report is requested, what output formats are used the most, and
how many milliseconds of processing time is spent on each processing phase. The log contains information on
the length of time spent executing a report's dataset query and the time spent processing the data. If you are a
report server administrator, you can review the log information and identify long running tasks and make
suggestions to the report authors on the areas of the report (dataset or processing) they may be able to
improve.
Report servers configured for SharePoint mode, can also utilize the SharePoint ULS logs. For more information,
see Turn on Reporting Services events for the SharePoint trace log (ULS)

Viewing Log Information


The report server execution logs data about report execution into an internal database table. The information
from the table is available from SQL Server views.
The report execution log is stored in the report server database that by default is named Repor tSer ver . The
SQL views provide the execution log information. The "2" and "3" views were added in more recent releases and
contain new fields or they contain fields with friendlier names than the previous releases. The older views
remain in the product so custom applications that depend on them are not impacted. If you do not have a
dependence on an older view, for example ExecutionLog, it is recommended you use the most recent view,
ExecutionLog3 .
In this topic:
Configuration Settings for a SharePoint mode Report Server
Configuration Settings for a Native Mode Report Server
Log Fields (ExecutionLog3)
The AdditionalInfo Field
Log Fields (ExecutionLog2)
Log Fields (ExecutionLog)

Configuration Settings for a SharePoint mode Report Server


You can turn report execution logging on or off from the system settings of a Reporting Services service
application.
By default, log entries are kept 60 days. Entries that exceed this date are removed at 2:00 A.M. every day. On a
mature installation, only 60 days of information will be available at any given time.
You cannot set limits on the number of rows or on the type of entries that are logged.
To enable execution logging:
1. From SharePoint Central Administration, click Manage ser vice applications in the Application
Management group.
2. Click the name of the Reporting Services service application you want to configure.
3. Click System Settings .
4. Select Enable Execution Logging in the Logging section.
5. Click OK .
To enable verbose logging:
You need to enable logging as described in the previous steps and then complete the following:
1. From the System Settings page of your Reporting Services services application, find the User-defined
section.
2. Change the ExecutionLogLevel to verbose . This field is a text entry field and the two possible values
are verbose and normal .

Configuration Settings for a Native Mode Report Server


You can turn report execution logging on or off from the Server Properties page in SQL Server Management
Studio. The EnableExecutionLogging is and Advanced property.
By default, log entries are kept 60 days. Entries that exceed this date are removed at 2:00 A.M. every day. On a
mature installation, only 60 days of information will be available at any given time.
You cannot set limits on the number of rows or on the type of entries that are logged.
To enable execution logging:
1. Start SQL Server Management Studio with administrative privileges. For example right-click the
Management Studio icon and click 'Run as administrator'.
2. Connect to the desired report server.
3. Right-click the server name and click Proper ties . If the Properties option is disabled, verify you ran SQL
Server Management Studio with administrative privileges.
4. Click the Logging page.
5. Select Enable repor t execution Logging .
To enable verbose logging:
You need to enable logging as described in the previous steps and then complete the following:
1. From the Ser ver Proper ties dialog, click the Advanced page.
2. In the User-defined section, change the ExecutionLogLevel to verbose . This field is a text entry field
and the two possible values are verbose and normal .

Log Fields (ExecutionLog3)


This view added additional performance diagnostics node inside the XML based AdditionalInfo column. The
AdditionalInfo column contains an XML structure of 1 to many additional fields of information. The following is
a sample Transact SQL statement to retrieve rows from the view ExecutionLog3. The sample assumes the report
server database is named Repor tSer ver :
Use ReportServer
select * from ExecutionLog3 order by TimeStart DESC

The following table describes the data that is captured in the report execution log

C O L UM N DESC RIP T IO N

InstanceName Name of the report server instance that handled the


request. If your environment has more than one report
server, you can analyze the InstanceName distribution to
monitor and determine if your network-load balancer
distributes requests across report servers as expected.

ItemPath Path of where a report or report item is stored.

UserName User identifier.

ExecutionID The internal identifier associated with a request. Requests on


the same user sessions share the same execution id.

RequestType Possible Values:

Interactive

Subscription

Analyzing log data filtered by RequestType=Subscription and


sorted by TimeStart may reveal periods of heavy
subscription usage and you may want to modify some of the
report subscriptions to a different time.

Format Rendering format.

Parameters Parameter values used for a report execution.

ItemAction Possible values:

Render

Sort

BookMarkNavigation

DocumentNavigation

GetDocumentMap

Findstring

Execute

RenderEdit

TimeStart Start and stop times that indicate the duration of a report
process.
C O L UM N DESC RIP T IO N

TimeEnd

TimeDataRetrieval Number of milliseconds spent retrieving the data.

TimeProcessing Number of milliseconds spent processing the report.

TimeRendering Number of milliseconds spent rendering the report.

Source Source of the report execution. Possible values:

Live

Cache: indicates a cached execution, for example, dataset


queries are not executed live.

Snapshot

History

AdHoc: Indicates either a dynamically generated report


model based drill through report, or a Report Builder report
that is previewed on a client utilizing the report server for
processing and rendering.

Session: Indicates a follow up request within an already


established session. For example the initial request is to view
page 1, and the follow up request is to export to Excel with
the current session state.

Rdce: Indicates a Report Definition Customization Extension.


An RDCE custom extension can dynamically customize a
report definition before it is passed to the processing engine
upon report execution.

Status Status (either rsSuccess or an error code; if multiple errors


occur, only the first error is recorded).

ByteCount Size of rendered reports in bytes.

RowCount Number of rows returned from queries.

AdditionalInfo An XML property bag containing additional information


about the execution. The contents can be different for each
row.

The AdditionalInfo Field


The AdditionalInfo field is an XML property bag or structure containing additional information about the
execution. The contents can be different for each row in the log.
The following are examples of the contents of the AddtionalInfo field for both standard and verbose logging:
Standard logging example of AddtionalInfo
<AdditionalInfo>
<ProcessingEngine>2</ProcessingEngine>
<ScalabilityTime>
<Pagination>0</Pagination>
<Processing>0</Processing>
</ScalabilityTime>
<EstimatedMemoryUsageKB>
<Pagination>0</Pagination>
<Processing>6</Processing>
</EstimatedMemoryUsageKB>
<DataExtension>
<SQL>1</SQL>
</DataExtension>
<Connections>
<Connection>
<ConnectionOpenTime>147</ConnectionOpenTime>
<DataSets>
<DataSet>
<Name>DataSet1</Name>
<RowsRead>16</RowsRead>
<TotalTimeDataRetrieval>642</TotalTimeDataRetrieval>
<ExecuteReaderTime>63</ExecuteReaderTime>
</DataSet>
<DataSet>
<Name>DataSet2</Name>
<RowsRead>3</RowsRead>
<TotalTimeDataRetrieval>157</TotalTimeDataRetrieval>
<ExecuteReaderTime>60</ExecuteReaderTime>
</DataSet>
</DataSets>
</Connection>
</Connections>
</AdditionalInfo>

Verbose logging example of AdditionalInfo


<AdditionalInfo>
<ProcessingEngine>2</ProcessingEngine>
<ScalabilityTime>
<Pagination>0</Pagination>
<Processing>0</Processing>
</ScalabilityTime>
<EstimatedMemoryUsageKB>
<Pagination>0</Pagination>
<Processing>6</Processing>
</EstimatedMemoryUsageKB>
<DataExtension>
<SQL>1</SQL>
</DataExtension>
<Connections>
<Connection>
<ConnectionOpenTime>127</ConnectionOpenTime>
<DataSource>
<Name>DataSource1</Name>
<DataExtension>SQL</DataExtension>
</DataSource>
<DataSets>
<DataSet>
<Name>DataSet1</Name>
<RowsRead>16</RowsRead>
<TotalTimeDataRetrieval>655</TotalTimeDataRetrieval>
<QueryPrepareAndExecutionTime>94</QueryPrepareAndExecutionTime>
<ExecuteReaderTime>33</ExecuteReaderTime>
<DataReaderMappingTime>30</DataReaderMappingTime>
<DisposeDataReaderTime>1</DisposeDataReaderTime>
</DataSet>
<DataSet>
<Name>DataSet2</Name>
<RowsRead>3</RowsRead>
<TotalTimeDataRetrieval>16</TotalTimeDataRetrieval>
<QueryPrepareAndExecutionTime>2</QueryPrepareAndExecutionTime>
<ExecuteReaderTime>1</ExecuteReaderTime>
<DataReaderMappingTime>0</DataReaderMappingTime>
<DisposeDataReaderTime>0</DisposeDataReaderTime>
</DataSet>
</DataSets>
</Connection>
</Connections>
</AdditionalInfo>

The following are some of the values you will see in the AdditionalInfo field:
ProcessingEngine
1=SQL Server 2005, 2=The new On-demand Processing Engine. If a majority of your reports are still
showing the value of 1, you may investigate how to redesign them so they utilize the newer and more
efficient on-demand processing engine.
<ProcessingEngine>2</ProcessingEngine>

ScalabilityTime
The number of milliseconds spent performing scale related operations in the processing engine. A value
of 0 indicates that no additional time was spent on scale operations and a 0 also indicates the request
was not under memory pressure.
<ScalabilityTime>
<Processing>0</Processing>
</ScalabilityTime>

EstimatedMemor yUsageKB
An estimate of the peak amount of memory, in kilobytes, consumed by each component during a
particular request.

<EstimatedMemoryUsageKB>
<Processing>38</Processing>
</EstimatedMemoryUsageKB>

DataExtension
The types of data extensions or data sources used in the report. The number is a count of the number of
occurrences of the particular data source.

<DataExtension>
<DAX>2</DAX>
</DataExtension>

ExternalImages
The value is in miliseconds. This data can be used to diagnose performance issues. The time needed to
retrieve images from an external webserver may slow the overall report execution.

<ExternalImages>
<Count>3</Count>
<ByteCount>9268</ByteCount>
<ResourceFetchTime>9</ResourceFetchTime>
</ExternalImages>

Connections
A multi-leveled structure
<Connections>
<Connection>
<ConnectionOpenTime>127</ConnectionOpenTime>
<DataSource>
<Name>DataSource1</Name>
<DataExtension>SQL</DataExtension>
</DataSource>
<DataSets>
<DataSet>
<Name>DataSet1</Name>
<RowsRead>16</RowsRead>
<TotalTimeDataRetrieval>655</TotalTimeDataRetrieval>
<QueryPrepareAndExecutionTime>94</QueryPrepareAndExecutionTime>
<ExecuteReaderTime>33</ExecuteReaderTime>
<DataReaderMappingTime>30</DataReaderMappingTime>
<DisposeDataReaderTime>1</DisposeDataReaderTime>
</DataSet>
<DataSet>
<Name>DataSet2</Name>
<RowsRead>3</RowsRead>
<TotalTimeDataRetrieval>16</TotalTimeDataRetrieval>
<QueryPrepareAndExecutionTime>2</QueryPrepareAndExecutionTime>
<ExecuteReaderTime>1</ExecuteReaderTime>
<DataReaderMappingTime>0</DataReaderMappingTime>
<DisposeDataReaderTime>0</DisposeDataReaderTime>
</DataSet>
</DataSets>
</Connection>
</Connections>

Log Fields (ExecutionLog2)


This view added a few new fields and renamed a few others. The following is a sample Transact SQL statement
to retrieve rows from the view ExecutionLog2. The sample assumes the report server database is named
Repor tSer ver :

Use ReportServer
select * from ExecutionLog2 order by TimeStart DESC

The following table describes the data that is captured in the report execution log

C O L UM N DESC RIP T IO N

InstanceName Name of the report server instance that handled the


request.

ReportPath The path structure to the report. A repost saved in the root
folder as "test", has a ReportPath of "/test".

A report named "test" that is saved in the folder "samples",


would have a ReportPath of "/Samples/test/"

UserName User identifier.

ExecutionID

RequestType Request type (either user or system).


C O L UM N DESC RIP T IO N

Format Rendering format.

Parameters Parameter values used for a report execution.

ReportAction Possible values: Render, Sort, BookMarkNavigation,


DocumentNavigation, GetDocumentMap, Findstring

TimeStart Start time that indicate the duration of a report process.

TimeEnd End time that indicate the duration of a report process.

TimeDataRetrieval Number of milliseconds spent retrieving the data.

TimeProcessing Number of milliseconds spent processing the report.

TimeRendering Number of milliseconds spent rendering the report.

Source Source of the report execution (1=Live, 2=Cache,


3=Snapshot, 4=History).

Status Status (either rsSuccess or an error code; if multiple errors


occur, only the first error is recorded).

ByteCount Size of rendered reports in bytes.

RowCount Number of rows returned from queries.

AdditionalInfo An XML property bag containing additional information


about the execution.

Log Fields (ExecutionLog)


The following is a sample Transact SQL statement to retrieve rows from the view ExecutionLog. The sample
assumes the report server database is named Repor tSer ver :

Use ReportServer
select * from ExecutionLog order by TimeStart DESC

The following table describes the data that is captured in the report execution log

C O L UM N DESC RIP T IO N

InstanceName Name of the report server instance that handled the


request.

ReportID Report identifier.

UserName User identifier.


C O L UM N DESC RIP T IO N

RequestType Possible values:

True = A Subscription request

False= An Interactive request

Format Rendering format.

Parameters Parameter values used for a report execution.

TimeStart Start and stop times that indicate the duration of a report
process.

TimeEnd

TimeDataRetrieval Number of milliseconds spent retrieving the data, processing


the report, and rendering the report.

TimeProcessing

TimeRendering

Source Source of the report execution. Possible values: (1=Live,


2=Cache, 3=Snapshot, 4=History, 5=Adhoc, 6=Session,
7=RDCE).

Status Possible values: rsSuccess, rsProcessingAborted, or an error


code. If multiple errors occur, only the first error is recorded.

ByteCount Size of rendered reports in bytes.

RowCount Number of rows returned from queries.

See Also
Turn on Reporting Services events for the SharePoint trace log (ULS)
Reporting Services Log Files and Sources
Errors and Events Reference (Reporting Services)
Turn on Reporting Services events for the
SharePoint trace log (ULS)
3/5/2021 • 4 minutes to read • Edit Online

Starting with SQL Server 2008 R2, Reporting Services servers in SharePoint mode can write Reporting Services
events to the SharePoint Unified Logging Service (ULS) trace log. Reporting Services specific categories are
available on the Monitoring page of SharePoint Central Administration.
In this Topic:
General ULS Log Recommendations
To turn on and off Reporting Services events in the Reporting Services Category
Recommended Configuration
Reading the logs entries
List of SQL Server Reporting Services Events
View a Log file with PowerShell
Trace Log Location

General ULS Log Recommendations


The following table lists event categories and levels that are recommended for monitoring a Reporting Services
environment.. When an event is logged, each entry includes the time the event was logged, the process name,
and the thread ID.

C AT EGO RY L EVEL DESC RIP T IO N

Database Verbose Logs events that involve database


access.

General Verbose Logs events that involve access to the


following items:

Reporting Services Web pages

Report Viewer HTTP handler

Report access (.rdl files)

Data sources (.rsds files)

URLs on the SharePoint site (.smdl


files)

Office Server General Exception Logs logon failures.

Topology Verbose Logs current user information.


C AT EGO RY L EVEL DESC RIP T IO N

Web Parts Verbose Logs events that involve access to the


Report Viewer Web Part.

To turn on and off Reporting Services events in the Reporting


Services Category
1. From SharePoint Central Administration
2. Click Monitoring .
3. Click Configure Diagnostic Logging in the Repor ting group.
4. Find SQL Ser ver Repor ting Ser vices in the category list.
5. Click the plus symbol (+) to expand the sub categories under SQL Ser ver Repor ting Ser vices .
6. Select the subcategories to be added to the trace log.
7. At the bottom of the categories list, select an event level for the Least critical event to repor t to the
trace log . Select None to disable tracing.

NOTE
The option Least critical event to repor t to the event log is not supported by Reporting Services. The option is
ignored.

Recommended Configuration
The following logging options are recommended as a standard configuration:
HTTP Redirector
SOAP Client Proxy
If you are experiencing issues with configuration, add Configuration Pages .
You can review all of the current farm diagnostic log settings with the following PowerShell cmdlet:

Get-SPDiagnosticConfig

Reading the logs entries


The Reporting Services entries in the log are formatted in the following way.
1. Product:SQL Ser ver Repor ting Ser vices
2. Categor y: Events related to the server will have the characters "Report Server", at the beginning of the
name. For example "Report Server Alerting Runtime" These events are also logged to the report server
log files.
3. Categor y: Events related to or communicated from a web front-end component do not contain "Report
Server". For example "Service Application Proxy" Report Server Alerting Runtime". The WFE entries do
contain a CorrelationID but the server entries do not.
List of SQL Server Reporting Services Events
The following table is a list of the events in the SQL Server Reporting Services Category:

A REA N A M E DESC RIP T IO N O R SA M P L E EN T RIES

Configuration Pages

HTTP Redirector

Local Mode Processing

Local Mode Rendering

SOAP Client Proxy

UI Pages

Power View Log entries that were written to the LogClientTraceEvents


API. These entries are sourced from client applications,
including Power View, a feature of SQL Server Reporting
Services Add-in.

All log entries from the LogClientTraceEvents API will be


logged under the Categor y of "SQL Server Reporting
Services" and the Area of "Power View".

The content of entries logged with the area of "Power View"


is determined by the client application.

Report Server Alerting Runtime

Report Server App Domain Manager

Report Server Buffered Response

Report Server Cache

Report Server Catalog

Report Server Chunk

Report Server Cleanup

Report Server Configuration Manager Sample entries:

MediumUsing report server internal url


https://localhost:80/ReportServer .

UnexpectedMissing or Invalid ExtendedProtectionLevel


setting

Report Server Crypto

Report Server Data Extension


A REA N A M E DESC RIP T IO N O R SA M P L E EN T RIES

Report Server DB Polling

Report Server Default

Report Server Email Extension

Report Server Excel Renderer

Report Server Extension Factory

Report Server HTTP Runtime

Report Server Image Renderer

Report Server Memory Monitoring

Report Server Notification

Report Server Processing

Report Server Provider

Report Server Rendering

Report Server Report Preview

Report Server Resource Utility Sample Entries:

MediumReporting Services starting SKU: Evaluation

MediumEvaluation copy: 180 days left

Report Server Running Jobs

Report Server Running Requests

Report Server Schedule

Report Server Security

Report Server Service Controller

Report Server Session

Report Server Subscription

Report Server WCF Runtime

Report Server Web Server

Service Application Proxy


A REA N A M E DESC RIP T IO N O R SA M P L E EN T RIES

Shared Service Sample entries:

MediumUpdating ReportingWebServiceApplication

MediumGranting access to content databases.

MediumProvisioning instances for


ReportingWebServiceApplication

MediumProcessing service account change for


ReportingWebServiceApplication

MediumSetting database permissions.

View a Log file with PowerShell


You can use PowerShell to return a list of the Reporting Services related events from
a ULS Log file. Type the following command from the SharePoint 2010 Management Shell to return a filtered list
of rows from the file a ULS log file UESQL11SPOINT-20110606-1530.log, that contain "sql ser ver repor ting
ser vices ":

Get-content -path "C:\Program Files\Common Files\Microsoft Shared\Web Server


Extensions\14\LOGS\UESQL11SPOINT-20110606-1530.log" | select-string "sql server reporting services"

There are also tools you can download which will allow you read ULS logs. For example, the SharePoint
LogViewer, available on GitHub.
For more information on how to use PowerShell to view log data, see View diagnostic logs (SharePoint Server
2010)

Trace Log Location


The Trace Log files are usually found in the folder c:\Program Files\Common files\Microsoft Shared\Web
Ser ver Extensions\14\logs but you can verify or change the path from the Diagnostic Logging page in
SharePoint Central Administration.
For more information and steps to configure diagnostic logging on a SharePoint server in SharePoint 2010
Central Administration, see Configure diagnostic logging settings (Windows SharePoint Services).
More questions? Try asking the Reporting Services forum
Report Server Service Trace Log
11/2/2020 • 5 minutes to read • Edit Online

The Reporting Services report server trace logs are an ASCII text file that contains detailed information for
Report Server service operations. The information in the files includes operations performed by the Report
Server Web service, the web portal, and background processing. The trace log file includes redundant
information that is recorded in other log files, plus additional information that is not otherwise available. Trace
log information is useful if you are debugging an application that includes a report server or investigating a
specific problem that was written to the event log or execution log. For example, when trouble shooting issues
with subscriptions.

Where are the Report Server log files?


The trace log files are and
ReportServerService_<timestamp>.log
Microsoft.ReportingServices.Portal.WebHost_<timestamp>.log and are located in the following folder:

C:\Program Files\Microsoft SQL Server\MSRS13.MSSQLSERVER\Reporting Services\LogFiles

The trace logs are created daily, starting with the first entry that occurs after midnight (local time), and whenever
the service is restarted. The timestamp is based on Coordinated Universal Time (UTC). The file is in EN-US
format. By default, trace logs are limited to 32 megabytes and by default they are deleted after 14 days.

Trace configuration settings


Trace log behavior is managed in the configuration file Repor tingSer vicesSer vice.exe.config . The
configuration file is found in the following folder path:
\Program Files\Microsoft SQL Server\MSRS13.<instance name>\Reporting Services\ReportServer\bin .
The following example illustrates the XML structure of the RStrace settings. The value for DefaultTraceSwitch
determines the kind of information that is added to the log. Except for the Components attribute, the values for
RStrace are the same across the configuration files.

\<system.diagnostics>
<switches>
<add name="DefaultTraceSwitch" value="3" />
</switches>
\</system.diagnostics>
<RStrace>
<add name="FileName" value="ReportServerService_" />
<add name="FileSizeLimitMb" value="32" />
<add name="KeepFilesForDays" value="14" />
<add name="Prefix" value="appdomain, tid, time" />
<add name="TraceListeners" value="file" />
<add name="TraceFileMode" value="unique" />
<add name="Components" value="all:3" />
</RStrace>

The following table provides information about each setting.

SET T IN G DESC RIP T IO N VA L UES


SET T IN G DESC RIP T IO N VA L UES

RStrace Specifies namespaces used for errors


and tracing.

DefaultTraceSwitch Specifies the level of information that is Valid values are:


reported to the ReportServerService
trace log. Each level includes the
information reported by all lower-
numbered levels. Disabling tracing is 0= Disables tracing. The
not recommended. ReportServerService log file is enabled
by default. To turn it off, set trace level
to 0.

1= Exceptions and restarts

2= Exceptions, restarts, warnings

3= Exceptions, restarts, warnings,


status messages (default)

4= Verbose mode

FileName Specifies the first part of the log file


name. The value specified by Prefix
completes the rest of the name.

FileSizeLimitMb Specifies an upper limit on trace log Valid values are 0 to a maximum
size. The file is measured in megabytes. integer. The default value is 32. If you
specify 0 or a negative number, the
You can control file size by setting report server treats the value as 1.
tracing levels (0 through 4) to control
how much content is recorded. You
can also specify which components get
traced. If the log file maximum is
reached before the 14-day expiration
date, older entries will be replaced with
newer entries.

KeepFilesForDays Specifies the number of days after Valid values are 0 to a maximum
which a trace log file will be deleted. integer. The default value is 14. If you
specify 0 or a negative number, the
report server treats the value as 1.

Prefix Specifies a generated value that By default, timestamp values are


distinguishes one-log instance from appended to trace log file names. This
another. value is set to "appdomain, tid, time".
Do not modify this setting.

TraceListeners Specifies a target for outputting trace Valid values are:


log content. You can specify multiple
targets using a comma to separate
each one.
DebugWindow

File (default)

StdOut
SET T IN G DESC RIP T IO N VA L UES

TraceFileMode Specifies whether trace logs contain This value is set to "Unique (default)".
data for a 24-hour period. You should Do not modify this value.
have one unique trace log for each
component on each day.

Component Categor y Specifies the components for which Component categories can be set to:
trace log information is generated and
the trace level in this format:

<component category>:<tracelevel> All is used to trace general report


server activity for all processes that are
You can specify all or some of the not broken out into the specific
components (all, RunningJobs , categories.
SemanticQuer yEngine ,
SemanticModelGenerator ). If you RunningJobs is used to trace an in-
do not want to generate information progress report or subscription
for a specific component, you can operation.
disable tracing for it (for example,
"SemanticModelGenerator:0"). Do not SemanticQuer yEngine is used to
disable tracing for all. trace a semantic query that is
processed when a user performs ad
You can set "SemanticQueryEngine:4" hoc data exploration in a model-based
if you want to view the Transact-SQL report.
statements that are generated for each
semantic query. The Transact-SQL SemanticModelGenerator is used
statements are recorded in the trace to trace model generation.
log. The following example illustrates
the configuration setting that adds http is used to enable the Report
Transact-SQL statements to the log: Server HTTP Log file. For more
information, see Report Server HTTP
<add name="Components" Log.
value="all,SemanticQueryEngine:4" />

trace level value for component <component category>:<tracelevel> Trace level valid values are:
categories

If you do not append a trace level to 0= Disables tracing


the component, the value specified for
DefaultTraceSwitch is used. For 1= Exceptions and restarts
example, if you specify
"all,RunningJobs,SemanticQueryEngine, 2= Exceptions, restarts, warnings
SemanticModelGenerator", all
components use the default trace level. 3= Exceptions, restarts, warnings,
status messages (default)

4= Verbose mode

The default value for Report Server is:


"all:3".

Adding Custom Configuration Setting to Specify a Dump File Location


You can add a custom setting to set the location that the Dr. Watson for Windows tool uses to store dump files.
The custom setting is Director y . The following example provides an illustration of how this configuration
setting is specified in the RStrace section:
<add name="Directory" value="U:\logs\" />

For more information, see Knowledge Base Article 913046 on the Microsoft Web site.

Log File Fields


The following fields can be found in a trace log:
System information, including operating system, version, number of processors, and memory.
Reporting Services component and version information.
Events logged the Application log.
Exceptions generated by the report server.
Low resource warnings logged by a report server.
Inbound SOAP envelopes and summarized outbound SOAP envelopes.
HTTP header, stack trace, and debug trace information.
You can review trace log information to determine whether a report delivery occurred, who received the report,
and how many delivery attempts were made. Trace logs also record report execution activity and the
environment variables that are in effect during report processing. Errors and exceptions are also entered into
trace logs. For example, you may find report time-out errors (indicated as a ThreadAbor tExceptions entry).

Previous versions
In previous releases of Reporting Services, there were multiple trace log files, one for each application. The
following files are obsolete and are no longer created in SQL Server 2008 and later versions:
ReportServerWebApp_<timestamp>.log
ReportServer_<timestamp>.log
ReportServerService_main_<timestamp>.log

See also
Reporting Services Log Files and Sources
Errors and Events Reference (Reporting Services)
More questions? Try the Reporting Services forum
Report Server HTTP Log
11/2/2020 • 3 minutes to read • Edit Online

The Report Server HTTP log file keeps a record of every HTTP request and response handled by the report
server. Because request overflow and timeout errors do not reach the report server, they are not recorded in the
log file.
HTTP logging is not enabled by default. You must modify the ReportingServicesService.exe configuration file to
use this feature in your installation.

Viewing log information


The log is an ASCII text file. You can use any text editor to view the file. The Report Server HTTP log file is
equivalent to the W3C extended log file in IIS and uses similar fields so that you can use existing IIS log file
viewers to read the report server HTTP log file. The following table provides additional information about the
HTTP log file:

LO G F IL E IN F O RM AT IO N DESC RIP T IO N

File name By default, the file name is


ReportServerService_HTTP_<timestamp>.log. You can
customize the prefix of the file name by modifying the
HttpTraceFileName attribute in the
ReportingServicesService.exe.config file. The timestamp is
based on Coordinated Universal Time (UTC).

File location The file is located at \Microsoft SQL Server\<SQL Server


Instance>\Reporting Services\LogFiles.

File format The file is in EN-US format. It is an ASCII text file.

File creation and retention The HTTP log is created after you enable it in the
configuration file, restart the service, and the report server
handles an HTTP request. If you configure the settings but
do not see the log file, open a report or start a report server
application (such as the web portal) to generate an HTTP
request to create the file.

A new instance of the log file will be created after each


service restart and subsequent HTTP request to the report
server.

By default, trace logs are limited to 32 megabytes and


deleted after 14 days.

Configuration settings for Report Server HTTP log


To configure the Report Server HTTP log, use Notepad to modify the ReportingServicesService.exe.config file.
The configuration file is located in the \Program Files\Microsoft SQL Server\MSSQL.n\Reporting
Services\ReportServer\Bin folder.
To enable the HTTP server, you must add http:4 to the RStrace section of the
ReportingServicesService.exe.config file. All other HTTP log file entries are optional. The following example
includes all settings so that you can paste the whole section over the RStrace section, and then delete the
settings you do not need.

<RStrace>
<add name="FileName" value="ReportServerService_" />
<add name="FileSizeLimitMb" value="32" />
<add name="KeepFilesForDays" value="14" />
<add name="Prefix" value="tid, time" />
<add name="TraceListeners" value="debugwindow, file" />
<add name="TraceFileMode" value="unique" />
<add name="HttpTraceFileName" value="ReportServerService_HTTP_" />
<add name="HttpTraceSwitches"
value="date,time,clientip,username,serverip,serverport,host,method,uristem,uriquery,protocolstatus,bytesrece
ived,timetaken,protocolversion,useragent,cookiereceived,cookiesent,referrer" />
<add name="Components" value="all:3,http:4" />
</RStrace>

Log file fields


The following table describes the fields that are available in the log. The field list is configurable; you can specify
which fields to include through the HTTPTraceSwitches configuration setting. The Default column specifies
whether the field will be included in the log file automatically if you do not specify HTTPTraceSwitches .

F IEL D DESC RIP T IO N DEFA ULT

HttpTraceFileName This value is optional. The default value Yes


is ReportServerServiceHTTP_. You can
specify a different value if want to use
a different file naming convention (for
example, to include the server name if
you are saving log files to a central
location).

HttpTraceSwitches This value is optional. If you specify it, No


you can configure the fields used in
the log file in comma-delimited format.

Date The date when the activity occurred. No

Time The time when the activity occurred. No

ClientIp The IP address of the client accessing Yes


the report server.

UserName The name of the user who accessed No


the report server.

ServerPort The port number used for the No


connection.

Host The content of the host header. No

Method The action or SOAP method called Yes


from the client.

UriStem The resource accessed. Yes


F IEL D DESC RIP T IO N DEFA ULT

UriQuery The query used to access the resource. No

ProtocolStatus The HTTP status code. Yes

BytesReceived The number of bytes received by the No


server.

TimeTaken The time (in milliseconds) from the No


instant HTTP.SYS returns request data
until the server finishes the last send,
excluding network transmission time.

ProtocolVersion The protocol version used by the No


client.

UserAgent The browser type used by the client. No

CookieReceived The content of the cookie received by No


the server.

CookieSent The content of the cookie sent by the No


server.

Referrer The previous site visited by the client. No

See also
Report Server Service Trace Log
Reporting Services Log Files and Sources
Errors and Events Reference (Reporting Services)
Windows Application Log
11/2/2020 • 2 minutes to read • Edit Online

Reporting Services writes event messages to the Windows application log. You can use the message information
written to the application log to find out about events that are generated by the report server applications
running on the local system.

Viewing Report Server Events


You can use the Event Viewer to view the log file and to filter the messages it contains. For more information
about event messages, see Errors and Events Reference (Reporting Services). For more information about
Windows application log or Event Viewer, see the Windows product documentation.
Reporting Services provides three event sources:
Report Server (Report Server Windows service)
Report Manager
Scheduling and Delivery Processor
Reporting Services does not provide a way to turn off application event logging for a report server or control
which events are logged. The schema that describes report server event logging is fixed. You cannot extend the
schema to support custom events.
The following table describes the event types that the report server writes to the application event log.

EVEN T T Y P E DESC RIP T IO N

Information An event that describes a successful operation (for example,


when the report server services starts).

Warning An event that indicates a potential problem (for example, low


disk space).

Error An event that describes a significant problem (for example,


the service did not start).

Success Audit A security event that describes a successful logon.

Failure Audit An event that is logged when a logon attempt fails.

See Also
Reporting Services Log Files and Sources
Errors and Events Reference (Reporting Services)
Verifying a Report Run
11/2/2020 • 2 minutes to read • Edit Online

To view information about the status of report processing, you can use log files or refer to status information
that is displayed with the report in Report Manager.

Sources of Report Execution Data


The report execution logs provide comprehensive information about report execution, including the name of the
report, the name of the user who ran the report, report execution time, and the delivery extension used to
distribute the report. To view and analyze this data, you can copy the report execution log into database tables
that are easy to query and report on.
Log files contain many entries about report execution and other server activity. Because log files contain so
much data, you may want to use Report Manager if you only want to verify when the report last ran. If you
require additional information, you must view the log files.

NOTE
Report Manager does not show the processing times of reports that run on demand.

The following table describes how to view the processing date and time for various types of reports.

DAT E A N D T IM E IN F O RM AT IO N IS TO VIEW T H E IN F O RM AT IO N , DO T H E
F O R T H IS T Y P E O F REP O RT LO C AT ED H ERE F O L LO W IN G

A report that runs as a report On the Contents page. For more 1) Locate the folder that contains the
snapshot. information, see Contents Page report.
(Report Manager).
2) Set the folder in Details view.

3) Note the date and time in the


When Run column.

A snapshot in report history. On the History Properties page. For 1) Open the report.
more information, see Snapshot
Options Properties Page (Report 2) Click the Proper ties page.
Manager).
3) Click the Histor y tab.

4) Note the date and time in the


When Run column.

A cached report. In the schedule used to create and 1) Open the report.
refresh the cached report.
2) Click the Proper ties page.

3) Click the Execution tab.

4) Open the schedule.

See Also
Reporting Services Log Files and Sources
Set Report Processing Properties
Report Manager (SSRS Native Mode)
Performance, Snapshots, Caching (Reporting
Services)
3/5/2021 • 2 minutes to read • Edit Online

Report server performance is affected by a combination of factors that include hardware, number of concurrent
users accessing reports, the amount of data in a report, and output format. To understand the performance
factors that are specific to your installation and which remedies will produce the results you want, you will need
to get baseline data and run tests. For more information about tools and guidelines, see the following
publications on MSDN: Reporting Services Performance Optimization and Using Visual Studio 2005 to Perform
Load Testing on a SQL Server 2005 Reporting Services Report Server.
General principles to consider include the following:
Report processing and rendering are memory intensive operations. When possible, choose a computer
that has a lot of memory.
Hosting the report server and the report server database on separate computers tends to provide better
performance than hosting both on a single high-end computer.
If all reports are processing slowly, consider a scale-out deployment where multiple report server
instances support a single report server database. For best results, use load balancing software to
distribute requests evenly across the deployment.
If a single report is processing slowly, tune report dataset queries if the report must run on demand. You
might also consider using shared datasets that you can cache, caching the report, or running the report
as a snapshot.
If all reports process slowly in a specific format (for example, while rendering to PDF), consider file share
delivery, adding more memory, or choosing a different format.
To find out how long it takes to process a report and other usage metrics, review the report server
execution log. For more information, see Report Server ExecutionLog and the ExecutionLog3 View.
For more information about how to mitigate performance issues by tuning memory management
configuration settings, see Configure Available Memory for Report Server Applications.

In This Section
Monitoring Report Server Performance
Describes the performance objects you can use to track the processing load on your server.
Set Report Processing Properties
Describes ways of configuring a report to run on demand, from cache, or on a schedule as a report snapshot.
Configure Available Memory for Report Server Applications
Describes how you can override default memory management behavior.
Caching Reports (SSRS)
Describes report caching behavior on a report server.
Cache Shared Datasets (SSRS)
Describes shared dataset caching behavior on a report server.
Process Large Reports
Provides recommendations on how to configure and distribute a large report.
Setting Time-out Values for Report and Shared Dataset Processing (SSRS)
Explains how to set time outs on query and report processing.

See Also
Manage a Running Process
Verifying a Report Run
Monitoring Report Server Performance
3/5/2021 • 4 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server 2016 Reporting Services and later ✔
️ Power BI Report Server
Use performance monitoring tools to monitor report server performance to evaluate server activity, watch
trends, diagnose system bottlenecks, and gather data that can help you determine whether the current system
configuration is sufficient. To tune server performance, you can specify how often to recycle the report server
application domain. For more information, see Configure Available Memory for Report Server Applications.

Sources of performance data


Use a combination of technologies and tools to get comprehensive information about how the system is
performing. Microsoft Windows Server operating systems provide performance information through the
following tools:
Task Manager
Event Viewer
Performance Monitor
Task Manager provides information about programs and processes running on your computer. You can use Task
Manager to monitor key indicators of your report server's performance. You can also assess the activity of
running processes and view graphs and data on CPU and memory usage. For information about using Task
Manager, see the Microsoft Windows product documentation.
You can use Event Viewer and Performance Monitor to create logs and alerts about report processing and
resource consumption. For information about Windows events that are generated by Reporting Services, see
Windows Application Log. For information about Performance Monitor, see "Windows Performance Counters"
later in this article.
SQL Server utilities, such as SQL Server Profiler or Extended Events, also provide information about the report
server database and temporary databases used for caching and session management.

Windows performance counters


Monitoring specific performance counters enables you to:
Estimate system requirements needed to support a predicted workload.
Create a performance baseline to measure effect of configuration changes or application upgrades.
Monitor application performance under certain loads, whether real or artificially generated.
Verify that hardware upgrades have the desired effect on performance.
Validate changes that were made to the system configuration have the desired effect on performance.

Reporting Services performance objects


SQL Server 2016 Reporting Services includes the following performance objects:
MSRS 2016 Web Ser vice and MSRS 2016 Web Ser vice SharePoint Mode to monitor report
server performance. These performance objects include a collection of counters used to track report
server processing typically initiated through interactive report viewing operations. These counters are
reset whenever the Report Server Web service is stopped or recycled.
MSRS 2016 Windows Ser vice and MSRS 2016 Windows Ser vice SharePoint Mode to monitor
scheduled operations and report delivery. These performance objects include a collection of counters
used to track report processing that is initiated through scheduled operations. Scheduled operations
include subscription and delivery, report execution snapshots, and report history.
Repor tSer ver :Ser vice and Repor tSer verSharePoint:Ser vice to monitor HTTP-related events and
memory management. These counters are specific to Reporting Services, and they track HTTP-related
events for the report server, such as requests, connections, and sign in attempts. This performance object
also includes counters related to memory management.
If you have multiple report server instances on a single computer, you can monitor the instances together or
separately. Choose which instances to include when you add a counter. For more information about using
Performance Monitor (perfmon.msc) and adding counters, see the Microsoft Windows Performance Monitor
product documentation.

Other performance counters


Custom Reporting Services performance counters are provided only for the Reporting Services performance
objects listed above. The following .NET Framework performance objects provide additional performance
monitoring data for the report server.

NOTE
Power BI Report Server and SQL Server Reporting Services 2017 and later do not include Reporting Services performance
objects. There are .NET Framework performance counters available to provide performance monitoring for the report
server.

P ERF O RM A N C E O B JEC T N OT ES

.NET CLR Data and .NET CLR Memor y The web portal uses ASP.NET performance counters. For
more information, download Improving .NET Application
Performance and Scalability.

Process Add the Elapsed Time and ID Process performance


counters for a ReportingServicesService instance to track
process uptime by process ID.

SharePoint events
In addition to the Reporting Services performance objects, you might also want to configure SharePoint events
if you are running a report server in SharePoint integrated mode and have configured your reporting
environment to use a SharePoint product. In this section, use the Events for a Report Server in SharePoint
Integrated Mode to review diagnostic events that might provide useful information if your reporting
environment is integrated with SharePoint.

In this section
Performance Counters for the MSRS 2016 Web Service and MSRS 2016 Windows Service Performance Objects
(Native Mode)
Describes the performance counters used by the Report Server Web service.
Performance Counters for the MSRS 2016 Web Service SharePoint Mode and MSRS 2016 Windows Service
SharePoint Mode Performance Objects (SharePoint Mode)
Describes the performance counters used by the Report Server Windows service.
Performance Counters for the ReportServer:Service and ReportServerSharePoint:Service Performance Objects
Describes the HTTP-related and memory-related performance counters in Reporting Services.

See also
Configure Available Memory for Report Server Applications
Reporting Services Report Server (Native Mode)
Reporting Services Tools
Performance Counters MSRS 2016 Native Mode,
Performance Objects
3/5/2021 • 9 minutes to read • Edit Online

This topic describes performance counters for the MSRS 2016 Web Ser vice and MSRS 2016 Windows
Ser vice performance objects. These objects are part of a SQL Server 2016 Reporting Services Native Mode
deployment.

NOTE
These performance objects monitor events on the local report server. If you are running a report server in a scale-out
deployment, the counts apply to the current server and not the scale-out deployment.

The performance objects are available in the Windows Performance Monitor (Perfmon.exe ). For more
information, see the Windows documentation, Runtime Profiling
(https://msdn.microsoft.com/library/w4bz2147.aspx).
For information related to the SharePoint mode performance counters, see Performance Counters for the MSRS
2016 Web Service SharePoint Mode and MSRS 2016 Windows Service SharePoint Mode Performance Objects
(SharePoint Mode).
In this topic:
MSRS 2016 Web Service Performance Counters
MSRS 2016 Windows Service Performance Counters
Use PowerShell Cmdlets to return lists

MSRS 2016 Web Service Performance Counters


The MSRS 2016 Web Ser vice performance object monitors report server performance. This performance
object includes a collection of counters used to track report server processing typically initiated through
interactive report viewing operations. When you set up this counter, you can apply the counter to all instances of
Reporting Services or you can select specific instances. These counters are reset whenever ASP.NET stops the
report server Web service.
The following table lists the counters that are included with the MSRS 2016 Web Ser vice performance object.

C O UN T ER DESC RIP T IO N

Active Sessions Number of active sessions. This counter provides a


cumulative count of all browser sessions generated from
report executions, whether they are still active or not.

The counter is decremented as session records are removed.


By default, sessions are removed after ten minutes of no
activity.
C O UN T ER DESC RIP T IO N

Cache Hits/Sec Number of requests per second for cached reports. The
requests are for re-rendered reports, not requests for
reports processed directly from the cache. (See Total Cache
Hits later in this topic.)

Cache Hits/Sec (Semantic Models) Number of requests per second for cached model. The
requests for re-rendered reports, not requests for reports
processed directly from the cache.

Cache Misses/Sec Number of requests per second that failed to return a report
from cache. Use this counter to find out whether the
resources used for caching (disk or memory) are sufficient.

Cache Misses/Sec (Semantic Models) Number of requests per second that failed to return a model
from cache. Use this counter to find out whether the
resources used for caching (disk or memory) are sufficient.

First Session Requests/Sec Number of new user sessions that are started from the
report server cache each second.

Memor y Cache Hits/Sec Number of times per second that reports are retrieved from
the in-memory cache. In-memory cache is a part of the
cache that stores reports in CPU memory. When in-memory
cache is used, the report server does not query SQL Server
for cached content.

Memor y Cache Misses/Sec Number of times per second that reports could not be
retrieved from the in-memory cache.

Next Session Requests/Sec Number of requests per second for reports that are open in
an existing session (such as reports that are rendered from a
session snapshot).

Repor t Requests Number of reports that are currently active and managed by
the report server.

Repor ts Executed/Sec Number of successful report executions per second. This


counter provides statistics about report volume. Use this
counter with Request/Sec to compare report execution to
report requests that can be returned from cache.

Requests/Sec Number of requests per second made to the report server.


This counter tracks all types of requests that are managed
by the report server.

Total Cache Hits Total number of requests for reports from the cache after
the service started. This counter is reset whenever ASP.NET
stops the report server Web service.

Total Cache Hits (Semantic Models) Total number of requests for model from the cache after the
service started. This counter is reset whenever ASP.NET stops
the report server Web service.
C O UN T ER DESC RIP T IO N

Total Cache Misses Total number of times that a report could not be returned
from the cache after the service started. This counter is reset
whenever ASP.NET stops the report server Web service. Use
this counter to determine whether disk space and memory
are sufficient.

Total Cache Misses (Semantic Models) Total number of times that a model could not be returned
from the cache after the service started. This counter is reset
whenever ASP.NET stops the report server Web service. Use
this counter to determine whether disk space and memory
are sufficient.

Total Memor y Cache Hits Total number of cached reports returned from the in-
memory cache after the service started. This counter is reset
whenever ASP.NET stops the report server Web service. In-
memory cache is a part of the cache that stores reports in
CPU memory. When in-memory cache is used, the report
server does not query SQL Server for cached content.

Total Memor y Cache Misses Total number of cache misses against the in-memory cache
after the service started. This counter is reset whenever
ASP.NET stops the report server Web service.

Total Processing Failures Number of request processing errors for the report server
Web service.

Total Rejected Threads Total number of threads rejected for asynchronous


processing, and later handled as synchronous processes in
the same thread. Each data source is processed on one
thread. If the volume of threads exceeds capacity, threads
are rejected for asynchronous processing, and are then
processed in a serial manner.

Total Repor ts Executed Total number of reports that ran successfully after the
service started. This counter is reset whenever ASP.NET stops
the report server Web service.

Total Requests Total number of all requests made to the report server after
the service started. This counter is reset whenever ASP.NET
stops the report server Web service.

MSRS 2016 Windows Service Performance Counters


The MSRS 2016 Windows Ser vice performance object monitors the report server Windows service. This
performance object includes a collection of counters used to track report processing that is initiated through
scheduled operations. Scheduled operations can include subscription and delivery, report execution snapshots,
and report history. When you set up this counter, you can apply the counter to all instances of Reporting
Services or you can select specific instances.
The following table lists the counters that are included in the MSRS 2016 Windows Ser vice performance
object.

C O UN T ER DESC RIP T IO N
C O UN T ER DESC RIP T IO N

Active Sessions Number of active sessions stored in the report server


database. This counter provides a cumulative count of all
usable browser sessions generated from report
subscriptions, whether they are still active or not.

Cache Flushes/Sec Number of cache flushes per second.

Cache Hits/Sec Number of requests per second for cached reports. The
requests are for re-rendered reports, not requests for
reports processed directly from the cache. (See Total Cache
Hits later in this topic.)

Cache Hits/Sec (Semantic Models) Number of requests per second for cached models.

Cache Misses/Sec Number of requests per second that failed to return a report
from cache. Use this counter to find out whether the
resources used for caching (disk or memory) are sufficient.

Cache Misses/Sec (Semantic Models) Number of requests per second that failed to return a model
from cache. Use this counter to find out whether the
resources used for caching (disk or memory) are sufficient.

Delivers/Sec Number of report deliveries per second, from any delivery


extension.

Events/Sec Number of events processed per second. Events that are


monitored include SnapshotUpdated and
TimedSubscription .

First Session Requests/Sec Number of new report execution sessions created per
second.

Memor y Cache Hits/Sec Number of times per second that reports are retrieved from
the in-memory cache. In-memory cache is a part of the
cache that stores reports in CPU memory. When in-memory
cache is used, the report server does not query SQL Server
for cached content.

Memor y Cache Misses/Sec Number of times per second that reports cannot be
retrieved from the in-memory cache.

Next Session Requests/Sec Number of requests per second for reports that are open in
an existing session (such as reports that are rendered from a
session snapshot).

Repor t Requests Number of reports that are currently active and managed by
the report server. Use this counter to evaluate caching
strategy. There might be more requests than reports
generated.

Repor ts Executed/Sec Number of reports successfully generated per second.

Requests/Sec Total number of successful requests the report server service


processed per second.
C O UN T ER DESC RIP T IO N

Snapshot Updates/Sec Total number of report execution snapshot updates per


second.

Total App Domain Recycles Total number of application domain cycles after the Report
Server Windows service started.

Total Cache Flushes Total number of report server cache updates after the
service started. This counter resets when the application
domain recycles. See Cache Flushes/Sec.

Total Cache Hits Total number of requests for reports processed directly from
the cache after the Report Server Windows service started.
This counter resets when the application domain recycles.
See Cache Hits/Sec.

Total Cache Hits (Semantic Models) Total number of requests for models processed directly from
the cache after the Report Server Windows service started.
This counter resets when the application domain recycles.
See Cache Hits/Sec.

Total Cache Misses Total number of times that a report could not be returned
from cache after the Report Server Windows service started.
This counter resets when the application domain recycles.
See Cache Misses/Sec.

Total Cache Misses (Semantic Models) Total number of times that a model could not be returned
from cache after the Report Server Windows service started.
This counter resets when the application domain recycles.

Total Deliveries Total number of reports delivered through the Scheduling


and Delivery Processor, for all delivery extensions. This
counter resets when the application domain recycles.

Total Events Total number of events after the report server Windows
service started. This counter resets when the application
domain recycles.

Total Memor y Cache Hits Total number of cached reports returned from the in-
memory cache after the report server Windows service
started. This counter resets when the application domain
recycles.

Total Memor y Cache Misses Total number of cache misses against the in-memory cache
after the service started. This counter resets when the
application domain recycles.

Total Processing Failures Number request processing errors in the report server
Windows service.

Total Rejected Threads Total number of threads rejected for asynchronous


processing, and later handled as a synchronous process in
the same thread. Under moderate or heavy load, this
counter steadily increases.

Total Repor ts Executed Total number of reports run.


C O UN T ER DESC RIP T IO N

Total Requests Total number of reports that ran successfully after the
service started. This counter resets when the application
domain recycles.

Total Snapshot Updates Total number of updates for report execution snapshots

Use PowerShell Cmdlets to return lists


The following Windows PowerShell script returns the counter sets where the
CounterSetName starts with "msr":

get-counter -listset msr*

The following Windows PowerShell script returns the list of performance counters for the CounterSetName.

(get-counter -listset "MSRS 2016 Windows Service").paths

See Also
Monitoring Report Server Performance
Performance Counters for the MSRS 2016 Web Service SharePoint Mode and MSRS 2016 Windows Service
SharePoint Mode Performance Objects (SharePoint Mode)
Performance Counters for the ReportServer:Service and ReportServerSharePoint:Service Performance Objects
Performance Counters MSRS 2016 SharePoint
Mode, Performance Objects
3/5/2021 • 9 minutes to read • Edit Online

This topic describes performance counters for the MSRS 2016 Web Ser vice SharePoint Mode and MSRS
2016 Windows Ser vice SharePoint Mode performance objects that are part of a SQL Server 2016
Reporting Services SharePoint mode deployment.

NOTE
These performance objects monitor events on the local report server. If you are running a report server in a scale-out
deployment, the counts apply to the current server and not the scale-out deployment as a whole.

The performance objects are available in the Windows Performance Monitor (Perfmon.exe ). For more
information, see the Windows documentation. Runtime Profiling
(https://msdn.microsoft.com/library/w4bz2147.aspx).
For information regarding performance counters and Native mode report servers, see Performance Counters
for the MSRS 2016 Web Service and MSRS 2016 Windows Service Performance Objects (Native Mode).
In this topic:
MSRS 2016 Web Service SharePoint Mode Performance Counters
MSRS 2016 Windows Service SharePoint Mode Performance Counters
Use PowerShell Cmdlets to return lists

MSRS 2016 Web Service SharePoint Mode Performance Counters


The MSRS 2016 Web Ser vice SharePoint Mode performance object monitors report server performance.
This performance object includes a collection of counters used to track report server processing typically
initiated through interactive report viewing operations. When you set up this counter, you can apply the counter
to all instances of Reporting Services or you can select specific instances. These counters are reset whenever
ASP.NET stops the Report Server Web service.
The following table lists the counters that are included with the MSRS 2016 Web Ser vice SharePoint Mode
performance object.

C O UN T ER DESC RIP T IO N

Active Sessions Number of active sessions. This counter provides a


cumulative count of all browser sessions generated from
report executions, whether they are still active or not.

The counter is decremented as session records are removed.


By default, sessions are removed after ten minutes of no
activity.
C O UN T ER DESC RIP T IO N

Cache Hits/Sec Number of requests per second for cached reports. These
are requests for re-rendered reports, not requests for
reports processed directly from the cache. (See Total Cache
Hits later in this topic.)

Cache Hits/Sec (Semantic Models) Number of requests per second for cached model. These are
requests for re-rendered reports, not requests for reports
processed directly from the cache.

Cache Misses/Sec Number of requests per second that failed to return a report
from cache. Use this counter to find out whether the
resources used for caching (disk or memory) are sufficient.

Cache Misses/Sec (Semantic Models) Number of requests per second that failed to return a model
from cache. Use this counter to find out whether the
resources used for caching (disk or memory) are sufficient.

First Session Requests/Sec Number of new user sessions that are started from the
report server cache each second.

Memor y Cache Hits/Sec Number of times per second that reports are retrieved from
the in-memory cache. In-memory cache is a part of the
cache that stores reports in CPU memory. When in-memory
cache is used, the report server does not query SQL Server
for cached content.

Memor y Cache Misses/Sec Number of times per second that reports could not be
retrieved from the in-memory cache.

Next Session Requests/Sec Number of requests per second for reports that are open in
an existing session (such as reports that are rendered from a
session snapshot).

Repor t Requests Number of reports that are currently active and being
handled by the report server.

Repor ts Executed/Sec Number of successful report executions per second. This


counter provides statistics about report volume. Use this
counter with Request/Sec to compare report execution to
report requests that can be returned from cache.

Requests/Sec Number of requests per second made to the report server.


This counter tracks all types of requests that are handled by
the report server.

Total Cache Hits Total number of requests for reports from the cache after
the service started. This counter is reset whenever ASP.NET
stops the Report Server Web service.

Total Cache Hits (Semantic Models) Total number of requests for model from the cache after the
service started. This counter is reset whenever ASP.NET stops
the Report Server Web service.
C O UN T ER DESC RIP T IO N

Total Cache Misses Total number of times that a report could not be returned
from the cache after the service started. This counter is reset
whenever ASP.NET stops the Report Server Web service. Use
this counter to determine whether disk space and memory
are sufficient.

Total Cache Misses (Semantic Models) Total number of times that a model could not be returned
from the cache after the service started. This counter is reset
whenever ASP.NET stops the Report Server Web service. Use
this counter to determine whether disk space and memory
are sufficient.

Total Memor y Cache Hits Total number of cached reports returned from the in-
memory cache after the service started. This counter is reset
whenever ASP.NET stops the Report Server Web service. In-
memory cache is a part of the cache that stores reports in
CPU memory. When in-memory cache is used, the report
server does not query SQL Server for cached content.

Total Memor y Cache Misses Total number of cache misses against the in-memory cache
after the service started. This counter is reset whenever
ASP.NET stops the Report Server Web service.

Total Processing Failures Number of errors in report server web service request
processing.

Total Rejected Threads Total number of threads rejected for asynchronous


processing, and subsequently handled as synchronous
processes in the same thread. Each data source is processed
on one thread. If the volume of threads exceeds capacity,
threads are rejected for asynchronous processing, and are
then processed in a serial manner.

Total Repor ts Executed Total number of reports that ran successfully after the
service started. This counter is reset whenever ASP.NET stops
the Report Server Web service.

Total Requests Total number of all requests made to the report server after
the service started. This counter is reset whenever ASP.NET
stops the Report Server Web service.

MSRS 2016 Windows Service SharePoint Mode Performance Counters


The MSRS 2016 Windows Ser vice SharePoint Mode performance object is used to monitor the Report
Server Windows service. This performance object includes a collection of counters used to track report
processing that is initiated through scheduled operations. Scheduled operations can include subscription and
delivery, report execution snapshots, and report history. When you set up this counter, you can apply the
counter to all instances of Reporting Services or you can select specific instances.
The following table lists the counters that are included in the MSRS 2016 Windows Ser vice SharePoint
mode performance object.

C O UN T ER DESC RIP T IO N
C O UN T ER DESC RIP T IO N

Active Sessions Number of active sessions stored in the report server


database. This counter provides a cumulative count of all
usable browser sessions generated from report
subscriptions, whether they are still active or not.

Aler ting: event queue length

Aler ting: events processed - CreateSchedule

Aler ting: events processed - Delete schedule

Aler ting: events processed - DeliverAler t

Aler ting: events processed - FireAler t

Aler ting: events processed - FireSchedule

Aler ting: events processed - GenerateAler t

Aler ting: events processed - UpdateSchedule

Cache Flushes/Sec Number of cache flushes per second.

Cache Hits/Sec Number of requests per second for cached reports. These
are requests for re-rendered reports, not requests for
reports processed directly from the cache. (See Total Cache
Hits later in this topic.)

Cache Hits/Sec (Semantic Models) Number of requests per second for cached models.

Cache Misses/Sec Number of requests per second that failed to return a report
from cache. Use this counter to find out whether the
resources used for caching (disk or memory) are sufficient.

Cache Misses/Sec (Semantic Models) Number of requests per second that failed to return a model
from cache. Use this counter to find out whether the
resources used for caching (disk or memory) are sufficient.

Delivers/Sec Number of report deliveries per second, from any delivery


extension.

Events/Sec Number of events processed per second. Events that are


monitored include SnapshotUpdated and
TimedSubscription .

First Session Requests/Sec Number of new report execution sessions created per
second.

Memor y Cache Hits/Sec Number of times per second that reports are retrieved from
the in-memory cache. In-memory cache is a part of the
cache that stores reports in CPU memory. When in-memory
cache is used, the report server does not query SQL Server
for cached content.
C O UN T ER DESC RIP T IO N

Memor y Cache Misses/Sec Number of times per second that reports cannot be
retrieved from the in-memory cache.

Next Session Requests/Sec Number of requests per second for reports that are open in
an existing session (such as reports that are rendered from a
session snapshot).

Repor t Requests Number of reports that are currently active and being
handled by the report server. Use this counter to evaluate
caching strategy. There might be significantly more requests
than reports generated.

Repor ts Executed/Sec Number of reports successfully generated per second.

Requests/Sec Total number of successful requests the report server service


processed per second.

Snapshot Updates/Sec Total number of report execution snapshot updates per


second.

Total App Domain Recycles Total number of application domain cycles after the Report
Server Windows service started.

Total Cache Flushes Total number of report server cache updates after the
service started. This counter resets when the application
domain recycles. See Cache Flushes/Sec.

Total Cache Hits Total number of requests for reports processed directly from
the cache after the Report Server Windows service started.
This counter resets when the application domain recycles.
See Cache Hits/Sec.

Total Cache Hits (Semantic Models) Total number of model requests processed directly from the
cache after the report server Windows service started. This
counter resets when the application domain recycles.

Total Cache Misses Total number of times that a report could not be returned
from cache after the Report Server Windows service started.
This counter resets when the application domain recycles.
See Cache Misses/Sec.

Total Cache Misses (Semantic Models) Total number of times that a model could not be returned
from cache after the Report Server Windows service started.
This counter resets when the application domain recycles.

Total Deliveries Total number of reports delivered by the Scheduling and


Delivery Processor, for all delivery extensions. This counter
resets when the application domain recycles.

Total Events Total number of events after the Report Server Windows
service started. This counter resets when the application
domain recycles.
C O UN T ER DESC RIP T IO N

Total Memor y Cache Hits Total number of cached reports returned from the in-
memory cache after the Report Server Windows service
started. This counter resets when the application domain
recycles.

Total Memor y Cache Misses Total number of cache misses against the in-memory cache
after the service started. This counter resets when the
application domain recycles.

Total Processing Failures Number of request processing errors for the report server
Windows service.

Total Rejected Threads Total number of threads rejected for asynchronous


processing, and subsequently handled as a synchronous
process in the same thread. Under moderate or heavy load,
this counter steadily increases.

Total Repor ts Executed Total number of reports run.

Total Requests Total number of reports that ran successfully after the
service started. This counter resets when the application
domain recycles.

Total Snapshot Updates Total number of report execution snapshot updates.

Use PowerShell Cmdlets to return lists


The following Windows PowerShell script will return the counter sets where the
CounterSetName starts with "msr"

get-counter -listset msr*


Returns a list with the following information
CounterSetName : MSRS 2016 Windows Service SharePoint Mode
CounterSetName : MSRS 2016 Web Service SharePoint Mode

The following Windows PowerShell script will return the list of performance counters for the CounterSetName
"MSRS 2016 Windows Service SharePoint Mode".

(get-counter -listset "MSRS 2016 Windows Service SharePoint Mode").paths

See Also
Monitoring Report Server Performance
Performance Counters for the MSRS 2016 Web Service and MSRS 2016 Windows Service Performance Objects
(Native Mode)
Performance Counters for the ReportServer:Service and ReportServerSharePoint:Service Performance Objects
Performance Counters - ReportServer Service,
Performance Objects
3/5/2021 • 4 minutes to read • Edit Online

This topic describes performance counters for the Repor tSer ver :Ser vice and
Repor tSer verSharePoint:Ser vice performance objects that are part of a SQL Server 2012 (11.x) deployment.

NOTE
The performance objects are used to monitor events on the local report server. If you are running a report server in a
scale-out deployment, the counts apply to the current server and not the scale-out deployment as a whole.

The performance objects are available in the Windows Performance Monitor (Perfmon.exe ). For more
information, see the Windows documentation. Runtime Profiling
(https://msdn.microsoft.com/library/w4bz2147.aspx).
In this topic:
ReportServer:Service Performance Counters (Native Mode Report Server)
ReportServerSharePoint:Service (SharePoint Mode Report Server)
Use PowerShell Cmdlets to return lists
Applies to: SQL Server 2012 (11.x).

ReportServer:Service Performance Counters (Native Mode Report


Server)
The Repor tSer ver :Ser vice performance object includes a collection of counters to track HTTP-related events
and memory-related events for a report server instance. This performance object appears one time for each
Reporting Services instance on the computer, and you can add or remove counters from the performance object
for each instance. Counters for the default instance appear in the format Repor tSer ver :Ser vice . Counters for
named instances appear in the format Repor tSer ver$< instance_name >:Ser vice .
The Repor tSer ver :Ser vice performance object was new in SQL Server 2008 Reporting Services, and it
provides a subset of counters that were included with Internet Information Services (IIS) and ASP.NET in
previous versions of Reporting Services. These new counters are specific to Reporting Services, and they track
HTTP-related events for the report server, such as requests, connections, and logon attempts. Additionally, this
performance object includes counters to track memory management events.
The following table lists the counters that are included in the Repor tSer ver :Ser vice performance object.
The following Windows PowerShell script will return the list of performance counters
for the CounterSetName

(get-counter -listset "ReportServer:Service").paths


C O UN T ER DESC RIP T IO N

Active connections The number of connections currently active on the server.

Bytes Received Total The number of bytes received by the server. This counter
counts the raw bytes received in total by both Report
Manager and the report server.

Bytes Received/sec The number of bytes received per second by the server. This
counter is updated only when a transfer is completed. This
means that the counter remains at 0 and then the value
increases after a transfer is complete.

Bytes Sent Total The number of bytes sent from the server. This counter
counts the raw bytes sent in total by both Report Manager
and the report server.

Bytes Sent/sec The number of bytes sent per second from the server. This
counter is updated only when a transfer is completed. This
means that the counter remains at 0 and then the value
increases after a transfer is complete.

Errors Total The total number of errors that occur during the processing
of HTTP requests. These errors include HTTP status codes in
the 400s and 500s.

Errors/sec The total number of errors that occur per second during the
processing of HTTP requests. These errors include HTTP
status codes in the 400s and 500s.

Logon Attempts Total The number of logon attempts made from RSWindows
authentication types. RSWindows authentication types
include RSWindowsNegotiate, RSWindowsNTLM,
RSWindowsKerberos, and RSWindowsB asic. The value zero
(0) represents Custom authentication.

Logon Attempts/sec The rate of logon attempts.

Logon Successes Total The number of successful logons for RSWindows


authentication types. RSWindows authentication types
include RSWindowsNegotiate, RSWindowsNTLM,
RSWindowsKerberos, and RSWindowsB asic. The value zero
(0) represents Custom authentication.

Logon Successes/sec The rate of successful logons.

Memor y Pressure State One of the following numbers, from 1-5, which indicates the
current memory state of the server:

1: No pressure

2: Low pressure

3: Medium pressure

4: High pressure

5: Exceeded pressure
C O UN T ER DESC RIP T IO N

Memor y Shrink Amount The number of bytes that the server requested to shrink the
memory in use.

Memor y Shrink Notifications/sec The number of notifications that the server issued in the last
second to shrink the memory in use. This value indicates
how often the server experiences memory pressure.

Requests Disconnected The number of requests that are disconnected because of a


communication failure.

Requests Executing The number of requests that are currently processing.

Requests Not Authorized The number of requests that fail with an HTTP 401 status
code.

Requests Rejected The total number of requests that were not processed
because of insufficient server resources. This counter
represents the number of requests that return a HTTP 503
status code, which indicates that the server is too busy.

Requests Total The total number of requests that are received by the report
server service since startup. This counter counts requests
that are sent to Report Manager and requests that are sent
from Report Manager to the report server.

Requests/sec The number of requests that are processed per second. This
value represents the current throughput of the application.

Tasks Queued The number of tasks that are waiting for a thread to become
available for processing. Each request made to the report
server corresponds to one or more tasks. This counter
represents only the number of tasks that are ready for
processing; it does not include the number of tasks that are
currently running.

ReportServerSharePoint:Service (SharePoint Mode Report Server)


The Repor tSer verSharePoint:Ser vice performance object was added in SQL Server 2012 (11.x) Reporting
Services.
The following Windows PowerShell script will return the list of performance counters
for the CounterSetName

(get-counter -listset "ReportServerSharePoint:Service").paths

C O UN T ER DESC RIP T IO N

Memor y Pressure State

Memor y Shrink Amount

Memor y Shrink Notifications/Sec


Use PowerShell Cmdlets to return lists
The following Windows PowerShell script will return the list of performance counters
for the CounterSetName "ReportServerSharePoint:Service":

(get-counter -listset "ReportServerSharePoint:Service").paths

See Also
Monitoring Report Server Performance
Performance Counters for the MSRS 2011 Web Service and MSRS 2011 Windows Service Performance Objects
(Native Mode)
Performance Counters for the MSRS 2011 Web Service SharePoint Mode and MSRS 2011 Windows Service
SharePoint Mode Performance Objects (SharePoint Mode)
Set Report Processing Properties
11/2/2020 • 3 minutes to read • Edit Online

Report execution properties control how a report is processed. Execution properties must be set for each report
individually.
To set report execution properties, navigate to the report in the web portal, right-click the report, and select
Manage from the drop down menu.

Report execution modes


You can run a report either on demand or as a snapshot. The following section describes each approach.
Running reports on demand
You can specify that a report query a data source each time a user runs the report, resulting in on-demand
reports that contain the most up-to-date data. A new instance of the report is created for each user who opens
or requests the report; each new instance contains the results of a new query. With this approach, if ten users
open the report at the same time, ten queries are sent to the data source for processing.
Running reports on demand from cache
To enhance performance, you can specify a report (and data) to be cached temporarily when a user runs the
report. The cached copy is subsequently available to other users who access the same report. With this
approach, if ten users open the report, only the first request results in report processing. The report is
subsequently cached, and the remaining nine users view the cached report.
Cached reports are removed from the cache at intervals that you define. You can specify intervals in minutes, or
you can schedule a specific date and time to empty the cache. For more information, see Caching Reports
(SSRS).
Running reports from snapshots
A report snapshot is a report that contains layout information and data that is retrieved at a specific point in
time. You can run a report as a report snapshot to prevent the report from being run at arbitrary times (for
example, during a scheduled backup). A report snapshot is usually created and subsequently refreshed on a
schedule, allowing you to time exactly when report and data processing will occur. If a report is based on queries
that take a long time to run, or on queries that use data from a data source that you prefer no one access during
certain hours, you should run the report as a snapshot.
A report snapshot is stored in a report server database, where it is subsequently retrieved when a user or
process (such as a subscription) requests the report. When a report snapshot is updated, it is overwritten with a
new instance. The report server does not save earlier versions of a report snapshot unless you specifically set
options to add it to report history. For more information, see Create, Modify, and Delete Snapshots in Report
History.
Not all reports can be configured to run as a snapshot. You cannot create a snapshot for a report that prompts
users for credentials or uses Windows integrated security to get data for the report. If you want to run a
parameterized report as a snapshot, you must specify a default parameter to use when creating the snapshot. In
contrast with reports that run on demand, it is not possible to specify a different parameter value for a report
snapshot when the report is open. Choosing a different parameter value would result in a new report
processing request, which is not allowed.
In some cases, configuring an on-demand report to run as a snapshot can deactivate subscriptions. The
following condition will cause a report server to deactivate existing subscriptions that were defined when the
report was configured to run on demand:
The report uses query parameters, and you select a specific value as the default parameter to meet the
requirements for running the report as a snapshot.
Existing subscriptions are configured to use parameter values that differ from the default parameter
value that you specified for the snapshot.
When this condition exists, the report server will disable the subscription the next time the subscription is
scheduled to run. To reactivate the subscription, open and then save the subscription. When you open the
subscription, the report server updates the subscription parameter values to those specified for the snapshot.
For more information about subscriptions, see Subscriptions and Delivery (Reporting Services).

See also
Set Processing Options (Reporting Services in SharePoint Integrated Mode)
Reporting Services Concepts (SSRS)
Create, Modify, and Delete Snapshots in Report History
Specify Credential and Connection Information for Report Data Sources
Configure Available Memory for Report Server
Applications
11/2/2020 • 7 minutes to read • Edit Online

Although Reporting Services can use all available memory, you can override default behavior by configuring an
upper limit on the total amount of memory resources that are allocated to Reporting Services server
applications. You can also set thresholds that cause the report server to change how it prioritizes and processes
requests depending on whether it is under low, medium, or heavy memory pressure. At low levels of memory
pressure, the report server responds by giving a slightly higher priority to interactive or on-demand report
processing. At high levels of memory pressure, the report server uses multiple techniques to remain operational
using the limited resources available to it.
This article describes the configuration settings that you can specify and how the server responds when
memory pressure becomes a factor in processing requests.

Memory management policies


Reporting Services responds to system resource constraints by adjusting the amount of memory that is
allocated to specific applications and types of processing requests. Applications that run in the Report Server
service and that are subject to memory management include:
The web portal, a Web front-end application for the report server.
Report Server Web service, used for interactive report processing and on-demand requests.
A background processing application, used for scheduled report processing, subscription delivery, and
database maintenance.
Memory management policies apply to the Report Server service as a whole, and not to individual applications
that run within the process.
If there is no memory pressure on the system, each server application requests some memory at startup, in
advance of receiving requests, to deliver optimum performance when requests are eventually received. As
memory pressure builds, the report server adjusts its process model as described in the following table.

M EM O RY P RESSURE SERVER RESP O N SE

Low Current requests continue to process. New requests are


almost always accepted. Requests that are directed to the
background processing application are given a lower priority
than requests directed to the Report Server Web service.

Medium Current requests continue to process. New requests might


be accepted. Requests that are directed to the background
processing application are given a lower priority than
requests directed to the Report Server Web service. Memory
allocations for all three server applications are reduced, with
relatively larger reductions to background processing to
make more memory available for Web service requests.
M EM O RY P RESSURE SERVER RESP O N SE

High Memory allocation is further reduced. Server applications


that request more memory are denied. Current requests are
slowed down and take longer to complete. New requests are
not accepted. The report server swaps in-memory data files
to disk.

If memory constraints become severe and there is no


memory available to handle new requests, the report server
will return an HTTP 503 server unavailable error while
current requests are completing. In some cases, the
application domains might be recycled to immediately
reduce memory pressure.

Although you cannot customize the report server responses to different memory pressure scenarios, you can
specify configuration settings that define the boundaries that separate high, medium, and low memory pressure
responses.

When to customize memory management settings


The default settings specify unequal ranges for low, medium, and high memory pressure. By default, the low
memory pressure zone is larger than the zones for medium and high memory pressure. This configuration is
optimum for processing loads that are evenly distributed or that grow or decline incrementally. In this scenario,
the transition between zones is gradual and the report server has time to adjust its response.
Modifying the default settings is useful if the load pattern includes spikes. When there are sudden spikes in the
processing load, the report server might go from no memory pressure to memory allocation failures very
quickly. This might occur if you have multiple concurrent instances of a memory-intensive report that start at
the same time. To handle this type of processing load, you want the report server to move into a medium or
high memory pressure response as soon as possible so that it can slow down processing. This allows more
requests to complete. To do this, you should lower the value for Memor ySafetyMargin to make the low
memory pressure zone smaller relative to the other zones. Doing so will cause responses for medium and high
memory pressure to occur earlier.

Configuration settings for memory management


Configuration settings that control memory allocation for the report server include WorkingSetMaximum ,
WorkingSetMinimum , Memor ySafetyMargin , and Memor yThreshold .
WorkingSetMaximum and WorkingSetMinimum define the range of available memory. You can
configure these settings to set a range of available memory for the report server applications. This can be
useful if you are hosting multiple applications on the same computer and you determine that the report
server is using a disproportionate amount of system resources relative to other applications on the same
computer.
Memor ySafetyMargin and Memor yThreshold set the boundaries for low, medium, and high levels of
memory pressure. For each state, Reporting Services takes corrective action to ensure report processing
and other requests are handled appropriately relative to the amount of memory that is available on the
computer. You can specify configuration settings that determine the delineation between low, high, and
medium pressure levels.
Although you can change the configuration settings, doing so will not improve report processing
performance. Changing the configuration settings is useful only if requests are getting dropped before
they complete. The best way to improve server performance is to deploy the report server or individual
report server applications on dedicated computers.
The following illustration shows how the settings are used together to distinguish between low, medium, and
high levels of memory pressure:

The following table describes WorkingSetMaximum , WorkingSetMinimum , Memor ySafetyMargin , and


Memor yThreshold settings. Configuration settings are specified in the RSReportServer.config file.

EL EM EN T DESC RIP T IO N

WorkingSetMaximum Specifies a memory threshold after which no new memory


allocations requests are granted to report server
applications.

By default, the report server sets WorkingSetMaximum to


the amount of available memory on the computer. This value
is detected when the service starts.

This setting does not appear in the RSReportServer.config file


unless you add it manually. If you want the report server to
use less memory, you can modify the RSReportServer.config
file and add the element and value. Valid values range from
0 to maximum integer. This value is expressed in kilobytes.

When the value for WorkingSetMaximum is reached, the


report server does not accept new requests. Requests that
are currently in progress are allowed to complete. New
requests are accepted only when memory use falls below the
value specified through WorkingSetMaximum .

If existing requests continue to consume additional memory


after the WorkingSetMaximum value has been reached, all
report server application domains will be recycled. For more
information, see Application Domains for Report Server
Applications.

WorkingSetMinimum Specifies a lower limit for resource consumption; the report


server will not release memory if overall memory use is
below this limit.

By default, the value is calculated at service startup. The


calculation is that the initial memory allocation request is for
60 percent of WorkingSetMaximum .

This setting does not appear in the RSReportServer.config file


unless you add it manually. If you want to customize this
value, you must add the WorkingSetMinimum element to
the RSReportServer.config file. Valid values range from 0 to
maximum integer. This value is expressed in kilobytes..
EL EM EN T DESC RIP T IO N

Memor yThreshold Specifies a percentage of WorkingSetMaximum that


defines the boundary between high and medium pressure
scenarios. If report server memory use reaches this value,
the report server slows down request processing and
changes the amount of memory allocated to different server
applications. The default value is 90. This value should be
greater than the value set for Memor ySafetyMargin .

Memor ySafetyMargin Specifies a percentage of WorkingSetMaximum that


defines the boundary between medium and low pressure
scenarios. This value is the percentage of available memory
that is reserved for the system and cannot be used for
report server operations. The default value is 80.

NOTE
Memor yLimit and MaximumMemor yLimit settings are obsolete in SQL Server 2008 and later versions. If you
upgraded an existing installation or using an RSReportServer.config file that includes those settings, the report server no
longer reads those values.

Example of memory configuration settings


The following example shows the configuration settings for a report server computer that uses custom memory
configuration values. If you want to add WorkingSetMaximum or WorkingSetMinimum , you must type the
elements and values in the RSReportServer.config file. Both values are integers that express kilobytes of RAM
you are allocating to the server applications. The following example specifies that total memory allocation for
the report server applications cannot exceed 4 gigabytes. If the default value for WorkingSetMinimum (60%
of WorkingSetMaximum ) is acceptable, you can omit it and specify just WorkingSetMaximum in the
RSReportServer.config file. This example includes WorkingSetMinimum to show how it would appear if you
wanted to add it:

Config files
<MemorySafetyMargin>80</MemorySafetyMargin>
<MemoryThreshold>90</MemoryThreshold>
<WorkingSetMaximum>4000000</WorkingSetMaximum>
<WorkingSetMinimum>2400000</WorkingSetMinimum>

About ASP.NET memory configuration settings


Although the 2016 and later Report Server Web service and web portal are HTML5 applications, previous
versions are ASP.NET applications, neither application responds to memory configuration settings that you
specify in the processModel section of machine.config for ASP.NET applications that run in IIS 5.0 and higher
compatibility mode. Reporting Services reads memory configuration settings from the RSReportServer.config
file only.

See also
RsReportServer.config Configuration File
Modify a Reporting Services Configuration File (RSreportserver.config)
Application Domains for Report Server Applications
Setting Time-out Values for Report and Shared
Dataset Processing (SSRS)
2/7/2020 • 3 minutes to read • Edit Online

In Reporting Services, you can specify time-out values to set limits on how system resources are used. Report
servers support two time-out values:
An embedded dataset query time-out value is the number of seconds that the report server waits for a
response from the database. This value is defined in a report.
A shared dataset query time-out value is the number of seconds that the report server waits for a
response from the database. This value is part of the shared dataset definition and can be changed when
you manage the shared dataset on the report server.
A report execution time-out value is the maximum number of seconds that report processing can
continue before it is stopped. This value is defined at the system level. You can vary this setting for
individual reports.
Most time-out errors occur during query processing. If you are encountering time-out errors, try increasing the
query time-out value. Make sure to adjust the report execution time-out value so that it is larger than the query
time-out. The time period should be sufficient to complete both query and report processing.

Setting a query time-out for an embedded dataset in a report


Query time-out values are specified during report authoring when you define an embedded dataset. The time-
out value is stored with the report, in the Timeout element of the report definition. By default, this value is set
to 30 seconds. For more information, see Report Embedded Datasets and Shared Datasets (Report Builder and
SSRS).

NOTE
For Paginated Repor ts in Power BI , the default value is set to 600 seconds .

Users who have permission to modify the properties of a published report can reset this value by editing the
report definition file.
You can also specify a query time-out value for data-driven subscriptions. The query time-out value is specified
in the Data-Driven Subscription pages. The value you specify determines how long the report server waits for
query processing to complete when retrieving data from the subscriber data source.

Setting a query time-out for a shared dataset


Query time-out values are specified in seconds on the report server when you create or manage a shared
dataset. By default, this value is set to 0 seconds, which is the equivalent of no time-out value. For more
information, see Manage Shared Datasets.

Setting a report execution time-out


You can set the report execution time-out value to limit the amount of time that a report server uses to process
a report. Report execution time-out values can be specified in the web portal. You can set a default value for all
reports in the Site Settings page, and then override that value in the Execution properties page for a specific
report. By default, the value is set to 1800 seconds. For more information, see Set Report Processing Properties.

How report execution time-out values are evaluated


The report server evaluates running jobs at 60 second intervals. At each 60 second interval, the report server
compares actual process time against the report execution time-out value. If the processing time for a report
exceeds the report execution time-out value, report processing will stop.
Note that if you specify a time-out value that is smaller than 60 seconds, the report may execute in full if
processing starts and completes during the quiet part of the cycle when the report server is not evaluating
running jobs. For example, if you set a time-out value of 10 seconds for a report that takes 20 seconds to run,
the report will process in full if report execution starts early in the 60 second cycle.

NOTE
You can set the RunningRequestsDbCycle setting in the RSReportServer.config file to change the frequency of how
often running jobs are evaluated.

See also
Set Processing Options (Reporting Services in SharePoint Integrated Mode)
Reporting Services Report Server (Native Mode)
Manage a Running Process
The web portal of a report server (SSRS Native Mode)
Process Large Reports
3/5/2021 • 4 minutes to read • Edit Online

Large reports present certain processing challenges and require certain configurations if they are to run
properly. Large reports should not be run on demand unless they are configured to support pagination.

NOTE
Page breaks are enabled by default. Do not disable page breaks if you think the report will contain a large amount of
data. The HTML rendering format that is used to initially render a report opens a report in a browser. If the report is not
paginated, all of the data is included in a single page, which cannot be accommodated by most browsers. For example, a
report that contains 5,000 rows of data almost certainly cannot be viewed in a browser in a single page.

If you are working with a large report, you should choose report execution, rendering, and delivery options that
can accommodate large documents. Report size is largely determined by the row set that comes back from the
query and the rendering extension that is used to present the report.
For reports that contain volatile data, report size can change dramatically from one report run to the next. In this
case, you should monitor the data source to determine how data volatility affects your report and whether you
need to follow the steps prescribed in this topic.
For more information and tips on how to diagnose time-out errors and out-of-memory errors, see the article
How to diagnose issues when running reports in the report server on blogs.msdn.microsoft.com.

Configuration recommendations
Recommendations for report execution, report rendering, and report access include the following items:
Design the report to support pagination. The report server sends a report one page at a time. If the
report includes pagination, you can control how much data is streamed to the browser. For more
information, see Preload the Cache (SSRS).
Configure the report to run as a scheduled report snapshot to prevent it from being run on demand. Do
not set a time-out value for report execution. Run the report during off-peak hours.
Configure the report to use a shared data source if you want to control whether the report is processed.
One advantage to using a shared data source is that you can disable it. Disabling the data source prevents
report processing.
Disable report history if you want to conserve disk space. To disable report history, clear all the check
boxes on the History properties page.
Limit access to the report. Configure the report to use item-level security and replace the default role
assignments with new ones that allow access to only those users that need it.
By default, users can open any report that they can view in the folder hierarchy. Even if you configure a
report to run as a snapshot, users who can view the report item in a folder can open the report. If the
report is very large, it might cause the browser to stop responding when a user opens the report in the
web portal.

Rendering recommendations
Before you configure report distribution, it is important to know which rendering clients can accommodate
large documents. The recommended format is the default HTML rendering extension with soft page breaks, but
you can choose from any format that supports pagination.
Performance and memory consumption varies for each rendering format. The same report will render at
different rates and require different amounts of memory depending on the format you select. The fastest and
least memory intensive formats include CSV, XML, and HTML. PDF and Excel have the slowest performance, but
for different reasons. PDF is CPU-intensive, while Excel is RAM-intensive. Image rendering falls in-between the
two groups. You can specify the format when you define how the report is distributed.

Deployment and distribution recommendations


If you are using page breaks to control report rendering, you can deploy a large report the same way you would
deploy any report. You can provide access to the report through the web portal, a SharePoint Web part, or a
URL that you add to a portal or Web site. All of these deployment options support on demand access, aw well as
a previously run report snapshot.
An alternative deployment strategy is to distribute reports to individual users. You can distribute large reports
through subscriptions if you are careful about how you configure delivery options. You can use either a standard
subscription or a data-driven subscription to deliver the report. Recommendations for subscription and delivery
include the following:
Configure a subscription to use Web archive (MHTML), PDF, or Excel.
Configure a subscription to use file share delivery if you are using PDF or Excel. Once the report is
delivered, you can use a desktop application to work with the report. You must set permissions on the file
share to determine who can view the report.
Note that once the report is on the file share, it is no longer controlled or secured by Reporting Services.
If you want to be notified when the report is updated, create a second subscription that uses e-mail
delivery to send a notification only.
If you want to use e-mail report delivery, configure the subscription to include a link. Avoid sending the report
as an attachment.

See also
Subscriptions and Delivery (Reporting Services)
Set Report Processing Properties
Specify Credential and Connection Information for Report Data Sources
Report Server Content Management (SSRS Native Mode)
Preload the Cache (SSRS)
Report and Snapshot Size Limits
3/5/2021 • 6 minutes to read • Edit Online

Administrators who manage a Reporting Services deployment can use the information in this topic to
understand report size limits when the report is published to a report server, rendered at run time, and saved to
the file system. This topic also provides practical guidance on how to measure the size of a report server
database, and describes the effect of snapshot size on server performance.

Maximum Size for Published Reports


On the report server, report and model size is based on the size of the report definition (.rdl) and report model
(.smdl) files that you publish to a report server. The report server does not limit the size of a report that you
publish. However, Microsoft ASP.NET imposes a maximum size for items that are posted to the server. By default,
this limit is 4 megabytes (MB). If you upload or publish a file that exceeds this limit to a report server, you
receive an HTTP exception. In this case, you can modify the default by increasing the value of the
maxRequestLength element in the Machine.config file.
Although a report model might be very large, report definitions rarely exceed 4 MB. A more typical report size is
in the order of kilobytes (KB). However, if you include embedded images, the encoding of those images can
result in large report definitions that exceed the 4 MB default.
ASP.NET imposes a maximum limit on posted files to reduce the threat of denial-of-service attacks against the
server. Increasing the value of the upper limit undermines some of the protection that this limit provides.
Increase the value only if you are confident that the benefit of doing so outweighs any additional security risk.
Keep in mind that the value you set for the maxRequestLength element must be larger than the actual size
limits you want to enforce. You need to make the value larger to account for the inevitable increase to the HTTP
request size that occurs after all the parameters are encapsulated in a SOAP envelop, and the Base64 encoding
is applied to certain. Base64 encoding increases the size of the original data by approximately 33%.
Consequently, the value you specify for the maxRequestLength element needs to be approximately 33% larger
than the actual usable item size. For example, if you specify a value of 64 MB for maxRequestLength ,
realistically you can expect the maximum size for report files that are posted to the report server to be
approximately 48 MB.

Report Size in Memory


When you run a report, report size is equal to the amount of data that is returned in the report plus the size of
the output stream. Reporting Services does not impose a maximum limit on the size of a rendered report.
System memory determines the upper limit on size (by default, a report server uses all available configured
memory when rendering a report), but you can specify configuration settings to set memory thresholds and
memory management policies. For more information, see Configure Available Memory for Report Server
Applications.
For any report, size can vary considerably depending on how much data is returned and which rendering
format you use for the report. A parameterized report might be larger or smaller depending on how parameter
values affect the query results. The report output format you choose effects report size in the following ways:
HTML processes the report one page at a time. Because the report is processed in smaller units, less
memory is required to process specific chunks.
PDF, Excel, TIFF, XML, and CSV process the entire report in memory before displaying the report to the
user.
To measure the size of a rendered report, you can view the report execution log. For more information, see
Report Server ExecutionLog and the ExecutionLog3 View.
To calculate the size of a rendered report on disk, you can export and then save the report to the file system (the
saved file includes data and report formatting information).
The only hard limit on report size is when rendering to Excel format. Worksheets cannot exceed 65536 rows or
256 columns. Other rendering formats do not have these limits so size is limited only by the amount of
resources on your server.

NOTE
Report processing and rendering occur in memory. If you have large reports or large number of users, be sure to do
some kind of capacity planning to make sure your report server deployment performs at a level that is satisfactory for
your users. For more information about tools and guidelines, see the following publications on MSDN: Planning for
Scalability and Performance with Reporting Services and Using Visual Studio 2005 to Perform Load Testing on a SQL
Server 2005 Reporting Services Report Server.

Measuring Snapshot Storage


The size of any given snapshot is directly proportional to the amount of data in the report. Snapshots are
typically much larger than other items that are stored on a report server. Snapshot size can typically range from
a few megabytes to tens of megabytes. If you have very large reports, you can expect to see snapshots that are
even larger. Depending on how frequently you use snapshots and how you configure report history, the amount
of disk space that the report server database requires can increase rapidly over a short period of time.
By default, both the repor tser ver and repor tser ver tempdb databases are set to autogrow. Although the
database size can increase automatically, it is never decreased automatically. If the repor tser ver database has
excess capacity because you deleted snapshots, you must manually reduce it to recover disk space. Similarly, if
the repor tser ver tempdb grew to accommodate an unusually high volume of interactive reporting, the disk
space allocation will remain at that setting until you reduce it.
To measure the size of the report server databases, you can run the following Transact-SQL commands.
Calculating total database size at regular intervals can help you develop reasonable estimates of how to allocate
space for the report server database over time. The following statements measure the amount of space that is
currently used (the statements assume you are using default database names):

USE ReportServer
EXEC sp_spaceused

Snapshot Size and Report Server Performance


Snapshot size affects server performance when the report is processed and rendered. Server performance is
most affected by rendering operations, so if you have a large snapshot you can expect some delay when users
request the report. Depending on the number of users, you can expect to encounter delays when snapshot size
is over 100 megabytes.
To minimize performance delays due to large snapshots, you can do the following:
Deploy the report server and the SQL Server Database Engine on separate computers.
Add more system memory.
Review the "Planning for Scalability and Performance with Reporting Services" document on the MSDN
Web site for best practices on how to configure a report server for the enterprise.
The quantity of snapshots that are stored in a report server database is, by itself, not a performance factor. You
can store a large number of snapshots without affecting server performance. You can keep snapshots
indefinitely. However, be aware that report history is configurable. If a report server administrator lowers the
report history limit, you might lose historical reports that you intended to keep. If you delete the report, all
report history is deleted with it.

See Also
Set Report Processing Properties
Report Server Database (SSRS Native Mode)
Process Large Reports
Caching Reports (SSRS)
11/2/2020 • 4 minutes to read • Edit Online

A report server can cache a copy of a processed report and return that copy when a user opens the report. To a
user, the only evidence available to indicate the report is a cached copy is the date and time that the report ran. If
the date or time is not current and the report is not a snapshot, the report was retrieved from cache.
Caching can shorten the time required to retrieve a report if the report is large or accessed frequently. If the
server is rebooted, all cached instances are reinstated when the Report Server Web service comes back online.
Caching is a performance-enhancement technique. The contents of the cache are volatile and can change as
reports are added, replaced, or removed. If you require a more predictable caching strategy, you should create a
report snapshot. For more information, see Set Report Processing Properties.

NOTE
Reporting Services stores temporary files in a database to support user sessions and report processing. These files are
cached for internal use and to support a consistent viewing experience during a single browser session. For more
information about how internal-use temporary files are cached, see Report Server Database (SSRS Native Mode).

Cached Instances
A cached instance of a report is based on the intermediate format of a report. The report server generally
caches one instance of a report based on the report name. However, if a report can contain different data based
on query parameters, multiple versions of the report may be cached at any given time. For example, suppose
you have a parameterized report that takes a region code as a parameter value. If four different users specify
four unique region codes, four cached copies are created.
The first user who runs the report with a unique region code creates a cached report that contains data for that
region. Subsequent users who request the report using the same region code get the cached copy.
Not all reports can be cached. If a report includes user-dependent data, prompts users for credentials, or uses
Windows Authentication, it cannot be cached.

Refreshing the Cache


A cached report is replaced with a newer version when a user selects the report after the previously cached copy
has expired. Reports that are configured to run as cached instances are removed from the cache at regular
intervals based on expiration settings. You can set a report's expiration in minutes or at a scheduled time, as
determined by the data's immediacy requirement. You cannot delete reports from the cache directly unless you
use the SOAP API.
To configure cache expiration, you can use a shared schedule or report-specific schedule. If you use a shared
schedule and it is subsequently paused, the cache does not expire while the schedule is inoperative. If the shared
schedule is subsequently deleted, a copy of the schedule settings is saved as a report-specific schedule.
If a schedule expires or if the scheduling engine is unavailable at a cache expiration date, the report server runs
a live report until scheduled operations can be resumed (by either extending the schedule or starting the
scheduling service).

Preloading the Cache


To improve server performance, you can preload the cache. You can preload the cache with a collection of
parameterized report instances in two ways:
1. Create a cache refresh plan. When you create a refresh plan, you can specify a schedule for a single
report or specify a shared schedule.
2. Create a data-driven subscription that uses the Null Delivery Provider. When you specify the Null
Delivery Provider as the method of delivery in the subscription, the report server targets the report
server database as the delivery destination and uses a specialized rendering extension called the null
rendering extension. In contrast with other delivery extensions, the Null Delivery Provider does not have
delivery settings that you can configure through a subscription definition.
Caching a report is especially useful if you want to cache multiple instances of a parameterized report where
different parameter values are used to produce different report instances. Note that you can only specify query-
based parameters on the report.
When you specify a schedule or when you create the data-driven subscription, you schedule how often the
reports are delivered to the cache. In order for new copies to be delivered to the cache, the old copies must have
expired. Therefore, the Execution properties of the report must be configured to include cache expiration
settings. The expiration setting must be consistent with the subscription schedule that you define. For example, if
you create a subscription that runs every night, the cache should also expire every night prior to the
subscription's run time. If the Execution properties do not include expiration times, newer deliveries are
disregarded. For more information about cache refresh plans, see Schedules. For more information about
setting properties, see Set Report Processing Properties. For more information about using data-driven
subscriptions, see Data-Driven Subscriptions.

Conditions That Cause Cache Expiration


A cached report is invalidated in response to the following events: the report definition is modified, report
parameters are modified, data source credentials change, or report execution options change. If you delete a
report that is stored in the cache, the cached version is also deleted.
If a report cannot be rendered from a cached instance for any reason (for example, if the parameter values that a
user specifies are different from those used to produce the cached report), the report server reruns the report.

See also
Set Processing Options (Reporting Services in SharePoint Integrated Mode)
Set Report Processing Properties
Reporting Services Concepts (SSRS)
Preload the Cache
Schedules
Cache Shared Datasets (SSRS)
Cache Shared Datasets (SSRS)
11/2/2020 • 4 minutes to read • Edit Online

Query results for a shared dataset can be copied to a cache to provide consistent data for multiple reports and
to improve response time for the dataset query. Like reports, you can configure a shared dataset to be cached
on first use or by specifying a schedule.
A shared dataset can be included in multiple reports or as part of component definitions. By caching the shared
dataset, you provide a consistent set of data for all reports that use it, and also reduce the number of times that
the dataset query runs against the external data source.
The following list provides examples of when to cache a shared dataset:
The query takes a substantial amount of time to run.
The query takes parameters, but most of the time, the number of parameter combinations is small. Each
combination creates cached query results.
The query runs at predictable times of the day, week, or month.
The query runs as the result of a shared dataset reference in a report that is delivered via e-mail, where a
large number of people are likely to click the link in a short span of time.
The following list provides examples of when not to cache a shared dataset:
The query results must always include the most recent data.
The query runs quickly.
The query runs infrequently.
The query takes parameters, the number of parameter combinations is large, and no combination is
more likely than another.
The data source that the shared dataset is based on has Prompt or Windows Integrated credentials.
The shared dataset filter or the query contains an expression with a reference to the global collection
User.
If a user chooses report parameter values that differ from the default values that are specified for the cached
result set, the dataset query runs actively and the cached results are not used for that query.

Caching Shared Datasets


To enable caching for a shared dataset, you must select the cache option on the shared dataset. After caching is
enabled, the query results for a shared dataset are copied to the cache on first use. If the shared dataset has
parameters, each combination of parameters creates a new entry in the cache.
While the query results for a specific parameter combination are in the cache, each report that is launched for
processing and that includes a reference to the shared dataset with those parameter values will use the cached
data.
You can specify how long to keep data in the cache before it expires. For more information, see Working with
shared datasets.
Preloading the Cache
You can preload the cache by creating a cache refresh plan. With a refresh plan, you can specify how often to
refresh the cache by using an item-specific schedule or a shared schedule. To avoid multiple cache entries for the
same item, the schedule that you specify should allow enough time for query processing on the external data
source. For example, if the query takes 20 minutes to run, the refresh schedule should be greater than 20
minutes. For more information, see Schedules.
To create a cache refresh plan for a shared dataset, the following conditions apply.
The shared dataset must be enabled for caching.
The shared data source that the shared dataset depends on cannot use Prompt or Windows Integrated
credentials.
If the shared dataset has parameters, you must specify static default values for each parameter that is not
marked read-only. Read-only parameters will always use the default value. To cache a shared dataset for
multiple combinations of parameters, you must create a separate cache refresh plan for each
combination of values. Parameters cannot contain references to other datasets.
Each cache refresh plan is associated with only one shared dataset or report.
You must have ReadPolicy and UpdatePolicy permissions on the shared dataset.
Cache refresh plans apply to both shared datasets and reports. For more information, see Caching Reports
(SSRS).

Conditions that Cause Cache Expiration


The following conditions can cause a shared dataset cache to become not valid.
A schedule condition expires. The cache times out or the expiration time occurs.
A shared schedule is deleted.
Changes to a shared schedule. Shared schedules can be paused, which also affects when a cache expires.
The query definition for the shared dataset changes.
The credentials for the shared data source that the shared dataset depends on change.
The cache options for the shared dataset change.
The default values for read-only parameters for the shared dataset change.
The filters that are part of the shared dataset definition change.
The shared dataset is deleted from the report server. When a shared dataset is deleted, associated cached
copies and cache refresh plans are also deleted.
Updates to cache refresh plans for shared datasets do not affect reports that are already being processed.
Updating a cache refresh plan affects only future launches of reports that reference the shared dataset.

See also
Manage Shared Datasets
Preload the cache
11/2/2020 • 7 minutes to read • Edit Online

You can preload the cache for a shared dataset by creating a cache refresh plan for the shared dataset.
You can preload the cache for a report in two ways:
1. Create a cache refresh plan for the report. This is the preferred method.
2. Use a data-driven subscription to preload the cache with instances of parameterized reports. This was the
only way to preload the cache in versions of Reporting Services earlier than SQL Server 2008 R2. For
more information, see Caching Reports (SSRS).
The following conditions must be met before you can cache a report or a shared dataset:
The shared dataset or the report must have caching enabled.
The shared data sources for the shared dataset or the report must be configured to use stored credentials
or no credentials.
The SQL Server Agent service must be running.

To preload the cache by creating a cache refresh plan


1. Start the web portal of a report server.
2. Select Browse from the Home screen and navigate the folder hierarchy to locate the item that you want
to cache.
3. Select the ellipsis in the top-right corner of the item, then select Manage from the drop-down menu.
4. Select the Caching tab in the vertical menu on the left.
5. To activate caching for a dataset, select the Cache copies of this dataset and use them when
available radio button. The Cache expiration section then appears beneath it. Select one of the
following radio buttons:
Cache expires after x minutes (enter the desired number of minutes for x).
Cache expires on a schedule . Reporting Services provides shared schedules and report-specific
schedules to help you control processing, consistent content, and the performance of report
distribution. For more information, see Create, Modify, and Delete Schedules. You have several options
on how to create a schedule, in this case for cache expiration: Select one of the two scheduling choices
below:
Shared schedule radio button, and then select a schedule from the Select a shared
schedule dropdown textbox. For more information, see Schedules.
Repor t-specific schedule radio button, then select the Edit schedule link if necessary to
display the Schedule details page.
On this page you can select:
The type of schedule:
Hour - run the schedule every: specify hours and minutes and the start time.
Day - select one of the three choices below:
On the following days : (Sun, Mon, Tue, Wed, Thu, Fri, Sat).
Ever y weekday
Repeat after this number of days - specify a number.
Week - specify both of the following two items:
Repeat after this number of weeks - specify a number.
On days - pick the days of the week to run it.
Month - which month(s), with a choice of:
On week of the month ,
Select (1st, 2nd, 3rd, 4th or Last) from the dropdown box.
On day of the week to run it. Select one or more of the check
boxes (Sun, Mon, Tue, Wed, Thu, Fri, Sat).
On calendar day(s) - Enter the actual day number of the month
separated by commas, or a range of days separated by a dash, or
any combination of both (e.g. 1,3-5).
Once - a single occurrence.
Star t time - the time of the day for the schedule to start.
Star t and end dates - Specify the start date and optionally the end date of the
schedule.
Select Apply to save the schedule.

NOTE
If the item does not have caching enabled, you will be prompted to enable caching. To
enable caching, select OK .

Select Create cache refresh plan to create / save the cache plan.
The Cache Refresh Plans page opens on the screen. From here you can:
Add a new cache refresh plan.
Create a new cache refresh plan from an existing plan.
Refresh the cache refresh plans page.
Delete a plan.
Search for a plan by name.
If no cache refresh plans have been saved yet, the list will be empty, and the "Add" choice
will be the only available option. Select + New cache refresh plan to add a new one, and
the New Cache Refresh Plan page is displayed.
Type a Description in the first text box to name the refresh plan.
Select one of the following radio buttons in the Refresh the cache on the following
schedule
Shared schedule - select a shared schedule from the adjacent dropdown box.
Repor t-specific schedule - Edit the schedule as in step 2.2 above by selecting
the Edit schedule link if desired to display the Schedule details page.
Select Create cache refresh plan to save the plan if adding, or Apply if editing
the plan.
You are returned to the updated Cache Refresh Plans page.

To preload the cache with a user-specific report by using a data-


driven subscription
1. Start the web portal of a report server.
2. Select Browse from the Home screen and navigate the folder hierarchy to locate the report you want to
subscribe to.
3. Right-click the report, select Subscribe from the dropdown menu. The New Subscriptions page is
displayed.
4. Enter a description for the subscription in the Description text box.
5. The Type of subscription radio button displays two options:
Standard subscription - to generate and deliver one report
Data-driven subscription - to generate and deliver one report for each row in a dataset. This is the
option you want to select to preload the cache.
6. In the Schedule section, select one of the following radio buttons:
Shared schedule - select a shared schedule from the dropdown box.
Repor t-specific schedule - Edit the schedule as in step 2.2 above by selecting the Edit schedule
link if desired to display the Schedule details page.
7. The Destination section displays the following choices in a dropdown box:
Windows File Share
E-Mail
Null Deliver y Provider - for this task, select Null delivery provider.
8. In the Dataset section, edit or create a dataset for this report subscription by selecting the Edit dataset
button.
9. On the Edit Dataset page in the data source section, you choose the data source that contains the
report parameter values and delivery options. Your choices are:
A shared data source - select the ellipsis and select a shared data source from the Shared Data
Source folder.
A custom data source - most likely. this is the option you will have to choose, unless you or
someone else has already completed the steps below to create it as a shared data source.
Specify the connection type, connection string, and credentials for accessing the data source
that contains subscriber data. The following example illustrates a connection string used to
connect to a SQL Server database named Subscribers.

data source=<servername>;initial catalog=Subscribers

10. In the Quer y section - specify the query that retrieves the desired subscriber data. For example:

Select * from RptSubscribers

Optionally increase the time-out period for queries that take a long time to process.
11. Select Validate . The query must be validated before you continue. When the Validation successful
message appears, a list of Dataset fields will be displayed below the Validate button. Select Apply to
create the custom data source.
12. You are returned to the New Subscription page. In the Repor t Parameters section, specify report
parameter values for the report parameters displayed if any.
13. Select Create subscription .
14. The Subscriptions page is displayed showing your new Data-driven subscription. From this page, you
can enable the subscription when you are ready by selecting the checkbox to the left of it, and selecting

the Enable button.


15. Specify when the subscription is processed. Don't choose When the repor t data is updated on the
repor t ser ver . That setting is for snapshots only. If you want to use a pre-existing schedule, select On a
shared schedule .
Or, to create a custom schedule, select On a schedule created for this subscription and then select
Next . Configure the schedule and then select Finish .

NOTE
In order for the subscribers to receive the newest report, the schedule that you configure should be consistent
with the report delivery schedule that you have defined for the subscribers. For more information, see the web
portal of a report server.

16. Configure the Execution options for the report as follows. On the report page, select the Proper ties tab.
17. In the left frame, select the Execution tab.
18. On the page, select Render this repor t with the most recent data .
19. Choose one of the following two cache options and configure the expiration as follows:
To make the cached copy expire after a particular time period, select Cache a temporar y copy
of the repor t. Expire copy of repor t after a number of minutes. Type the number of
minutes for report expiration.
To make the cached copy expire on a schedule, select Cache a temporar y copy of the repor t.
Expire copy of repor t on the following schedule. Select Configure , or select a shared
schedule to set a schedule for report expiration.
20. Select Apply .

See also
Data-Driven Subscriptions
Create a Data-Driven Subscription (SSRS Tutorial)
Performance, Snapshots, Caching (Reporting Services)
Set Report Processing Properties
Caching Reports (SSRS)
Working with shared datasets
Cache a Shared Dataset
11/2/2020 • 2 minutes to read • Edit Online

One way to improve performance is to configure caching properties for a shared dataset. When a shared
dataset is cached, a copy of the query results is saved for a specified period of time. The first user who requests
a report that uses the shared dataset must wait for the query results and all processing to complete before
viewing the report. Subsequent users who request the report within the caching period will experience
improved performance because the query and processing has already occurred. You can also specify a cache
refresh plan to run the query and cache the results until the specified cache expiration.
Users running reports based on a shared dataset or cache refresh plans create the query cache and in both
cases, the cache is available based on the cache expiration options.
There are restrictions on the types of shared datasets that you can cache. For example, the query results cannot
be cached if the data varies based on the user identity or if data is retrieved using the security token of the user
who requests the report. For more information, see Cache Shared Datasets (SSRS) and Caching Reports (SSRS).
To schedule the expiration of a cached report
1. Start Report Manager (SSRS Native Mode).
2. In Report Manager, navigate to the shared dataset for which you want to set caching properties, hover
over the item, and click the drop-down arrow.
3. In the drop-down menu, click Manage .
4. In the left frame, click Caching .

NOTE
If you see the error Credentials used to run the shared dataset are not stored , the cache shared dataset
option will be disabled. You need modify the data source to store credentials or modify the shared dataset to use
a different data source that does store credentials.

5. Select Cache share dataset .


6. Select the option to expire the cache after 30 minutes. You can also choose for the cache to expire on a
specified schedule.
7. Click Apply .

See Also
Manage Shared Datasets
Cache a Report (Report Manager)
11/2/2020 • 2 minutes to read • Edit Online

One way to improve performance is to configure caching properties for a report. When a report is cached, a
copy of the rendered report is saved for a short period of time. The first user who requests the report must wait
for all processing to complete before viewing the report. Subsequent users who request the report within the
caching period can view it right away because processing has already occurred.
There are restrictions on the types of reports that you can cache. For example, a report cannot be cached if
report output varies based on the user identity or if data is retrieved using the security token of the user who
requests the report. For more information, see Caching Reports (SSRS).
To schedule the expiration of a cached report
1. Start Report Manager (SSRS Native Mode).
2. In Report Manager, navigate to the Contents page. Navigate to the report for which you want to set
caching properties, hover over the item, and click the drop-down arrow.
3. In the drop-down menu, click Manage .
4. In the left frame, click the Processing Options .
5. On the page, select Always run this repor t with the most recent data .
6. Select one of the following two cache options and configure expiration as follows:
To configure a cached copy to expire after a particular time period, click Cache a temporar y
copy of the repor t. Expire copy of repor t after a number of minutes . Type the number of
minutes for report expiration.
To configure a cached copy to expire on a schedule, click Cache a temporar y copy of the
repor t. Expire copy of repor t on the following schedule. Click Configure , or select a
shared schedule to control report expiration
7. Click Apply .

See Also
Set Report Processing Properties
Caching Reports (SSRS)
Create, Modify, and Delete Snapshots in Report
History
11/2/2020 • 2 minutes to read • Edit Online

Report history is a collection of report snapshots. You can maintain report history by adding and deleting
snapshots, or by modifying properties that affect report history storage. You can create report history manually
or on a schedule.
To create report history, your role assignment must include the "Manage report history" task. To view report
history, your role assignment must include the "View reports" task. Report history is available to all users who
have access to the report. You cannot selectively enable or disable report history for a subset of users.
Snapshots in report history are identified by the date and time that they were created. The date and time is
based on when the query executed.

Creating Snapshots in Report History


Snapshots can be created manually or at scheduled intervals for any report that can run unattended. To run
unattended, the report must use stored credentials or no credentials at all. Furthermore, if the report uses
parameters, you must specify default values to use when the report runs. You can specify stored credentials and
parameter values in the property pages for the report. For more information, see Parameters Properties Page
(Report Manager).
When you create a report snapshot, the following elements are stored along with the report snapshot in the
report server database:
The result set (that is, the data in the report, retrieved through the credentials specified in the Data
Sources properties page of the report).
The underlying report definition, as it exists at the time the snapshot was created. If the report definition
is subsequently modified after the snapshot is generated, those changes are not reflected in the snapshot.
Parameter values that are used to obtain or filter the result set.
Embedded resources, such as images. External resources that are linked to a report are not stored with
the report snapshot.
The ways in which report history can be created and the number of report snapshots that can be stored are
determined by settings.
If a report produces an error, a snapshot is not created. Reports that produce warnings, yet still run, can be used
to generate snapshots.

Modifying Properties and Deleting Report History


Once a report snapshot exists, you cannot modify it. However, you can modify properties in a way that deletes
report history.
Report history can be deleted in the following ways:
Manually delete snapshots singly or in groups.
You can delete snapshots from the History page in Report Manager. Navigate to the report, click History,
select the check box next to the snapshots that you want to delete, and then click Delete .
Lower the report history limit to reduce the number of snapshots that are stored. The report history limit
can be set for the report server or for specific reports. When the limit is lowered, the oldest snapshots are
deleted from history.
You cannot delete all report history stored on a report server in a bulk operation.
Report history is also deleted when you delete a report. For example, if you delete a monthly sales report
because you are replacing it with a newer version, all report history that is associated with the report is also
deleted. However, if you move a report, all report history moves with it.

See Also
Create Report History (Reporting Services in SharePoint Integrated Mode)
Report Manager (SSRS Native Mode)
Report Server Content Management (SSRS Native Mode)
Add a Snapshot to Report History (Report Manager)
Limit Report History (Report Manager)
Add a Snapshot to Report History
5/10/2021 • 4 minutes to read • Edit Online

Report history is a collection of report snapshots that you create over time. A report snapshot is a report that
contains layout information and query results that were retrieved at a specific point in time. Unlike on-demand
reports, which get up-to-date query results when you select the report, report snapshots are processed on a
schedule and then saved to a report server. When you select a report snapshot for viewing, the report server
retrieves the stored report from the report server database and shows the data and layout that were current for
the report at the time the snapshot was created.
Report snapshots are not saved in a particular rendering format. Instead, report snapshots are rendered in a
final viewing format (such as HTML) only when a user or an application requests it. Deferred rendering makes a
snapshot portable. The report can be rendered in the correct format for the requesting device or Web browser.

To manually add snapshots to report history


1. In Report Manager, navigate to the Contents page, and hover over the item that you want to view
history for, and click the drop-down arrow.
2. In the drop-down menu, click View Repor t Histor y .
3. Click New Snapshot . A new snapshot is created in the When Run column.

NOTE
To enable creating snapshots, the administrator must configure the report history to Allow histor y to be
created manually . For more information, see Limit Report History (Report Manager).

4. Click Apply .

To automatically add all snapshots to report history


1. For a report that is already configured to run as a report execution snapshot, you can set additional
properties to save a copy of the snapshot to report history each time the snapshot is refreshed.
2. In Report Manager, navigate to the Contents page, hover over the item that you want to view history for,
and click the drop-down arrow.
3. In the drop-down menu, click Manage .
4. Click Snapshot Options .
5. Select the check box for Store all repor t execution snapshots in histor y .
6. Click Apply .

To automatically add snapshots to report history based on a schedule


1. In Report Manager, navigate to the Contents page, and hover over the item that you want to view
history for, and click the drop-down arrow.
2. In the drop-down menu, click Manage .
3. Click Snapshot Options .
4. Select the check box for Use the following schedule to add snapshots to repor t histor y . Perform
one of the following:
Select Repor t-specific schedule . Fill in the schedule details, select the start and end dates for the
schedule, and then click OK .
Select Shared schedule . From the list, select the preferred schedule.
5. Click Apply .

See also
Configure Execution Properties for a Report (Report Manager)
Limit Report History (Report Manager)
Schedules
Report Manager (SSRS Native Mode)
1. In the web portal, navigate to the item that you want to view history for and right-click it.
2. In the drop-down menu, select Manage .
3. Select the Histor y snapshots tab.
4. On the Histor y snapshots page, select the New histor y snapshot . A new snapshot is created and
appears below with the current date and time in the Created column.

NOTE
To enable creating snapshots, the administrator must configure the report history to Allow histor y to be
created manually . For more information, see Limit Report History (web portal).

To add snapshots via a schedule to report history


1. In the web portal, navigate to the item that you want to view history for and right-click it.
2. In the drop-down menu, select Manage .
3. Select the Histor y snapshots tab.
4. On the Histor y snapshots page, select the Schedule and settings button.
5. In the Schedule section, select one or both of the options below if at least one choice is not already
selected:
Create histor y snapshots on a schedule .
Allow people to create snapshots manually .
6. In the Advanced section, select Retain all histor y snapshots .
7. Optionally select the checkbox for Save cache snapshots in repor t histor y as well .
8. Select Apply to save the settings.
NOTE
To enable creating snapshots, the administrator must configure the report history to Allow histor y to be
created manually . For more information, see Limit Report History (web portal).

9. Click Apply .

To automatically add all snapshots to report history


1. For a report that is already configured to run as a report execution snapshot, you can set additional
properties to save a copy of the snapshot to report history each time the snapshot is refreshed.
2. In the web portal, navigate to the item that you want to view history for and right-click it.
3. In the drop-down menu, select Manage .
4. Select the Histor y snapshots tab.
5. On the Histor y snapshots page, select the Schedule and settings button.
6. In the Schedule section, select one or both of the options below if at least one choice is not already
selected:
Create histor y snapshots on a schedule .
Allow people to create snapshots manually .
7. In the Advanced section, select Retain all histor y snapshots .
8. Optionally select the checkbox for Save cache snapshots in repor t histor y as well .
9. Select Apply to save the settings.

To automatically add snapshots to report history based on a schedule


1. In the web portal, navigate to the item that you want to view history for and right-click it.
2. In the drop-down menu, select Manage .
3. Select the Histor y snapshots tab.
4. On the Histor y snapshots page, select the Schedule and settings button.
5. Select the check box for Use the following schedule to add snapshots to repor t histor y . Perform
one of the following:
Select Repor t-specific schedule . Fill in the schedule details, select the start and end dates for the
schedule, and then click OK .
Select Shared schedule . From the list, select the preferred schedule.
6. Click Apply .

See also
Configure Execution Properties for a Report (web portal)
Limit Report History (web portal)
Schedules
the web portal (SSRS Native Mode)
Create Report History (Reporting Services in
SharePoint Integrated Mode)
11/2/2020 • 2 minutes to read • Edit Online

Report history is a collection of report snapshots that you create over time. Each snapshot is a copy of the
report as it existed when it was created. It includes the layout and data that was current for the report when the
snapshot was created. Rendering information is not stored with the snapshot. When you open a snapshot in
report history, it opens in HTML in the Report Viewer Web Part. After it is rendered, you can export it to other
application formats.
To create report history, the report must be able to run unattended (that is, the report server must be able to run
the report without user interaction). You must have Edit Items permission on the library that contains the report.
To view or delete report history, you must have View Versions or Delete Versions permissions.
To create a snapshot or report history on demand
1. Point to the report.
2. Click to display the down arrow, and then select View Repor t Histor y .
3. Click New Snapshot . If the button is not visible, it is because you do not have permission to create
snapshots in report history.
4. To view the snapshot you just created, select it from the list. Each snapshot is identified by a timestamp
that shows when the snapshot was created. You cannot rename the snapshot, move it to another location,
or modify it.
To schedule report history
1. Point to the report.
2. Click to display the down arrow, and then select Manage Processing Options .
3. In Histor y Snapshot Options , click Create repor t histor y snapshots on a schedule .
4. If you have a shared schedule that contains the schedule information you want to use, click On a shared
schedule and select the schedule you want to use. Otherwise, click On a custom schedule , and then
click Configure to specify options to create report history on a recurring schedule.
To create report history when data is refreshed in a report
1. Point to the report.
2. Click to display the down arrow, and then select Manage Processing Options .
3. In Histor y Snapshot Options , click Store all repor t data snapshots in repor t histor y .

See Also
Set Processing Options (Reporting Services in SharePoint Integrated Mode)
Reporting Services Report Server (SharePoint
Mode)
3/5/2021 • 7 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services (2016) ✔
️ SharePoint ❌ Power BI Report Server
For content related to previous versions of SQL Server Reporting Services (SSRS), see SQL Server 2014
Reporting Services.
A Reporting Services report server configured for SharePoint Mode can run within a deployment of a
SharePoint product. A report server in SharePoint mode can use the collaboration and management features of
SharePoint for reports and other Reporting Services content types. SharePoint mode requires installing the
appropriate version of the Reporting Services add-in for SharePoint products on your SharePoint Web Front
Ends.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

For more information on installing and configuring, see the following:


Install Reporting Services SharePoint mode for SharePoint 2010.
Add an additional Report Server to a farm.

Feature summary
Configuring a report server to run in SharePoint integrated mode provides the following additional functionality
that is only available when you deploy a report server in this mode:
Use SharePoint document management and collaboration features, including alerts. A SharePoint site
provides a unified portal for accessing and managing all report items in one place.
Use SharePoint permissions and authentication providers to control access to reports, models, and other
items.
Use SharePoint deployment topologies to distribute reports over an Internet connection outside the
firewall. A report server provides report and data processing services in the context of a larger
SharePoint deployment that is configured for Internet access.
Manage reports, models, data sources, schedules, and report history in custom application pages on a
SharePoint site. You can set properties, define schedules and subscriptions, and create and manage report
history on a SharePoint site the same way you create and manage them from other tools in SQL Server.
Publish or upload reports, report models, resources, and shared data source files to a SharePoint library,
including Report Center in Office SharePoint Server.
Use Report Designer, Model Designer, and Report Builder to create reports and data sources to be
published directly to a SharePoint library. You can also use the Upload action on a SharePoint site to add
any report definitions and report models to a SharePoint library.
Because the report server processes report definitions in the same way regardless of the server mode
you use, the report data and layout is unaffected by server mode. Any report that you can run in a native
mode report server can run on a report server that is configured for SharePoint integrated mode.
Subscribe to and deliver reports to a SharePoint library using a new SharePoint delivery extension. You
can also deliver reports through e-mail or to a shared folder. The report server delivery extensions are
used to deliver reports. You can create data-driven subscriptions for large-scale report distribution using
subscriber data queried at run time.
A Report Viewer web part you can add to SharePoint pages to view a report inside your SharePoint web
application. The web part includes page navigation, search, print, and export features.
Program against a new SOAP endpoint to create custom applications that integrate with a SharePoint
site. You can also use the updated Windows Management Instrumentation (WMI) provider to
programmatically configure a report server instance that runs in SharePoint integrated mode.
Microsoft Access services reporting, in connected mode.
AAM zones, internet facing deployments, and SharePoint user tokens for SharePoint lists.

Connected mode and local mode


The SQL Server 2008 R2 release introduced a new local mode for viewing reports from a SharePoint 2010
server that has the Microsoft SQL Server 2008 R2 or later Reporting Services Add-In for SharePoint 2010
products installed.
Local Mode: Local mode allows reports to be rendered locally from the SharePoint document library,
without integration with a Reporting Services report server. The Reporting Services add-in for SharePoint
products is required but a Reporting Services report server is not. The add-in can be installed several
different ways, including the SharePoint 2010 products preparation tool. For more information on local
mode, see Local mode vs. connected mode reports in the Report Viewer and Where to find the Reporting
Services add-in for SharePoint products.
Connected Mode: Connected mode is supported by integrating a Reporting Services report server into
the SharePoint farm using SharePoint Central Administration. The integration with a report server
enables full end-to-end reporting, providing the collaboration features of SharePoint 2010 and the server
based features of a report server including: Subscriptions, Snapshots, and server based processing.

Unsupported sharePoint features


Not all SharePoint features are available for integrated operations. The following is a list of the SharePoint
features Reporting Services does not directly integrate with:
Secure Store Service.
You cannot use the SharePoint Outlook Calendar integration or the SharePoint scheduling for reporting
services files in a document library.
SharePoint Business Data catalog.
SharePoint personalization is also not supported on the Reporting Services pages. Report Server
integration is not supported if the SharePoint Web application is enabled for Anonymous access.
SQL Server Reporting Services does not support SharePoint document library version control. If you
save report items in a document library that is configured with "Document Version History" enabled,
Reporting Services features will not function correctly and generate errors in the ULS log. The following
is an example of an error in the ULS log:
"...a data source associated with the report has been disabled".
Document library version history is configured on the "Versioning Settings" page of "Library Settings".

Supported combinations of the SharePoint add-in and report server


Not all features are supported in all combinations of report server, Reporting Services add-in for SharePoint,
and SharePoint Products. For more information, see Supported combinations of SharePoint and Reporting
Services Server and add-in

NOTE
The correct version of the Reporting Services add-in must be used with the corresponding version of SharePoint Products.

Components that provide integration


To combine the servers in a single deployment, you integrate an installation of SQL Server Reporting Services
with an instance of SharePoint products
Integration is provided through SQL Server and the Reporting Services Add-in for SharePoint Products. The
Reporting Services Add-in is a freely distributable component that you can download and then install on a
server that is running the appropriate version of SharePoint.

TIP
Not all features are supported in all combinations of report server, Reporting Services add-in for SharePoint, and
SharePoint Products. For more information see, Supported combinations of SharePoint and Reporting Services Server and
add-in.

On SharePoint, the Reporting Services Add-in provides the ReportServer proxy endpoint, a Report
Viewer web part, and application pages so that you can view, store, and manage report server content on
a SharePoint site or farm.
On Reporting Services provides updated program files, a SOAP endpoint, and custom security and
delivery extensions. The report server must be configured to run in SharePoint integrated mode,
dedicated exclusively to supporting report access and delivery through your SharePoint site.
After you install the Reporting Services Add-in on SharePoint and configure the two servers for integration, you
can upload or publish report server content types to a SharePoint library, and then view and manage those
documents from a SharePoint site. Uploading or publishing report server content is an important first step; the
web part and pages become available when you select report definitions (.rdl), report models (.smdl) and shared
data sources (.rsds) on a SharePoint site.

Language considerations
SharePoint Foundation 2010 and SharePoint Server 2010 products are available in many more languages than
SQL Server
When you configure a report server to run within a deployment of a SharePoint product, you might see a
combination of languages. The user interface, documentation, and messages will appear in the following
languages:
All application pages, tools, errors, warnings, and messages that originate from Reporting Services will
appear in the language used by the Reporting Services instance in one of the SQL Server languages.
Application pages that you open on a SharePoint site, the Report Viewer web part, and Report Builder will
appear in one of the supported languages for the Reporting Services Add-in. To view the list of supported
languages, go to SQL Server downloads and find the download page for the SQL Server 2016 Reporting
Services Add-in.
SharePoint sites, SharePoint Central Administration, online help, and messages are available in the
languages supported by Office Server products.
If the language of your SharePoint product or technology differs from the report server language, Reporting
Services will try to use a language from the same language family that provides the closest match. If a close
substitute is not available, the report server uses English.

Related tasks
The following table summarizes tasks related to a Reporting Services SharePoint mode report server:

TA SK L IN K

Detailed steps for installing and configuring Reporting Install Reporting Services SharePoint mode for SharePoint
Services in SharePoint mode. 2010 and Add an additional Report Server to a farm.

Scale-out your Reporting Services SharePoint deployment by Add an additional Report Server to a Farm and Deployment
adding additional report servers. topologies for SQL Server BI features in SharePoint.

Add additional SharePoint web front-ends that have the Add an additional Reporting Services web front-end to a
Reporting Services components installed for viewing and farm
report items.

Configure e-mail for your report server within SharePoint. Configure e-mail for a Reporting Services service application

Recent information for this release, found on the TechNet SQL Server 2012 Reporting Services tips, tricks, and
Wiki. troubleshooting.

Next steps
Install or uninstall the Reporting Services sdd-in for SharePoint Report Viewer web part on a SharePoint site
More questions? Try asking the Reporting Services forum
Reporting Services SharePoint service and service
applications
3/5/2021 • 2 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services (2016) ✔
️ SharePoint ❌ Power BI Report Server
For content related to previous versions of SQL Server Reporting Services (SSRS), see SQL Server 2014
Reporting Services.
Reporting Services SharePoint mode is architected on the SharePoint service architecture and utilizes a
SharePoint service and one to many service applications. Creating a service application makes the service
available and generates the service application database. You can create multiple Reporting Services service
applications but one service application is sufficient for most deployment scenarios.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

Creating a Reporting Services service application


You can use SharePoint Central Administration or PowerShell scripts to create the Reporting Services services
applications. For more information on using SharePoint Central Administration, see the "Create a Reporting
Services Service Application" section in Install Reporting Services SharePoint Mode for SharePoint 2010. See the
PowerShell section later in this topic for a sample PowerShell script for creating service applications.

Modify the associations of the service application with a proxy group


The New page for creating a services application contains the section Web Application Association . The
section allows you to associate your service application as you create it. Use the following steps to change the
association and assign a customer configuration to the service application. The same general process can also
be used to add the proxy to the default group rather than changing the association of the service application to
a custom group.
1. In SharePoint Central Administration, in the Application Management, click Configure Ser vice
Application Associations .
2. On the Service application Associations page, change the view to Ser vice Applications .
3. Find and click the name of your new Reporting Services Service application. You could also click the
application proxy group name default to add the proxy to default group rather than completing the
following steps.
4. Select Custom in the selection box Edit the following group of connections .
5. Check the box for your proxy and click Ok .

Edit service application properties


You can reopen the property page of the service application to modify the properties.
1. In SharePoint Central Administration, in the Application Management group, click Manage ser vice
applications .
2. Select the service application by clicking the type column to select the entire row. If you click the name of
the application it, the Management options page for the service opens instead of opening the properties
of the service application.
3. In the Service Applications ribbon, click Proper ties .

Create a Reporting Services service application using PowerShell


You can use PowerShell to create the Service application and proxy. The sample below assumes that you know
what application pool you want to configure the service application to use.
1. Add the application pool object of your application pool name to a variable that is passed into the New
action.

$appPoolName = get-spserviceapplicationpool "<application pool name>"

2. Create the service application with a name and application pool name you provide.

New-SPRSServiceApplication -Name 'MyServiceApplication' -ApplicationPool $appPoolName -DatabaseName


'MyServiceApplicationDatabase' -DatabaseServer '<Server Name>'

3. Get the new service application object, and pipe the object into the Pipe the new proxy cmdlet.

Get-SPRSServiceApplication -name MyServiceApplication | New-SPRSServiceApplicationProxy


"MyServiceApplicationProxy"

Related tasks
TA SK L IN K

Manage the settings of your Service Application. Manage a Reporting Services SharePoint Service Application

Backup and restore the service application and related Backup and Restore Reporting Services SharePoint Service
components such as encryption keys and proxy. Applications

More questions? Try asking the Reporting Services forum


Manage a Reporting Services SharePoint service
application
3/5/2021 • 9 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services (2016) ✔
️ SharePoint ❌ Power BI Report Server
For content related to previous versions of SQL Server Reporting Services (SSRS), see SQL Server 2014
Reporting Services.
Reporting Services service applications are managed from SharePoint Central Administration. The Management
and Properties pages allow you to update the configuration of the service application as well as common
administration tasks.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

Open service application properties page


To open the properties page for a Reporting Services service application, complete the following:
1. In Central Administration, in the Application Management group, click Manage ser vice applications .
2. Click near the name of your service application or on the type column, which will select the entire row,
and then click Proper ties in the SharePoint ribbon.
For more information on service application properties, see Step 3: Create a Reporting Services Service
Application.

Open service application management pages


To open the management pages for a Reporting Services service application, complete the following:
1. In Central Administration, in the Application Management group, click Manage ser vice applications .
2. Click the name of your service application and the Manage Repor ting Ser vices Application page will
open.
3. Alternatively, you could click near the name or on the type column for your service application, which
will select the entire row, and then click Manage in the SharePoint ribbon.

System settings page


The systems settings page allows you to configure the behavior and user experience of your service application
including various timeouts.
Report settings
SET T IN G C O M M EN T S

External Images Timeout Default is 600 seconds.


SET T IN G C O M M EN T S

Snapshot Compression Default is SQL

System Report Timeout Default is 1800 seconds.

Specify whether report processing times out on the report


server after a certain number of seconds. This value applies
to report processing on a report server. It does not affect
data processing on the database server that provides the
data for your report. The report processing timer clock
begins when the report is selected and ends when the
report opens. The value that you specify must be sufficient
to complete both data processing and report processing.

System Snapshot Limit Default is -1, which is no limit.

Set a site-wide default value for the number of copies of


report history to retain. The default value provides an initial
setting that establishes the number of snapshots that can be
stored for each report. You can specify different limits in
property pages for specific reports.

Stored Parameters Lifetime Default is 180

Stored Parameters Threshold Default is 1500 days.

Session settings
SET T IN G C O M M EN T S

Session Timeout Default is 600 seconds.

Use Session Cookies Default is TRUE.

EDLX Report Timeout Default is 1800 seconds.

System settings for logging


SET T IN G C O M M EN T S

Enable Execution Logging Default is TRUE.

specify whether the report server generates trace logs and


the number of days the log is kept. . The logs are stored on
the report server computer in the \Microsoft SQL
Server\MSSQL.n\ReportServer\Log folder. A new log file is
started each time the service is restarted. For more
information about log files, see Report Server Service Trace
Log

Execution Log Days Kept Default is 60 days.

Reporting Services all supports SharePoint ULS logging. For more information, see Turn on Reporting Services
events for the SharePoint trace log (ULS)
Security settings
SET T IN G C O M M EN T S

Enable Integrated Security Default is TRUE.

Specifies whether a connection to a report data source can


be made using the Windows security token of the user who
requested the report.

Enable Load Report Definition Default is TRUE..

Enable Remote Errors Default is FALSE

Enable Test Connection Detailed Errors Default is TRUE.

Client settings
SET T IN G C O M M EN T S

Enable Report Builder Download Default is TRUE.

Specifies whether clients are able to see the button for


downloading the report builder application.

Report Builder Launch URL Specify a custom URL when the report server does not use
the default Report Builder URL. This setting is optional. If you
do not specify a value, the default URL will be used, which
launches Report Builder. To launch Report Builder 3.0 as a
Click-Once application, enter the following value:
https://<computername>/ReportServer/ReportBuilder/Repor
tBuilder_3_0_0_0.application.

Enable Client Printing The Default is TRUE.

Specifies whether users can download the client side control,


which provides printing options.

Edit Session Timeout Default is 7200 seconds.

Edit Session Cache Limit Default is 5.

Manage jobs
You can view and delete the running jobs, for example jobs that are created by report subscriptions and data-
driven subscriptions. The page is not used to manage subscriptions, but rather jobs that are triggered by a
subscription. For example a subscription that is scheduled to run once an hour will generate a job once an hour
that appears on the Manage Jobs page.

Key management
The following table summarizes the Kay Management pages
IMPORTANT
Periodically changing the Reporting Services encryption key is a security best practice. A recommended time to change
the key is immediately following a major version upgrade of Reporting Services. Changing the key after an upgrade
minimizes additional service interruption caused by changing the Reporting Services encryption key outside of the
upgrade cycle.

PA GE DESC RIP T IO N

Backup Encryptions Key 1) Type a password in to the Password: and Confirm


Password: boxes and click Expor t . You will see a warning if
the password you typed is does not meet the complexity
requirements of the domain policy.

2) You will be prompted for a file location of where to save


the key file. You should consider storing the key file on a
separate computer from the one that is running Reporting
Services. The default file name is the same name as the
service application.

Restore Encryption Key 1) Type or browse to the key file in the File Location box

2) In the Password box, type the password that was used


to back up the encryption file.

3) Click OK

Change Encryption Key This operation will create a new key and re-encrypt your
encrypted content. If you have a lot of content, this
operation make take several hour.

When the change encryption key operation is complete, it is


recommended you make a backup of your new key.

Deleted Encrypted Content Deleted content cannot be recovered.

** Impor tant ** The action of deleting and recreating the


symmetric key cannot be reversed or undone. Deleting or
recreating the key can have important ramifications on your
current installation. If you delete the key, any existing data
encrypted by the symmetric key will also deleted. Deleted
data includes connection strings to external report data
sources, stored connection strings, and some subscription
information.

Execution account
Use this page to configure an account to use for unattended processing. This account is used under special
circumstances when other sources of credentials are not available:
When the report server connects to a data source that does not require credentials. Examples of data
sources that might not require credentials include XML documents and some client-side database
applications.
When the report server connects to another server to retrieve external image files or other resources that
are referenced in a report.
Setting this account is optional, but not setting it limits your use of external images and connections to some
data sources. When retrieving external image files, the report server checks to see if an anonymous connection
can be made. If the connection is password protected, the report server uses the unattended report processing
account to connect to the remote server. When retrieving data for a report, the report server either
impersonates the current user, prompts the user to provide credentials, uses stored credentials, or uses the
unattended processing account if the data source connection specifies None as the credential type. The report
server does not allow its service account credentials to be delegated or impersonated when connecting to other
computers, so it must use the unattended processing account if no other credentials are available.
The account you specify should be different from the one used to run the service account. If you are running the
report server in a scale-out deployment, you must configure this account the same way on each report server.
You can use any Windows user account. For best results, choose an account that has read permissions and
network logon permissions to support connections to other computers. It must have read permissions on any
external image or data file that you want to use in a report. Do not specify a local account unless all report data
sources and external images are stored on the report server computer. Use the account only for unattended
report processing.
PowerShell command
The following is an example PowerShell command to return the list of Reporting Services service applications
with the UEAccount property:

Get-SPRSServiceApplication | select typename, name, service, ueaccountname

For more information, see PowerShell cmdlets for Reporting Services SharePoint Mode.
Options
Specify an execution account
Select to specify an account.
Account
Enter a Windows domain user account. Use this format: <domain>\<user account>.
Password
Type the password.
Confirm password
Retype the password.

E-mail settings
Use this page to specify Simple Mail Transport Protocol (SMTP) settings that enable report server e-mail
delivery from the report server. You can use the Report Server E-Mail delivery extension to distribute reports or
report processing notifications through e-mail subscriptions. The Report Server E-Mail delivery extension
requires an SMTP server and an e-mail address to use in the From: field.
Options
Use SMTP Ser ver
Specifies that report server e-mail is routed through an SMTP server.
Outbound SMTP Ser ver
Specify the SMTP server or gateway to use. You can use a local server or an SMTP server on your network.
From Address
Specifies the e-mail address to use in the From: field of a generated e-mail. You must specify a user account that
has permission to send mail from the SMTP server.
Provision subscriptions and alerts
Use this page to verify if SQL Server Agent is running and to provision access for reporting services to use SQL
Server Agent. SQL Server Agent is required for Reporting Services subscriptions, schedules, and data alerts.
Provision Subscriptions and Alerts for SSRS Service Applications

Proxy association
When you created the Reporting Services service application you selected the web application to associate and
provision permissions for access by the Reporting Services service application. If you chose to not associate or
you want to change the association, you can use the following steps.
1. In SharePoint Central Administration, in the Application Management, click Configure Ser vice
Application Associations .
2. On the Service application Associations page, change the view to Ser vice Applications .
3. Find and click the name of your new Reporting Services Service application. You could also click the
application proxy group name default to add the proxy to default group rather than completing the
following steps.
4. Select Custom in the selection box Edit the following group of connections .
5. Check the box for your proxy and click Ok .
More questions? Try asking the Reporting Services forum
Back up and restore Reporting Services SharePoint
service applications
3/5/2021 • 5 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services (2016) ✔
️ SharePoint ❌ Power BI Report Server
For content related to previous versions of SQL Server Reporting Services (SSRS), see SQL Server 2014
Reporting Services.
This topic describes how to back up and restore a Reporting Services services application using SharePoint
Central Administration or PowerShell.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

Before you begin


Limitations and restrictions

NOTE
Reporting Services service applications can partially be backed up and restored using the SharePoint backup and restore
functionality. Additional steps are required and the steps are documented in this topic. Currently the backup process
does not back up encryption keys and credentials for unattended execution accounts (UEA) or windows authentication
to the Reporting Services database.

Recommendations
Back up the encryption keys before starting the SharePoint backup. If you do not back up the encryption
keys, then you will not be able to access your encrypted data, following the restore of the service
application. You will need to delete your encrypted data.
Verify if your Reporting Services service application is using UEA or Windows authentication for database
access. If it is using either, verify what the proper credentials are so you can correctly configure the
service application after the restore process.
Review that the SharePoint backup log is created in the same folder as the backup file. The file is typically
named spbackup.log

Back up the service application


Complete the following steps in order:
1. Back up the encryption keys
2. Back up the service application
3. Verify if you service application uses an UEA or Windows authentication for database access. If it does,
make a note of the credentials so you can use them to configure the service application after it is
restored.
Back up the encryption keys using SharePoint Central Administration
For information on backing up the Reporting Services encryption keys, see the "Encryption Keys" section of
Manage a Reporting Services SharePoint Service Application.
Back up the service application using SharePoint Central Administration
To back up the Service Application, complete the following steps:
1. In SharePoint Central Administration select Perform a backup in the Backup and Restore group.
2. Under the Shared Ser vices node, expand Shared Ser vice Applications and select your service
application. It will have a type of SQL Ser ver Repor ting Ser vices Ser vice Application .
3. Select Next .
4. Type the path for the Backup location: and select Star t Backup
5. Repeat the process above but instead of selecting the service application, expand the Shared Ser vices
Proxies node, and select service application proxy. It will have a type of SQL Ser ver Repor ting
Ser vices Ser vice Application Proxy .
For more information, see the following topics in the SharePoint documentation:
Back up a service application (SharePoint Foundation 2010) in the SharePoint documenttation.
Back up a service application (SharePoint Server 2010)
Verify execution account and database authentication
Execution Account: To verify if your service application is using an execution account:
1. In SharePoint Central Administration, select Manage Ser vice Applications in the Application
Management group.
2. Select the name of your service application and then select Manage in the SharePoint Ribbon.
3. Select Execution Account .
4. If an execution account is configured, you need to know the credentials when it is time to restore the
service application backup. Do not proceed with the backup and restore procedure until you know the
correct credentials.
Database Authentication: To verify if your service application is using Windows Authentication for the
database authentication:
1. In SharePoint Central Administration, select Manage Ser vice Applications in the Application
Management group.
2. Select the name of your service application and then select Proper ties in the SharePoint Ribbon.
3. Review the Repor ting Ser vices (SSRS) Ser vice Database section.
4. If Windows Authentication is configured, you need to know the credentials so you can configure the
service application after you restore it. Do not proceed with the backup and restore procedure until you
know the correct credentials.

Restore the service application


Complete the following steps in order:
1. Restore the Reporting Services service application.
2. Restore the encryption keys
3. If your service application was using an execution account or Windows authentication for database
access, configure the credentials.
Restore the service application using SharePoint Central Administration
1. In SharePoint Central Administration select Restore from a backup in the Backup and Restore group.
2. Type the path to your backup file in Backup Director y Location box and select Refresh .
3. Select your service application backup from the Top Component list and then select Next .
4. Select your Reporting Services application and then select Next .
5. In the Login Names and Passwords section type the password for the login name. The login name box
should be populated with the login the service application was using prior to the back up.
6. Select Star t Restore .
7. Repeat the process above but instead of restoring the service application, expand the Shared Ser vices
node and then expand the Shared Ser vice Applications node.
For more information, see the following topics in the SharePoint documentation:
Restore a service application (SharePoint Foundation 2010).
Restore a service application (SharePoint Server 2010).
Restore the encryption keys using SharePoint Central Administration
For information on restoring the Reporting Services encryption keys, see the "Encryption Keys" section of
Manage a Reporting Services SharePoint Service Application.
Configure the execution account and database authentication
Execution Account: If your service application was using an execution account complete the following steps to
configure it:
1. In SharePoint Central Administration, select Manage Ser vice Applications in the Application
Management group.
2. Select the name of your service application and then select Manage in the SharePoint Ribbon.
3. Select Execution Account .
4. Type the account, password, and select the Specify and Execution Account box.
5. Select OK .
Database Authentication: If your service application was using Windows Authentication for the database
authentication complete the following steps:
1. In SharePoint Central Administration select Manage Ser vice Applications in the Application
Management group.
2. Select the name of your service application and then select Proper ties in the SharePoint Ribbon.
3. Review the Repor ting Ser vices (SSRS) Ser vice Database section.
4. Select Windows Authentication .
5. Type the account and password. Select Use as Windows Credentials if appropriate.
6. Select Ok
More questions? Try asking the Reporting Services forum
PowerShell cmdlets for Reporting Services
SharePoint mode
3/5/2021 • 9 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services (2016) ✔
️ SharePoint ❌ Power BI Report Server
For content related to previous versions of SQL Server Reporting Services (SSRS), see SQL Server 2014
Reporting Services.
When you install SQL Server 2016 Reporting Services SharePoint mode, PowerShell cmdlets are installed to
support report Servers in SharePoint mode. The cmdlets cover three categories of functionality.
Installation of the Reporting Services SharePoint shared service and proxy.
Provisioning and management of Reporting Services service applications and associated proxies.
Management of Reporting Services features, for example extensions and encryption keys.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

Cmdlet summary
To run the cmdlets you need to open the SharePoint Management Shell. You can also use the graphical user
interface editor that is included with Microsoft Windows, Windows PowerShell Integrated Scripting
Environment (ISE) . For more information, see Starting Windows PowerShell on Windows Server. In the
following cmdlet summaries, the references to service application 'databases', refer to all of the databases
created and used by a Reporting Services service application. This includes the configuration, alerting, and temp
databases.
If you see an error message similar to the following when you type the PowerShell examples:
Install-SPRSService : The term 'Install-SPRSService' is not recognized as the
name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was
included, verify that the path is correct and try again.
One of the following issues is occurring:
Reporting Services SharePoint mode is not installed and therefore the Reporting Services cmdlets are not
installed.
You ran the PowerShell command in Windows PowerShell or Windows PowerShell ISE instead of the
SharePoint Management Shell. Use the SharePoint Management shell or add the SharePoint Snap-in to
the Windows PowerShell window with the following command:

Add-PSSnapin Microsoft.SharePoint.PowerShell

For more information see Use Windows PowerShell to administer SharePoint 2013.
Open the SharePoint Management Shell and run cmdlets
1. Click the Star t button
2. Click the Microsoft SharePoint Products group.
3. Click the SharePoint Management Shell .
To view command line help for a cmdlet use the PowerShell 'Get-Help' command at the PowerShell command
prompt. For example:
Get-Help Get-SPRSServiceApplicationServers

Shared service and proxy cmdlets


The following table contains the PowerShell cmdlets for the Reporting Services SharePoint shared service.

C M DL ET DESC RIP T IO N

Install-SPRSService Installs and registers, or uninstalls, the Reporting Services


shared service. This can be done only on the machine that
has an installation of SQL Server Reporting Services in
SharePoint mode. For installation, two operations occur:

-The Reporting Services service is installed in the farm.

-The Reporting Services service instance is installed to the


current machine.

For Uninstallation, two operations occur:

-The Reporting Services service is uninstalled from the


current machine.

-The Reporting Services service is uninstalled from the farm.

If there are any other machines in the farm that have the
Reporting Services service installed, or if there are still
Reporting Services service applications running in the farm, a
warning message is displayed.

Install-SPRSServiceProxy Installs and registers, or uninstalls, the Reporting Services


service proxy in the SharePoint farm.

Get-SPRSProxyUrl Gets the URL(s) for accessing the Reporting Services service.

Get-SPRSServiceApplicationServers Gets all servers in the local SharePoint farm that contain an
installation of the Reporting Services shared service. This
cmdlet is useful for Reporting Services upgrades, to
determine which servers run the shared service and
therefore need to be upgraded.

Service application and proxy cmdlets


The following table contains the PowerShell cmdlets for Reporting Services service applications and their
associated proxies.
C M DL ET DESC RIP T IO N

Get-SPRSServiceApplication Gets one or more Reporting Services service application


objects.

New-SPRSServiceApplication Create a new Reporting Services service application and


associated databases.

LogonType Parameter: Specifies if the report server uses the


SSRS Application Pool account or a SQL Server login to
access the report server database. Valid values are:

0 Windows Authentication

1 SQL Server

2 Application Pool Account (default)

Remove-SPRSServiceApplication Removes the specified Reporting Services service application.


This will also remove the associated databases.

Set-SPRSServiceApplication Edits the properties of an existing Reporting Services service


application.

New-SPRSServiceApplicationProxy Creates a new Reporting Services service application proxy.

Get-SPRSServiceApplicationProxy Gets one or more Reporting Services service application


proxies.

Dismount-SPRSDatabase Dismounts the service application databases for a Reporting


Services service application.

Remove-SPRSDatabase Remove the service application databases for a Reporting


Services service application.

Set-SPRSDatabase Sets the properties of the databases associated to a


Reporting Services service application.

Mount-SPRSDatabase Mounts databases for a Reporting Services service


application.

New-SPRSDatabase Create new service application databases for the specified


Reporting Services service application.

Get-SPRSDatabaseCreationScript Outputs the database creation script to the screen for a


Reporting Services service application. You can then run the
script in SQL Server Management Studio.

Get-SPRSDatabase Gets one or more Reporting Services service application


databases. Use the command to get the ID of service
application database so you can use the Set-SPRSDatabase
comdlet to modify properties, for example the
querytimeout . See the example in this topic, Get and set
Properties of the Reporting Service application database.
C M DL ET DESC RIP T IO N

Get-SPRSDatabaseRightsScript Outputs the database rights script to the screen for a


Reporting Services service application. It will prompt for
desired user and database then returns transact SQL you
can run to modify permissions. You can then run this script
in SQL Server Management Studio.

Get-SPRSDatabaseUpgradeScript Outputs a database upgrade script to the screen. The script


will upgrade Reporting Services service application databases
to the database version of the current Reporting Services
installation.

Reporting Services custom functionality cmdlets


C M DL ET DESC RIP T IO N

Update-SPRSEncryptionKey Updates the encryption key for the specified Reporting


Services service application and re-encrypts its data.

Restore-SPRSEncryptionKey Restores a previously backed up encryption key for a


Reporting Services service application.

Remove-SPRSEncryptedData Delete the encrypted data for the specified Reporting


Services service application.

Backup-SPRSEncryptionKey Backs up the encryption key for the specified Reporting


Services service application.

New-SPRSExtension Registers a new extension with a Reporting Services service


application.

Set-SPRSExtension Sets the properties of an existing Reporting Services


extension.

Remove-SPRSExtension Removes an extension from a Reporting Services service


application.
C M DL ET DESC RIP T IO N

Get-SPRSExtension Gets one or more Reporting Services extensions for a


Reporting Services service application.

Valid values are:

Delivery

DeliveryUI

Render

Data

Security

Authentication

EventProcessing

ReportItems

Designer

ReportItemDesigner

ReportItemConverter

ReportDefinitionCustomization

Get-SPRSSite Gets the SharePoint sites based on whether the


"ReportingService" feature is enabled. By default, sites that
enable the "ReportingService" feature are returned.

Basic samples
Return a list of cmdlets that contain 'SPRS' in the name. This will be the full list of Reporting Services cmdlets.

Get-command -noun *SPRS*

Or with a little more detail, piped to a text file named commandlist.txt

Get-command -noun *SPRS* | Select name, definition | Format-List | Out-File c:\commandlist.txt

Install the Reporting Services SharePoint service and service proxy.

Install-SPRSService

Install-SPRSServiceProxy

Start the Reporting Services service


get-spserviceinstance -all |where {$_.TypeName -like "SQL Server Reporting*"} | Start-SPServiceInstance

Type the following command from the SharePoint Management Shell to return a filtered list of rows from the a
log file. The command will filter for lines that contain "ssrscustomactionerror". This example is looking at the log
file created when the rssharepoint.msi was installed.

Get-content -path C:\Users\testuser\AppData\Local\Temp\rs_sp_0.log | select-string "ssrscustomactionerror"

Detailed samples
In addition to the following samples, see the section "Windows PowerShell Script" in the topic Windows
PowerShell script for Steps 1-4.
Create a reporting services service application and proxy
This sample script completes the following tasks:
1. Create a Reporting Services service application and proxy. The script assumes the application pool "My
App Pool" already exists.
2. Add the proxy to the default proxy group
3. Grant the service app access to the port 80 web app's content database. The script assumes site
https://sitename already exists.

# Create service application and service application proxy


$appPool = Get-SPServiceApplicationPool "My App Pool"
$serviceApp = New-SPRSServiceApplication "My RS Service App" -ApplicationPool $appPool
$serviceAppProxy = New-SPRSServiceApplicationProxy -Name "My RS Service App Proxy" -ServiceApplication
$serviceApp

# Add service application proxy to default proxy group. Any web application that uses the default proxy
group will now be able to use this service application.
Get-SPServiceApplicationProxyGroup -default | Add-SPServiceApplicationProxyGroupMember -Member
$serviceAppProxy

# Grant application pool account access to the port 80 web application's content database.
$webApp = Get-SPWebApplication "https://sitename"
$appPoolAccountName = $appPool.ProcessAccount.LookupName()
$webApp.GrantAccessToProcessIdentity($appPoolAccountName)

Review and update a reporting services delivery extension


The following PowerShell script example, updates the configuration for the report server e-mail delivery
extension for the service application named My RS Service App . Update the values for the SMTP server (
<email server name> ) and the FROM email alias ( <your FROM email address> ).

$app=get-sprsserviceapplication -Name "My RS Service App"


$emailCfg = Get-SPRSExtension -identity $app -ExtensionType "Delivery" -name "Report Server Email" | select
-ExpandProperty ConfigurationXml
$emailXml = [xml]$emailCfg
$emailXml.SelectSingleNode("//SMTPServer").InnerText = "<email server name>"
$emailXml.SelectSingleNode("//SendUsing").InnerText = "2"
$emailXml.SelectSingleNode("//SMTPAuthenticate").InnerText = "2"
$emailXml.SelectSingleNode("//From").InnerText = '<your FROM email address>'
Set-SPRSExtension -identity $app -ExtensionType "Delivery" -name "Report Server Email" -
ExtensionConfiguration $emailXml.OuterXml
In the above example if you did not know the exact name of the service application, you could rewrite the first
statement to get the service application based on a search of the partial name. For example:

$app=get-sprsserviceapplication | where {$_.name -like " ssrs_testapp *"}

The following script will return the current configuration values for the report server e-mail delivery extension
for the service application named "Reporting Services Application". The first step sets the value of the variable
$app to the object of the service application that has a name of " My RS Service App "
The second statement will Get the 'Report Server Email' delivery extension for the service application object in
variable $app, and select the configurationXML

$app=get-sprsserviceapplication -Name "Reporting Services Application"


Get-SPRSExtension -identity $app -ExtensionType "Delivery" -name "Report Server Email" | select -
ExpandProperty ConfigurationXml

You can also rewrite the above two statements as one:

get-sprsserviceapplication -Name "Reporting Services Application" | Get-SPRSExtension -ExtensionType


"Delivery" -name "Report Server Email" | select -ExpandProperty ConfigurationXml

Get and set properties of the Reporting Service application database


The following example first returns a list of the databases and properties so you can determine the database
guid (ID) that you then supply to the set command. For a full list of the properties, use
Get-SPRSDatabase | format-list .

get-SPRSDatabase | select id, querytimeout,connectiontimeout, status, server, ServiceInstance

The following is an example of the output. Determine the ID for the database you want to modify and use the ID
in the SET cmdlet.
Id : 56f8d1bc-cb04-44cf-bd41-a873643c5a14

QueryTimeout : 120

ConnectionTimeout : 15

Status : Online

Server : SPServer Name=uetestb01

ServiceInstance : SPDatabaseServiceInstance

Set-SPRSDatabase -identity 56f8d1bc-cb04-44cf-bd41-a873643c5a14 -QueryTimeout 300

To verify the value is set, run the GET cmdlet again.

Get-SPRSDatabase -identity 56f8d1bc-cb04-44cf-bd41-a873643c5a14 | select id, querytimeout,connectiontimeout,


status, server, ServiceInstance

List Reporting Services data extensions


The following example loops through each Reporting Services service application and lists the current data
extensions for each.
$apps = Get-SPRSServiceApplication
foreach ($app in $apps)
{
Write-host -ForegroundColor "yellow" Service App Name $app.Name
Get-SPRSExtension -identity $app -ExtensionType "Data" | select name,extensiontype | Format-Table -AutoSize
}

Example output:
Name ExtensionType

---- -------------

SQL Data

SQLAZURE Data

SQLPDW Data

OLEDB Data

OLEDB-MD Data

ORACLE Data

ODBC Data

XML Data

SHAREPOINTLIST Data

Change and list Reporting Services subscription owners


See Use PowerShell to change and list Reporting Services subscription owners and run a subscription.

Next steps
Use PowerShell to change and list Reporting Services subscription owners and run a subscription
CheckList: Use PowerShell to verify Power Pivot for SharePoint
Get help SQL Server PowerShell
More questions? Try asking the Reporting Services forum
Configuration and administration of a SQL Server
Reporting Services (SSRS) report server
3/5/2021 • 2 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services (2016) ✔
️ SharePoint ❌ Power BI Report Server
For content related to previous versions of SQL Server Reporting Services (SSRS), see SQL Server 2014
Reporting Services.
SQL Server Reporting Services is a server-based reporting platform that provides a full range of ready-to-use
tools and services to help you create, deploy, and manage reports for your organization, as well as
programming features that enable you to extend and customize your reporting functionality. You can integrate
your reporting environment with a SharePoint product to experience the benefits of using the collaborative
environment provided by SharePoint sites.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

Use the following sections to help you understand concepts, deployment scenarios, procedures, and more for
integrating your Reporting Services environment with a SharePoint product or technology:
Menu options in a SharePoint document library
Data Alert Manager for SharePoint Users
Create and Manage Subscriptions for SharePoint Mode Report Servers
Update Credentials in Report Data Sources from a SharePoint Site
Manage Shared Datasets
Set Parameters on a Published Report (Reporting Services in SharePoint Integrated Mode)
Set Processing Options (Reporting Services in SharePoint Integrated Mode)
Reporting Services Site Collection Features
Activate the Report Server and Power View Integration Features in SharePoint
Reporting Services Site Settings and Site Features(SharePoint Mode)
Activate the Report Server File Sync Feature in SharePoint Central Administration
Add Reporting Services Content Types to a SharePoint Library
Local Mode vs. Connected Mode Reports in the Report Viewer (Reporting Services in SharePoint Mode)
Upload Documents to a SharePoint Library (Reporting Services in SharePoint Mode)
Set Processing Options (Reporting Services in SharePoint Integrated Mode)
More questions? Try asking the Reporting Services forum
Reporting Services site collection features
3/5/2021 • 2 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services (2016) ✔
️ SharePoint ❌ Power BI Report Server
For content related to previous versions of SQL Server Reporting Services (SSRS), see SQL Server 2014
Reporting Services.
Reporting Services SharePoint mode provides three SharePoint site collection features. The features support the
general Reporting Services SharePoint mode reporting environment, Power View, a feature of the SQL Server
2016 Reporting Services Add-in, and management operations for Reporting Services in SharePoint Central
Administration.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

Site collection features


The following table describes the Reporting Services site collection features.

F EAT URE DESC RIP T IO N

Repor t Ser ver Central Administration Feature Enables Features for managing integration with a Reporting
Services report server. This feature is only installed and used
in the SharePoint Central Administration site collection.

The Report server integration feature is automatically


activated in SharePoint Central Administration Site collection
after you install the Microsoft SQL Server 2016 Reporting
Services or later (SSRS) Add-in for SharePoint products. In
some situations, you need to manually activate the feature.
To activate the report server feature, use the Reporting
Services pages in SharePoint Central Administration's Site
Settings page.

The SQL Server 2008 R2 Reporting Services version and


later of the Add-in for SharePoint products activate the
report server integration feature for all existing site
collections when the Add-in is installed. Additionally, the
feature is automatically active for new site collections.

Repor t Ser ver Integration Feature Enables rich reporting using Microsoft Reporting Services

This feature is Active by default.


F EAT URE DESC RIP T IO N

Power View Integration Feature Enables interactive data exploration and visual presentation
against Power Pivot work books and Analysis services
tabular databases.

The feature can be accessed by the context menus of the


following data sources:

.rdlx

.rsds

.bism connection file

If Power View does not appear in the context menus, verify


the Power View Integration Feature is activated.

This feature is deactivated by default.

Next steps
Activate the Report Server and Power View Integration Features in SharePoint
Reporting Services Site Settings and Site Features(SharePoint Mode)
Activate the Report Server File Sync Feature in SharePoint Central Administration
More questions? Try asking the Reporting Services forum
Activate the report server and Power View
integration features in SharePoint
3/5/2021 • 2 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services (2016) ✔
️ SharePoint ❌ Power BI Report Server
For content related to previous versions of SQL Server Reporting Services (SSRS), see SQL Server 2014
Reporting Services.
The Reporting Services site collection features are activated by default after you install the Microsoft SQL Server
2016 Reporting Services or later (SSRS) Add-in for SharePoint products. In some situations, you need to
manually activate the features.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

If you install the Reporting Services add-in for SharePoint 2010 Products after the installation of the SharePoint
product, then the Report Server integration feature and the Power View integration feature will only be activated
for root site collections. For other site collections, you need to manually activate the features. For example, if you
have a site collection of https://[my ser ver name]/sites/[site collection name] you need to manually
activate the Reporting Services site collection features.
When there is no root site collection, the Reporting Services add-in will log a message similar to the following.
"SharePoint web app 80 does not have root site collection"
The message is found in the add-in installation log, named "RS_SP_#.log" where # is an incrementing number.
The log file is found in the current users Temp folder, for example C:\Users\[user name]\AppData\Local\Temp.
For more information on logging options with the add-in, see Install or Uninstall the Reporting Services Add-in
for SharePoint.

Activate the Report Server and Power View integration site collection
features
1. Open your browser to the site where you want the Reporting Services features active.
2. Click Site Actions .
3. Click Site Settings .
4. Click Site Collection Features in the Site Collection Administration Group.
5. Find Repor t Ser ver Integration Feature or Power View Integration Feature in the list.
6. Click Activate .
To deactivate the features, you can use the same procedure, but click Deactivate rather than Activate.

Activate or Deactivate Reporting Services central administration site


collection feature
1. Open your browser to SharePoint Central Administration.
2. Click Site Actions .
3. Click Site Settings .
4. Click Site Collection Features in the Site Collection Administration Group.
5. Find Repor t Ser ver Central Administration Feature in the list.
6. Click Activate .
To deactivate the feature, you can use the same procedure, but click Deactivate rather than Activate.

Next steps
After the feature is activated, you can continue with server integration.
More questions? Try asking the Reporting Services forum
Reporting Services site settings and site features
(SharePoint mode)
3/5/2021 • 2 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services (2016) ✔
️ SharePoint ❌ Power BI Report Server
For content related to previous versions of SQL Server Reporting Services (SSRS), see SQL Server 2014
Reporting Services.
Reporting Services SharePoint mode has several site level custom features and site feature that can be managed
from the SharePoint Site Settings page. The settings are site wide and affect all Reporting Services service
applications. You must have Content Manager and System Administrator permissions to view this page.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

SIT E SET T IN G DESC RIP T IO N

Reporting Services Site Settings Site-wide settings described in this topic.

Manage Data Alerts Management of the Data Alerting feature.

Report Server File Sync A Site level feature that is deactivated by default.

Synchronizes Report Server files (.rdl, .rsds, .smdl, .rsd, .rsc,


.rdlx) from a SharePoint document library to the report
server when files are added or updated in the directly within
the document library.

For more information, see Activate the Report Server File


Sync Feature in SharePoint Central Administration

Open the Reporting Services site settings page


1. From the SharePoint site's Site Actions menu, select Site Settings .
2. In the Repor ting Ser vices section, select Repor ting Ser vices Site Settings .

Options for Reporting Services site settings


O P T IO N DESC RIP T IO N

Enable RSClientPrint ActiveX control download The control displays a custom print dialog box that supports
features common to other print dialog boxes, including print
preview, page selections for specifying specific pages and
ranges, page margins, and orientation. For more information
on the control, see Using the RSClientPrint Control in
Custom Applications
O P T IO N DESC RIP T IO N

Enable remote errors in local mode Show or hide detailed error messages on remote computers
when running in local mode. If you see an error message
similar to the following, then enabling remote errors may be
useful:

For more information about this error navigate to


the report server on the local server machine or
enable remote errors

Enable accessibility metadata for repor ts Turn on accessibility metadata in the HTML output for
reports

Enable Exact Data Visualization Fit Sizing for Repor ts Configure data visualization fit behavior when inside a tablix,
to fix exactly. This includes chart, gauge, and map. When
disabled the behavior is for data visualizations to fit
approximately, which may leave some white space. This
setting only applies to rendering in the Report Viewer web
part. To manage this behavior for server-side rendering, you
need to modify the rsrepor tser ver.config file. For more
information, see the following:

RsReportServer.config Configuration File.

Customize Rendering Extension Parameters in


RSReportServer.Config.

HTML Device Information Settings.

Enabling Exact may have performance impact because the


processing to determine the exact size may take longer than
an approximate fit.

See also
Manage a Reporting Services SharePoint Service Application
Activate the report server file sync feature in
SharePoint
3/5/2021 • 2 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server 2016 Reporting Services and later ✔
️ SharePoint ❌ Power BI Report Server
The Reporting Services Report Server File Sync feature utilizes SharePoint event handlers to synchronize the
report server catalog with items in document libraries. This feature is beneficial when users frequently upload
published report items directly to SharePoint document libraries. If the file Sync feature is not activated, content
will still be synchronized but not as frequently.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

The File Sync feature can be activated in SharePoint Site Administration after you install the SQL Server 2016
Reporting Services or later (SSRS) Add-in for SharePoint products.
This feature can be manually activated and deactivated per site but not at the site collection level.

Prerequisites
The Reporting Services Add-in for SharePoint must be installed. If the add-in is not installed the file sync feature
will not be visible in the site feature list.
To verify installation, view the list of installed applications in Microsoft Windows Control Panel . If the Reporting
Services Add-in is installed, follow the instructions in this topic to activate the report server file sync feature.
To activate or deactivate the Reporting Services file sync feature on a site
1. From the main page of your site, click the Site Actions menu and click Site Settings ..
2. In the Site Actions click Manage Site Features .
3. Find Repor t Ser ver File Sync in the list.
4. Click Activate .

NOTE
To deactivate the Report Server file sync feature, you can use the same procedure but click Deactivate .

See also
Activate the Report Server and Power View Integration Features in SharePoint
Install or Uninstall the Reporting Services Add-in for SharePoint
Install or Uninstall the Reporting Services Add-in for SharePoint
More questions? Try asking the Reporting Services forum
Add Reporting Services content types to a
SharePoint library
3/5/2021 • 5 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services (2016) ✔
️ SharePoint ❌ Power BI Report Server
For content related to previous versions of SQL Server Reporting Services (SSRS), see SQL Server 2014
Reporting Services.
Reporting Services provides predefined SharePoint content types that are used to manage shared data source
(.rsds) files, report models (.smdl), and Report Builder report definition (.rdl) files. Adding a Repor t Builder
Repor t , Repor t Model , and Repor t Data Source content type to a library enables the New command so that
you can create new documents of that type.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

To add content types to a library, you must be a site administrator or have Full Control level of permission.
The Reporting Services content types and content type management will automatically be enabled in all
document libraries for existing site collections created from the following site template types:
Business Intelligence Center
Sites created after the Reporting Services integration will not have the Reporting Services content types
enabled.

TIP
If you have not previously configured content types for a library, first enable management of content types, then enable
the Reporting Services content types. See the procedures on enabling content type management in a single document
library.

Shor t video: (SSRS) Enabling Content Types in SharePoint2010.wmv (https://www.youtube.com/watch?


v=yqhm3DrtT1w).
In this topic:
Enable content types in all document libraries in an existing BI center
To enable content type management for a single document library (SharePoint 2013)
To add Reporting Services content types (SharePoint 2013)
To enable content type management for a single document library (SharePoint 2010)
To add report server content types (SharePoint 2010)
To enable Content types and content management for multiple BI sites

Enable content types in all document libraries in an existing BI center


1. To enable the content types and content management in all document libraries in an existing Business
Intelligence Center site, you can toggle the Reporting Services integration feature.
2. Go to Site settings .
In SharePoint 2013, click the Settings icon.
In SharePoint 2010, click Site Actions , then click Site Settings .
3. Click Site collection features .
4. Find the Repor t Ser ver Integration Feature and click Deactivate .

5. Refresh the browser then click Activate for the Repor t Ser ver Integration Feature .

To enable content type management for a single document library


(SharePoint 2013)
1. Open the library for which you want to enable multiple content types.
2. Click Librar y in the ribbon.

3. On the Librar y ribbon, click Librar y Settings . If you do not see Librar y Settings or the button is
disabled, you do not have permission to configure library settings, including content types.

4. In the General Settings section, click Advanced settings .

5. In the Content Types section, select Yes to allow management of content types.
6. Click OK .

To add Reporting Services content types (SharePoint 2013)


1. Open the library for which you want to add Reporting Services content types.
2. On the ribbon, click Librar y .
3. Click Librar y Settings .
4. Under Content Types , click Add from existing site content types .
5. In Select site content types from , select SQL Ser ver Repor ting Ser vices Content Types .
6. In the Available Site Content Types list, click Repor t Builder , and then click Add to move the
selected content type to the Content types to add list.
7. To add Repor t Model and Repor t Data Source content types, repeat the previous step.
8. When you finish adding content types, click OK .

NOTE
If the Reporting Services content type group SQL Ser ver Repor ting Ser vices Content Types is not visible on
the Add Content Types page, one of the following conditions is true:

The Reporting Services add-in for SharePoint products has not been installed. For more
information, see Install or Uninstall the Reporting Services Add-in for SharePoint. The topic
includes information on installing the add-in and stepping through a files only installation of the
add-in to work around issues.
The add-in is installed but the site collection feature Repor t Ser ver Integration Feature is not
active. Verify the site collection feature in Site Settings .
All of the Reporting Services content types have already been added to the library. If all the
content types are part of a library, then the group is removed from the Add Content Types page.
If you delete one or more of the Reporting Services content types, then the group SQL Ser ver
Repor ting Ser vices Content Types will be visible on the Add Content Types page.

To enable content type management for a single document library


(SharePoint 2010)
1. Open the library for which you want to enable multiple content types. On the library menu bar, you
should see the following menus: New , Upload , Actions , and Settings . If you do not see Settings , you
do not have permission to add a content type.
2. On the Librar y Tools ribbon, click Librar y .

3. On the Settings ribbon group, click Librar y Settings .


4. Under General Settings , click Advanced settings .
5. In the Content Types section, select Yes to allow management of content types.
6. Click OK .

To add report server content types (SharePoint 2010)


1. Open the library for which you want to add Reporting Services content types.
2. On the Librar y Tools ribbon tabs, click the Librar y tab .
3. On the Settings ribbon group, click Librar y Settings .
4. Under Content Types , click Add from existing site content types .
5. In the Select Content Types section, in Select site content types from , click the arrow to select SQL
Ser ver Repor ting Ser vices Content Types .
6. In the Available Site Content Types list, click Repor t Builder , and then click Add to move the
selected content type to the Content types to add list.
7. To add Repor t Model and Repor t Data Source content types, repeat the previous step.
8. When you finish adding content types, click OK .

To enable content types and content management for multiple BI


sites
1. For SQL Server Reporting Services 2008 and 2008 R2 report servers, you can enable content types and
content management for multiple Business Intelligence Center sites:
2. In SharePoint Central Administration, click General Applications settings . In the SQL Ser ver
Repor ting Ser vices (2008 and 2008 R2) section, click Repor ting Ser vices Integration .

3. Click Activate feature in all exciting site collections .

4. Click Ok .

See also
SharePoint Site and List Permission Reference for Report Server Items
Start Report Builder
Local mode vs. connected mode reports in the
Report Viewer
3/5/2021 • 3 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services (2016) ✔
️ SharePoint ❌ Power BI Report Server
For content related to previous versions of SQL Server Reporting Services (SSRS), see SQL Server 2014
Reporting Services.
Reporting Services reports can be configure to run in either local mode or connected mode, which leverages a
Reporting Services report server. Instead, you can use the Report Viewer to directly render reports from
SharePoint when the data extension supports local mode reporting. This approach is called local mode. In
previous versions of Reporting Services, the SharePoint farm was required to be connected to a Reporting
Services report server configured in SharePoint mode so the Report Viewer control could render reports. This
approach is called remote mode or connected mode.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

In local mode there is no Reporting Services report server. You must install the Reporting Services add-in for
SharePoint products, but no Reporting Services report server is required. With Local mode, users can view
reports but will not have access to server side features such as subscriptions and data alerts.

Local mode vs connected mode and supported extensions


Local mode: When you have a data extension that supports local mode, the Report Viewer directly renders
reports from SharePoint. In local mode there is no Reporting Services report server. You must install the
Reporting Services add-in for SharePoint products, but no Reporting Services report server is required. With
Local mode, users can view reports but will not have access to server side features such as subscriptions and
data alerts.
Connected mode , also called remote mode requires a Reporting Services report server in SharePoint mode,
connected to the SharePoint farm so the Report Viewer control could render reports..
The following is a list of the data processing extensions that support local mode reporting:
Microsoft Access 2010 reporting extension. For more information on Access Services, see Use Access
Services with SQL Reporting Services: Installing SQL Server 2008 R2 Reporting Services Add-In
(SharePoint Server 2010).
The Reporting Services SharePoint list data extension. For more information on the SharePoint List Data
Extension, see Data Sources Supported by Reporting Services (SSRS)
Custom data processing extensions can also be developed to support local mode. For more information, see
Implementing a Data Processing Extension.
Local mode supports rendering reports that have an embedded data source or a shared data source from an
.rsds file. However, you cannot manage the report or its associated data source. If you try to do this, you will
receive an error that this is not supported in local mode. Managing data sources in the SharePoint site is
supported in only connected mode.
NOTE
As with previous versions, you cannot embed user names and passwords in the .rsds file.

Configure local mode and access services with SharePoint 2013


You can configure your SharePoint 2013 farm to support existing Access 2010 web databases and Reporting
Services local mode. For more information, see Set up and configure Access Services 2010 for web databases in
SharePoint Server 2013.
It is not possible to create new Access web databases for SharePoint 2013. Access 2013 uses a new type of
database, Access web app that you build in Access, then use and share with others as a SharePoint app in a web
browser.
For more information, see the following.
What's new in Access 2013 (https://office.microsoft.com/access-help/what-s-new-in-access-2013-
HA102809500.aspx).
Basic tasks for an Access app (https://office.microsoft.com/access-help/basic-tasks-for-an-access-app-
HA102840210.aspx?CTT=5&origin=HA102809500).

Configure local mode reporting with SharePoint 2010


Local mode requires ASP.NET session state. The installation of Access services will enable ASP.Net sessions state.
You can also enable using PowerShell.
1. Open the SharePoint 2010 Management Shell.
2. Type the following command:

- Enable-SPSessionStateService

3. When prompted, type the name of your database.


4. Perform an IIS reset.
For more information, see Use Access Services with SQL Reporting Services: Installing SQL Server 2008 R2
Reporting Services Add-In (SharePoint Server 2010) and Enable-SPSessionStateService.

Connected mode
For the latest information on using ADS extension with Reporting Services connected mode, see Access Services
Report in SharePoint Site shows error in data extension 'ADS'.

See also
Data sources supported by Reporting Services
More questions? Try asking the Reporting Services forum
Upload documents to a SharePoint library
(Reporting Services in SharePoint mode)
3/5/2021 • 2 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services (2016) ✔
️ SharePoint ❌ Power BI Report Server
For content related to previous versions of SQL Server Reporting Services (SSRS), see SQL Server 2014
Reporting Services.
You can upload report definitions and report models to a SharePoint library. When uploading a report server
item, you must select a library or a folder within a library. You cannot upload a report server item to a list or
page.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

You cannot upload a data source (.rds) file. However, you can publish .rds files from a design tool, such as Report
Designer, to a SharePoint library. During publication, a new .rsds file is created from the original .rds file in the
solution. You can also create a new .rsds file in a SharePoint library and then set data source connection
properties in the uploaded reports and models to use the new connection.

NOTE
The report server must be configured for SharePoint mode, and the instance of the SharePoint product must have the
Reporting Services Add-in that provides program files for storing and accessing report server items from a SharePoint
site.

To upload a document to a library, you must have the "Add Items" permission at the site level. If you are using
default security settings, this permission is granted to members of the Owners group who have the Full Control
level of permission and to the Members group who have the Contribute level of permission.

Add a report definition or report model to a library


1. Open the library or a folder within a library. If the library is not already open, click its name on the Quick
Launch. If the name of your library does not appear, click View All Site Content , and then click the
name of your library.
2. On the Upload menu, click Upload document .
3. To upload a single report or report model file, select a report definition (.rdl) or report model (.smdl) file
and then click OK .
If the report definition uses a shared data source (.rsds) file to store connection information to an external
data source, you can upload the .rdl and the .rsds file at the same time. To do this, click Upload Multiple
Documents , specify both files, and then click OK .
If you upload a report that contains references to shared data sources, report models, or subreports, the
references will be broken in the report when the files are uploaded. For more information about how to reset
the references, see Create and Manage Shared Data Sources (Reporting Services in SharePoint Integrated
Mode).
When you upload a report, it runs on demand when you open it, retrieving live data from the data source. You
can configure the report to retrieve data on a schedule or use cached data. For more information, see Set
Processing Options (Reporting Services in SharePoint Integrated Mode).
A report can contain parameters so that users can filter data. You can configure the parameters to use specific
values or change how they appear to the user. For more information, see Set Parameters on a Published Report
(Reporting Services in SharePoint Integrated Mode).

See also
Publish a Report to a SharePoint Library
Publish a Shared Data Source to a SharePoint Library
Granting Permissions on Report Server Items on a SharePoint Site
More questions? Try asking the Reporting Services forum
Set processing options (Reporting Services in
SharePoint integrated mode)
3/5/2021 • 4 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services (2016) ✔
️ SharePoint ❌ Power BI Report Server
For content related to previous versions of SQL Server Reporting Services (SSRS), see SQL Server 2014
Reporting Services.
You can set processing options on a Reporting Services report to determine when data processing occurs. You
can also set a time-out value for report processing, and options that determine whether report history is
enabled for the current report.
You can run a report as a report snapshot to prevent the report from being run at arbitrary times (for
example, during a scheduled backup). A report snapshot is usually created and subsequently refreshed
on a schedule, allowing you to time exactly when report and data processing will occur. If a report is
based on queries that take a long time to run, or on queries that use data from a data source that you
prefer no one access during certain hours, you should run the report as a snapshot.
A report server can cache a copy of a processed report and return that copy when a user opens the
report. Caching is a performance-enhancement technique. Caching can shorten the time required to
retrieve a report if the report is large or accessed frequently.
Report history is a collection of previously run copies of a report. You can use report history to maintain
a record of a report over time. Report history is not intended for reports that contain confidential or
personal data. For this reason, report history can include only those reports that query a data source
using a single set of credentials (either stored credentials or credentials used for unattended report
execution) that are available to all users who run a report.
Reporting Services integration with SharePoint uses the check out and check in content management
features of SharePoint to save updates to Reporting Services content types. This includes the creation of
report snapshots. Therefore if you have enabled versioning on a document library, you will see the report
version updated when a new report history snapshot is created. This is a side-effect of updating
snapshots. When a snapshot is updated it causes the LastExecution property of the report to change and
that will cause a change in the version of the report.
You can specify time-out values to set limits on how system resources are used.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

Set data refresh options


1. Point to a report in the library.
2. Click the down arrow, and select Manage processing options .
3. In Data Refresh Options , click Use snapshot data . If you see "This report can not run from a snapshot
because one or more of the data sources credentials are not stored", the report is not configured to run
unattended and you must modify the data sources to use stored credentials before setting this option.
4. In Data Snapshot Options , select Schedule data processing .
5. Select On a shared schedule if you have an existing shared schedule that you want to use, otherwise
click On a custom schedule , and then click Configure .
6. Select frequency, schedule, and start and end dates, and then click OK .
7. In Data Snapshot Options , select Create or update the snapshot when this page is saved if you
want to immediately create snapshot data to use with the report, without waiting for the scheduled data
processing to occur.

Set report caching options


1. Point to a report in the library.
2. Click the down arrow, and select Manage processing options .
3. In Data Refresh Options , click Use cached data . If you see "This report can not be cached because
one or more of the data sources credentials are not stored", the report is not configured to run
unattended and you must modify the data sources to use stored credentials before setting this option.
4. In Cache Options , specify how the cache will expire:
Enter a number of minutes after which the cache will expire.
Use a shared schedule to clear the cache at times specified in the schedule.
Create a custom schedule to clear the cache at a time that you specify.

Set processing time-out values


1. Point to a report in the library.
2. Click the down arrow, and select Manage processing options .
3. In Processing Time-out , select Use site default setting if you want to use the value specified at the
report server level. Otherwise, select Do not time out repor t processing or Limit repor t
processing in seconds if you want to override that value with no time-out or different time-out values.

Set report history options and limits


1. Point to a report in the library.
2. Click the down arrow, and select Manage processing options .
3. In Histor y Snapshot Options , specify how and when data processing occurs and is saved.
4. In Histor y Snapshot Limits , select Use site default setting if you want to use the value specified at
the report server level. Otherwise, select Do not limit the number of snapshots or Limit number of
snapshots to specify a custom value.

Set database timeout


Use Windows PowerShell to set the database timeout of a SharePoint report server. For more information,
see the "Get and set Properties of the Reporting Service Application Database" section of PowerShell cmdlets
for Reporting Services SharePoint Mode.

Next steps
Set Report Processing Properties
Caching Reports
Setting Time-out Values for Report and Shared Dataset Processing
More questions? Try asking the Reporting Services forum
High availability in SQL Server Reporting Services
5/21/2020 • 2 minutes to read • Edit Online

A Reporting Services report server is a stateless server that stores application data, content, properties, and
session information in two SQL Server relational databases. As such, the best way to ensure the availability of
Reporting Services functionality is to do the following:
Use the high availability features of the SQL Server Database Engine to maximize the uptime of the
report server databases. If you configure a Database Engine instance to run in a failover cluster, you can
select that instance when you create a report server database.
Use SQL Server Always On availability groups with the Reporting Services databases and for data
sources, as possible. For more information, see Reporting Services with Always On Availability Groups.
Configure multiple report servers to run in a scale-out deployment, where all the servers share a single
report server database. Deploying multiple report server instances, preferably on different servers, in a
scale-out deployment can help provide uninterrupted service in the event one of the report server
instances goes down.
A scale-out deployment provides a way to share a database. If one report server goes down, other servers in the
same deployment will continue to work.
Reporting Services is not cluster-aware. By itself, a scale-out deployment does not provide load balancing; it
does not detect the processing loads on a report server and route new processing requests to the least busy
server. It does not re-route processing requests that failed before completion. To get load balancing features, you
must configure load balancing for the Web servers that host the report servers, and then configure the report
servers in a scale-out deployment so that they share the same report server database.
The Report Server Web service and Windows service are tightly integrated and run together as a single report
server instance. You cannot configure availability for one service separately from the other.
More questions? Try asking the Reporting Services forum
Enable and disable RDL sandboxing for Reporting
Services in SharePoint integrated mode
5/21/2020 • 7 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services (2016) ✔
️ SharePoint ❌ Power BI Report Server
For content related to previous versions of SQL Server Reporting Services (SSRS), see SQL Server 2014
Reporting Services.
The RDL (Report Definition Language) sandboxing feature lets you detect and restrict the usage of specific types
of resources, by individual tenants, in an environment of multiple tenants that use a single web farm of report
servers. An example of this is a hosting services scenario where you might maintain a single web farm of report
servers that are used by multiple tenants, and perhaps different companies. As a report server administrator,
you can enable this feature to help achieve the following objectives:
Restrict external resource sizes. External resources include images, .xslt files, and map data.
At report publish time, limit types and members that are used in expression text.
At report processing time, limit the length of the text and the size of the return value for expressions.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

When RDL Sandboxing is enabled, the following features are disabled:


Custom code in the <Code> element of a report definition.
RDL backward compatibility mode for SQL Server 2005 Reporting Services (SSRS) custom report items.
Named parameters in expressions.
This topic describes each element in the <RDLSandboxing > element in the RSReportServer.Config file. For
more information about how to modify this file, see Modify a Reporting Services Configuration File
(RSreportserver.config). A server trace log records activity related to the RDL Sandboxing feature. For more
information about trace logs, see Report Server Service Trace Log.

Example configuration
The following example shows the settings and example values for the <RDLSandboxing > element in the
RSReportServer.Config file.
<RDLSandboxing>
<MaxExpressionLength>5000</MaxExpressionLength>
<MaxResourceSize>5000</MaxResourceSize>
<MaxStringResultLength>3000</MaxStringResultLength>
<MaxArrayResultLength>250</MaxArrayResultLength>
<Types>
<Allow Namespace="System.Drawing" AllowNew="True">Bitmap</Allow>
<Allow Namespace="TypeConverters.Custom" AllowNew="True">*</Allow>
</Types>
<Members>
<Deny>Format</Deny>
<Deny>StrDup</Deny>
</Members>
</RDLSandboxing>

Configuration settings
The following table provides information about configuration settings. Settings are presented in the order in
which they appear in the configuration file.

SET T IN G DESC RIP T IO N

MaxExpressionLength Maximum number of characters allowed in RDL expressions.

Default: 1000

MaxResourceSize Maximum number of KB allowed for an external resource.

Default: 100

MaxStringResultLength Maximum number of characters allowed in a return value for


an RDL expression.

Default: 1000

MaxArrayResultLength Maximum number of items allowed in an array return value


for an RDL expression.

Default: 100

Types The list of members to allow within RDL expressions.

Allow A type or set of types to allow in RDL expressions.

Namespace Attribute for Allow that is the namespace that contains one
or more types that apply to Value. This property is case-
insensitive.

AllowNew Boolean attribute for Allow that controls whether new


instances of the type are allowed to be created in RDL
expressions or in an RDL <Class> element.

When RDLSandboxing is enabled, new arrays cannot be


created in RDL expressions, regardless of the setting of
AllowNew .
SET T IN G DESC RIP T IO N

Value Value for Allow that is the name of the type to allow in RDL
expressions. The value * indicates that all types in the
namespace are allowed. This property is case-insensitive.

Members For the list of types that are include in the <Types>
element, the list of member names that are not allowed in
RDL expressions.

Deny The name of a member that is not allowed in RDL


expressions. This property is case-insensitive.

When Deny is specified for a member, all members with this


name for all types are not allowed.

Working with expressions when RDL sandboxing is enabled


You can modify the RDL Sandboxing feature to help manage the resources that are used by an expression in the
following ways:
Restrict the number of characters that are used for an expression.
Restrict the size of the result returned by an expression.
Allow a specific list of types that can be used in an expression.
Restrict the list of members by name for the list of allowed types that can be used in an expression.
The RDL Sandboxing feature enables you to create a list of approved types and a list of denied members.
The list of approved types is called an allow list. The list of denied members is called a block list.

NOTE
In the report definition, a computer cannot know the type of each instances of an expression reference. When you add a
member to the block list, you are denying all members of that name across all types in the allow list.

RDL expression results are verified at run time. RDL expressions are verified in the report definition when the
report is published. Monitor the report server trace log for violations. For more information, see Report Server
Service Trace Log.
Working with types
When you add a type to the allow list, you are controlling the following entry points to access RDL expressions:
Static members of a type.
The Visual Basic New method.
The <Classes> element in the report definition.
Members that you have added to the block list for a type in the allow list.
The allow list does not control the following entry points:
Report datasets. Fields in report datasets that are returned from queries might contain any valid RDL
type.
Report parameters. User-supplied parameter values might contain any valid RDL type.
Members of an enabled type that are not in the block list. By default, all members of all types in the allow
list are enabled. When you add a member name to the block list, you are denying all members with that
name across all types that are in the allow list.
To enable a member of one type but deny a member with the same name for a different type, you must do the
following:
Add a <Deny> element for the member name.
Create a proxy member with a different name on a class in a custom assembly for the member that you
want to enable.
Add that new class to the allow list.
To add Visual Basic .NET Framework functions to the allow list, add the corresponding types from the
Microsoft.VisualBasic namespace to the allow list.
To add Visual Basic .NET Framework type keywords to the allow list, add the corresponding CLR type to the
allow list. For example, to use the Visual Basic .NET Framework keyword Integer , add the following XML
fragment to the <RDLSandboxing> element:

<Allow Namespace="System">Int32</Allow>

To add a generic or a Visual Basic .NET Framework nullable type to the allow list, you must do the following:
Create a proxy type for the generic or Visual Basic .NET Framework nullable type.
Add the proxy type to the allow list.
Adding a type from a custom assembly to the allow list does not implicitly grant execute permission on the
assembly. You must specifically modify the code access security file and provide execute permission to your
assembly. For more information, see Code Access Security in Reporting Services.
Maintaining the <Deny> list of members
When you add a new type to the allow list, use the following list to determine when you might have to update
the block list of members:
When you update a custom assembly with a version that introduces new types.
When you add members to the types in the allow list.
When you update the .NET Framework on the report server.
When you upgrade the report server to a later version of Reporting Services.
When you update a report server to handle a later RDL schema, because new members might have been
added to RDL types.
Working with operators and new
By default, Visual Basic .NET Framework language operators, except for New , are always allowed. The New
operator is controlled by the AllowNew attribute on the <Allow> element. Other language operators, such as
the default collection accessor operator ! and Visual Basic .NET Framework cast macros such as CInt , are always
allowed.
Adding operators to a block list, including custom operators, is not supported. To exclude operators for a type,
you must do the following:
Create a proxy type that does not implement the operators that you want to exclude.
Add the proxy type to the allow list.
To create a new array in an RDL expression, create the array in a method on a class that you define, and add that
class to the allow list.
To create a new array in an RDL expression, you must do the following:
Define a new class and create the array in a method on that class.
Add the class to the allow list.

See also
RsReportServer.config configuration file
Report Server Service trace log
More questions? Try asking the Reporting Services forum
Report Viewer web part on a SharePoint site -
Reporting Services
3/5/2021 • 2 minutes to read • Edit Online

APPLIES TO: ✔️ SQL Server 2016 Reporting Services and later ✔


️ Power BI Report Server ✔
️ SharePoint
2016 & later ❌ SharePoint Online
The Report Viewer web part is a custom web part. You can use the web part to view, navigate, print, and export
reports on a report server within a SharePoint site. The Report Viewer web part is associated with report
definition (.rdl) files that are processed by a Microsoft SQL Server Reporting Services report server.
The latest Report Viewer web part can also service paginated reports deployed to Power BI Report Server. The
web part does not work with Power BI reports.

Why the Report Viewer web part is re-introduced


The Report Viewer web part was available as part of the Reporting Services Add-in for SharePoint products. The
web part was specific for report servers in SharePoint integrated mode. SharePoint integrated mode was
deprecated after SQL Server 2016.
Starting with SQL Server 2017, there's only one installation mode for Reporting Services: Native mode . You
could embed all reports types using a Page Viewer web part using the rs:Embed=true URL parameter.
Embedding reports into SharePoint pages is an integration story requested by customers and the updated
Report Viewer web part enables this scenario for paginated reports.
While the Page Viewer web part suffices to embed a paginated report into a SharePoint page, the updated
Report Viewer web part offers additional features.
Show/hide specific toolbar buttons
Override report parameter values
Connect Filter web parts to report parameters

Download the Report Viewer web part solution package


The Report Viewer web part is available on the Microsoft Download Center.
Download Report Viewer web part solution package

Considerations and limitations


The items listed are specific to the updated Report Viewer web part.
The web part can only be used on classic SharePoint pages.
Only paginated (RDL) reports are supported for embedding in the Report Viewer web part. If you are looking
to embed Power BI reports or mobile reports, you can use the rs:Embed=true URL parameter.

Next steps
To get started with the updated Report Viewer web part, see Deploy the Report Viewer web part on a SharePoint
site.
Deploy the SQL Server Reporting Services Report
Viewer web part on a SharePoint site
11/2/2020 • 4 minutes to read • Edit Online

APPLIES TO: ✔️ SQL Server 2016 Reporting Services and later ✔


️ Power BI Report Server ✔
️ SharePoint
2013 & later ❌ SharePoint Online
The Report Viewer web part is a custom web part that can be used to view SQL Server Reporting Services
(native mode) reports within your SharePoint site. You can use the web part to view, navigate, print, and export
reports on a report server. The Report Viewer web part is associated with report definition (.rdl) files that are
processed by a SQL Server Reporting Services report server or a Power BI Report Server. This Report Viewer
web part cannot be used with Power BI reports hosted in Power BI Report Server.
Use the following instructions to manually deploy the solution package that add the Report Viewer web part to
a SharePoint Server 2013, SharePoint Server 2016, or SharePoint Server 2019 environment. Deploying the
solution is a required step for configuring the web part.
The Repor t Viewer web par t is a standalone solution package and is not associated with
SharePoint integrated mode for SQL Ser ver Repor ting Ser vices.

Requirements
IMPORTANT
Starting with version "15.X.X.X" you can install the ReportViewerWebPart side by side with your existing Reporting
Services SharePoint integrated mode shared service applications. With this update of the .wsp solution we introduced new
files and the previous solution must be retracted and the new .wsp redeployed by using the Uninstall-
SPSolution and Install-SPSolution cmdlets, respectively.

Suppor t SharePoint Ser ver versions:


SharePoint Server 2019
SharePoint Server 2016
SharePoint Server 2013
Suppor t Repor ting Ser vices versions:
SQL Server 2008 Reporting Services (Native mode) and later.
Power BI Report Server

Download the Report Viewer web part solution package


The Report Viewer web part is available on the Microsoft Download Center.
Download Report Viewer web part solution package

Deploy the farm solution


This section shows you how to deploy the solution package to your SharePoint farm. This task only needs to be
performed once.
1. On a SharePoint server, open a SharePoint Management Shell using the Run as Administrator option.
2. Run Add-SPSolution to add the farm solution.

Add-SPSolution -LiteralPath "{path to file}\ReportViewerWebPart.wsp"

The cmdlet returns the name of the solution, its solution ID, and Deployed=False. In the next step, you will
deploy the solution.
3. Run the Install-SPSolution cmdlet to deploy the farm solution.
SharePoint 2013

Install-SPSolution -Identity ReportViewerWebPart.wsp -CompatibilityLevel "14,15" -GACDeployment -


WebApplication {URL to web application}

SharePoint Ser ver 2016 and 2019

Install-SPSolution -Identity ReportViewerWebPart.wsp -GACDeployment -WebApplication {URL to web


application}

Activate feature
1. In your SharePoint site, select the gear icon in the upper left and select Site Settings .

By default, SharePoint web applications are accessed through port 80. This means that you can often
access a SharePoint site by entering https:// to open the root site collection.
2. In Site Collection Administration , select Site collection features .
3. Scroll down the page until you find the Repor t Viewer web par t Feature.
4. Select Activate .

5. Repeat for additional site collections by opening each site and clicking Site Actions.
Optionally, you can also use PowerShell to enable this feature on all sites using the Enable-SPFeature cmdlet.
Get-SPWebApplication "<web application url>" | Get-SPSite -Limit ALL |
ForEach-Object {
Write-Host "Enabling feature for $($_.URL)"
Enable-SPFeature -identity "ReportViewerWebPart" -URL $_.URL -ErrorAction Continue
}

Remove the solution


Although SharePoint Central Administration provides solution retraction, you do not need to retract the
Repor tViewerWebPar t.wsp file unless you are systematically troubleshooting an installation or patch
deployment problem.
1. In SharePoint Central Administration, in System Settings , select Manage farm solutions .
2. Select Repor tViewerWebPar t.wsp .
3. Select Retract Solution.
Remove the web part from Site settings
Retracting the solution does not remove the Report Viewer web part from the list of web parts within your
SharePoint site. To remove the Report Viewer web part, do the following.
1. In your SharePoint site, select the gear icon in the upper left and select Site Settings .

By default, SharePoint web applications are accessed through port 80. This means that you can often
access a SharePoint site by entering https:// to open the root site collection.
2. Under Web Designer Galleries , select web par ts .
3. Select the edit icon next to Repor tViewerNativeMode.dwp . It may not be listed on the first page of
results.
4. Select Delete Item .
Deletion of the web part can be attempted by using PowerShell, but there is not a direct command for it. For a
script example, see How to delete web parts from the web part Gallery.

Supported languages
The following languages are supported with the web part:
English (en)
German (de)
Spanish (sp)
French (fr)
Italian (it)
Japanese ( ja)
Korean (ko)
Portuguese (pt)
Russian (ru)
Chinese (Simplified - zh-HANS and zh-CHS)
Chinese (Traditional - zh-HANT and zh-CHT)

Troubleshoot
Error when uninstalling SSRS if you have SharePoint integrated mode configured:
Install-SPRSService : [A]
Microsoft.ReportingServices.SharePoint.SharedService.Service.ReportingWebService cannot be cast to
[B]Microsoft.ReportingServices.SharePoint.SharedService.Service.ReportingWebService. Type A
originates from 'Microsoft.ReportingServices.SharePoint.SharedService,Version=14.0.0.0,
Culture=neutral, PublicKeyToken=89845dcd8080cc91' in the context 'Default' at location
'C:\Windows\assembly\GAC_MSIL\Microsoft.Reporting Services.SharePoint.SharedService.dll'. Type B
originates from 'Microsoft.ReportingServices.SharePoint.SharedService,Version=12.0.0.0,
Culture=neutral, PublicKeyToken=89845dcd8080cc91' in the context 'Default' at location
'C:\Windows\assembly\GAC_MSIL\Microsoft.Reporting Services.SharePoint.SharedService.dll'.
Solution:
1. Remove the Report Viewer web part
2. Uninstall SSRS
3. Reinstall the Report Viewer web part
Error when trying to upgrade SharePoint if you have SharePoint integrated mode configured:
Could not load file or assembly 'Microsoft.ReportingServices.Alerting.ServiceContract, Version=14.0.0.0,
Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies. The system cannot
find the file specified. 00000000-0000-0000-0000-000000000000
Solution:
1. Remove the Report Viewer web part
2. Uninstall SSRS
3. Reinstall the Report Viewer web part

Next steps
After the Report Viewer web part has been deployed and activated, you can add the web part to a SharePoint
page. For more information, see Add Report Viewer web part to a SharePoint page.
More questions? Try asking the Reporting Services forum
Add SQL Server Reporting Services Report Viewer
web part to a SharePoint page
3/5/2021 • 2 minutes to read • Edit Online

APPLIES TO: ✔️ SQL Server 2016 Reporting Services and later ✔


️ Power BI Report Server ✔
️ SharePoint
2013 & later ❌ SharePoint Online
Display a report, from SQL Server Reporting Services or Power BI Report Server, by adding a Report Viewer
web part to a SharePoint page.

Prerequisites
For reports to load successfully, the Claims to Windows Token Service (C2WTS) needs to be configured
for Kerberos constrained delegation. For more information on how to configure C2WTS, see Claims to
Windows Token Service (C2WTS) and Reporting Services.
The Report Viewer web part must be deployed to your SharePoint farm. For information on how to
deploy the Report Viewer web part solution project, see Deploy the Report Viewer web part on a
SharePoint site.
To add a web part to a web page, you must have the Add and Customize Pages permission at the site
level. If you are using default security settings, this permission is granted to members of the Owners
group who have the Full Control level of permission.

Add web part


1. In your SharePoint site, select the gear icon in the upper left and select Add a page .

2. Give your page a name and select Create .


3. Within the page designer, select the Inser t tab in the ribbon. Then select web par t within the Par ts
section.

4. Under Categories , select SQL Ser ver Repor ting Ser vices (Native mode) . Under Par ts , select
Repor t Viewer . Then select Add .

You may initially see an error. The error is because the default report server URL is set to https://localhost
and may not be available at that location.

Configure the Report Viewer web part


To configure the web part to point to your specific report, do the following steps.
1. When editing the SharePoint page, select the down arrow in the upper right of the web part and select
Edit web par t .

2. Enter the Repor t Ser ver URL for the report server hosting your report. The URL should look similar to
https://myrsserver/reportserver.
3. Enter the path and name of the report you want to display within the web part. It will look similar to
/AdventureWorks Sample Reports/Company Sales. In this example, the report Company Sales is in a
folder called AdventureWorks Sample Reports.
4. If your report requires parameters, after you have supplied the report server URL and the name of the
report, select Load Parameters within the Parameters section.
5. Select Ok to save your changes to the web part configuration.
6. Select Save , within the Office ribbon, to save the changes to the SharePoint page.

Considerations and limitations


The Report Viewer web part cannot be used on modern pages within SharePoint.
Power BI reports can't be used with the Report Viewer web part.
If you don't see the Report Viewer web part, to add to your page, make sure you have deployed the Report
Viewer web part.
More questions? Try asking the Reporting Services forum
Connect Filter or Documents web part with a
Reporting Services Report Viewer web part
11/2/2020 • 2 minutes to read • Edit Online

APPLIES TO: ✔️ SQL Server 2016 Reporting Services and later ✔


️ Power BI Report Server ✔
️ SharePoint
2013 & later ❌ SharePoint Online
For content related to previous versions of SQL Server Reporting Services (SSRS), see SQL Server 2014
Reporting Services.
If you are using a SharePoint product, you can create a dashboard or web part Page that includes a Filter web
part or Documents web part and a Report Viewer web part. Supported versions are SharePoint Foundation
2010 or SharePoint Server 2010. Also supported are Windows SharePoint Services 3.0 or Office SharePoint
Server 2007. By connecting a Filter web part, users who select filter values in a Filter web part can send the
value to a parameterized report on the same page. By connecting a Documents web part, users who click on
reports in the Documents library can view the report in an adjacent Report Viewer web part.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

The Filter web part is used to send values to one or more parameters on a report. To use a Filter web part, the
report must have parameters defined for it that are compatible with the values, data type, and format sent by
the web part.
The Documents web part is associated with the Documents library of the Home site. To view, add, or remove
items from the Documents library, click View All Site Content . In Libraries, click Documents . You can use the
New , Upload , and Actions menu to manage the items in the Documents library.

Connect a Filter web part


1. Open or create the web part page or dashboard.
2. On the Site Actions menu, click Edit Page .
3. Click Add a web par t .
4. In All web par ts , in the Miscellaneous category, select SQL Ser ver Repor ting Ser vices Repor t
Viewer .
5. Click Add . The web part is added at the top of the zone.
6. On another zone in the same web part page or dashboard, click Add a web par t .
7. In All web par ts , in the Filters section, select a web part.
8. Click Add . The web part is added at the top of the zone.
9. In the zone that contains the web part, click the web part edit menu, point to Connections , point to
Send Filter Values To , and then select Repor t Viewer - report name.
10. Check in your changes and save the page.
Connect a Documents web part
1. Open or create the web part page or dashboard.
2. On the Site Actions menu, click Edit Page .
3. Click Add a web par t .
4. In All web par ts , in the Lists and Librar y section, select Documents.
5. Click Add . The web part is added at the top of the zone.
6. Click Apply at the bottom of the tool pane, and then click OK to close the pane.
7. On another zone in the same web part page or dashboard, click Add a web par t .
8. In All web par ts , in the Miscellaneous category, select SQL Ser ver Repor ting Ser vices Repor t
Viewer.
9. Click Add . The web part is added at the top of the zone.
10. In the zone that contains the web part, click the web part edit menu, point to Connections , point to Get
repor t definitions from , and then select Documents .
11. Check in your changes and save the page.

See also
Add the Report Viewer web part to a web page
Report Viewer web part on a SharePoint Site
Customize the Report Viewer web part
More questions? Try asking the Reporting Services forum
Customize the Report Viewer web part
11/2/2020 • 9 minutes to read • Edit Online

APPLIES TO: ✔️ SQL Server 2016 Reporting Services and later ✔


️ Power BI Report Server ✔
️ SharePoint
2013 & later ❌ SharePoint Online
For content related to previous versions of SQL Server Reporting Services (SSRS), see SQL Server 2014
Reporting Services.
You can use the Report Viewer web part to view reports that run on a report server configured for SharePoint
integration. Reports that you can display include report definition (.rdl) files and Report Builder reports. Reports
open in the Report Viewer web part in a new page automatically. You can also add a Report Viewer web part to
an existing web page or site if you want a particular report to be always visible on that page.

NOTE
Although they have identical names, the Report Viewer web part that is installed through the Reporting Services Add-in is
different from the Report Viewer web part that is included in the RSWebParts.cab file. The instructions in this topic are
specifically for the Report Viewer web part that is installed through the Reporting Services Add-in.

You can customize the Report Viewer web part in the following ways:
Change the appearance of the web part by setting properties.
Choose which interactive reporting features are available on the report toolbar.
Specify which view areas are available. The Report Viewer web part has a report view area, a Parameters
area, and a Credentials area.
You cannot extend the Report Viewer web part to support different file types, and you cannot replace the report
toolbar with a custom toolbar or add new functionality to the existing toolbar. If you require customization of the
standard features, you should create a custom web part.

Setting web part properties


A web part has custom properties that are used to configure specific functionality. A web part also has common
properties that are standard for every web part.
Change default properties
The Report Viewer web part has default properties that are ideally suited for opening reports on demand from a
library or folder. By default, all available controls are displayed on the toolbar. Height and width are set to use all
of the available space on the web page. If you want to modify the default properties, you can customize the web
part through Site Settings .
1. On the Site Actions menu, click Site Settings .
2. Under Galleries, click web par ts .
3. Click Repor tViewer.dwp .
4. Open the tool pane and set the properties you want to use.
Customize an embedded Report Viewer in a web page
You can set properties to make the Report Viewer fit within a web page. The report viewer can use the same
style and colors as the page that contains it. You can hide all or part of the toolbar, document map, and
parameters area to maximize the report viewing area within the allocated space. The report always uses the
styles you defined for it when you created it. You can't customize report appearance after you publish it to a
SharePoint library.
If you are embedding the Report Viewer web part in a web page, you should set the Repor t URL property to a
specific report. If you do not, the Report Viewer will display instructions for linking to a report. You cannot
customize or remove the instructions.
Custom properties of the Report Viewer web part
When setting custom properties, be aware that some properties are used only when the Report Viewer web
part is embedded in a page. Examples include Title, Height, Width, Chrome type, and Zone. Other properties,
such as Toolbar settings and Parameters settings, are used regardless of whether the Report Viewer appears
within a page or opens a report in full-page mode.
The custom properties of the Report Viewer web part are listed below.

P RO P ERT Y DESC RIP T IO N

Report A fully-qualified path to a report that is on the current


SharePoint site, or on a site within the same Web application
or farm. For best results when setting additional properties,
click Apply after you specify the report URL.

Hyperlink Target Standard HTML that specifies the target frame for displaying
linked content within the current document. For reports that
include hyperlinks to external Web sites, you can specify
whether a target document replaces the existing report
within the current window, or opens in a new browser
window. Valid values include _Top , _Blank , and _Self . _Top
uses the current window, _Blank loads the document in a
new browser window, and _Self opens the document within
the current frame. Although _Parent is a valid value for the
Target attribute in HTML, do not use it for a Report Viewer
web part that is embedded in a page.

Auto-Generate web part Title A generated title that includes the name of the Report
Viewer web part plus the name of the report, separated by a
dash. If the report does not have a title, the report file name
is used. The title is visible when you add a web part to a
page. If this check box is selected, the title will be generated
each time the page is refreshed.

Auto-Generate web part Title Detail Link A generated hyperlink that appears above the web part. You
can click the link to open the report in a new page, in full-
page mode.

Show report builder menu item Shows or hides the Actions menu option to open Report
Builder.

Show subscription menu item Shows or hides the Actions menu option to create a
subscription for the report.

Show print menu item Shows or hides the Actions menu option to print the
report.
P RO P ERT Y DESC RIP T IO N

Show export menu item Shows or hides the Actions menu option to export the
report.

Show refresh button Shows or hides the refresh button on the toolbar.

Show page navigation controls Shows or hides the report navigation buttons on the toolbar.
This option changes the visibility of all the navigation
controls.

Show back button Shows or hides the back button on the toolbar.

Show find controls Shows or hides the find controls on the toolbar. The find
controls allow a user to search for text in the rendered
report. This option changes the visibility of all the find
controls.

Show zoom control Shows or hides the zoom control on the toolbar.

Show ATOM feed button Shows or hides the ATOM feed button on the toolbar.

ToolBar location Determines the location of the toolbar within the report
viewer. Valid values include Top and Bottom .

Prompt area Valid values include Displayed , Collapsed , and Hidden .


Displayed displays the Parameters area for reports that
include parameterized values and that require user input
before the report will run. Use Hidden if all of the report
parameters are specified and you do not want the
parameters area to be visible to users.

Parameters Area Width You can choose the measurement and value. The default is
200 pixels. The only requirement for this property is that it is
greater than zero.

Document Map A report navigation control that is defined in the report and
used to provide one-click access to specific sections of a
report. It is available in HTML reports. The document map is
displayed in a collapsible area next to the report viewing
area. Valid values include Displayed , Collapsed , and
Hidden . If a document map is defined for a report, the area
is expanded by default unless marked as hidden or collapsed
in the web part properties. If the document map is
collapsed, you can click the arrow to expand it.

Document Map Area Width You can choose the measurement and value. The default is
200 pixels. The only requirement for this property is that it is
greater than zero.
P RO P ERT Y DESC RIP T IO N

Load Parameters Retrieve parameter properties for the report. Not all reports
have parameters. If the report does not have parameters, no
values will be returned. If you are setting properties for a
report that you just uploaded, you might get an error
indicating that the data source connection has been deleted.
If this occurs, reset the connection and then finish setting
parameter properties after the connection is specified. For
more information about how to set the connection, see
Create and Manage Shared Data Sources (Reporting Services
in SharePoint Integrated Mode).

For best results, click Apply before clicking Load Parameters.

After you load parameter properties, you can set them the
same way you would in the parameter property pages of the
report. For more information about how to set parameters,
see Set Parameters on a Published Report (Reporting
Services in SharePoint Integrated Mode).

Customizing the toolbar


The toolbar appears beneath the title and extends across the top of the report. The toolbar provides an Actions
menu, page navigation for paginated reports, refresh, and zoom. It includes a document map control for reports
that have a document map. The Actions menu includes commands for exporting the report, searching for text
or numbers within a report, printing the report, and, opening the report in Report Builder.
You cannot add new commands to the Actions menu but you can customize it by changing the options that are
visible to users. To change the visibility of toolbar buttons and controls, you change options in the ToolBar
Items Visibility section of the web part. You can also remove the Print command or specific export formats by
making these features unavailable on the report server. Page navigation controls are available for reports that
have page breaks; otherwise, the report is a single page of variable length. Refresh re-processes the report
using the parameters that are current for the report. To display all the controls on one line, set the overall width
of the web part to at least 400 pixels.

Customizing the viewing area


The view area is used to display reports. The report view area is shared with the Parameters and Credentials
area, if they are used. If credentials are required, the Credentials area is displayed next to an empty report view
area. The Credentials area closes after the user provides credentials and runs the report. To customize the text
that prompts users to set credentials, modify the data source connection properties. For more information, see
Create and Manage Shared Data Sources (Reporting Services in SharePoint Integrated Mode).
The Parameters area provides fields for entering values before running the report. It is only used when a report
definition includes parameters. When either the Parameters or Credentials areas are displayed, the report view
is adjusted to use the remaining width of the web part. You can set properties on the web part to customize the
width of Parameters. You can also define the labels that appear next to individual parameters on the page. For
more information about how to modify parameter labels, see Set Parameters on a Published Report (Reporting
Services in SharePoint Integrated Mode).

See also
Report Viewer web part on a SharePoint Site
Add the Report Viewer web part to a web page
More questions? Try asking the Reporting Services forum
SharePoint site settings for the Report Viewer web
part - Reporting Services
3/5/2021 • 2 minutes to read • Edit Online

APPLIES TO: ✔️ SQL Server 2016 Reporting Services and later ✔


️ Power BI Report Server ✔
️ SharePoint
2013 & later ❌ SharePoint Online
The Report Viewer web part has a couple of settings that can be configured. These settings can be enabled and
disabled on the SharePoint site settings page by a site administrator. Each site has its own settings. Additionally,
these settings will not be reset after reinstalling the Report Viewer web part.

Accessing the site settings page


The site settings can be accessed by:
1. In your SharePoint site, select the gear icon in the upper left and select Site Settings .

2. Clicking Repor t Viewer Web Par t Settings in the Repor ting Ser vices site settings group.

NOTE
The site settings can also be reached by navigating directly to
<site>/_layouts/15/ReportViewerWebPart/ReportViewerWebPartSettings.aspx

Report Viewer web part settings


SET T IN G C O M M EN T S

Collect usage data Enables error and usage information to be sent to Microsoft
to help improve our products. For the Microsoft error
reporting data collection policy, see the Microsoft SQL
Server Privacy Statement.

Enable Accessibility Metadata for Reports Sets the AccessibleTablix device info for rendered
reports.
Pin Reporting Services paginated report items to
dashboards in Power BI
11/2/2020 • 7 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server 2016 Reporting Services and later ✔
️ Power BI Report Server
You can pin an on-premises Reporting Services paginated report item to a dashboard in the Power BI service, as
a new tile. To pin, your administrator needs to first integrate your report server with Azure Active Directory and
Power BI.

Requirements to Pin
The report server is configured for Power BI integration. For more information, see Power BI Report
Server Integration (Configuration Manager). If the report server has not been configured, you won't see
the Pin to Power BI Dashboard button on the report viewer toolbar.

You pin from the Reporting Services report viewer in the web portal, for example,
https://myserver/Reports . You can't pin from Report Builder, from report designer in SQL Server Data
Tools (SSDT), or from a report server URL. For example, https://myserver/ReportServer .
You need to configure your browser to allow pop-ups from your report server site.
You need to configure reports for stored credentials, if you want the pinned item to refresh. When you
pin an item, a Reporting Services subscription is automatically created to manage the data refresh of the
item to the dashboard. If the report does not use stored credentials, when the subscription runs you'll see
a message similar to this one on the My subscriptions page.
"Power BI Delivery error: dashboard: IT Spend Analysis Sample, visual: Chart2, error: The current action
cannot be completed. The user data source credentials do not meet the requirements to run this report or
shared dataset. Either the user data source credential."
See the section "Configure stored credentials for a report-specific data source (Native mode)" in Store
Credentials in a Reporting Services Data Source

Items You Can Pin


The following report items can be pinned to a Power BI dashboard. You can't pin items that are nested inside a
data region. For example, you can't pin an item that is nested inside a Reporting Services table or list.
Charts
Gauge panels
Maps
Images
Items need to be in the report body. You can't pin items that are in the page header or page footer.
You can pin individual items that are inside a top-level rectangle but you can't pin them all as a single group.

To Pin a Report Item


1. Verify you are signed into Power BI. In the Reporting Services web portal, select the menu item My
Settings and sign in. See My Settings for Power BI Integration (web portal) for more information.

2. Navigate to the web portal folder that contains your report, and then view the report.
3. While viewing the report, select the Pin to Power BI button the toolbar. You will be prompted to sign in,
if you are not already signed in. If the Power BI button is not visible, the report server has not been
integrated with Power BI. For more information, see Power BI Report Server Integration (Configuration
Manager).

4. Select the report item you want to pin to Power BI. You can only pin one item at a time. The report viewer
presents a shaded view of your report and the report items you can pin are highlighted while the items
that you can't pin, will be shaded dark.
(1) select the group that contains the dashboard you want to pin to, (2) select the dashboard you want to
pin the item too and (3) select how frequently you want the tile updated in the dashboard. The
refresh is managed by Reporting Services subscriptions and after the item is pinned, you can edit the
subscription and configure a different refresh schedule.

5. Select Pin
In the Pin Successful dialog, you can select the link See it in Power BI to navigate to the dashboard
and see the item you just pinned.
6. Select Close to return the report to the normal view.

In the Dashboard
After your report item is pinned in the dashboard, the tile looks like other dashboard tiles and there is no visible
indication the tile came from Reporting Services. The following list summarizes how tile properties are
populated from the report item.
From the Power BI dashboard the pinned report item behaves like other tiles:
(1) You can pin the tile to other dashboards.
(2) In the Tile Details you'll notice the Reporting Services report title is used for the default title of the tile.
(3) The tile subtitle is based on the date and time the tile was pinned or the data was last refreshed from
Reporting Services. The refresh schedule is managed by the Reporting Services subscription that was
automatically created when you pinned the report item.
(5) If you select the tile itself, Power BI uses the (4) custom link to navigate to the web portal page of the
registered report server. the link was set when the item was pinned from Reporting Services. If you do not have
internet connectivity to the report server, you will see an error in the browser.

Troubleshoot Issues
No Power BI button on the repor t viewer toolbar : This message indicates the report server has not
been integrated with Power BI. For more information, see Power BI Report Server Integration
(Configuration Manager).
Cannot Pin : When you attempt to pin an item, you see the following error message: See the section
Items You Can Pin.
"Cannot Pin: There are no report items on this page that you can pin to Power BI."
Pinned items show stale data in a Power BI dashboard and it did update for a period of time. The user
credentials token has expired and you need to sign in again. The user credential registration with Azure
and Power BI is good for 90 days. In the web portal, click My Settings . For more information, see My
Settings for Power BI Integration (web portal).
Pinned items show stale data in a Power BI dashboard and it has not refreshed even once. The issue is
the report is not configured to use stored credentials. A report must use stored credentials because the
action of pinning a report item creates a Reporting Services subscription to manage the refresh schedule
of the tiles. Reporting Services subscriptions require stored credentials. If you review the My
Subscriptions page, you see an error message similar to this one:
"Power BI Delivery error: dashboard: SSRS items, visual: Image3, error: The current action can't be
completed. The user data source credentials do not meet the requirements to run this report or shared
dataset. Either the user data source credentials are not stored in the report server database, or the user
data source is configured not to require credentials but the unattended execution account is not specified.
(rsInvalidDataSourceCredentialSetting)"
Expired Power BI credentials: You attempt to pin an item and see the following error message. In the
web portal, click My Settings and on the My Settings page, click Sign in . See My Settings for Power BI
Integration (web portal) for more information.
"Cannot Pin: Unexpected Server Error: Missing, invalid or expired Power BI credentials."
Cannot Pin : If you attempt to pin an item to a dashboard that is in a read-only state, you will see an
error message similar to this one:
"Server Error: The item 'Dashboard deleted 015cf022-8e2f-462e-88e5-75ab0a04c4d0' can't be found.
(rsItemNotFound)"
Tiles in Power BI apps show stale data: If you pin a Reporting Services report item to a dashboard,
and then distribute that dashboard in an app, the pinned report item in that dashboard won’t update.

Subscription Management
In addition to the subscription-related issues described in the troubleshooting section, the following information
will help you maintain Power BI related subscriptions.
Item name changed: If a pinned report item is renamed or deleted, the Power BI tile will no longer
update and you will see an error message similar to the following. If you rename the item back the
original name, the subscription will start working again and the tile will be refreshed on the subscriptions
schedule.
"Power BI Delivery error: dashboard: SSRS items, visual: Image1, error: Error: Report item 'Image1'
cannot be found."
You could also edit the subscription properties and change the Repor t Visual Name to the appropriate
report item name.
Delete a tile . If you delete a tile in Power BI, the associated subscription is not deleted in Reporting
Services and on the My subscriptions page, you see an error similar to the following. You can delete the
subscription.
"Power BI Delivery error: dashboard: SSRS items, visual: Image3, error: The item 'Tile deleted af7131d9-
5eaf-480f-ba45-943a07d19c9f' cannot be found."

Video
https://www.youtube.com/embed/QhPQObqmMPc

See Also
Power BI Report Server Integration (Configuration Manager)
My Settings for Power BI Integration (web portal)
Dashboards in Power BI

Need help? Microsoft Q & A, Stackoverflow, SQL Server product feedback


Report Builder in SQL Server
11/2/2020 • 4 minutes to read • Edit Online

Report Builder is a tool for authoring paginated reports, for business users who prefer to work in a stand-alone
environment instead of using Report Designer in Visual Studio / SSDT. When you design a paginated report,
you're creating a report definition that specifies what data to retrieve, where to get it, and how to display it.
When you run the report, the report processor takes the report definition you have specified, retrieves the data,
and combines it with the report layout to generate the report. You can preview your report in Report Builder.
Then publish your report to a Reporting Services report server in native mode or in SharePoint integrated mode
(2016 and earlier).
You can also publish a paginated report to the Power BI service. Read more about paginated reports in Power BI
Premium (Preview).

This paginated report features a matrix with row and column groups, sparklines, indicators, and a summary pie
chart in the corner cell, accompanied by a map with two sets of geographic data represented by color and by
circle size.

Jump-Start Report Creation


Star t with a shared dataset . Shared datasets are queries based on a shared data source and saved to a
Reporting Services report server in native mode or in SharePoint integrated mode.
Star t with the Table, Matrix, or Char t wizard . Choose a data source connection, drag and drop fields
to create a dataset query, select a layout and style, and customize your report.
Star t with the Map wizard to create reports that display aggregated data against a geographic or
geometric background. Map data can be spatial data from a Transact-SQL query or an Environmental
Systems Research Institute, Inc. (ESRI) shapefile. You can also add a Microsoft Bing map tile background.
Star t your repor t with repor t par ts . Report parts are report items that have been published
separately to a Reporting Services report server in native mode or in SharePoint integrated mode. Report
parts can be reused in other reports. Report items such as tables, matrices, charts, and images can be
published as report parts.

Design Your Report


Create paginated repor ts with table, matrix, char t, and free-form repor t layouts. Create table
reports for column-based data, matrix reports (like cross-tab or PivotTable reports) for summarized data,
chart reports for graphical data, and free-form reports for anything else. Reports can embed other
reports and charts, together with lists, graphics, and controls for dynamic Web-based applications.
Repor t from a variety of data sources. Build reports using data from any data source type that has a
Microsoft .NET Framework-managed data provider, OLE DB provider, or ODBC data source. You can create
reports that use relational and multidimensional data from SQL Server and Analysis Services, Oracle,
Hyperion, and other databases. You can use an XML data processing extension to retrieve data from any
XML data source. You can use table-valued functions to design custom data sources.
Modify existing repor ts. By using Report Builder, you can customize and update reports that were
created in SQL Server Data Tools (SSDT)Report Designer.
Modify your data by filtering, grouping, and sorting data, or by adding formulas or expressions.
Add char ts, gauges, sparklines, and indicators to summarize data in a visual format, and present
large volumes of aggregated information at a glance.
Add interactive features such as document maps, show/hide buttons, and drillthrough links to
subreports and drillthrough reports. Use parameters and filters to filter data for customized views.
Embed or reference images and other resources, including external content.

Manage Your Report


Save the definition of the repor t to your computer or to the report server, where you can manage it
and share it with others.
Choose a presentation format when you open the report, or after you open the report. You can select
Web-oriented, page-oriented, and desktop application formats. Formats include HTML, MHTML, PDF,
XML, CSV, TIFF, Word, and Excel.
Set up subscriptions. After you publish the report to the report server or a report server in SharePoint
integrated mode, you can configure your report to run at a specific time, create a report history, and set
up e-mail subscriptions.
Generate data feeds from your report by using the Reporting Services Atom rendering extension.

NOTE
Published reports are managed on a report server or a report server in SharePoint integrated mode by a report server
administrator. Report server administrators can define security, set properties, and schedule operations such as report
history and e-mail report delivery. They can create shared schedules and shared data sources and make them available
for general use. Administrators also manage all of the report server folders. The ability to perform management tasks
depends on user permissions.

See Also
Start Report Builder
Install Report Builder
What's New in SQL Server Reporting Services and Report Builder
Describes the new features in this version of Reporting Services and Report Builder.
Tutorial: Creating a Quick Chart Report Offline
Introduces Report Builder and the wizards available to help you create reports. The tutorial provides a set of
data for you to work with so you do not need to connect to a data source to get started.
Planning a Report (Report Builder)
Provides information on what you should consider before you start to build your report.
Reporting Services Concepts (SSRS)
Defines key concepts used in throughout Report Builder documentation.
Report Design View (Report Builder)
Explains the different panes and regions of report design view.
Shared Dataset Design View (Report Builder)
Explains the different panes and regions of shared dataset design view.
Keyboard Shortcuts (Report Builder)
Outlines the shortcut keys available for navigating and designing reports in Report Builder.
Start Report Builder
11/2/2020 • 2 minutes to read • Edit Online

Report Builder is a stand-alone report authoring environment. With it, you can create paginated reports and
publish them to Reporting Services installed in native or SharePoint integrated mode.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

The first time you start Report Builder from the Reporting Services web portal or Reporting Services in
SharePoint integrated mode, you're prompted to download it from the Microsoft Download Center.

You or an administrator can also install Report Builder on your computer from the Microsoft Download Center.
See "Install Report Builder with Systems Manager Server" in Install Report Builder for more details.
Report Builder isn't installed when you install SQL Server Reporting Services; you need to download and install
it separately.
When you start Report Builder from the web portal or SharePoint site, if an earlier version of Report Builder
opens, contact your administrator, who can update the version on the web portal or SharePoint site.

To start Report Builder from the Reporting Services web portal


1. In your Web browser, type the URL for your report server in the address bar. By default, the URL is
https://<servername>/reports.
2. In the top bar of the web portal, select New > Paginated Repor t .

The first time, you're prompted to install Report Builder.


After that first time, Report Builder opens, and you can create a paginated report or open a report from
the report server.

To start Report Builder in SharePoint integrated mode


1. Navigate to the SharePoint site that contains the library you want.
2. Open the library.
3. Click Documents .
4. On the New Document menu, click Repor t Builder Repor t .
The first time, this launches the SQL Server Report Builder Wizard. See Install Report Builder for more
details.
Report Builder opens, and you can create a paginated report or open a report on the report server.
Note If the New Document menu does not list Repor t Builder Repor t , Repor t Builder Model , or
Repor t Data Source , their content types need to be added to the SharePoint library. For more
information, see Add Reporting Services Content Types to a SharePoint Library.

Next steps
Report Builder in SQL Server
Set default options for Report Builder
More questions? Try asking the Reporting Services forum
Set default options for Report Builder
11/2/2020 • 2 minutes to read • Edit Online

In Report Builder, you can set a number of useful defaults to make report authoring easier and faster. For
example, if you can set or change the default report server, Report Builder saves your reports to the same report
server automatically, unless you specify otherwise.
In Report Builder, click File > Options .

UI element list
Use this repor t ser ver or SharePoint site by default
Your administrator may have configured this. The value can be a well-formed URL starting with http:// or
https://. This setting determines which data source connections appear by default in the Table/Matrix and Chart
wizards. In addition, your reports will be processed on this server and you can reference resources from this
server.
If you select a different report server, you may need to restart Report Builder in order for this change to take
affect.
Publish repor t par ts to this folder by default
Report Builder will save report parts that you publish to this folder. If the folder does not exist yet and you have
permissions to create folders on the report server, Report Builder will create this folder.
You do not need to restart Report Builder for this setting to take effect.
Show this number of recent sites and ser vers
Specify the number of recent sites and connections to show in the Open Repor t and Save As Repor t dialog
boxes.
Show this number of recent shared datasets and data source connections
Specify the number of recent shared datasets and data source connections to show in the Dataset Proper ties
dialog box and the Choose a connection to a data source page of the Data Regions Wizard.
Show this number of recent documents
Specify the number of recent documents to show when you click the Report Builder button.
Clear all recent item lists
Clear the current lists of recent sites and servers, shared datasets, shared data source connections, and
documents.

See Also
Start Report Builder
Configure Report Builder Access
3/23/2021 • 4 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server 2016 Reporting Services and later ✔
️ Power BI Report Server
Microsoft Report Builder is an ad hoc reporting tool that can be used with a SQL Server Reporting Services
report server configured for either native mode or SharePoint integration mode.
Access to Report Builder depends on the following factors:
Role assignments or permissions that make Report Builder available to individual users or groups.
Authentication settings that determine whether user credentials can be passed through to the report
server.

Prerequisites
The client computer must have Microsoft .NET Framework 4.6.1 or higher installed.

Enabling and Disabling Report Builder


Downloading Report Builder via the portal is enabled by default. Report server administrators have the option
of disabling the Report Builder download by setting the report server system property ShowDownloadMenu
to false . Setting this property will disable Report Builder, Mobile Report Publisher, Power BI Desktop, and Power
BI Mobile downloads for that report server.
To set report server system properties, you can use Management Studio or script:
To use Management Studio, connect to the report server and use the Advanced Server Properties page to
set ShowDownloadMenu to false . For more information about how to open this page, see Set Report
Server Properties (Management Studio).
To view a sample script that sets a report server property, see Script Deployment and Administrative
Tasks.

Role Assignments granting Report Builder access on a native mode


Report Server
On a native mode report server, create user role assignments that include tasks for using Report Builder. You
must be a Content Manager and System Administrator to create or modify role definitions and role assignments
on items and at the site level.
The following instructions assume that you are using predefined roles. If you modified the role definitions, check
the roles to verify they contain the necessary tasks. For more information about creating role assignments, see
Grant user access to a report server.
After you create the role assignments, users will have permission to do the following:
Users assigned to the System User and Browser roles can view published Report Builder reports on a
report server, without having to launch Report Builder.
Users assigned to the System User and Report Builder roles can generate models, start Report Builder
and create reports, and save reports to the report server.
Users assigned to the System User and Publisher roles can publish models from Model Designer to the
report server. Models are used as data sources in Report Builder.
Users assigned to the System Administrator and Content Manager roles have full permissions to create,
view, and manage Report Builder reports.
To verify required tasks are in the role definitions
1. Start Management Studio and connect to the report server.
2. Open the Security folder.
3. Open the System Roles folder.
4. Right-click System Administrator , and select Proper ties .
5. Select Execute repor t definitions and click OK .
6. Right-click System User , and select Proper ties .
7. Select Execute repor t definitions and click OK .
8. Open the Roles folder.
9. Right-click Browser , and select Proper ties .
10. Select View models and click OK .
11. Right-click Content Manager , and select Proper ties .
12. Select View models , Manage models , Consume repor ts , and click OK .
13. Right-click Publisher , and select Proper ties .
14. Select Manage models and click OK .
15. Create the Report Builder role if it does not exist:
a. Open the Security folder.
b. Right-click Roles , and select New Role .
c. In Name, type Repor t Builder .
d. In Description, enter a description for the role so that users in the web portal know what the role is
for.
e. Add the following tasks: Consume repor ts , View repor ts , View models , View resources ,
View folders , and Manage individual subscription s.
f. Click OK to save the role.
To create role assignments that grant access to Report Builder
1. Start the web portal.
2. Click the gear icon on the top right of the web portal home page and select Site Settings from the drop
down menu.
3. Click Security .
4. If a role assignment already exists for the user or group for which you want to configure Report Builder
access, click Edit .
Otherwise, click New Role Assignment . In Group or user, enter a Windows domain user or group
account in this format: <domain>\<account>. If you are using forms authentication or custom security,
specify the user or group account in the format that is correct for your deployment.
5. Select System User , and then click OK .
6. Click Home .
7. Click the Folder Settings tab.
8. Click the Security tab.
9. If a role assignment already exists for the user or group for which you want to configure Report Builder
access, click Edit .
Otherwise, click New Role Assignment . In Group or user, enter a Windows domain user or group
account in this format: <domain>\<account>. If you are using forms authentication or custom security,
specify the user or group account in the format that is correct for your deployment.
10. Select Repor t Builder , and then click Apply .
11. Repeat to create or modify role assignments for additional users or groups.

Permissions granting Report Builder access on a SharePoint


integrated mode Report Server
On a SharePoint integrated mode report server, Report Builder access is granted to SharePoint users who have
either Contribute or Full Control permission levels.
If you use custom permission levels, you must include Add Items and Edit Items in the permission level. For
more information about Report Builder access through built-in permission levels, see Use Built-in Security in
Windows SharePoint Services for Report Server Items. For more information about permission requirements
for custom permission levels, see Set Permissions for Report Server Operations in a SharePoint Web
Application.

Authentication considerations and credential reuse


Report Builder opens its own connection to a report server. If you are not using Windows integrated security
with single sign on, users must re-type their credentials for the Report Builder connection to the report
server.

See also
Authentication with the Report Server
Browser Support for Reporting Services and Power View
Start Report Builder
The web portal of a report server (SSRS Native Mode)
Connect to a Report Server in Management Studio
Report Server System Properties
Report Design View (Report Builder)
3/25/2020 • 9 minutes to read • Edit Online

The Report Builder window is designed to help you easily organize your report resources and quickly build the
paginated reports you need. The design surface is at the center of the window, with the ribbon and the panes
around it. The design surface is where you add and organize your report items. This article explains the panes
you use to add, select, and organize your report resources, and change report item properties.

1. Ribbon
2. Parameters pane
3. The Report Part Gallery
4. Properties pane
5. Report design surface
6. The Report Data pane
7. The Grouping Pane
8. Current report status bar

Parameters pane
With report parameters, you can control report data, connect related reports together, and vary report
presentation. The Parameters pane provides a flexible layout for the report parameters.
Read more about Report Parameters (Report Builder and Report Designer).
The Report Design Surface
The Report Builder report design surface is the main work area for designing your reports. To place report items
such as data regions, subreports, text boxes, images, rectangles, and lines in your report, you add them from the
ribbon or the Report Part Gallery to the design surface. There, you can add groups, expressions, parameters,
filters, actions, visibility, and formatting to your report items.
You can also change the following:
The report body properties, such as border and fill color, by right-clicking the white area of the design
surface, outside any report items, and clicking Body Proper ties .
The header and footer properties, such as border and fill color, by right-clicking the white area of the
design surface in the header or footer area, outside any report items, and clicking Header Proper ties or
Footer Proper ties .
The properties of the report itself, such as page setup, by right-clicking the gray area around the design
surface and clicking Repor t Proper ties .
The properties of report items by right-clicking them and clicking Proper ties .
For information about using the keyboard to manipulate items on the design surface, see Keyboard Shortcuts
(Report Builder)
Design Surface Size and Print Area
The design surface size might be different from the page size print area you specify to print the report.
Changing the size of the design surface will not change the print area of your report. No matter what size you
set for the print area of your report, the full design area size does not change. For more information, see
Rendering Behaviors (Report Builder and SSRS).

TIP
To display the ruler, on the View tab, select the Ruler check box.

The Report Data Pane


From the Report Data pane, you define the report data and report resources that you need for a report before
you design your report layout. For example, you can add data sources, datasets, calculated fields, report
parameters, and images to the Report Data pane.
After you add items to the Report Data pane, drag fields to report items on the design surface to control where
data appears in the report.

TIP
If you drag a field from the Report Data pane directly to the report design surface instead of placing it in a data region
such as a table or chart, when you run the report, you will see only the first value from the data in that field.

You can also drag built-in fields from the Report Data pane to the report design surface. When rendered, these
fields provide information about the report, such as the report name, the total number of pages in the report,
and the current page number.
Some things are automatically added to the Report Data pane when you add something to the report design
surface. For example, if you add a report part from the Report Part Gallery, and the report part is a data region,
the dataset is automatically added to the Report Data pane. For more information, see Report Parts and Datasets
in Report Builder. Also, if you embed an image in your report, it will be added to the Images folder in the Report
Data pane.

NOTE
You can use the New button to add a new item to the Report Data pane. You can add multiple datasets from the same
data source or from other data sources to the report. You can add shared datasets from the report server. To add a new
dataset from the same data source, right-click a data source, and then click Add Dataset .

For more about items in the Report Data pane, see the following topics:
Built-in Globals and Users References (Report Builder and SSRS)
Report Parameters (Report Builder and Report Designer)
Images (Report Builder and SSRS)
Create data connection strings - Report Builder & SSRS
Report Embedded Datasets and Shared Datasets (Report Builder and SSRS)
Dataset Fields Collection (Report Builder and SSRS)

The Report Part Gallery


The easiest way to create a report is to find an existing report part, like a table or chart, on the report server or a
report server integrated into a SharePoint site.
Click Repor t Par ts on the Insert tab to open the Report Part Gallery. There you can search for report parts to
add to your report. You can filter the report parts by all or part of the name of the report part, who created it,
who last modified it, when it was last modified, where it's stored, or what type of report part it is. For example,
you could search for all charts created last week by one of your coworkers.

NOTE
To view the Report Part Gallery, you need to be connected to a server.

You can view the search results either as thumbnails or as a list, and sort the search results by name, created and
modified dates, and creator. For more information, see Report Parts (Report Builder and SSRS)..

The Properties Pane (Report Builder)


Every item in a report, including data regions, images, text boxes, and the report body itself, has properties
associated with it. For example, the BorderColor property for a text box shows the color value of the text box's
border, and the PageSize property for the report shows the page size of the report.
These properties are displayed in the Properties pane. The properties in the pane change depending on the
report item that you select.
To see the Properties pane, on the View tab, in the Show/Hide group, click Properties.
Changing Property Values
In Report Builder, you can change the properties for report items several ways:
By clicking buttons and lists on the ribbon.
By changing settings within dialog boxes.
By changing property values within the Properties pane.
The most commonly used properties are available in the dialog boxes and on the ribbon.
Depending on the property, you can set a property value from a drop-down list, type the value, or click
<Expression> to create an expression.

Changing the Properties Pane View


By default, properties displayed in the Properties pane are organized into broad categories, such as Action,
Border, Fill, Font, and General. Each category has a set of properties associated with it. For example, the
following properties are listed in the Font category: Color, FontFamily, FontSize, FontStyle, FontWeight,
LineHeight, and TextDecoration. If you prefer, you can alphabetize all the properties listed in the pane. This
removes the categories and lists all the properties in alphabetical order, regardless of category.
The Properties pane has three buttons at the top of pane: Category, Alphabetize, and Property Pages. Click the
Category and Alphabetize buttons to switch between the Properties pane views. Click the Proper ty Pages
button to open the properties dialog box for a selected report item.

The Grouping Pane (Report Builder)


Groups are used to organize your report data into a visual hierarchy and to calculate totals. You can view the
row and column groups within a data region on the design surface and also in the Grouping pane. The Grouping
pane has two panes: Row Groups and Column Groups. When you select a data region, the Grouping pane
displays all the groups within that data region as a hierarchical list: Child groups appear indented under their
parent groups.

You can create groups by dragging fields from the Report Data pane and dropping them on the design surface
or in the Grouping pane. In the Grouping pane, you can add parent, adjacent, and child groups, change group
properties, and delete groups.
The Grouping pane is displayed by default but you can close it by clearing the Grouping pane check box on the
View tab. The Grouping pane is not available for the Chart or Gauge data regions.
For more information, see Grouping Pane (Report Builder) and Understanding Groups (Report Builder and
SSRS).

Previewing Your Report in Run Mode


In report design view, you are not working with the actual data but a representation of the data indicated by the
field name or expression. When you want to see the actual data displayed in the context of the report that you
designed, you can run the report to preview the data from the underlying database displayed in the report
layout. Switching between designing and running your report allows you to adjust its design and see the results
immediately. To preview your report, click Run in the Views group on the ribbon.
When you click Run , Report Builder connects to the report data sources, caches the data on your computer,
combines the data and the layout and then renders the report in the HTML Viewer. You can run your report as
often as you like while you continue to design it. When you are satisfied with your report, you can save the
report to the report server where other individuals with the appropriate permissions can view your report.
Read more about Previewing a Report in Report Builder.
Running a Report with Parameters
When you run your report, it is processed automatically. If the report contains parameters, all the parameters
must have default values before the report can run automatically. If a parameter does not have a default value,
when you run the report you need to choose a value for the parameter, and then click View Repor t on the Run
tab. For more information, see Report Parameters (Report Builder and Report Designer).
Print Preview
When you preview a report in run mode, it resembles a report produced in HTML. The preview is not HTML, but
the layout and pagination of the report is similar to HTML output. You can change the view to represent a
printed report by switching to print preview mode. Click the Print Preview button on the Run tab. The report
will display as though it were on a physical page. This view resembles the output produced by the Image and
PDF rendering extensions. Print Preview is not an image or PDF file, but the layout and pagination of the report
are similar to the output of those formats.

See Also
Finding, Viewing, and Managing Reports (Report Builder and SSRS )
Report Builder in SQL Server
Previewing Reports in Report Builder
3/26/2020 • 5 minutes to read • Edit Online

While you create a Reporting Services paginated report, it is helpful to preview the report often to verify that
the report displays what you want. To preview your report, click Run . The report renders in preview mode.
Report Builder improves the preview experience by using edit sessions when connected to a report server. The
edit session creates a data cache and makes the datasets in the cache available for repeated report previews. An
edit session is not a feature that you interact with directly, but understanding when the cached dataset is
refreshed will help you improve performance when you preview a report and understand why the report
renders faster or slower.
Other benefits of edit sessions are the abilities to edit reports that use embedded data sources or reference
items such as images or subreports that are stored on the report server.

NOTE
There are some differences between previewing in Report Builder and viewing in a browser. For example, a calendar
control, which is added to a report when you specify a Date/Time type parameter, is different in Report Builder and in a
browser.

Improving Preview Performance


How you create and update reports affects how fast the report renders in preview. The first time that you
preview a report that relies on a server reference, an edit session is created for you and the data used when the
report is run is added to a data cache that is stored on the report server. When you make changes to the report
that does not affect the data, the cached copy of the data is used by the report. This means that you will not see
data change each time you preview the report. If you want new data, click the Refresh button on the ribbon.
The following actions cause the cache to be refreshed and slow down report rendering the next time you
preview the report:
Add, change, or delete a dataset. The cached dataset contains all the datasets that a report uses and
modification to any dataset invalidates the cached dataset. This includes changing the name, query, or
fields in the dataset.

NOTE
If the dataset has a large number of fields that you do not expect to use, you should consider updating the
dataset to omit those fields. Although this creates a new edit session and the first preview of the report is slower,
there smaller cached dataset is overall beneficial to the performance of the report server.

Add, change, or delete a data source. This includes changing the name or properties of the data source,
the data extension of the data source, or the properties of the connection to the data source.
Change the shared data source that the report uses to a different data source.
Change the language of the report.
Change the assemblies or custom code that the report uses.
Add, change, or delete the query parameters in the report or parameter values.
Changes to the report layout and data formatting do not affect the cached dataset. You can do the following
actions without refreshing the cached dataset:
Add or remove data regions such as tables, matrices or charts.
Add or delete columns from the report. All the fields in the dataset are available to use in the report.
Adding or removing fields in the report has no effect on the dataset.
Change the order of fields in tables and matrices.
Add, change, or delete row and column groups.
Add, change, or delete formatting of data values in fields.
Add, change, or delete images, lines, or text boxes.
Change page breaks.
The edit session is created the first time that you preview a report. By default, an edit session lasts 7200 seconds
(2 hours). The session is reset to two hours every time you run the report. When the edit session expires, the
data cache is deleted. If the edit session expires, one is automatically created again the next time that you
preview the report. The expiration time for edit sessions is configurable. If you find that two hours is too long or
too short, contact the administrator of the report server.
By default, the data cache can hold up to five datasets. If you use many different combinations of parameter
values, the report might need more data. This requires the cache be refreshed and the report renders more
slowly the next time that you preview it. The number of entries in the cache is configurable by the administrator
of the report server.

Concurrency of Report Updates


Frequently, you preview a report as a step in updating and then saving a report to a report server. When you are
updating a report, it is possible that someone else is updating and then saving the report at the same time. The
report that is saved last is the version of report that is available for future viewing and updating. This means that
the version of the report that you previewed might not be the version you reopen. You have the option to save
the report with a new name by using the Save As option on the Report Builder menu.

External Report Items


Your report might include items such as shared data sources, external images, and subreports that are stored
separately from the report. Because the items are stored separately is possible that they can be moved to a
different location on the report server or deleted. If this happens, your report could fail to preview. You can
either update the report to indicate the updated location of the item or if the item was deleted, replace it with an
existing item, or remove the reference to the item it from the report.
If a subreport used by your report is changed after your edit session was created, the report will not render in
preview. To successfully preview the report, you should save the report or click Refresh to get fresh data.

See Also
Report Datasets (SSRS)
Formatting Report Items (Report Builder and SSRS)
Tables, Matrices, and Lists (Report Builder and SSRS)
Charts (Report Builder and SSRS)
Tables, Matrices, and Lists (Report Builder and SSRS)
Saving Reports (Report Builder)
Shared Dataset Design View (Report Builder)
3/25/2020 • 4 minutes to read • Edit Online

In a report, a dataset represents report data that is returned from running a query on an external data source.
Shared datasets are published on a report server and can be used by multiple reports. You can create datasets
to share with others. In the Shared Dataset Design window, you select a shared data source, specify properties
for the shared dataset, and create a query in the query designer.

For more information about working with data in a report, see Report Datasets (SSRS).

The Ribbon
The Ribbon helps you quickly find the commands that you need to complete a task. Commands are organized
into the following logical groups: Connection, Dataset, and Query Designer.
Connection
Use the Select button in the Connection group to select a shared data source in your report, or browse to a
shared data source on the report server.

NOTE
A shared dataset must be based on a shared data source. If the data source you need isn't available, you need to create
one on the report server. For more information, see Create, Modify, and Delete Shared Data Sources (SSRS) .

For more information, see Create data connection strings - Report Builder & SSRS.
Dataset
Use the Set Options button to set shared dataset properties. These include the following:
Fields. You can add a field or edit a field in the field collection.
Data options. You can set options that affect match criteria and sort order, such as case sensitivity and
collation.
Filters. You can define filters that limit the data in a report after it is retrieved from the data connection.
Parameters. You can add a parameter or edit parameter options. For example, you can specify a default
value for each parameter so that you can create a cache refresh plan for this shared dataset on the report
server.
The values that you set become part of the shared dataset definition on the report server. When a report author
includes this shared dataset in a report, the options that you specify apply to that dataset instance.
After a shared dataset is added to a report, a report author can override the following options: collation, case
sensitivity, accent sensitivity, kanatype sensitivity, width sensitivity, subtotals. They can also create additional
dataset filters to limit the data in the report.
For more information, see Report Embedded Datasets and Shared Datasets (Report Builder and SSRS).
For more information about cache refresh plans, see Cache Shared Datasets (SSRS).
Query Designer
Use the query designer toolbar to help build a query that specifies which data to retrieve from the data
connection. The toolbar that you see depends on the query designer that is associated with the data source type
from the data connection.
For more information, see the topic that corresponds to the data source type in Add Data from External Data
Sources (SSRS).

The Query Designer Surface


A query designer helps you to build a query in the syntax that is required by the external data source.
Some data source types provide a graphical query designer that you can use to explore the metadata on an
external data source. You can interactively drag names from the metadata pane to the query design surface, or
interactively select the names to use.
Some data source types support a text-based query designer that you can use to paste in queries that you have
created in other tools, such as SQL Server Management Studio.
Each data source type has specific requirements for the query that will work against the external data source.
For more information, see the topic that corresponds to the data source type in Add Data from External Data
Sources (SSRS) and Data Sources Supported by Reporting Services (SSRS).

Viewing Query Results


In shared dataset design view, you are building a query that will retrieve data from the data connection when
the report is processed.
Run the query to see example data from the data connection to verify that the query returns the type of data
that you expect. The columns in the result set come from the metadata for data schemas from the data
connection. The column names become the dataset field collection. The values of the data that you see in the
query result set is design time data. After you save the shared dataset as a shared dataset definition on the
report server, only the query text is saved. The data in the query result set is not saved.
When a report author adds this shared dataset to a report, a pointer to the dataset definition on the report
server is added. In the report, the dataset field collection appears in the Report Data pane. The query text is not
available.
The credentials that you use to run a query are separate from the credentials that are used to preview a report
or to run a report from the report server. For more information, see Specify Credential and Connection
Information for Report Data Sources.
Running a Report with Parameters
When your query includes query variables, dataset parameters are created automatically for you. In turn, when
you finish building the dataset query, report parameters that are set to dataset parameters are created
automatically.
If a report contains parameters, all the parameters must have default values before the report can run
automatically. If a parameter does not have a default value, when you run the report you must choose a value
for the parameter, and then click View Repor t on the Run tab.
For more information, see Report Parameters (Report Builder and Report Designer).

Saving the Shared Dataset


To save the query that you built, on the Repor t Builder button, click Save or Save As . Navigate to the
appropriate folder on the report server and save the shared dataset definition. The shared dataset is not
available to others until you save it to the report server.

See Also
Report Datasets (SSRS)
Filter, Group, and Sort Data (Report Builder and SSRS)
Report Parameters (Report Builder and Report Designer)
Keyboard shortcuts for accessibility in Report
Builder
5/10/2021 • 3 minutes to read • Edit Online

APPLIES TO: ✔
️ Microsoft Report Builder (SSRS) ✔
️ Power BI Report Builder
When you create and edit paginated reports in Microsoft Report Builder for Reporting Services and in Power BI
Report Builder, you can use keyboard shortcuts for accessibility and navigation. You can select from several
standard keyboard mapping schemes.
You can navigate through the Report Builder window, or select and change options in dialog boxes, without
using the mouse.
Report Builder provides many right-click menus for quick access to frequently used dialog boxes and
commands. Right-click menus are dynamic and may contain different options, depending on the user
configuration and the current objects. As you explore Report Builder, make sure you right-click objects to explore
the menu options and learn about these shortcuts.

NOTE
Keyboard shortcuts can contain the SHIFT, ALT, and/or CTRL keys in combination with letters, or use function keys. For
example, F1 opens the Report Builder Help file.

Keyboard shortcuts in Report Builder


DESC RIP T IO N K EY C O M B IN AT IO N

Open the Report Builder menu. ALT+F

Create a report. CTRL+N

Open a report. CTRL+O

Save a report. CTRL+S, ALT+S

Move between areas of Report Builder, such as the Ribbon, F6, SHIFT+F6
design surface, Grouping pane, Properties pane, and the
Data pane.

Move to the Ribbon. ALT

Move to the Home tab on the Ribbon. ALT+H

Move to the Insert tab on the Ribbon. ALT+I

Move to the View tab on the Ribbon. ALT+V

Activate the division lines between areas such as the line TAB
between the Grouping pane and the design surface.
DESC RIP T IO N K EY C O M B IN AT IO N

Move the division lines between areas. Any arrow key. Use the UP and DOWN arrows to move the
line between the Grouping pane and design surface. Use the
RIGHT and LEFT arrows to move the line between the Report
Data pane and the design surface.

Move within an area of Report Builder, such as moving TAB, SHIFT+TAB


within a Ribbon tab.

Move between Ribbon tabs. RIGHT ARROW, LEFT ARROW

Navigate the drop-down menus. Any arrow key

Select items on the design surface. TAB, SHIFT+TAB

Move a selected item on the design surface. Any arrow key

Move a selected item on the design surface, in small CTRL with an arrow key
increments.

Resize a selected item on the design surface. SHIFT with an arrow key

Resize a selected item on the design surface, in small CTRL + SHIFT with an arrow key
increments.

Align the edges of multiple selected items. ALT+H+A

Run the report. F5, ALT+H+R

Switch to design mode. F8

Copy CTRL+C, ALT+H+C

Cut CTRL+X, ALT+H+X

Paste CTRL+V, ALT+H+V

Select all. CTRL+A

Undo CTRL+Z, ALT+Z

Redo CTRL+Y, ALT+Y

Zoom in. CTRL+Plus sign (+)

Zoom out. CTRL+Minus sign (-)

Select and unselect a checkbox on the View tab. Spacebar

Display the font family list, the font size list, or the border ALT+DOWN ARROW
point size list, on the Home tab.
DESC RIP T IO N K EY C O M B IN AT IO N

Display the font color list. DOWN ARROW

Display Help. F1

Merge table cells. ALT+H+M

Split a table cell. ALT+H+U

Insert a table. ALT+I+A

Insert a matrix. ALT+I+M

Insert a list. ALT+I+L

Insert a chart. ALT+I+C

Insert a gauge. ALT+I+G

Insert a map ALT+I+P

Insert a data bar. ALT+I+D

Insert a sparkline. ALT+I+K

Insert an indicator. ALT+I+U

Insert a text box. ALT+I+T

Insert an image. ALT+I+I

Insert a line. ALT+I+N

Insert a rectangle. ALT+I+E

Insert a subreport. ALT+I+S

Insert report header. ALT+I+H

Insert report footer. ALT+I+F

Pan map view area when a map viewport is selected. CTRL with an arrow key

Zoom in on map view area when a map viewport is selected. CTRL +Plus sign (+)

Zoom out on map view area when a map viewport is CTRL +Minus sign (-)
selected.

Accelerator mode for pan and zoom in map view area when CTRL +Left click
a map viewport is selected.
See also
Report Builder in SQL Server
Power BI Report Builder
Report Design View (Report Builder)
Saving Reports (Report Builder)
3/25/2020 • 3 minutes to read • Edit Online

In Report Builder you can save a paginated report to a Reporting Services report server, SharePoint library, file
share where you have write permission, or your computer.
When you save a report, what you are really saving is the report definition, which describes the report layout.
You are not saving the data. Every time you run the report, the report data is refreshed and is likely to be
different than the previous time you ran the report.
If you want to save the report to a different format or save the report definition with the data, use one of the
following Reporting Services features:
Export a rendered report to a different file format such as comma separated files (CSV) or Excel
workbooks and save the report in that format. You can also generate data feeds from reports and save
the report data.
Create report subscriptions to deliver and save reports to a file share.
Use report history to save versions of rendered reports as historical copies.
To learn more about viewing and managing reports directly on the report server, see Finding, Viewing, and
Managing Reports (Report Builder and SSRS ) and Reporting Services Report Server (Native Mode).

Saving Reports to a Report Server


Saving a report to a report server is also known as publishing a report. Although you can save reports to your
computer, saving reports to a report server offers many advantages:
Reports become available to others who have permission to access the folder in which you saved the
report.
Reports can be managed and viewed on the Reporting Services web portal.
Report resources such as data sources, images, and subreports are stored in one place for easier access.
Reports can be delivered to others by subscriptions.
Reports are securely stored in the report server database.
Report runs can be logged and provide performance and auditing information.

Exporting and Saving Reports


If you have a small number of reports to archive, consider exporting a report and saving it as a file. After you
export a report to an application (such as PDF or Excel), you can save it as a file and place it in a protected
shared directory on the network. Alternatively, you can upload a saved PDF or Excel file as a resource item if you
want to keep all copies of a report, regardless of the format, in the report server database. For more information
about exporting a report, see Export Reports (Report Builder and SSRS) and Upload a File or Report.

Using File-Share Delivery


If you have a large number of reports to archive, create a subscription that delivers the report directly to the file
system. For this approach, you must create a subscription for each report, choose a shared folder to store the
reports, and define a schedule that determines when the file is created. Once you define a subscription, the
report server can run the report unattended and add report files to the archive using the schedule that you
provide. You can also create single-use schedules if you want to archive reports on an occasional basis. For more
information about subscriptions and file share delivery, see File Share Delivery in Reporting Services.

Using Report History


You can also use the report history feature to create historical copies. You can then back up the report server
database and store the backup in a safe location for future use. All report history (along with reports, shared
data source items, folders, subscriptions, and shared schedules) is stored in the report server database. You can
create a backup to maintain a permanent copy of report history and metadata such as subscription information
that indicates the recipients of a report. For more information, see Create, Modify, and Delete Snapshots in
Report History.

How-To Topics
Save Reports to a Report Server (Report Builder)
Save a Report to a SharePoint Library (Report Builder)

See Also
Reports, Report Parts, and Report Definitions (Report Builder and SSRS)
Install Report Builder
Finding, Viewing, and Managing Reports (Report Builder and SSRS )
Export Reports (Report Builder and SSRS)
Print Reports (Report Builder and SSRS)
Save Reports to a Report Server (Report Builder)
11/2/2020 • 2 minutes to read • Edit Online

In Report Builder, you can save a report definition to a report server (also known as publishing a report). When
the report is saved to a report server, other users can view the report. Each time you run the published report,
you will retrieve the most current data. To save a static copy of a rendered report, export the report to a different
file format and save it or use the report history feature to save versions of rendered reports.

NOTE
The location of the saved report definition does not affect whether the report is processed on the server or processed
locally when you preview the report.

To save a report to a report server


1. From the Report Builder button, click Save . The Save As <Report Item> dialog box opens.

NOTE
If you are resaving a report, it is automatically resaved to its previous location. Use the Save As option to change
location.

2. Optionally, click Recent Sites and Ser vers to show a list of recently used report servers and SharePoint
sites.
3. Browse to the report server location where you want to save the report.
4. In Name , type the name of the report.
5. In Items of type , select the type of report item you are saving. The type for reports is Reports(*.rdl).
To save a report as a different name
1. From the Report Builder button, click Save As . The Save As <Report Item> dialog box opens.
2. Browse to the report server location or to the file share where you want to save the report.
3. In Name , type the name of the report.
4. In Items of type , select the type of report item you are saving. The type for reports is Reports(*.rdl).

See Also
Finding, Viewing, and Managing Reports (Report Builder and SSRS )
Export Reports (Report Builder and SSRS)
Saving Reports (Report Builder)
Export a Report as Another File Type (Report Builder and SSRS)
Save a Report to a SharePoint Library (Report
Builder)
3/25/2020 • 2 minutes to read • Edit Online

To save a report to a report server configured for SharePoint integration, you must browse to the SharePoint
server and establish a connection to the report server. In the report definition, all references to items related to
the report must use values that are specific to a SharePoint report server. Related items include subreports,
drillthrough reports, and resources such as Web-based images. For more information, see Specifying Paths to
External Items (Report Builder and SSRS).
You must have Member or Owner permission on the SharePoint site to set the properties on the project.
To save a report to a SharePoint site
1. From the Report Builder button, click Save . The Save As <Report Item> dialog box opens.

NOTE
If you are resaving a report, it is automatically resaved to its previous location. Use the Save As option to change
location.

2. Optionally, click Recent Sites and Ser vers to show a list of recently used report servers and SharePoint
sites.
3. Browse to the SharePoint site, and then click Save .

NOTE
If you leave a changed report for more than 10 hours without saving it, it is disconnected from the server without
being saved. If that happens, in the lower-right status bar, click Disconnect , and then click Connect . The most
recent server will be in the list of available servers. Select it and the report will reconnect.

See Also
Finding, Viewing, and Managing Reports (Report Builder and SSRS )
Finding, Viewing, and Managing Reports (Report
Builder and SSRS )
12/17/2019 • 10 minutes to read • Edit Online

In Report Builder, you can browse folders on a report server or SharePoint site to find paginated reports, shared
data sources, models, and other related report items and browse your computer to find local reports. To make it
easier to find reports, Report Builder maintains a list of recently used servers and sites and provides direct
access to the Desktop, My Documents and My Computer folders in the file system of your computer.
In Report Designer, you can also browse your computer to find local paginated reports. After you deploy reports
to a report server or SharePoint site, you can browse the report server by using the web portal, or search the
SharePoint site to find reports. Reports and related items remain available locally after they are deployed.

NOTE
You can use Report Builder in local mode or connected to a report server. Certain limitations apply when you do not have
an active connection to a report server.

To locate a report on a report server or SharePoint site from Report Builder, you must provide the URL to the
report server or SharePoint site. When you first install Report Builder you can specify the URL to use. This is the
server or site that Report Builder connects to by default when you save or open reports.
Reports can be previewed in Report Builder and Report Designer when you create or update reports and viewed
and managed on a report server by using the web portal or on a SharePoint site that is integrated with
Reporting Services by using the built-in SharePoint tools and features after you publish the reports. For more
information, see Previewing Reports in Report Builder and Previewing Reports.
When you preview reports in Report Builder and Report Designer, or view reports in the web portal or a
SharePoint site, the data is refreshed and the reports display the current data from the data source that the
report uses. If you want to view a report without refreshing its data, you can use report history and cached data
with published reports. You cannot use these features when previewing reports in Report Builder and Report
Designer.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Finding and Viewing Reports in Report Builder


To find a report that you want to work with or to select a shared data source, image, or subreport to use in a
report, browse your computer, folders on a report server, or SharePoint site integrated with Reporting Services.
To find reports on a report server, you must specify a URL for the report server and have the appropriate
permissions on the folders that enable you to read and save report items. Ask the system administrator for the
report server for the appropriate URL and permissions.
After you find and open the report in Report Builder, you can preview it and make changes. When you preview
it, you see the current data. For more information, see Previewing Reports in Report Builder.
Report Builder can help you with the following tasks:
Finding repor ts When you browse for a report, you can use the familiar Microsoft Office-style Open
File dialog box that is customized for Report Builder. You can browse the folders on a report server or on
a file system, including My Reports, Sites and Servers, Desktop, My Documents, My Computer. Sites and
Servers provides a recently used server list.
Finding shared data sources When you browse for a shared data source, you can pick from a recently
used list, or browse to another folder on the same report server as the report.
Viewing repor ts You preview a report in Report Builder when creating or updating reports. When
Report Builder is connected to a report server the report server loads and processes the report;
otherwise, the reports are processed locally. The report viewer in Report Builder displays the rendered
report.

Viewing and Managing Reports on a Report Server


You use the web portal to view and manage reports on the report server. Browse the folders on the server to
locate reports, run reports, to view them in a browser, and perform management tasks.
The web portal can help you with the following management tasks:
View and update the properties of reports, shared data sources, and other report items.
Upload reports and create new shared data sources for reports.
Create schedules to run reports at specified times and intervals.
Create, change, or delete subscriptions to reports.
Create report history and specify the number of report snapshots to keep in the report history.
Create new folders on the server to organize your reports the way you want.
Some of these tasks might be done for you by the administrator of the report server. To learn more about tasks
performed on a report server, see Reporting Services Report Server (Native Mode).
The web portal typically contains folders, reports, data sources, as well as the My Reports folder. My Reports is a
personal workspace that you can use to store and work with reports that you own. Other report server folders
are public and typically require users to have advanced permissions to add to or modify folder contents. You can
create subfolders within My Reports to further organize your reports.
The web portal displays reports in the Reporting Services HTML Viewer. The HTML Viewer provides a
framework for viewing reports in HTML and includes a report toolbar, a parameter section, a credentials section,
and a document map. The report toolbar provides page navigation, zoom, refresh, search, export, print, and data
feed functionality. The report toolbar also appears in a browser window at the top of a report when you access
reports through a URL. Print functionality is optional and must be turned on by your administrator. When it is
available, a Printer icon appears on the report toolbar. The following illustrations shows a closeup of the report
toolbar in the web portal.

After you run a report, you can export it to another format, such as Microsoft Excel or PDF. You can also export
the report using a data rendering extension such as the Comma-Separated Value (CSV) rendering extension and
then use the CSV data file as input to another application. For more information about exporting reports, see
Export Reports (Report Builder and SSRS).
The easiest way to select and run a report is to open the web portal and then search for or browse to the report
that you want to view.
After you run a report, you can refresh it to see new data.
Refreshing Reports
Report data frequently changes and you might want to refresh the report to view the newest data. You can
refresh a report in three different ways.

O P T IO N RESULT

Refresh button on the browser window Displays the report stored in the session cache. A session
cache is created when a user opens a report. Reporting
Services uses browser sessions to maintain a consistent
viewing experience while a report is open.

When you click the Refresh button on the report toolbar,


the report server re-runs the query and updates report data
if the report runs on-demand. If the report is cached or is a
snapshot, Refresh displays the report that is stored in the
report server database.

CTRL+F5 keyboard combination Produces the same result as clicking the Refresh button on
the report toolbar.

Viewing and Managing Report Server Items from a SharePoint Site


When the system administrator configures a report server to run in SharePoint integrated mode, you can view
and manage reports and other report server items from a SharePoint site.
The SharePoint site includes pages to set data source properties, report history, report processing options,
schedules, subscriptions, report parameters, and create shared schedules. You can manage report server items
on a SharePoint site the same way you create and manage them from other tools in SQL Server.
To access the application pages, select item-specific actions from a drop-down menu on a report or other report
server item that you previously added to a SharePoint library. Depending on the item and your permissions, you
might also be able to create reports in Report Builder, generate models, and set model item security.
For more information about Reporting Services and SharePoint technology, see Configuration and
Administration of a Report Server (Reporting Services SharePoint Mode).
Finding Report Server Items on a SharePoint Site
Before you can set properties, you must first be able to locate the item. Report server items are always stored in
libraries or in a folder within a library.
When you access the SharePoint site, you see the Browse page and the Library Tools tab. The Browse page lists
the libraries and the content of the selected library. You can view the report, and other items in the library,
explore folders, and search the site to locate items.
To distinguish report server items from other items on a SharePoint site, you can use the icon to visually identify
an item, or pause the mouse cursor over the type and read the file extension. The following image shows
folders, and a report definition in the Repor ts library:
Viewing Reports
Report definitions (.rdl files) that you upload to a SharePoint library are viewed through a Report Viewer Web
Part that is installed by the Reporting Services Add-in. An .rdl file association is defined automatically when you
install the add-in. When you select a report, it opens automatically in the Web Part. After the report is open, you
can use the report toolbar that is included in the Web Part to navigate pages, search, zoom, and print the report.
The toolbar includes the Export Data Feed option to export the report as an Atom data feed and an Actions
menu with options to print, subscribe, and export the report to different formats such as PDF, Word, and Excel.
From the Actions menu you can also open the report in Report Builder. The following image shows a report
and the options of the Export options in the Action menu.

Managing Items Through Actions


Management tasks are supported through actions on a drop-down menu for each item. Depending on your
permissions, each item has common actions that are standard for items that are stored in a SharePoint library.
View Proper ties and Edit Proper ties are examples of common actions. Custom actions provide item-specific
management functionality. The following image shows the actions for a report definition. Examples of custom
actions for a report definition include Manage Subscriptions and Manage Processing Options :
Viewing Reports in a Desktop Application
You can bypass browser viewing entirely and use a desktop application (such as Microsoft Excel) as your report
viewer instead. To do this, define a subscription that specifies a desktop application format and a shared folder
destination. The report server generates your report as an application file, appends a file name extension, and
saves the report as a file on your hard disk. You can then use Microsoft Excel (or another application) instead of
a browser to view your report.

About User Sessions


Reporting Services uses browser sessions to maintain consistency while viewing reports. Sessions are based on
browser connections, not authenticated users. A new session is created every time that a user opens a report in
a new browser window. Once a browser session is established, you continue to work with the version of the
report that was opened when the session began, even if the report is modified on the report server. For
example, if you open a report at 11:00 P.M., and a report author republishes the same report at 11:01 P.M., your
session will contain the version that you opened for the duration of the session.
If you refresh a report within the same session using the browser's Refresh button, the original session version
of the report is displayed. If you refresh an on-demand report using the Refresh button on the report toolbar,
the report is re-run and new data, if any, is displayed.
Session information is stored in the report server temporary database. The report server does not use ASP.NET
session management. If you restart the server or perform a database recovery operation, session state is not
restored. For more information about session management, see Identifying Execution State.

In This Section
The following articles provide additional information about viewing and managing reports.
Find, view, and manage reports
Finding and Viewing Reports with a Browser (Report Builder and SSRS)
Describes how to use a URL to find and view a report.
Previewing Reports in Report Builder
Describes how to preview reports while you create or update them.
See also
Saving Reports (Report Builder)
Report Builder in SQL Server
Finding and Viewing Reports in the web portal
(Report Builder and SSRS)
11/2/2020 • 3 minutes to read • Edit Online

Report Manager is a Web-based tool that includes features for viewing and managing reports. It is part of a
report server installation. To open Report Manager, type the Report Manager URL in a browser window. For
information on browser requirements, see Browser Support for Reporting Services and Power View. For more
information about how a Report Manager URL might be configured on your report server, contact your system
administrator. For more information, see Configure Report Manager (Native Mode).
The permissions that the system administrator set on the report server determine what you can see when you
use Report Manager. Permissions are granted via a role assignment. To find and view reports, your role
assignment must include the View Reports task. To find a report on a report server, search for it by name or
description, or browse report server folders. You can only search or browse for reports that have been
published or uploaded to the report server.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Navigating the Folder Hierarchy in Report Manager


To browse for the reports that you want to run, you can use the Home page, which appears automatically when
you start Report Manager and when you open any folder in the folder hierarchy. The Home page shows only the
items that you have permission to view. The folder path is displayed as a row of links at the top of the Home
page. Folder names are listed in sequence, starting with the root folder (Home). As you open each additional
folder, the folder name is added to the folder path at the top of the page. (1) in the image below. When you open
a report, the name of the report is also added to the folder path.

Report Manager Ribbon


Use the following techniques to navigate through a folder hierarchy:
To view the contents of a folder, click the folder name on the Home page. A folder page opens, displaying
the contents of the folder.
To navigate down through the folder hierarchy, open a subfolder of the current folder. Folders contain
reports, resources, shared data source items, and other folders. Clicking a folder icon opens the folder,
showing the contents of the hierarchy one level down.
To navigate up through the folder hierarchy, in the row of links at the top of the page, click the name of
the folder whose contents you want to see. (1) in the above image.

Opening a Report
After you find a report, click the report name to open it. The report is rendered in HTML and appears in the
Contents page in Report Manager. Reports are always cached by the browser session, so if you open a report,
you can usually return to it by clicking the Back button. This is true even if you were required to supply a user
name and password to run the report. You cannot fully close a rendered report until you close the browser.
Not all reports that are visible in the folder hierarchy are immediately accessible. Some reports may prompt you
for your user name and password to determine whether you can access the data source for the report.
You can also browse to and open a report from the report server directly from Report Builder.

To Search for Items


To search for items in Report Manager, type a search string in the Search text box at the top of the page.
(2) in the above image. Searches begin at the top node in the folder hierarchy and then proceed through
every branch. If you do not have permission to access a specific branch, that branch is skipped. This
applies to My Reports folders that belong to other users, and to other folders that are not generally
available. Only reports and items that you have permission to view are included in the search results.
To search for an item by name or description, specify all or part of the text that you want to match. The
search string is not case-sensitive. You cannot use search operators such as plus (+) or minus (-) symbols
to require or exclude search criteria.
To search for specific text within a report, use the toolbar at the top of the report.

See Also
Finding, Viewing, and Managing Reports (Report Builder and SSRS )
Finding and Viewing Reports with a Browser
(Report Builder and SSRS)
3/26/2020 • 3 minutes to read • Edit Online

You can use any supported Web browser to view a report through a direct connection to a report server. Every
report has a URL address on a report server. You can enter the Web address of a report to open it in a browser
window independently of a Web application. The report opens in HTML format and includes the report toolbar
so that you can navigate pages or search on data values within the report. You can set parameters on the URL to
hide the toolbar or select the output format of the report.
Opening a report through its Web address is suitable for viewing a report, but not managing a report. You
cannot access an item's property pages or subscription definition pages. You must use Report Manager or a
SharePoint site for those tasks.
If you do not know the Web address of a report, you can open the Web address of the report server and then
browse the report server folder hierarchy to select the report you want to view. The following diagram
illustrates a folder hierarchy as it appears in a browser window.

Folders in a browser

NOTE
If you are accessing a report from a handheld device, you must use a browser to open a report. Report Manager is not
scaled for handheld devices.

For more information about types of browsers that you can use, see Browser Support for Reporting Services
and Power View.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Navigating Report Server Folders in a Web Browser


You can use a Web browser to navigate report server folders and run reports. Reports and items are displayed
as links in the folder hierarchy. You can click links to open a report, resource, or folder, or view the contents of a
shared data source. Navigating the folder hierarchy is useful if you do not know the URL of a report. You can
specify the report server Web address to open a browser connection at the root node of the folder hierarchy,
and then click folder links to navigate through the hierarchy.
When you access a report server virtual directory, you see only the folders, reports, and uploaded items to
which you have access. The user interface shows only the folder hierarchy and basic information, such as
creation or modification date, file size, and item type for individual items:
A link with no other indicator is a report or a model.
The tag <ds> indicates a shared data source.
The tag <dir> indicates a folder item.
A file name extension indicates a resource. The file name extension identifies the MIME type of the
resource. For example, .jpg indicates an image in JPEG format.

Typing the URL Address of a Report


Reporting Services supports URL access to specific items on a report server. The URL must include a fully
qualified path to the report and commands to render the report. If the report includes parameters, you must
also specify any values that are required to open the report. If you are typing a URL for a report that includes
spaces in the path, parameter values, or a rendering extension, you must incorporate URL encoded characters
into the URL to get the results you expect. The following example illustrates a report URL that includes encoding
for spaces in the path name, parameters, and a rendering extension:
https://<Webservername>/reportserver?/<reportfolder>/employee+sales+summary&ReportYear=2004&ReportMonth=06&EmpID=24&rs:Command=Render&rs:Format=H

The maximum limit for a URL in Internet Explorer is 2,083 characters. For more information, see Maximum URL
length in Internet Explorer.
For more information about how to access a report through a URL, including information on how a URL is
constructed, see URL Access.
Convert CRI Dialog Box (Report Builder)
3/26/2020 • 2 minutes to read • Edit Online

This report contains custom report items (CRIs) with unsupported features. CRIs are extensions to the Report
Definition Language (RDL) that support custom objects that display data in a report. CRIs include design-time
and run-time components that are supplied by third-party software vendors.

NOTE
Choosing to support custom report items on a report server is a decision made by the system administrator. To view CRIs
in a report, the CRI components must be installed on the report authoring client to preview a report and on the report
server to view a published or uploaded report.

Some CRIs can be converted to report items in the new report definition format. When you open the report, you
are prompted whether to upgrade. Use the following information to decide whether to convert the CRIs in this
report:
Yes Choose Yes to convert all the CRIs in the report, where possible. Unsupported features in the CRIs
cannot be upgraded and are removed from the report definition file. For the list of unsupported features,
see Upgrade Reports. When you view the report, you might see differences in the way the CRI displays in
the report.
No Choose No when you do not want to convert the CRIs in the report. These CRIs cannot be displayed
by the report processor in their current version. If your system administrator is planning to install a new
version of the CRI from the third-party software vendor that is compatible with the new report definition
format, you should choose No . Until new versions are available, the CRIs display in the report as an
empty text box with a red X.
In either case, the report is upgraded to the new report definition format and a backup copy of the original
report is saved as <Report Name> - Backup.rdl. If you save the report in your report authoring tool, you are
saving the upgraded report in the new report definition format. If you publish the report, the report is first
saved on your computer, and then published to the report server. You are publishing the upgraded version of
the report to the report server.
If you do not save the report, the original report remains unchanged. However, you cannot edit this report in a
SQL Server 2008 later version of SQL Server Data Tools or a report authoring environment that uses this report
definition format. You can continue to run the original version of the report by uploading it to a SQL Server
2008 or later Reporting Services report server by using Report Manager. For more information, see Upload a
File or Report (Report Manager).
For reports that you upload instead of publish to a report server, the report processor determines whether the
report can be upgraded on first use. Reports that cannot be upgraded are processed in backward-compatibility
mode, and continue to display as they did in the earlier version of Reporting Services. For more information, see
Upgrade Reports.
To identify the current report definition format for a report, for a report server, or for your report authoring
environment, see Find the Report Definition Schema Version (SSRS).
Hide an Item (Report Builder and SSRS)
3/26/2020 • 2 minutes to read • Edit Online

Set the visibility of a report item when you want to conditionally hide an item based on a report parameter or
some other expression that you specify.
You can also design a report to allow the user to toggle the visibility of report items based on clicking text boxes
in the report, for example, for a drilldown report. For more information, see Add an Expand or Collapse Action to
an Item (Report Builder and SSRS).
The following procedures describe how to show or hide a report item in a rendered report based on a constant
or an expression.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To hide a report item


1. In report design view, right-click the report item and open its Proper ties page.

NOTE
To select an entire table or matrix data region, click in the data region to select it, right-click a row, column, or
corner handle, and then click Tablix Proper ties .

2. Click Visibility.
3. In When the repor t is initially run , specify whether to hide the item when you first view the report:
To display the item, click Show .
To hide the item, click Hide .
To specify an expression that is evaluated at run-time, click Show or hide based on an
expression . Type the expression or click the expression (fx ) button to create the expression in the
Expression dialog box.
NOTE
When you specify an expression for visibility, you are setting the Hidden property of the report item, as
shown in the following image. The evaluated expression shows the report item when the value is False,
and hides the report item when the value is True.

4. Click OK twice.
To hide static rows in a table, matrix, or list
1. In report design view, click the table, matrix, or list to display the row and column handles.
2. Right-click the row handle, and then click Row Visibility . The Row Visibility dialog box opens.
3. To set the visibility, follow steps 3 and 4 in the first procedure.
To hide static columns in a table, matrix, or list
1. In Design view, select the table, matrix, or list to display the row and column handles.
2. Right-click the column handle, and then click Column Visibility .
3. In the Column Visibility dialog box, follow steps 3 and 4 in the first procedure.

See Also
Drilldown Action (Report Builder and SSRS)
Add an Expand or Collapse Action to an Item (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Reports, Report Parts, and Report Definitions
(Report Builder and SSRS)
11/2/2020 • 4 minutes to read • Edit Online

Reporting Services uses a variety of terms to describe a paginated report in different states, including the initial
definition, the published report, and the viewed report as it appears to the user.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Report Definition (.rdl) Files


A report definition is a file that you create in Report Builder or Report Designer. It provides a complete
description of data source connections, queries used to retrieve data, expressions, parameters, images, text
boxes, tables, and any other design-time elements that you might include in a report. Although report
definitions can be complex, at a minimum they specify a query and other report content, report properties, and
a report layout.
Report definitions are rendered at run time as a processed report. At that time, the data is retrieved from the
data source and formatted according to the instructions in the report definition. A report definition can be run
directly from your computer and saved locally, or it can be published to a report server for others to run as well.
Report definitions are written in XML that conforms to an XML grammar called Report Definition Language
(RDL). RDL describes the XML elements, encompassing all possible variations that a report can assume.

Client Report Definition (.rdlc) Files


The Visual Studio Report Designer produces client report definition (.rdlc) files for use with the ReportViewer
control. The .rdlc files can be converted to .rdl files for use with Reporting Services Report Designer.

Report Part (.rsc) Files


Report parts are self-contained report items that are stored on the report server and can be included in other
reports. Use Report Builder to browse and select parts from the Report Part Gallery to add to your reports. Use
Report Designer or Report Builder to save report parts for use in the Report Part Gallery.
A report part definition is an XML fragment of a report definition file. You create report parts by creating a
report definition, and then selecting report items in the report to publish separately as report parts. Report
parts include data regions, rectangles and their contained items, and images. You can save a report part with its
dependent datasets and shared data source references so it can be reused in other reports.
For more information, see Report Parts (Report Builder and SSRS) and Report Parts in Report Designer (SSRS).

Published Reports
After you create an .rdl file, you can save it locally, or save it to a personal folder (such as the My Reports folder)
on the report server. When the report is ready for others to see, you publish it by saving it from Report Builder
to a public folder on the report server, uploading it through the Reporting Services web portal, or deploying a
report project solution from Report Designer. A published report is an item that is stored in a report server
database and managed on a report server or SharePoint site.
A published report is secured through role assignments using the Reporting Services role-based security model.
Published reports are accessed through URLs, SharePoint Web parts, or the Reporting Services web portal, or
you can navigate to and open them in Report Builder.
Report Snapshots
A report can also be published as a snapshot that contains both layout information and data as of the time the
report was initially run. Report snapshots are not saved in a particular rendering format. Instead, report
snapshots are rendered in a final viewing format (such as HTML) only when a user or an application requests it.
For more information, see Finding and Viewing Reports in the web portal.

Rendered Reports
A rendered report is a fully processed report that contains both data and layout information in a format suitable
for viewing (such as HTML). Until a report is rendered into an output format, it cannot be viewed. You can render
a report by doing one of the following:
Create or open a report in Report Builder or Report Designer and run it.
Find and run a report in the Reporting Services web portal.
Find and run a report on a SharePoint site that is integrated with a Reporting Services report server.
Subscribe to a report, which is delivered to an e-mail inbox or a file share in an output format that you
specify.
Subscribe to a report, which is delivered to an e-mail inbox or a file share in an output format that you specify.
The default rendering format for a report is HTML 4.0. In addition to HTML, reports can be rendered in a variety
of output formats, including Excel, Word, XML, PDF, TIFF, and CSV. As with published reports, rendered reports
cannot be edited or saved back to a report server. For more information, see Export Reports (Report Builder and
SSRS).

See Also
Reporting Services Concepts (SSRS) Report Builder in SQL Server
Finding, Viewing, and Managing Reports (Report Builder and SSRS )
Export Reports (Report Builder and SSRS)
Data Regions and Maps (Report Builder and SSRS)
11/2/2020 • 4 minutes to read • Edit Online

A data region is an object in a report that displays data from a report dataset. Report data can be displayed as
numbers and text in a table, matrix, or list; graphically in a chart or gauge; and against a geographic background
in a map. Tables, matrices, and lists are all based on the tablix data region, which expands as needed to display
all the data from the dataset. A tablix data region supports multiple row and column groups and both static and
dynamic rows and columns. A chart displays multiple series and category groups in a variety of chart formats. A
gauge displays a single value or an aggregated value for a dataset. A map displays spatial data as map elements
that can vary in appearance based on aggregated data from a dataset.
You can save a data region or map as a report part. Read more about Report Parts.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Table
A table is a data region that presents data row by row. Table columns are static: you determine the number of
columns when you design your report. Table rows are dynamic: they expand downwards to accommodate the
data. You can add groups to tables, which organize data by selected fields or expressions. For information about
adding a table to a report, see Tables (Report Builder and SSRS).

Matrix
A matrix is also known as a crosstab. A matrix data region contains both dynamic columns and rows: they
expand to accommodate the data. A matrix can have dynamic columns and rows and static columns and rows.
Columns or rows can contain other columns or rows, and can be used to group data. Read more about adding a
matrix to a report.

List
A list is a data region that presents data arranged in a freeform fashion. You can arrange report items to create a
form with text boxes, images, and other data regions placed anywhere within the list. Read more about adding a
list to a report.

Chart
A chart presents data graphically. Examples of charts include bar, pie, and line charts, but many more styles are
supported. Read more about adding a chart to a report.

Gauge
A gauge presents data as a range with an indicator pointing to a specific value within the range. Gauges are
used to display key performance indicators (KPIs) and other metrics. Examples of gauges include linear and
circular. Read more about adding a gauge to a report.
Map
A map enables you to present data against a geographical background. Map data can be spatial data from a SQL
Server query, an ESRI shapefile, or Microsoft Bing map tiles. Spatial data consists of sets of coordinates that
define polygons that represent shapes or areas, lines that represent routes or paths, and points represented by
markers. You can associate aggregate data with map elements to automatically vary their color and size. For
example, you can vary the marker type for a store based on sales amount or the color for a road based on speed
limit. For more information, see Maps (Report Builder and SSRS).

Data Regions in the Report Layout


You can add multiple data regions to a report. Data regions grow to accommodate the data from the report
dataset that they are linked to. For example, a matrix that displays sales for each product by year has a row
group based on product names and a column group based on years. When you run the report, the matrix
expands down the page for each product and across the page for each year. A chart that is placed next to the
matrix on the report design surface displays next to the expanded matrix in the rendered report. The way data
regions render on a page follows a set of rules based on the output format of a report. For example, to help
control how a chart and matrix render on a page, you might use a rectangle as a container or nest both data
regions in a list. For more information, see Page Layout and Rendering (Report Builder and SSRS).

Nested Data Regions


You can nest data regions within other data regions. For example, if you want to create a sales record for each
sales person in a database, you can create a list with text boxes and an image to display information about the
employee, and then add table and chart data regions to the list to show the employee's sales record. For more
information, see Nested Data Regions (Report Builder and SSRS).

Multiple Data Regions Linked to the Same Dataset


You can link more than one data region to the same dataset to provide different views of the same data. For
example, you can show the same data in a table and in a chart. You can author the report to provide interactive
sort buttons on the table, so that when you sort the table, the chart is also automatically sorted. For more
information, see Linking Multiple Data Regions to the Same Dataset (Report Builder and SSRS).

Data for a Data Region


Each tablix, chart, and gauge is designed to display data from a single dataset. A map displays spatial data and
analytical data from the same or different datasets. You can also include values from datasets that are not linked
to the data region in the following ways:
Aggregate values that do not depend on sort order or grouping that are scoped to a different dataset.
Lookup values from name/value pairs in a different dataset.
For more information, see Expressions (Report Builder and SSRS).

See Also
Reporting Services Concepts (SSRS) Reports, Report Parts, and Report Definitions (Report Builder and SSRS)
Page Layout and Rendering (Report Builder and SSRS)
Report Builder Tutorials
Reporting Services Tutorials (SSRS)
Tables, Matrices, and Lists (Report Builder and
SSRS)
3/5/2021 • 9 minutes to read • Edit Online

In Reporting Services, tables, matrices, and lists are data regions that display paginated report data in cells that
are organized into rows and columns. The cells typically contain text data such as text, dates, and numbers but
they can also contain gauges, charts, or report items such as images. Collectively, tables, matrices, and lists are
frequently referred to as tablix data regions.
The table, matrix, and list templates are built on the tablix data region, which is a flexible grid that can display
data in cells. In the table and matrix templates, cells are organized into rows and columns. Because templates are
variations of the underlying generic tablix data region, you can display data in combination of template formats
and change the table, matrix, or list on to include the features of another data region as you develop your report.
For example, if you add a table and find it does not serve your needs, you can add column groups to make the
table a matrix.
The table and matrix data regions can display complex data relationships by including nested tables, matrices,
lists, charts and gauges. Tables and matrices have a tabular layout and their data comes from a single dataset,
built on a single data source. The key difference between tables and matrices is that tables can include only row
groups, where as matrices have row groups and column groups.
Lists are a little different. They support a free-layout that and can include multiple peer tables or matrices, each
using data from a different dataset. Lists can also be used for forms, such as invoices.
The following pictures show simple reports with a table, matrix, or list.

To quickly get started with tables, matrices, and lists, see Tutorial: Creating a Basic Table Report (Report Builder),
Tutorial: Creating a Matrix Report (Report Builder), and Tutorial: Creating a Free Form Report (Report Builder).

NOTE
You can publish tables, matrices, and lists separately from a report as report parts. Read more about Report Parts.

Table
Use a table to display detail data, organize the data in row groups, or both. The Table template contains three
columns with a table header row and a details row for data. The following figure shows the initial table template,
selected on the design surface:
You can group data by a single field, by multiple fields, or by writing your own expression. You can create nested
groups or independent, adjacent groups and display aggregated values for grouped data, or add totals to
groups. For example, if your table has a row group called [Category], you can add a subtotal for each group as
well as a grand total for the report. To improve the appearance of the table and highlight data you want to
emphasize, you can merge cells and apply formatting to data and table headings.
You can initially hide detail or grouped data, and include drilldown toggles to enable a user to interactively
choose how much data to show.
For more information, see Tables (Report Builder and SSRS).

Matrix
Use a matrix to display aggregated data summaries, grouped in rows and columns, similar to a PivotTable or
crosstab. The number of rows and columns for groups is determined by the number of unique values for each
row and column groups. The following figure shows the initial matrix template, selected on the design surface:

You can group data by multiple fields or expressions in row and column groups. At run time, when the report
data and data regions are combined, a matrix grows horizontally and vertically on the page as columns for
column groups and rows for row groups are added. The matrix cells display aggregate values that are scoped to
the intersection of the row and column groups to which the cell belongs. For example, if your matrix has a row
group (Category) and two column groups (Territory and Year) that display the sum of sales, the report displays
two cells with sums of sales for each value in the Category group. The scope of the cells are the two
intersections are: Category and Territory and Category and Year. The matrix can include nested and adjacent
groups. Nested groups have a parent-child relationship and adjacent groups a peer relationship. You can add
subtotals for any and all levels of nested row and column groups within the matrix.
To make the matrix data more readable and highlight the data you want to emphasize, you can merge cells or
split horizontally and vertically and apply formatting to data and group headings.
You can also include drilldown toggles that initially hide detail data; the user can then click the toggles to display
more or less detail as needed.
For more information, see Create a Matrix.

List
Use a list to create a free-form layout. You are not limited to a grid layout, but can place fields freely inside the
list. You can use a list to design a form for displaying many dataset fields or as a container to display multiple
data regions side by side for grouped data. For example, you can define a group for a list; add a table, chart, and
image; and display values in table and graphic form for each group value, as you might for an employee or
patient record.
For more information, see Create Invoices and Forms with Lists.

Preparing Data
A table, matrix, and list data regions display data from a dataset. You can prepare the data in the query that
retrieves the data for the dataset or by setting properties in the table, matrix, or list.
The query languages such as Transact-SQL, that you use to retrieve the data for the report datasets can prepare
the data by applying filters to include only a subset of the data, replacing null values or blanks with constants
that make the report more readable, and sorting and grouping data.
If you choose to prepare the data in the table, matrix, or list data region of a report, you set properties on the
data region or cells within the data region. If you want to filter or sort the data, set the properties on the data
region. For example, to sort the data you specify the columns to sort on and the sort direction. If you want to
provide an alternative value for a field, you set the values of the cell text that displays the field. For example, to
display Blank when a field is empty or null, you use an expression to set the value.
For more information, see Preparing Data for Display in a Tablix Data Region (Report Builder and SSRS).

Building and Configuring a Table, Matrix, or List


When you add tables or matrices to your report, you can use the Table and Matrix Wizard or build them
manually from the templates that Report Builder and Report Designer provide. Lists are built manually from the
list template.
The wizard guides you through the steps to quickly build and configure a table or matrix. After you complete the
wizard or if you build the tablix data regions from scratch, you can further configure and refine them. The dialog
boxes, available from the right-click menus on the data regions, make it easy to set the most commonly used
properties for page breaks, repeatability and visibility of headers and footers, display options, filters, and
sorting. But the tablix data region provides a wealth of additional properties, which you can set only in the
Properties pane of Report Builder. For example, if you want to display a message when the dataset for a table,
matrix, or list is empty, you specify the message text in the NoRowsMessage tablix property in the Properties
pane.

Changing Between Tablix Templates


You are not limited by your initial tablix template choice. As you add groups, totals, and labels, you might want
to modify your tablix design. For example, you might start with a table and then delete the details row and add
column groups. For more information, see Exploring the Flexibility of a Tablix Data Region (Report Builder and
SSRS).
You can continue to develop a table, matrix, or list by adding any tablix feature. Tablix features include displaying
detail data or aggregates for grouped data on rows and columns. You can create nested groups, independent
adjacent groups, or recursive groups. You can filter and sort grouped data, and easily combine groups by
including multiple group expressions in a group definition
You can also add totals for a group or grand totals for the data region. You can hide rows or columns to simplify
a report and enable the user to toggle the display of the hidden data, as in a drilldown report. For more
information, see Controlling the Tablix Data Region Display on a Report Page (Report Builder and SSRS).
How-To Topics
This section lists procedures that show you, step by step, how to work with work with tables, matrices and lists
in your reports; how to display data in rows and columns, add and delete columns, merge cells, and include
subtotals for row and column groups.
Add a Details Group (Report Builder and SSRS)
Add a Total to a Group or Tablix Data Region (Report Builder and SSRS)
Change an Item Within a Cell (Report Builder and SSRS)
Change Row Height or Column Width (Report Builder and SSRS)
Insert or Delete a Column (Report Builder and SSRS)
Insert or Delete a Row (Report Builder and SSRS)
Merge Cells in a Data Region (Report Builder and SSRS)
Create a Recursive Hierarchy Group (Report Builder and SSRS)
Add or Delete a Group in a Data Region (Report Builder and SSRS)
Display Headers and Footers with a Group (Report Builder and SSRS)
Create a Stepped Report (Report Builder and SSRS)
Add, Move, or Delete a Table, Matrix, or List (Report Builder and SSRS)

In This Section
The following topics provide additional information about working with the tablix data region.
Tablix Data Region (Report Builder and SSRS)
Explains key concepts related to the tablix data region such as areas of the tablix, detail and grouped data,
column and row groups, and static and dynamic rows and columns.
Adding Data to a Tablix Data Region (Report Builder and SSRS)
Provides detailed information about adding detail and grouped data, subtotals and totals, and labels to a tablix
data region.
Controlling the Tablix Data Region Display on a Report Page (Report Builder and SSRS)
Describes properties for a tablix data region that you can modify to change the way a tablix data region appears
when you view it in a report.
Controlling Row and Column Headings (Report Builder and SSRS)
Describes how to control row and column headings when a table, matrix, or list data region cans span multiple
pages horizontally or vertically.
Creating Recursive Hierarchy Groups (Report Builder and SSRS)
Describes how to display recursive data where the relationship between parent and child is represented by fields
in the dataset.
Understanding Groups (Report Builder and SSRS)
Explains what groups are and when you use them and describes the groups available for the different tablix data
regions.

See Also
Add Dataset Filters, Data Region Filters, and Group Filters (Report Builder and SSRS)
Nested Data Regions (Report Builder and SSRS)
Linking Multiple Data Regions to the Same Dataset (Report Builder and SSRS)
Expressions (Report Builder and SSRS)
Filter, Group, and Sort Data (Report Builder and SSRS)
Report Parameters (Report Builder and Report Designer)
Charts (Report Builder and SSRS)
Gauges (Report Builder and SSRS)
Tables (Report Builder and SSRS)
11/2/2020 • 7 minutes to read • Edit Online

In Reporting Services, you can use a table to display detail data or grouped data, or a combination of both in a
paginated report.
You can group data by a single field, by multiple fields, or by writing your own expression. You can create nested
groups or independent, adjacent groups. To display aggregated values for grouped data, add totals to groups.
Format the rows and columns to highlight the data you want to emphasize. You can initially hide detail or
grouped data, and include drilldown toggles to enable a user to interactively choose how much data to show.
To quickly get started with tables, see Tutorial: Creating a Basic Table Report (Report Builder) or Create a Basic
Table Report (SSRS Tutorial).

NOTE
You can publish tables separately from a report as report parts. Read more about Report Parts.

Adding a Table to Display Detail Data


Add a table to the design surface from the Insert tab on the ribbon. You can add a table by using the Table or
Matrix Wizard, which includes creating a data source connection and dataset and configuring the table, or a
table based on the table template, which you configure manually.

NOTE
The wizard is available only in Report Builder.

To describe how to configure a table from beginning to end, this topic uses the table template.
By default, a new table has a fixed number of columns with a header row for labels and a data row for detail
data. The following figure shows a new table added to the design surface.

When you select the table, row and column handles appear on the outside of the table and brackets appear
inside cells. Row handles display graphics that help you understand the purpose of each row. Brackets indicate
group membership for a selected cell. The following figure shows a selected empty cell in a default table.

The row handle for the Data row shows the details symbol ( ). To display data on these rows, drag fields from
the Report Data pane to the table cells in either the header or the details row. Both rows are filled in
simultaneously. To add additional columns, drag the field to the table until you see an insertion point. After you
add dataset fields to the table, you can change the default format for dates and currency to control the way they
display in the report. The following diagram shows a table data region with these fields: Date, Order, Product,
Qty, and Line Total.
Check your design by viewing the report in Preview. The table expands down the page as needed. The label row
and the details row each display once for every row in the dataset query result set. Each product sold in the
order is listed on a separate row, along with the quantity and the line total for the item, as shown in the
following figure:

The table that you start with is a template based on the tablix data region. You can enhance the design of your
table by adding features that are supported by the underlying tablix data region. For more information, see
Controlling the Tablix Data Region Display on a Report Page (Report Builder and SSRS). You can also continue to
develop your table by adding row groups, column groups, and by adding or removing detail groups. For more
information, see Exploring the Flexibility of a Tablix Data Region (Report Builder and SSRS).
Adding Totals for Detail Data
To add totals, select cells with numeric data, and then use the shortcut menu to automatically add labels and
totals for detail data for numeric fields. You can also specify other labels and totals manually. The following
figure shows a typical totals row that includes both automatic and manually specified totals:

In Preview, the report displays the header row and the details row once for every row in the dataset query result
set, and it displays the totals row. The follow figure shows the last few rows of the table including the total row.

For more information, see Add a Total to a Group or Tablix Data Region (Report Builder and SSRS).

Adding Row Groups to a Table


Just as you can drag a field from the Report Data pane to a cell to display detail data, you can drag a field to the
Grouping pane to add a group. For a table, drag the field to the Row Groups pane. After you add a group, the
table automatically adds cells in new columns in the row group area in which to display the group values. For
more information about areas, see Tablix Data Region Areas (Report Builder and SSRS).
The following figure shows a table with two nested row groups in Design view. The row groups were created by
dragging the Order field and then the Date field to the Row Groups pane and inserting each group as a parent
of the existing groups. The figure shows a parent group based on date and a child group based on order
number, as well as the details group that was defined by default.
In Preview, the report displays the order data grouped first by date, and then by order, as shown in the follow
figure.

An alternative way of displaying grouped data is to indent the group hierarchy to display the nested relationship
of groups instead of presenting each value in its own column. This style of formatting is called a stepped report.
For more information about how to format group information as a stepped report, see Create a Stepped Report
(Report Builder and SSRS).
Adding Totals to Row Groups
To show totals for a group, you can use the context-sensitive Add Total command. For a row group, the Add
Total command adds a row outside the group so that it repeats only once in relation to the group. For nested
groups, the total row for the child group is outside the child group but inside the parent group. In such a case, it
is useful to set the background color of the total row for the child group to distinguish it from the detail rows.
You can also use a different background color to distinguish the table header and footer rows. The following
figure shows the table with a total row added for the group based on order numbers.

When you view the report, the row displaying the order subtotals repeats once for every order number. The
table footer displays totals for all dates. In the following figure, the last few rows show the last three detail rows,
the subtotal for the last order number SO71952, and the totals for all dates in the table.

For more information, see Add a Total to a Group or Tablix Data Region (Report Builder and SSRS).

Removing or Hiding Detail Rows


After you preview a table in a report, you may decide to remove existing detail rows. Or you might decide to
hide them by default and allow the user to toggle between viewing more or less detail, as in a drilldown report.
To remove detail rows from a table, use the Grouping pane. Select the detail group, and use the shortcut menu
to delete the group and the rows that display the detail data. The following figure shows the design view for a
table grouped by date and order number, but with no detail rows. No total rows have been added to this table.

After you delete the details row, values are scoped to the row groups. The detail data no longer displays.

NOTE
Verify that after you remove a details row, the expression in each cell specifies an aggregate expression where appropriate.
If necessary, edit the expression to specify aggregate functions as needed.

The following figure shows this report in Preview.

To add or remove rows from the table, see Insert or Delete a Row (Report Builder and SSRS).
You can also hide the detail rows when the report is initially viewed. To do so, you can create a drilldown report,
in which only the parent group data is displayed. For each inner group (including the details group), add a
visibility toggle to the grouping cell of the containing group. For example, for the details group, add a toggle to
the text box that displays the order number group value. For the order number group, add a toggle to the text
box that displays the date group value. The following figure shows the row for September 01, 2001, expanded to
display the first few orders.

For more information, see Add an Expand or Collapse Action to an Item (Report Builder and SSRS).

See Also
Filter, Group, and Sort Data (Report Builder and SSRS)
Expressions (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Tables, Matrices, and Lists (Report Builder and SSRS)
Create a Matrix (Report Builder and SSRS)
11/2/2020 • 5 minutes to read • Edit Online

Use a matrix to display grouped data and summary information. You can group data by multiple fields or
expressions in row and column groups. Matrices provide functionality similar to crosstabs and pivot tables. At
run time, as the report data and data regions are combined, a matrix grows horizontally and vertically on the
page. Values in matrix cells display aggregate values scoped to the intersection of the row and column groups to
which the cell belongs. You can format the rows and columns to highlight the data you want to emphasize. You
can also include drilldown toggles that initially hide detail data; the user can then click the toggles to display
more or less detail as needed.
After your initial design, you can continue to develop a matrix to improve the viewing experience for the user.
For more information, see Controlling the Tablix Data Region Display on a Report Page (Report Builder and
SSRS).
To quickly get started with matrices, see Tutorial: Creating a Matrix Report (Report Builder).

NOTE
You can publish lists separately from a report as report parts. Read more about Report Parts (Report Builder and SSRS).

Adding a Matrix to Your Report


Add a matrix to the design surface from the Insert tab on the ribbon. You have the option to add a matrix by
using the Table or Matrix Wizard, which includes creating a data source connection and dataset, and configuring
the matrix or adding a matrix based on the matrix template.

NOTE
The wizard is available only in SQL Server Report Builder for SQL Server 2012.

To describe how to configure a table from beginning to end, this topic uses the matrix template. The matrix
initially has a row group, a column group, a corner cell, and a data cell, as shown in the following figure.

When you select a matrix on the design surface, row and column handles appear, as shown in the following
figure.

Add groups by dragging dataset fields to the Row Groups and Column Groups areas of the Grouping pane. The
first field that you drag to the row groups or column groups pane replaces the initial empty default group. You
can then apply formatting for each cell, depending on the data.
In Preview, the matrix expands to show the row group and column group values. The cells display summary
values, as shown in the following figure.

The matrix you start with is a template based on the tablix data region. You can continue to develop your matrix
design by adding nested or adjacent row groups or column groups, or even adding detail rows. For more
information, see Exploring the Flexibility of a Tablix Data Region (Report Builder and SSRS).

Adding a Parent Group or Child Group to a Matrix


To add a group based on a single dataset field, drag the field from the Report Data pane to the appropriate Row
Groups or Column Groups area of the Grouping pane. Drop the field in the group hierarchy to set its
relationship to existing groups. Drop it above an existing group to create a parent group, or drop it below an
existing group to create a child group.
Several things happen when you drop a field in the Grouping pane:
A new group with a unique name based on the field name is automatically created. The group expression
is set to the simple field name reference, for example [Category] .
A new row or column appears in the corresponding row group or column group area.
In the new column, a row group cell appears for the default data rows from the report dataset. Cells in
the tablix body for this row are now members of the row group. If there are any column groups defined,
cells that are in the columns are members of those column groups. Group indicators provide visual cues
for the group membership of each cell.
To customize the group after it is created, use the Tablix Group dialog box. You can change the group name,
and edit or add additional expressions to the group definition. To add or remove rows from the table, see Insert
or Delete a Row (Report Builder and SSRS).
When the report runs, dynamic column headers expand right (or left, if the Direction property of the matrix is
set to RTL) for as many columns as there are unique group values. Dynamic rows expand down the page. The
data that appears in the tablix body cells are aggregates based on the intersections of row and column groups,
as shown in the following figure.

In preview, the report displays as in the following figure.


To write expressions that specify a scope other than the default scope, you must specify the name of a dataset,
data region, or group in the aggregate function all. To calculate the percentage each subcategory contributes to
the Clothing category group values, add a column inside the Category group next to the Total column, format
the text box to show percentage, and add an expression that uses the default scope in the numerator, and the
Category group scope in the denominator, as shown in the following example.
=SUM(Fields!Linetotal.Value)/SUM(Fields! Linetotal.Value,"Category")

For more information, see Expression Scope for Totals, Aggregates, and Built-in Collections (Report Builder and
SSRS).

Adding an Adjacent Group to a Matrix


To add an adjacent group based on a single dataset field, use the shortcut menu in the Grouping pane. For more
information, see Add or Delete a Group in a Data Region (Report Builder and SSRS). The following figure shows
a group based on geography and an adjacent group based on year.

In this example, the query has filtered data values to only include those values for Europe and for the years 2003
and 2004. However, you can set filters on each group independently. In preview, the report displays as in the
following figure.

To add a total column for an adjacent column group, click in the column group definition cell and use the Add
Total command. A new static column is added next to the column group, with a default aggregate sum for every
numeric field in the existing rows. To change the expression, manually edit the default aggregate, for example,
Avg([Sales]) . For more information, see Add a Total to a Group or Tablix Data Region (Report Builder and
SSRS).

See Also
Aggregate Functions Reference (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Create Invoices and Forms with Lists (Report Builder
and SSRS)
11/2/2020 • 3 minutes to read • Edit Online

A list data region repeats with each group or row in the Reporting Services paginated report dataset. A list can
be used to create free-form reports or forms, such as invoices, or in conjunction with other data regions. You can
define lists that contain any number of report items. A list can be nested wit
To quickly get started with lists, see Tutorial: Creating a Free Form Report (Report Builder).

NOTE
You can publish lists separately from a report as report parts. Read more about Report Parts (Report Builder and SSRS).

Adding a List to Your Report


Add a list to the design surface from the Insert tab on ribbon. By default, the list initially has a single cell in a row
associated with the detail group.

When you select a list on the design surface, row and column handles appear, as shown in the following figure.

The list you start with is a template based on the tablix data region. After you add a list, you can continue to
enhance the design by changing the content or appearance of the list by specifying filter, sort, or group
expressions, or changing the way the list displays across report pages. For more information, see Controlling the
Tablix Data Region Display on a Report Page (Report Builder and SSRS). Although the list starts with a single
column and row, you can further continue to develop your list design by adding nested or adjacent row groups
or column groups, or adding additional detail rows. For more information, see Exploring the Flexibility of a Tablix
Data Region (Report Builder and SSRS).

Displaying Data in a Free-form Layout


To organize report data in a free-form layout instead of a grid, you can add a list to the design surface. Drag
fields from the Report Data pane to the cell. By default, the cell contains a rectangle that acts as a container.
Move each field in the container until you have the design you want. Use the snaplines that appear when you
drag text boxes in the rectangle container to help you align edges vertically and horizontally. Remove unwanted
white space by adjusting the size of the cell. For more information, see Change Row Height or Column Width
(Report Builder and SSRS).
The following figure shows a list that displays information about an order, including these fields: Date, Order,
Qty, Product, LineTotal, and an image.

In Preview, the list repeats to display the field data in the free-form format, as shown in the following figure:

NOTE
The dotted lines displays in these figures are included to show the free-form layout for each field value. Typically, you
would not use dotted lines in a production report.

Displaying Data with One Level of Grouping


Because a list automatically provides a container, you can use a list to display grouped data with multiple views.
To change the default list to specify a group, edit the Details group, specify a new name, and specify a group
expression.
For example, you can embed a table and a chart that show different views of the same dataset. You can add a
group to the list so that the nested report items will repeat once for every group value. The following figure
shows a list grouped by product category. Notice that there is no detail row. Two tables are nested side by side
in the list. The first table displays the subcategories with total sales. The second table displays the category
grouped by geographical area, with a chart that shows the distribution of subcategories.

In Preview, the table displays total sales for all subcategories of bicycles, and the table beside it displays the
breakdown of sales per geographical area. By using an expression to specify the background color for the table
and a custom palette for the chart, the first table also provides the legend for the chart colors.
See Also
Aggregate Functions Reference (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Tablix Data Region (Report Builder and SSRS)
11/2/2020 • 6 minutes to read • Edit Online

In Reporting Services, the tablix data region is a generalized layout report item that displays paginated report
data in cells that are organized into rows and columns. Report data can be detail data as it is retrieved from the
data source, or aggregated detail data organized into groups that you specify. Each tablix cell can contain any
report item, such as a text box or an image, or another data region, such as a tablix region, chart, or gauge. To
add multiple report items to a cell, first add a rectangle to act as a container. Then, add the report items to the
rectangle.
The table, matrix, and list data regions are represented on the ribbon by templates for the underlying tablix data
region. When you add one of these templates to a report, you are actually adding a tablix data region that is
optimized for a specific data layout. By default, a table template displays detail data in a grid layout, a matrix
displays group data in a grid layout, and a list displays detail data in a free-form layout.
By default, each tablix cell in a table or matrix contains a text box. The cell in a list contains a rectangle. You can
replace a default report item with a different report item, such as an image.
When you define groups for a table, matrix, or list, Report Builder and Report Designer add rows and columns to
the tablix data region on which to display grouped data.
To understand the tablix data region, it helps to understand the following:
The difference between detail data and grouped data.
Groups, which are organized as members of group hierarchies on the horizontal axis as row groups and
on the vertical axis as column groups.
The purpose of tablix cells in the four areas of a tablix data region: the body, the row group headers, the
column group headers, and the corner.
Static and dynamic rows and columns, and how they relate to groups.
This article spells out these concepts to explain the structure that Report Builder and Report Designer add for
you when you add templates and create groups, so you can modify the structure to suit your own needs. Report
Builder and Report Designer provide multiple visual indicators to help you recognize tablix data region
structure. For more information, see Tablix Data Region Cells, Rows, and Columns (Report Builder) and SSRS.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Understanding Detail and Grouped Data


Detail data is all the data from a report dataset as it comes back from the data source. Detail data is essentially
what you see in the query designer results pane when you run a dataset query. The actual detail data includes
calculated fields that you create, and is restricted by filters set on the dataset, data region, and details group. You
display detail data on a detail row by using a simple expression such as [Quantity]. When the report runs, the
detail row repeats once for each row in the query results at run time.
Grouped data is detail data that is organized by a value that you specify in the group definition, such as
[SalesOrder]. You display grouped data on group rows and columns by using simple expressions that aggregate
the grouped data, such as [Sum(Quantity)]. For more information, see Understanding Groups (Report Builder
and SSRS).

Understanding Group Hierarchies


Groups are organized as members of group hierarchies. Row group and column group hierarchies are identical
structures on different axes. Think of row groups as expanding down the page and column groups as expanding
across the page.
A tree structure represents nested row and column groups that have a parent/child relationship, such as a
category with subcategories. The parent group is the root of the tree and child groups are its branches. Groups
can also have an independent, adjacent relationship, such as sales by territory and sales by year. Multiple
unrelated tree hierarchies are called a forest. In a tablix data region, row groups and columns groups are each
represented as an independent forest. For more information, see Understanding Groups (Report Builder and
SSRS).

Understanding Tablix Data Region Areas


A tablix data region has four possible areas for cells: the tablix corner, the tablix row group hierarchy, the tablix
column group hierarchy, or the tablix body. The tablix body always exists. The other areas are optional.
Cells in the tablix body area display detail and group data.
Cells in the Row Groups area are created automatically when you create a row group. These are row group
header cells and display row group instance values by default. For example, when you group by [SalesOrder],
group instance values are the individual sales orders that you are grouping by.
Cells in the Column Groups area are created automatically when you create a column group. These are column
group header cells, and they display column group instance values by default. For example, when you group by
[Year], group instance values are the individual years that you are grouping by.
Cells in the tablix corner area are created automatically when you have both row groups and column groups
defined. Cells in this area can display labels, or you can merge the cells and create a title.
For more information, see Tablix Data Region Areas (Report Builder and SSRS).

Understanding Static and Dynamic Rows and Columns


A tablix data region organizes cells in rows and columns that are associated with groups. Group structures for
row groups and columns are identical. This example uses row groups, but you can apply the same concepts to
column groups.
A row is either a static or dynamic. A static row is not associated with a group. When the report runs, a static row
renders once. Table headers and footers are static rows. Static rows display labels and totals. Cells in a static row
are scoped to the data region.
A dynamic row is associated with one or more groups. A dynamic row renders once for every unique group
value for the innermost group. Cells in a dynamic row are scoped to the innermost row group and column
group to which the cell belongs.
Dynamic detail rows are associated with the Details group that is automatically created when you add a table or
list to the design surface. By definition, the Details group is the innermost group for a tablix data region. Cells in
detail rows display detail data.
Dynamic group rows are created when you add a row group or column group to an existing tablix data region.
Cells in dynamic group rows display aggregated values for the default scope.
The Add Total feature automatically creates a row outside the current group on which to display values that are
scoped to the group. You can also add static and dynamic rows manually. Visual indicators help you understand
which rows are static and which rows are dynamic. For more information, see Tablix Data Region Cells, Rows,
and Columns (Report Builder) and SSRS.

See Also
Linking Multiple Data Regions to the Same Dataset (Report Builder and SSRS)
Controlling the Tablix Data Region Display on a Report Page (Report Builder and SSRS)
Exploring the Flexibility of a Tablix Data Region (Report Builder and SSRS)
Tables, Matrices, and Lists (Report Builder and SSRS)
Tablix Data Region Areas (Report Builder and SSRS)
11/2/2020 • 3 minutes to read • Edit Online

In a Reporting Services paginated report, a tablix data region has four areas that contain tablix cells:
The corner
The row group area
The column group area
The body
Cells in each area have a distinct function. You add cells to the tablix body area to display detail and grouped
data. Report Builder and Report Designer add cells to the row group or column group area when you create a
group in order to display group instance values. Report Builder and Report Designer create tablix corner cells
when both row groups and column groups exist.
On the design surface, dotted lines denote the four areas of a selected tablix data region. The following figure
shows the areas for a tablix region with nested row groups based on category and subcategory, nested column
groups based on geography and country/region, and an adjacent column group based on year.

The following list describes each area:


Tablix corner area . (Optional) A tablix corner is located in the upper-left corner, or upper-right corner
for right-to-left (RTL) layouts. This area is automatically created when you add both row groups and
column groups to a tablix data region. In this area, you can merge cells and add a label or embed another
report item. In the figure, merged cells in the corner display the label Sales by Area and Year.
Tablix column groups area . (Optional) Tablix column groups are located in the upper-right corner
(upper-left corner for RTL layout). This area is automatically created when you add a column group. Cells
in this area represent members of the column groups hierarchy, and display the column group instance
values. In the figure, the cells that display [Geography] and [CountryRegion] are nested column groups,
and the cell that displays [Year] is an adjacent column group. The column [Total] displays the aggregated
totals across each row.
Tablix row groups area . (Optional) Tablix row groups are located on the lower-left corner (lower right
for RTL layout). This area is automatically created when you add a row group. Cells in this area represent
members of the row groups hierarchy, and display row group instance values. In the figure, the cells that
display [Category] and [Subcat] are nested row groups. The Total row below Subcat repeats with each
category group to show the aggregated subtotals for each column. The grand total row shows the totals
for all categories.
Tablix body area . The tablix body is located in the lower right corner (lower left for RTL layout). The
tablix body displays detail and grouped data. In this example, only aggregated data is used. The scope for
the expression is determined by the innermost groups to which the text box belongs. Cells in the tablix
body display detail data when they are members of a detail row and they represent aggregate data when
they are members of a row or column associated with a group. By default, cells in a group row or column
that contain simple expressions that do not include an aggregate function, evaluate to the first value in
the group. In the figure, the cells display the aggregate totals for line totals for all sales order.
When the report runs, column groups expand right (or left, if the Direction property of the tablix data region is
set to RTL) for as many columns as there are unique values for a group expression. Row groups expand down
the page. For more information, see Tablix Data Region Cells, Rows, and Columns (Report Builder) and SSRS.
The following figure shows the tablix data region in Preview.

The row group area displays two category group instances for Clothing and Components. The column group are
displays a geography group instance for North America, with two nested country/region group instances for
Canada (CA) and the United States (US). In addition, the adjacent column displays two year group instances for
2003 and 2004. The Total column row displays the row totals; the totals row that repeats with the category
group shows subcategory totals, and the grand total row displays the category totals once for the data region.

See Also
Tables, Matrices, and Lists (Report Builder and SSRS)
Report Builder Tutorials
Tables (Report Builder and SSRS)
Create a Matrix
Create Invoices and Forms with Lists
Tablix Data Region (Report Builder and SSRS)
Cells, Rows, & Columns in a Tablix Data Region
(Report Builder) and SSRS
5/20/2020 • 8 minutes to read • Edit Online

To control how the rows and columns of a tablix data region display data in a Reporting Services paginated
report, you must understand how to specify rows and columns for detail data, for group data, and for labels and
totals. In many cases, you can use the default structures for a table, matrix, or list to display your data. For more
information, see Tables (Report Builder and SSRS), Matrixes, or Lists .
A tablix data region displays detail data on detail rows and detail columns and grouped data on group rows and
group columns. When you add row groups and column groups to a tablix data region, rows and columns on
which to display the data are automatically added. You can manually add and remove rows and columns to
customize a tablix data region and control the way your data displays in the report.
To understand how to customize a tablix data region, you should first understand how to interpret the visual
cues you see when you select a tablix data region on the design surface.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Understanding Tablix Visual Cues


Visual cues on a tablix data region help you work with a tablix data region to display the data you want.
Row and Column Handles
When you select a tablix data region, the row and column handle graphics indicate the purpose of each row and
column. Handles indicate rows and columns that are inside a group or outside a group. The following table
shows a variety of handle displays.

IC O N DESC RIP T IO N

Only the details group on the row group hierarchy

One outer group and the child details group

One outer group, one inner group; no details group

One outer group, one inner group, and the child details
group

One outer group with a footer row for totals and one inner
group

One outer group with a footer row for totals, one inner
group with a footer row for totals, and one details row
IC O N DESC RIP T IO N

One outer group with a header for labels and a footer for
totals, and an inner group; no details group

Group Rows
Rows inside a group repeat once per unique group value and are typically used for aggregate summaries. Rows
outside a group repeat once with respect to the group and are used for labels or subtotals. When you select a
tablix cell, row and column handles and brackets inside the tablix data region show the groups to which a cell
belongs. This figure displays the following visual cues:
Row and column handles that indicate group associations.
Highlighted group indicators that show the innermost group membership for a selected cell.
Group indicators that show all group memberships for a selected cell.

Total Rows
After you add row and column groups, you can add a row to display totals for columns and a column to display
totals for rows. The following figure shows a matrix with both row and column groups, and a total row and a
total column.

Grouping Pane
The Grouping pane displays the row and column groups for the currently selected tablix data region on the
design surface. The following figure shows the Grouping pane for this tablix data region.

The Row Groups pane shows the parent group Category and child group Subcat. The Column groups pane
shows the parent group Geography and child group CountryRegion, and also the Year group, which is an
adjacent group to the Geography group. When you select the Subcat group in the Row Groups pane, the group
bar turns a darker shade of orange, and the corresponding row group member cell is selected on the design
surface.

Displaying Data on Rows and Columns


Rows and row groups and columns and column groups have identical relationships. The following discussion
describes how to add rows to display detail and group data on rows in a tablix data region, but the same
principles apply to adding columns to display detail and grouped data.
For each row in a tablix data region, a row is either inside or outside each row group. If the row is inside a row
group, it repeats once for every unique value of the group, known as a group instance. If the row is outside a
row group, it repeats only once in relation to that group. Rows outside all row groups are static and repeat only
once for the data region. For example, a table header or footer row is a static row. Rows that repeat with at least
one group are dynamic.
When you have nested groups, a row can be inside a parent group but outside a child group. The row repeats
for every group value in the parent group, but displays only once in relation to the child group. To display labels
or totals for a group, add a row outside the group. To display data that changes for every group instance, add a
row inside the group.
When you have detail groups, each detail row is inside the detail group. The row repeats for every value in the
dataset query result set.
For more information about group hierarchies, see Understanding Groups (Report Builder and SSRS).
The following figure shows a tablix data region with nested row groups and a details group.

For a tablix data region that displays detail data, the details group is the innermost child group. Rows that you
add to a details group repeat once per row in the result set for the query for the dataset linked to this tablix data
region. The following figure shows the last page of the rendered report. In this figure, you can see the last detail
rows and the subtotal row for the last order.

For each column in a tablix data region, the same principles apply. For example, a column is either inside or
outside each column group; to display totals, add a column outside the group.
To remove rows and columns associated to a group, you can delete the group. When you delete a group, you
have the choice between deleting the group definition only or deleting the group and all its associated rows and
columns. By deleting just the group, you preserve the row and column layout on the data region. When you
delete the group and its related rows and columns, you are deleting all static rows and columns (including
group headers and footers) and dynamic rows and columns (including group instances) that are associated with
that group.
For step-by-step instructions about adding or deleting rows and columns, see Insert or Delete a Row (Report
Builder and SSRS) and Insert or Delete a Column (Report Builder and SSRS).

Understanding Tablix Cells


Tablix cells belong to one of four tablix areas: the tablix body, tablix row or tablix column group areas, or the
tablix corner. Although each cell can potentially display any value in the dataset, the default function for each cell
is determined by its location. For detailed information about tablix areas, see Tablix Data Region Areas (Report
Builder and SSRS).
By default, cells in tablix row and column group areas represent group members. Group members are organized
into multiple tree structures in the report definition. The row group hierarchy expands horizontally. The column
group hierarchy expands vertically. These cells are added automatically when you create a group, and display
the unique values for a group at run time.
Cells in the tablix corner are created when there are both row and column group areas. You can merge cells in
this area to create a label or embed another report item.
Cells in the tablix body area can display detail data when the cell is in a detail row or column and aggregated
group data when the cell is in a group row or column. The scope for the data in a cell is the intersection of the
innermost row group and innermost column group to which the cell belongs.

NOTE
The actual data that is displayed for each cell is the evaluated expression for the report item that the cell contains, which is
typically a text box. In a cell that belongs to a detail row or column, the expression defaults to the detail data (for example,
[LineTotal]) . In a cell that does not belong to a detail row or column, the expression defaults to an aggregate function
(for example, Sum[LineTotal]) . If an expression does not specify an aggregate function even though the cell belongs to a
group row or column, the first value in the group is displayed. For more information about aggregates, see Expression
Scope for Totals, Aggregates, and Built-in Collections (Report Builder and SSRS).

Merging and Splitting Cells


Inside a tablix area, you can merge multiple adjacent cells together. For example, you can create cells for labels
that span multiple columns or rows.
In the tablix corner area, cells can be combined in only one direction at a time: horizontally across columns or
vertically down rows. To merge a block of cells, merge the cells horizontally first. After all cells have been
merged into a single cell in each row, select adjacent cells (you can select all adjacent cells in a column) and
merge them.
In the tablix body area, cells can only be merged horizontally. Merging cells vertically is not supported.
For more information, see Merge Cells in a Data Region (Report Builder and SSRS).
You can split a cell that was previously merged. You can split cells horizontally across columns or vertically down
rows. To split a cell into a block of cells, split the cell horizontally first, and then split vertically as many times as
necessary.

See Also
Tablix Data Region (Report Builder and SSRS)
Preparing Data for Display in a Tablix Data Region
(Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

A tablix data region displays data from a dataset. You can view all the data retrieved for the dataset or you can
create filters so that you see only a subset of the data. You can also add conditional expressions to fill in null
values or modify the query for a dataset to include columns that define the sort order for an existing column.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Working with Nulls and Blanks in Field Values


Data for the field collection in a dataset includes all values retrieved from the data source at run time, including
null values and blanks. Normally null values and blanks are indistinguishable. In most cases, this is the desired
behavior. For example, Numeric aggregate functions like Sum and Avg ignore null values. For more information,
see Aggregate Functions Reference (Report Builder and SSRS).
If you do want to handle null values differently, you can use conditional expressions or custom code to
substitute a custom value for the null value. For example, the following expression substitutes the text Null
wherever a null value occurs in the field [Size] .

=IIF(Fields!Size.Value IS NOTHING,"Null",Fields!Size.Value)

For more information about eliminating nulls in your data before retrieving the data from a SQL Server data
source using Transact-SQL queries, see NULL and UNKNOWN (Transact-SQL).

Handling Null Field Names


Testing for null values in an expression is fine as long as the field itself exists in the query result set. From
custom code, you can test whether the field itself is present in the collection fields returned from the data source
at run time. For more information, see Dataset Fields Collection References (Report Builder and SSRS).

Adding a Sort Order Column


By default, you can alphabetically sort values in a dataset field. To sort in a different order, you can add a new
column to your dataset that defines the sort order you want in a data region. For example, to sort on the field
[Color] and sort white and black items first, you can add a column [ColorSortOrder] , shown in the following
query:
SELECT ProductID, p.Name, Color,
CASE
WHEN p.Color = 'White' THEN 1
WHEN p.Color = 'Black' THEN 2
WHEN p.Color = 'Blue' THEN 3
WHEN p.Color = 'Yellow' THEN 4
ELSE 5
END As ColorSortOrder
FROM Production.Product p

To sort a table data region according to this sort order, set the sort expression on the detail group to
=Fields!ColorSortOrder.Value . For more information, see Sort Data in a Data Region (Report Builder and SSRS).

See Also
Dataset Fields Collection (Report Builder and SSRS)
Expressions (Report Builder and SSRS)
Filter, Group, and Sort Data (Report Builder and SSRS)
Adding Data to a Tablix Data Region (Report
Builder and SSRS)
5/20/2020 • 4 minutes to read • Edit Online

In Reporting Services paginated reports, to display data from a report dataset in a table or matrix, in each data
cell, specify the name of a dataset field to display. You can display detail data or grouped data. If you add groups
to a table or matrix, rows and columns for group values and group data are added automatically. You can then
add subtotals and totals for your data.
All data in a data region belongs to at least one group. Detail data is a member of the details group. For more
information about detail and grouped data, see Understanding Groups (Report Builder and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Adding Detail Data


Detail data is all the data from a report dataset after filters are applied to the dataset, data region, and details
group. All detail data displayed in a single tablix data region must come from the same report dataset.
To add detail data from a report dataset to a tablix data region, drag a dataset field from the Report Data pane to
each cell in the detail row. For existing cells in a tablix data region, you can add or edit a dataset field expression
by using the field selector in each cell or by dragging a field from the Report Data pane to the cell. To create
additional columns, you can drag the field from the Report Data pane and insert it into an existing tablix data
region.
By default, at run-time, a cell in the details row displays detail data and a cell in a group row displays an
aggregate value. For more information about tablix rows and columns, see Tablix Data Region Cells, Rows, and
Columns (Report Builder) and SSRS.
A table template and a list template provide a details row. A matrix template has no details row. If your tablix
data region has no details row, you can add one by defining a details group. For more information, see Add a
Details Group (Report Builder and SSRS).

Adding Grouped Data


Grouped data is all the detail data specified by a group expression after filters are applied to the dataset, data
region, and the group. To organize detail data in groups, drag fields from the Report Data pane to the Grouping
pane. When you add a group, Reporting Services automatically adds related rows or columns to the tablix data
region on which to display grouped data. Cells in these rows or columns are associated with grouped data. For
more information, see Add or Delete a Group in a Data Region (Report Builder and SSRS).
By default, when you add a dataset field that represents numeric data to a cell in a group row or column, the
value of the cell is the sum of the grouped data scoped to the innermost row and column group memberships
for the cell. You can change the default aggregate function Sum to any other aggregate function, such as Avg or
Count. You can also change the default scope for an aggregate calculation, for example, to calculate the
percentage a value contributes to a row group. For more information, see Expression Scope for Totals,
Aggregates, and Built-in Collections (Report Builder and SSRS).
By default, all grouped data comes from the same report dataset. In a tablix data region, you can include
aggregate values from another dataset by specifying the dataset name as a scope. You can specify multiple
aggregate values from multiple datasets within a single tablix data region. For more information, see Aggregate
Functions Reference (Report Builder and SSRS).

Adding Subtotals and Totals


To add subtotals for a group and grand totals for the data region, use the Add Total feature on the shortcut
menu in a cell or in the Grouping pane. The rows and columns on which to display the totals are automatically
added for you. Subtotal and total expressions default to using the Sum aggregate function. After you add the
expression, you can change the default function. For more information, see Add a Total to a Group or Tablix Data
Region (Report Builder and SSRS) and Expression Scope for Totals, Aggregates, and Built-in Collections (Report
Builder and SSRS).

Adding Labels
To add labels for a group or for the data region, add a row or column outside the group that you want to label.
Label rows and columns are similar to rows and columns that you add to display totals. For more information,
see Insert or Delete a Row (Report Builder and SSRS) or Insert or Delete a Column (Report Builder and SSRS).

Adding an Existing Tablix Data Region from Another Report


You can copy a data region from another report and paste it into-a new or existing report. After you paste the
data region, you must ensure that the dataset the data region uses is defined, and that the dataset fields have
identical names and data types as in the original report. You cannot copy datasets from one report to another,
but if your reports use shared data sources, you can quickly duplicate the dataset in the another report. Also you
can import the query text for the queries that retrieve the data for the dataset, which makes it simple to
duplicate the queries in reports. For more information, see Report Embedded Datasets and Shared Datasets
(Report Builder and SSRS).

See Also
Expressions (Report Builder and SSRS)
Report Parameters (Report Builder and Report Designer)
Interactive Sort, Document Maps, and Links (Report Builder and SSRS)
Add Dataset Filters, Data Region Filters, and Group Filters (Report Builder and SSRS)
Add, Edit, Refresh Fields in the Report Data Pane (Report Builder and SSRS)
Add an Expression (Report Builder and SSRS)
Exploring the Flexibility of a Tablix Data Region
(Report Builder and SSRS)
11/2/2020 • 3 minutes to read • Edit Online

In a Reporting Services paginated report, when you add a table, matrix, or list data region from the Insert tab on
the ribbon, you start with an initial template for a tablix data region. But you are not limited by that template.
You can continue to develop how your data displays by adding or removing any tablix data region feature such
as groups, rows, and columns.
When you delete a row or column group, you have the option of deleting the rows and columns that are used to
display group values. You can also add or remove rows and columns manually. To understand how rows and
columns are used to display detail and group data, see Tablix Data Region (Report Builder and SSRS).
After you change the structure of the tablix data region, you can set properties to help control the way the
report renders the data region; for example, you can repeat column headers at the top of every page, or keep a
group header with the group. For more information, see Controlling the Tablix Data Region Display on a Report
Page (Report Builder and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Changing a Table to a Matrix


By default, a table has detail rows that display the values from the report dataset. Typically, a table includes row
groups that organize the detail data by group, and then includes aggregated values based on each group. To
change the table to a matrix, add column groups. Typically, you would remove the details group when the data
region has both row and column groups so that you can display only the summary values for the groups. For
more information, see Add or Delete a Group in a Data Region (Report Builder and SSRS).
By definition, when you create a matrix, you add a tablix corner cell. You can merge cells in this area and add a
label. For more information, see Merge Cells in a Data Region (Report Builder and SSRS).

Changing a Matrix to a Table


By default, a matrix has row groups and column groups and no detail group. To change a matrix to a table,
remove column groups and add a details group to display on the details row. For more information, see Add or
Delete a Group in a Data Region (Report Builder and SSRS) and Add a Details Group (Report Builder and SSRS).

Changing a Default List to a Grouped List


By default, a list has detail rows and no groups. To change the list to use a group row, rename the details group
and specify a group expression. For more information, see Add or Delete a Group in a Data Region (Report
Builder and SSRS)

Creating Stepped Displays


By default, when you add groups to a tablix data region, cells in the row group header area display group values
in column. When you have nested groups, each group displays in a separate column. To create a stepped display,
remove all group columns except one, and format the remaining column to display the group hierarchy as an
indented text display. For more information, see Create a Stepped Report (Report Builder and SSRS).

Adding an Adjacent Details Group


By default, the details group is the innermost child group in a group hierarchy. You cannot nest a group under
the details group. You can create additional adjacent details groups, to display the top 5 products and the
bottom 5 products by sales, for example. Because you can add filter and sort expressions on each group, you
can show two views of detail data from the same dataset in one tablix data region. For more information, see
Understanding Groups (Report Builder and SSRS), Add or Delete a Group in a Data Region (Report Builder and
SSRS), and Add a Filter to a Dataset (Report Builder and SSRS).

See Also
Tablix Data Region (Report Builder and SSRS)
Tables, Matrices, and Lists (Report Builder and SSRS)
Tables (Report Builder and SSRS)
Matrices (Report Builder and SSRS)
Lists (Report Builder and SSRS)
Controlling the Tablix Data Region Display on a
Report Page
11/2/2020 • 5 minutes to read • Edit Online

Read about properties you can set in a Reporting Services paginated report for a table, matrix, or list data
region, to change how it appears when you view the report.

Controlling the Appearance of Data


Table, matrix, and list data regions are all examples of tablix data regions. The following features help control the
appearance of a tablix data region:
Formatting data. To format data in a table, matrix, or list, set the format properties of the text box in the
cell. You can set properties for multiple cells at the same time. To format data in a chart, set formatting
properties on the series. For more information, see Formatting Report Items (Report Builder and SSRS)
and Formatting a Chart (Report Builder and SSRS).
Writing expressions . For more information, see Expression Uses in Reports (Report Builder and SSRS),
and Expression Examples (Report Builder and SSRS).
Controlling sor t order . To control the sort order, you define sort expressions on the data region. To
control sort order for rows and columns associated with a group, you define sort expressions on the
group, including the details groups. You can also add interactive sort buttons to enable the user to sort a
tablix data region or its groups. For more information, see Sort Data in a Data Region (Report Builder and
SSRS).
Displaying a message when there is no data . When no data exists for a report dataset at run time,
you can write your own message to display in place of the data region. For more information, see Set a
No Data Message for a Data Region (Report Builder and SSRS).
Conditionally hiding data . To conditionally control whether to show or hide a data region or parts of a
data region, you can set the Hidden property to True or to an expression. Expressions can include
references to report parameters. You can also specify a toggle item, so that user can decide to display
detail data. For more information, see Drilldown Action (Report Builder and SSRS).
Merging cells. Multiple contiguous cells within a table can be combined into a single cell. This is known
as a column span or a cell merge. Cells can only be combined horizontally or vertically. When you merge
cells, only the data in the first cell is preserved. Data in other cells is removed. Merged cells can be split
into their original columns. For more information, see Merge Cells in a Data Region (Report Builder and
SSRS).

Controlling Tablix Data Region Position and Expansion on a Page


The following features help control the way a tablix data region displays in a rendered report:
Controlling the position of a tablix data region in relation to other repor t items . A tablix data
region can be positioned above, next to, or below other report items on the report design surface. At run
time, Reporting Services expands the tablix data region as needed for the data retrieved for the linked
dataset, moving peer report items aside as needed. To anchor a tablix next to another report item, make
the report items peers and adjust their relative positions. For more information, see Rendering Behaviors
(Report Builder and SSRS).
Changing the Expansion Direction . To control whether a tablix data region expands across the page
from left-to-right (LTR) or from right-to-left (RTL), use the Direction property, which can be accessed
through the Properties window. For more information, see Rendering Data Regions (Report Builder and
SSRS).

Controlling How a Tablix Data Region Renders on a Page


The following list describes ways that you can help control how a tablix data region appears in a report:
Controlling paging . To control the amount of data that displays on each report page, you can set page
breaks on data regions. You can also set page breaks on groups. Page breaks can affect the on-demand
rendering performance by reducing the amount of data that needs to be processed on each page. For
more information, see Pagination in Reporting Services (Report Builder and SSRS) and Add a Page Break
(Report Builder and SSRS).
Displaying data on either side of row headers . You are not limited to displaying row headers on the
side of a tablix data region. You can move the row headers between columns, so that columns of data
appear before the row headers. To do this, modify the GroupsBeforeRowHeaders property for the matrix.
You can access this property through the Properties window. The value for this property is an integer; for
example, a value of 2 will display two groups instances of data region column data before displaying the
column containing the row headers.

Controlling How Tablix Row and Column Groups Render


To control how a tablix data region groups render depends on the group structure. A tablix data region can have
four areas, as shown in the following figure:

The row group area and column group area contain group headers. When a tablix data region has group
headers, you control how rows and columns repeat by setting properties on the General page of the Tablix
Proper ties dialog Box.
If a tablix data region has only a tablix body area, there are no group headers. There are only static and dynamic
tablix members. A static member displays once in relation to a tablix row or column group. A dynamic member
repeats once for every unique group value. For example, in a tablix data region that displays a sales order, the
column names in the sales order can be displayed on a static row member. Each line in the sales order is
displayed on a dynamic row member.
You can help control how a tablix member renders by setting properties in the Properties pane. For more
information, see "Advanced mode" in Grouping Pane (Report Builder).
The following list describes ways that you can help control how a tablix data region appears in a report:
Repeating row and column headers on multiple pages .You can display row and column headers
on each page that a tablix data region spans. For more information, see Display Row and Column
Headers on Multiple Pages (Report Builder and SSRS).
Keeping row and column headers in view when scrolling . You can control whether to keep the
row and column headers in view when you scroll a report using a browser. For more information, see
Keep Headers Visible When Scrolling Through a Report (Report Builder and SSRS).
For more information about how exporting a report to different formats affects the way a tablix data region
renders on a page, see Rendering Behaviors (Report Builder and SSRS).

See Also
Linking Multiple Data Regions to the Same Dataset (Report Builder and SSRS)
Nested Data Regions (Report Builder and SSRS)
Expression Scope for Totals, Aggregates, and Built-in Collections (Report Builder and SSRS)
Controlling Page Breaks, Headings, Columns, and Rows (Report Builder and SSRS)
Tablix Data Region (Report Builder and SSRS)
Tables (Report Builder and SSRS)
Create a Matrix
Create Invoices and Forms with Lists
Tables, Matrices, and Lists (Report Builder and SSRS)
Control Row & Column Headings (Report Builder &
SSRS)
11/2/2020 • 8 minutes to read • Edit Online

A table, matrix, or list data region in a paginated report can span multiple pages horizontally or vertically. You
can specify whether to repeat row or column headings on each page. In an interactive renderer such as the web
portal or report preview, you can also specify whether to freeze row or column headings to keep them in view
when you scroll across or down a report. In a table or matrix, the first row usually contains column headings
that label data in each column; the first column usually contains row headings that label the data in each row.
For nested groups, you might want to repeat the initial set of row and column headings that contain group
labels. By default, a list data region does not include headings.
How you control whether headings repeat or freeze depends on the following:
For column headings that repeat at the top of each page:
Whether the table or matrix has a column group area that expands horizontally.
Whether you want to control all rows that are associated with column groups as a unit.
For row headings that repeat along the side of each page:
Whether the table or matrix has a row group area that expands vertically. Row headings are supported
only for row groups with a row group header.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Understanding Rows and Columns in a Tablix Data Region


A table or matrix is a template for the underlying tablix data region. A tablix data region has four possible areas:
the row group area that controls rows that expand down a report, the column group area that controls columns
that expand across a report, the body that displays data, and the corner. To understand where to set properties
to control repeating or freezing headers, it helps to understand that there are two representations for a tablix
data region:
In the repor t definition Each row or column in a tablix data region definition is a tablix member of a
specific row or column group. A tablix member is static or dynamic. A static tablix member contains labels
or subtotals and repeats once per group. A dynamic tablix member contains group values and repeats
once per unique value of a group, also known as a group instance.
On the design surface On the design surface, dotted lines divide a tablix data region into the four
areas. Each cell in a tablix data region area is organized into rows and columns. Rows and columns are
associated with groups, including the details group. For a selected tablix data region, row and column
handles and highlight bars indicate group membership. Cells in the row group or column group area
represent group headers for tablix members. A single row or column can be associated with multiple
groups.
For more information, see Tablix Data Region (Report Builder and SSRS) and Tablix Data Region Cells,
Rows, and Columns (Report Builder) and SSRS.
For tablix data regions with row group or column group areas, control the associated rows and columns by
setting properties on tablix data region. For all other cases, control the rows and columns by setting properties
in the Properties pane for the selected tablix member. For step-by-step instructions, see Display Row and
Column Headers on Multiple Pages (Report Builder and SSRS) and Keep Headers Visible When Scrolling
Through a Report (Report Builder and SSRS).

Examples
The most common examples of tablix data regions are for a matrix, a table with no groups, and a table with a
row group and a row group header, and a table with a row group but no row group header. To control how to
repeat or freeze headers, you must determine if the rows or columns that you want to control are associated
with a group header in the row groups or column groups area.
The following sections provide examples for common layouts for a tablix data region:
Matrix
Table with no groups
Table with row groups and row group area
Table with row groups but no row group area
Matrix
By default, a simple matrix has one row group and one column group. The following figure shows a matrix with
a row group that is based on Category and a column group that is based on Geography:

The dotted lines show the four tablix areas. The row group area has a row group header that controls the
category labels in the first column. Similarly, the column group area has a column group header that controls
the geography labels in the first row. In preview, as the matrix expands across the page, the first row displays the
column headings, as shown in the following figure:

To repeat or freeze column headings in the first row, set properties for column headers on the tablix data region.
Column headers for nested column groups are automatically included.
To repeat or freeze row headings in the first column, set properties for row headers on the tablix data region.
Row headers for nested row groups are automatically included.
Return to top
Table with no row groups
By default, a simple table with no groups does include the details group. The following figure shows a table that
displays category, order number, and sales data:
There are no dotted lines because the table consists only of the tablix body area. The first row displays column
headers, and represents a static tablix member that is not associated with a group. The second row displays
detail data, and represents a dynamic tablix member that is associated with the details group. The following
figure shows the table in preview:

To repeat or freeze column headings, set properties on the tablix member for static row that is part of the tablix
data region definition. To select the static row, you must use the Advanced mode of the Grouping pane. The
following figure shows the Row Groups pane:

In Advanced mode, the following figure shows the static and dynamic tablix members for the row groups in the
table:

To repeat or freeze column headings for the tablix member, select the static row that is labeled (Static ). The
properties pane displays the properties for the selected tablix member. By setting properties for this tablix
member, you can control how the first row repeats or stays in view.
Return to top
Table with row groups and a row group area
If you add a row group to a simple table, a row group area is added to the table on the design surface. The
following figure shows a table with a row group that is based on Category:

The dotted lines show the tablix row groups area and the tablix body area. The row group area has a row group
header but no column group header. The following figure shows this table in preview:

To repeat or freeze column headings, use the same approach as the previous example. The following figure
shows the default view of the Row Groups pane:
Use the Advanced mode of the Row Groups pane to display the tablix members, as shown in the following
figure:

For tablix members are listed: Static , (Static ), Category, and (Details ). A tablix member that includes
parentheses () indicates that there is no corresponding group header. To repeat or freeze column headings,
select the top Static tablix member, and set properties in the Properties pane.
Return to top
Table with row groups and no row group area
A table can have row groups but no row groups area in several ways. Two possible ways for this to happen
include:
Start with a table with row groups and a row group area and delete the columns for the row group area.
Delete the columns only and not the groups. For example, you might want to control the table format to
be a simple grid.
Upgrade a report that was created for a previous RDL version, before tablix data regions were introduced.
The following figure shows a table with a row group but no row group area on the design surface:

The table has three rows. The first row contains column headers. The second row contains the group value and
subtotals. The third row contains the detail data. There are no dotted lines because there is only a tablix body
area. The following figure shows this table in preview:

To control how the rows repeat or stay in view, you must set properties on the tablix member for each row. In
default mode, there is no difference between this example and the previous example for a table with a row
group and a group header. The following figure shows the Grouping pane in default mode for this table:

However, in advanced mode, this layout structure shows a different set of tablix members. The following figure
shows the Grouping pane in advanced mode for this table:

In the Row Groups pane, the following tablix members are listed: (Static ), (Category), (Static ), and (Details ). To
repeat or freeze column headings, select the top (Static ) tablix member, and set properties in the Properties
pane.
Return to top

Renderer Support for Repeating or Freezing Headers


Renderers vary in support for repeating or freezing headers.
Renderers that use physical pages (PDF, Image, Print) support the following features:
Repeat row headers when a tablix data region expands horizontally across multiple pages.
Repeat column headers when a tablix data region expands vertically down multiple pages.
In addition, renderers that use soft page breaks (the web portal, report preview, or the report viewer control)
support the following features:
Keep row headers in view when you scroll horizontally across a report.
Keep column headers in view when you scroll vertically down a report.
For more information, see Rendering Behaviors (Report Builder and SSRS).

See Also
Filter, Group, and Sort Data (Report Builder and SSRS)
Tables, Matrices, and Lists (Report Builder and SSRS)
Pagination in Reporting Services (Report Builder and SSRS)
Export Reports (Report Builder and SSRS)
Understanding Groups (Report Builder and SSRS)
11/2/2020 • 8 minutes to read • Edit Online

In a Reporting Services paginated report, a group is a named set of data from the report dataset that is bound
to a data region. Basically, a group organizes a view of a report dataset. All groups in a data region specify
different views of the same report dataset.
To help visualize what a group is, refer to the following figure that shows the tablix data region in Preview. In this
figure, the row groups categorize the dataset by product type and the column groups categorize the dataset by
geographic region and year.

The following sections help describe the various aspects of groups.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

What Makes a Group?


A group has a name and a set of group expressions that you specify. The set of group expressions can be a
single dataset field reference or a combination of multiple expressions. At runtime, group expressions are
combined, if the group has multiple expressions, and applied to data in a group. For example, you have a group
that uses a date field to organize the data in the data region. At run time, data is organized by date, and then
displayed with totals other dataset values for each date.

When Do I Create Groups?


In most cases, Report Builder and Report Designer automatically create a group for you when you design a data
region. For a table, matrix, or list, groups are created when you drop fields on the Grouping pane. For a chart,
groups are created when you drop fields on the chart drop-zones. For a gauge, you must use the gauge
properties dialog box. For a table, matrix, or list, you can also create a group manually. For more information,
see Add or Delete a Group in a Data Region (Report Builder and SSRS). For an example of how to add groups
when you create a report, see Tutorial: Creating a Basic Table Report (Report Builder) or Create a Basic Table
Report (SSRS Tutorial).

How Can I Modify a Group?


After you create a group, you can set data region-specific properties, such as filter and sort expressions, page
breaks, and group variables to hold scope-specific data. For more information, see Filter, Group, and Sort Data
(Report Builder and SSRS).
To modify an existing group, open the appropriate group properties dialog box. You can change the name of the
group. Also, you can specify group expressions based on a single field or multiple fields, or on a report
parameter that specifies a value at run time. You can also base a group on a set of expressions, such as the set of
expressions that specify age ranges for demographic data. For more information, see Group Expression
Examples (Report Builder and SSRS).

NOTE
If you change the name of a group, you must manually update any group expressions that refer to the previous name of
the group.

How are Groups Organized?


Understanding group organization can help you design data regions that display different views of the same
data by specifying identical group expressions.
Groups are internally organized as members of one or more hierarchies for each data region. A group hierarchy
has parent/child groups that are nested and can have adjacent groups.
If you think of the parent/child groups as a tree structure, each group hierarchy is forest of tree structures. A
tablix data region includes a row group hierarchy and a column group hierarchy. Data associated with row
group members expands horizontally across the page and data associated with column group members
expands vertically down the page. The Grouping pane displays row group and column group members for the
currently selected tablix data region on the design surface. For more information, see Grouping Pane (Report
Builder).
A chart data region includes a category group hierarchy and a series group hierarchy. Category group members
are displayed on the category axis and series group members are displayed on the series axis.
Although typically not needed for gauge data regions, groups do let you specify how to group data to aggregate
on the gauge.

What Types of Groups are Available per Data Region?


Data regions that expand as a grid support different groups than data regions that display summary data
visually. Thus, a tablix data region, and the tables, lists, and matrices that are based on the tablix data region,
support different groups than a chart or gauge. The following sections discuss the type of and purpose for
grouping in each type of data region.

NOTE
Although groups have different names in different data regions, the principles behind how you create and use groups are
the same. When you create a group for a data region, you specify a way to organize the detail data from the dataset that
is linked to the data region. Each data region supports a group structure on which to display grouped data.

Groups in a Tablix Data Region: Details, Row, and Column Groups


As shown earlier in this topic, a tablix data region enables you to organize data into groups by rows or columns.
However, row and column groups are not the only groups available in a tablix data region. This data region can
have the following types of groups:
Details Group The Details group consists of all data from a report dataset after Report Builder or Report
Designer apply dataset and data region filters. Thus, the Details group is the only group that has no group
expression.
Basically, the details group specifies the data that you would see when you run a dataset query in a query
designer. For example, you have a query that retrieves all columns from a sales order table. Thus, the data
in this detail group includes all the values for every row for all the columns in the table. The data in this
detail group also includes values for any calculated dataset fields that you have created.

NOTE
The data in a Detail group can also include server aggregates, which are aggregates that are calculated on the
data source and retrieved in your query. By default, Report Builder and Report Designer treat server aggregates as
detail data unless your report includes an expression that uses the Aggregate function. For more information, see
Aggregate.

By default, when you add a table or list to your report, Report Builder and Report Designer automatically
create the Details group for you, and adds a row to display the detail data. By default, when you add
dataset fields to cells in this row, you see simple expressions for the fields, for example, [Sales]. When you
view the data region, the details row repeats once for every value in the result set.
Row groups and column groups You can organize data into groups by rows or columns. Row groups
expand vertically on a page. Column groups expand horizontally on a page. Groups can be nested, for
example, group first by [Year], then by [Quarter], then by [Month]. Groups can also be adjacent, for
example, group on [Territory] and independently on [ProductCategory].
When you create a group for a data region, Report Builder and Report Designer automatically add rows
or columns to the data region and use these rows or columns to display group data.
Recursive hierarchy groups A recursive hierarchy group organizes data from a single report dataset
that includes multiple levels. For example, a recursive hierarchy group could display an organization
hierarchy, for example, [Employee] that reports to [Employee]. Reporting Services provides group
properties and built-in functions to enable you to create groups for this kind of report data. For more
information, see Creating Recursive Hierarchy Groups (Report Builder and SSRS).
The following list summarizes the way you work with groups for each data region:
Table Define nested row groups, adjacent row groups, and recursive hierarchy row groups (such as for
an organizational chart). By default, a table includes a details group. Add groups by dragging dataset
fields to the Grouping pane for a selected table.
Matrix Define nested row and column groups, and adjacent row and column groups. Add groups by
dragging dataset fields to the Grouping pane for a selected matrix.
List By default, supports the details group. Typical use is to support one level of grouping. Add groups by
dragging dataset fields to the Grouping pane for a selected list.
After you add a group, the row and column handles of the data region change to reflect group membership.
When you delete a group, you have the choice between deleting the group definition only or deleting the group
and all its associated rows and columns. For more information, see Tablix Data Region Cells, Rows, and Columns
(Report Builder) and SSRS.
To limit the data to display or use in calculations for detail or group data, set filters on the group. For more
information, see Add Dataset Filters, Data Region Filters, and Group Filters (Report Builder and SSRS).
By default, when you create a group, the sort expression for the group is the same as the group expression. To
change the sort order, change the sort expression. For more information, see Filter, Group, and Sort Data (Report
Builder and SSRS).
Understanding Group Membership for Tablix Cells
Cells in a row or column of a tablix data region can belong to multiple row and column groups. When you
define an expression in the text box of a cell that uses an aggregate function (for example,
=Sum(Fields!FieldName.Value ), the default group scope for a cell is the inner most child group to which it
belongs. When a cell belongs to both row and column groups, the scope is both innermost groups. You can also
write expressions that calculate aggregate subtotals scoped to a group relative to another set of data. For
example, you can calculate the percent of a group relative to the column group or to all data for the data region
(such as =Sum(Fields!FieldName.Value)/Sum(Fields!FieldName.Value,"ColumnGroup") ). For more information, see
Tablix Data Region (Report Builder and SSRS) and Expression Scope for Totals, Aggregates, and Built-in
Collections (Report Builder and SSRS).

See Also
Add or Delete a Group in a Data Region (Report Builder and SSRS)
Add a Total to a Group or Tablix Data Region (Report Builder and SSRS)
Sort Data in a Data Region (Report Builder and SSRS)
Drilldown Action (Report Builder and SSRS)
Tables, Matrices, and Lists (Report Builder and SSRS)
Creating Recursive Hierarchy Groups (Report
Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

To display recursive data in Reporting Services paginated reports (where the relationship between parent and
child is represented by fields in the dataset), set the data region group expression based on the child field and
set the Parent property based on the parent field.
Displaying hierarchical data is a common use for recursive hierarchy groups, for example, employees in an
organizational chart. The dataset includes a list of employees and the managers, where the manager names also
appear in the list of employees.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Creating Recursive Hierarchies


To build a recursive hierarchy in a tablix data region, you must set the group expression to the field that specifies
the child data and the Parent property of the group to the field that specifies the parent data. For example, for a
dataset that includes fields for employee ID and manager ID where employees report to managers, set the
group expression to employee ID and the Parent property to manager ID.
A group that is defined as a recursive hierarchy (that is, a group that uses the Parent property) can have only
one group expression. You can use the Level function in text box padding to indent employee names based on
their level in the hierarchy.
For more information, see Add or Delete a Group in a Data Region (Report Builder and SSRS) and Create a
Recursive Hierarchy Group (Report Builder and SSRS).
Aggregate Functions that support Recursion
You can use Reporting Services aggregate functions that accept the parameter Recursive to calculate summary
data for a recursive hierarchy. The following functions accept Recursive as a parameter: Sum, Avg, Count,
CountDistinct, CountRows, Max, Min, StDev, StDevP, Sum, Var, and VarP. For more information, see Aggregate
Functions Reference (Report Builder and SSRS).

See Also
Tables, Matrices, and Lists (Report Builder and SSRS)
Tablix Data Region (Report Builder and SSRS)
Aggregate Functions Reference (Report Builder and SSRS)
Tables (Report Builder and SSRS)
Matrices (Report Builder and SSRS)
Lists (Report Builder and SSRS)
Tables, Matrices, and Lists (Report Builder and SSRS)
Add a Details Group (Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

In a Reporting Services paginated report, the detail data from a report dataset is specified as a group with no
group expression. Add a detail group to an existing tablix data region when you want to display the detail data
for a matrix, add back detail data that you have deleted from a table or list, or to add additional detail groups.
For more information about groups, see Understanding Groups (Report Builder and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To add a details group to a tablix data region


1. On the design surface, click anywhere in a tablix data region to select it. The Grouping pane displays the
row and column groups for the selected data region.
2. In the Grouping pane, right-click a group that is an innermost child group. Click Add Group , and then
click Child Group . The Tablix Group dialog box opens.
3. In Group expression , leave the expression blank. A details group has no expression.
4. Select Show detail data .
5. Click OK .
A new details group is added as a child group in the Grouping pane, and the row handle for the group
you selected in step 1 displays the details group icon. For more information about handles, see Tablix
Data Region Cells, Rows, and Columns (Report Builder) and SSRS.

See Also
Add or Delete a Group in a Data Region (Report Builder and SSRS)
Understanding Groups (Report Builder and SSRS)
Tablix Data Region (Report Builder and SSRS)
Tables (Report Builder and SSRS) Matrices (Report Builder and SSRS)
Lists (Report Builder and SSRS)
Tables, Matrices, and Lists (Report Builder and SSRS)
Add a Total to a Group or Tablix Data Region
(Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

In a Reporting Services paginated report, you can add totals in a tablix data region for a group or for the entire
data region. By default, a total is the sum of the numeric, non-null data in a group or in the data region, after
filters are applied. To add totals for a group, click Add Total on the shortcut menu for the group in the Grouping
pane. To add totals for an individual cell in the tablix body area, click Add Total on the shortcut menu for the
cell. The Add Total command is context-sensitive and enabled only for numeric fields. Depending on the tablix
cell that you select, you can add a total for a single cell by selecting a cell in the tablix body area or for the entire
group by selecting a cell in the tablix row group area or the tablix column group area. For more information
about tablix areas, see Tablix Data Region (Report Builder and SSRS).
After you add a total, you can change the default function Sum to a different aggregate function from the list of
built-in report functions. For more information, see Aggregate Functions Reference (Report Builder and SSRS).
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in
SQL Server Data Tools. Each authoring environment provides different ways to create, open, and save reports
and related items.

To add a total for an individual value in the tablix body area


In the tablix data region body area, right-click the cell where you want to add the total. The cell must
contain a numeric field. Point to Add Total , and then click Row or Column .
A new row or column outside the current group is added to the data region, with a default total for the
field in the cell you clicked.
If the tablix data region is a table, a row is automatically added.

To add totals for a row group


In the tablix data region row group area, right-click a cell in the row group area for which you want totals,
point to Add Total , and then click Before or After .
A new row outside the current group is added to the data region, and then a default total is added for
each numeric field in the row.

To add totals for a column group


In the tablix data region row group area, right-click a cell in the column group area for which you want
totals, then point to Add Total , and click Before or After .
A new column outside the current group is added to the data region, and then a default total is added for
each numeric field in the column.

See Also
Expression Scope for Totals, Aggregates, and Built-in Collections (Report Builder and SSRS)
Tablix Data Region (Report Builder and SSRS)
Tables, Matrices, and Lists (Report Builder and SSRS)
Change an Item Within a Cell (Report Builder and
SSRS)
11/2/2020 • 2 minutes to read • Edit Online

In Reporting Services paginated reports, only a non-container item, such as a text box, line, or image, can be
replaced by a new report item. For example, you can drag a table into a text box to replace the text box with a
table.
If the cell contains a container item such as a rectangle, list, table, or matrix, the new item is added to the
containing item instead of replacing it. To replace a container item with a new item, delete the container. Deleting
the container item replaces it with a text box, which you can then replace with another item.
By default, all cells in a table, matrix, or list data region contain a text box.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To change an item within a cell


On the Inser t tab, in the Data Regions or Repor t Items group, click the item that you want to add to the
report, and then click the report. The item is added to the report.

NOTE
The Image Proper ties dialog box opens when you drag an image report item to a cell, where you can set properties
such as the source of the image before the image is added to the cell.

See Also
Images, Text Boxes, Rectangles, and Lines (Report Builder and SSRS)
Tables, Matrices, and Lists (Report Builder and SSRS)
Change Row Height or Column Width (Report
Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

When you set a row height, you are specifying the maximum height for the row in the rendered report.
However, by default, text boxes in the row are set to grow vertically to accommodate their data at run-time, and
this can cause a row to expand beyond the height that you specify. To set a fixed row height, you must change
the text box properties so they do not automatically expand.
When you set a column width, you are specifying the maximum width for the column in the rendered report.
Columns do not automatically adjust horizontally to accommodate text.
If a cell in a row or column contains a rectangle or data region, the minimum height and width of the cell is
determined by the height and width of the contained item. For more information, see Rendering Behaviors
(Report Builder and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To change row height by moving row handles


1. In Design view, click anywhere in the tablix data region to select it. Gray row handles appear on the
outside border of the tablix data region.
2. Hover over the row handle edge that you want to expand. A double-headed arrow appears.
3. Click to grab the edge of the row and move it higher or lower to adjust the row height.
To change row height by setting cell properties
1. In Design view, click a cell in the table row.

2. In the Proper ties pane that displays, modify the Height property, and then click anywhere outside the
Proper ties pane.
To prevent a row from automatically expanding vertically
1. In Design view, click anywhere in the tablix data region to select it. Gray row handles appear on the
outside border of the tablix data region.
2. Click the row handle to select the row.
3. In the Properties pane, set CanGrow to False .

NOTE
If you cannot see the Properties pane, from the View menu, click Proper ties .

To change column width


1. In Design view, click anywhere in the tablix data region to select it. Gray column handles appear on the
outside border of the tablix data region.
2. Hover over the column handle edge that you want to expand. A double-headed arrow appears.
3. Click to grab the edge of the column and move it left or right to adjust the column width.

See Also
Tablix Data Region (Report Builder and SSRS)
Tablix Data Region Cells, Rows, and Columns (Report Builder) and SSRS
Tables (Report Builder and SSRS)
Matrices (Report Builder and SSRS)
Lists (Report Builder and SSRS)
Tables, Matrices, and Lists (Report Builder and SSRS)
Insert or Delete a Column (Report Builder and
SSRS)
11/2/2020 • 2 minutes to read • Edit Online

You can add or delete columns in a tablix data region in a Reporting Services paginated report. The tablix data
region can be a table, a matrix, or a list. The following procedures do not apply to the chart and gauge data
regions.
In a tablix data region, you can add columns that are associated with a group (inside a group) or that are not
associated with a group (outside a group). A column that is inside a group repeats once per unique group value.
For example, a column inside a group based the value in a data column that contains color names, repeats once
per distinct color name. For nested groups, a column can be outside the child group but inside the parent group.
In this case, the row repeats once for each unique value in the parent group.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To select a data region so that the row and column handles appear
In Design view, click the upper left corner of the tablix data region, so that column and row handles
appear above and next to it.
For more information about data region areas, see Tables, Matrices, and Lists (Report Builder and SSRS).

To insert a column in a selected data region


Right-click a column handle where you want to insert a column, click Inser t Column , and then click Left
or Right .
-- or --
Right-click a cell in the data region where you want to insert a row, click Inser t Column , and then click
Left or Right .

To delete a column from a selected data region


Select the column or columns that you want to delete, right-click the handle for one of the columns you
selected, and then click Delete Columns .
-- or --
Right-click a cell in the data region where you want to delete a column, and then click Delete Columns .

To insert a column in a group in a selected data region


Right-click a column group cell in the column group area of a tablix data region where you want to insert
a column, click Inser t Column , and then click Left - Outside Group , Left - Inside Group , Right -
Inside Group , or Right - Outside Group .
A column is added either inside or outside the group represented by the column group cell you clicked
on.

To delete a column from a group in a selected data region


Right-click a column group cell in the column group area of a tablix data region where you want to delete a
column, and then click Delete Columns .

See Also
Understanding Groups (Report Builder and SSRS)
Tablix Data Region (Report Builder and SSRS)
Tables (Report Builder and SSRS)
Matrices (Report Builder and SSRS)
Lists (Report Builder and SSRS)
Tables, Matrices, and Lists (Report Builder and SSRS)
Insert or Delete a Row (Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

You can add or delete rows in a tablix data region in a Reporting Services paginated report. The tablix data
region can be a table, a matrix, or a list. The following procedures do not apply to the chart and gauge data
regions.
In a tablix data region, you can add rows that are associated with a group (inside a group) or that are not
associated with a group (outside a group). A row that is inside a group repeats once per unique group value. For
example, a row inside a group based on the value in a data column that contains color names, repeats once per
distinct color name. For nested groups, a row can be outside the child group but inside the parent group. In this
case, the row repeats once for each unique value in the parent group.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To select a data region so the row and column handles appear


In Design view, click the upper left corner of the tablix data region so that column and row handles
appear above and next to it.
For more information about data region areas, see Tables, Matrices, and Lists (Report Builder and SSRS).

To insert a row in a selected data region


Right-click a row handle where you want to insert a row, click Inser t Row , and then click Above or
Below .
- or -
Right-click a cell in the data region where you want to insert a row, click Inser t Row , and then click
Above or Below .

To delete a row from a selected data region


Select the row or rows that you want to delete, right-click the handle for one of the rows you selected,
and then click Delete Rows .
- or -
Right-click a cell in the data region where you want to delete a row, and then click Delete Rows .

To insert a row in a group in a selected data region


Right-click a row group cell in the row group area of a tablix data region where you want to insert a row,
click Inser t Row , and then click Above - Outside Group , Above - Inside Group , Below - Inside
Group , or Below - Outside Group .
A row is added either inside or outside the group represented by the row group cell you clicked on.
To delete a row from a group in a selected data region
Right-click a row group cell in the row group area of a tablix data region where you want to delete a row, and
then click Delete Rows .

See Also
Tablix Data Region (Report Builder and SSRS)
Understanding Groups (Report Builder and SSRS)
Tables (Report Builder and SSRS)
Matrices (Report Builder and SSRS)
Lists (Report Builder and SSRS)
Tables, Matrices, and Lists (Report Builder and SSRS)
Merge Cells in a Data Region (Report Builder and
SSRS)
11/2/2020 • 2 minutes to read • Edit Online

In a Reporting Services paginated report, you can merge cells in a data region to combine cells, improve data
region appearance, or provide spanning labels for column groups and row groups.
You can only merge cells within each area of a data region: corner, column headers, group definition (or row
headers), and body. You can't merge cells that cross area boundaries. For example, you can't merge a cell in the
data region corner area with a cell in the row group area. Read more about Tables, Matrices, and Lists (Report
Builder and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To merge cells in a data region


1. In the data region on the report design surface, click the first cell to merge. Holding the left mouse button
down, drag vertically or horizontally to select adjacent cells. The selected cells are highlighted.
2. Right-click the selected cells and select Merge Cells . The selected cells are combined into a single cell.
3. Repeat steps 1 and 2 to merge other adjacent cells in a data region.

See Also
Tablix Data Region
Tables (Report Builder and SSRS)
Create a Matrix
Create Invoices and Forms with Lists
Tables, Matrices, and Lists (Report Builder and SSRS)
Create a Recursive Hierarchy Group (Report Builder
and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

In Reporting Services paginated reports, a recursive hierarchy group organizes data from a single report dataset
that includes multiple hierarchical levels, such as the report-to structure for manager-employee relationships in
an organizational hierarchy.
Before you can organize data in a table as a recursive hierarchy group, you must have a single dataset that
contains all the hierarchical data, You must have separate fields for the item to group and for the item to group
by. For example, a dataset where you want to group employees recursively under their manager might contain a
name, an employee name, an employee ID, and a manager ID.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To create a recursive hierarchy group


1. In Design view, add a table, and drag the dataset fields to display. Typically, the field that you want to
show as a hierarchy is in the first column.
2. Right-click anywhere in the table to select it. The Grouping pane displays the details group for the
selected table. In the Row Groups pane, right-click Details , and then click Edit Group . The Group
Proper ties dialog box opens.
3. In Group expressions , click Add . A new row appears in the grid.
4. In the Group on list, type or select the field to group.
5. Click Advanced .
6. In the Recursive Parent list, enter or select the field to group on.
7. Click OK .
Run the report. The report displays the recursive hierarchy group, although there is no indent to show
the hierarchy

To format a recursive hierarchy group with indent levels


1. Click the text box that contains the field to which you want to add indent levels to display a hierarchy
format. The properties for the text box appear in the Properties pane.

NOTE
If you do not see the Properties pane, click Proper ties on the View tab.

2. In the Properties pane, expand the Padding node, click Left , and from the drop-down list, select
<Expression...> .
3. In the Expression pane, type the following expression:
=CStr(2 + (Level()*10)) + "pt"

The Padding properties all require a string in the format nnyy, where nn is a number and yy is the unit of
measure. The example expression builds a string that uses the Level function to increase the size of the
padding based on recursion level. For example, a row that has a level of 1 would result in a padding of (2
+ (1*10))=12pt, and a row that has a level of 3 would result in a padding of (2 + (3*10))=32pt. For
information about the Level function, see Level.
4. Click OK .
Run the report. The report displays a hierarchical view of the grouped data.

See Also
Creating Recursive Hierarchy Groups (Report Builder and SSRS)
Filter, Group, and Sort Data (Report Builder and SSRS)
Aggregate Functions Reference (Report Builder and SSRS)
Tables (Report Builder and SSRS)
Matrices (Report Builder and SSRS)
Lists (Report Builder and SSRS)
Tables, Matrices, and Lists (Report Builder and SSRS)
Add or Delete a Group in a Data Region (Report
Builder and SSRS)
11/2/2020 • 5 minutes to read • Edit Online

In Reporting Services paginated reports, add a group to a data region when you want to organize data by a
specific value or set of expressions, for display and calculations. A group has a name and an expression that
identifies which data from a dataset belongs to the group. For more information about groups, see
Understanding Groups (Report Builder and SSRS).
In a tablix data region, click in the table, matrix, or list to display the Grouping pane. Drag dataset fields to the
Row Group and Column Group pane to create parent or child groups. Right-click an existing group to add an
adjacent group. By definition, the details group is the innermost group and can only be added as a child group.
Right-click an existing group to delete it. Rows and columns on which to display group values are automatically
added for you. For more information, see Tables, Matrices, and Lists (Report Builder and SSRS).
In a Chart data region, click in the chart to display the drop-zones. Create groups by dragging dataset fields to
the category and series drop zones. To add nested groups, add multiple fields to the drop-zone.
Groups are not defined in a gauge by default. The default behavior for the gauge is to aggregate all values in the
specified field into one value that is displayed on the gauge. For more information, see Gauges (Report Builder
and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To add a parent or child row or column group to a tablix data region


1. Drag a field from the Repor t Data pane to the Row Groups pane or the Column Groups pane.

NOTE
If you do not see the Grouping pane, on the View tab, click Grouping .

2. Drop the field above or below the group hierarchy using the guide bar to place the group as a parent
group or a child group to an existing group.
The group is added with a default name, group expression, and sort expression that is based on the field
name.

To add an adjacent row or column group to a tablix data region


1. In the Grouping pane, right-click a group that is a peer to the group that you want to add. Click Add
Group , and then click Adjacent Before or Adjacent After to specify where to add the group. The
Tablix Group dialog box opens.
2. In Name , type a name for the group.
3. In Group expression , type an expression or click the expression button (fx ) to create an expression.
4. Click OK .
A new group is added to the Grouping pane and a row or column on which to display group values is
added to the tablix data region on the design surface.

To add a details group to a tablix data region


1. In the Grouping pane, right-click a group that is the innermost child group, but not the Details group.
Click Add Group , and then click Child Group . The Tablix Group dialog box opens.
2. In Group expression , leave the expression blank. A details group has no expression.
3. Select Show detail data .
4. Click OK .
A new details group is added as a child group in the Grouping pane, and the row handle for the group
you selected in step 1 displays the details group icon. For more information about handles, see Tablix
Data Region Cells, Rows, and Columns (Report Builder) and SSRS.

To edit a row or column group in a tablix data region


1. On the report design surface, click anywhere in the tablix data region to select it. The Grouping pane
displays the row and column groups.
2. Right-click the group, and then click Group Proper ties .
3. In Name , type the name of the group.
4. In Group expressions , type or select a simple expression, or click the Expression (fx ) button to create a
group expression.
5. Click Add to create additional expressions. All expressions you specify are combined using a logical AND
to specify data for this group.
6. (Optional) Click Page Breaks to set page break options.
7. (Optional) Click Sor ting to select or type expressions that specify the sort order for values in the group.
8. (Optional) Click Visibility to select the visibility options for the item.
9. (Optional) Click Filters to set filters for this group.
10. (Optional) Click Variables to define variables scoped to this group and accessible from any child groups.
11. Click OK .

To delete a group from a tablix data region


1. In the Grouping pane, right-click the group, and then click Delete Group .
2. In the Delete Group dialog box, select one of the following options:
Delete group and related rows and columns Choose this option to delete the group
definition and all related rows that display group data. For the details group, if the same row
belongs to both detail and group data, only the detail data rows are deleted.
Delete group only Choose this option to keep the structure of the tablix data region the same
and delete only the group definition.
3. Click OK .
To delete a details group from a tablix data region
1. In the Grouping pane, right-click the details group, and then click Delete Group .
2. In the Delete Group dialog box, select one of the following options:
Delete group and related rows and columns Choose this option to delete the group
definition and all related rows that display group data. For the details group, if the same row
belongs to both detail and group data, only the detail data rows are deleted.
Delete group only Choose this option to keep the structure of the tablix data region the same
and delete only the group definition.
3. Click OK .
The details group is deleted.

NOTE
Verify that after you remove a details row, the expression in each cell specifies an aggregate expression where
appropriate. If necessary, edit the expression to specify aggregate functions as needed.

See Also
Report and Group Variables Collections References (Report Builder and SSRS)
Group Expression Examples (Report Builder and SSRS)
Filter, Group, and Sort Data (Report Builder and SSRS)
Tablix Data Region (Report Builder and SSRS)
Tables (Report Builder and SSRS)
Matrices (Report Builder and SSRS)
Lists (Report Builder and SSRS)
Tables, Matrices, and Lists (Report Builder and SSRS)
Display Headers and Footers with a Group (Report
Builder and SSRS)
5/20/2020 • 3 minutes to read • Edit Online

You can help control whether a static row, such as a group header or footer, renders with dynamic rows that are
associated with a group in a tablix data region.
To repeat all the column headings or row headings on multiple pages, you can set properties for the tablix data
region. For more information, see Display Row and Column Headers on Multiple Pages (Report Builder and
SSRS).
To control the rendering behavior for dynamic rows and columns that are associated with nested groups, or for
static rows and columns that are associated with labels or subtotals, you must set properties for the tablix
member. A tablix member represents a static or dynamic row or column. A static member repeats once. For
example, a grand total row is a static row. A dynamic member repeats once for each group instance. For
example, a row that is associated with a group that has the group expression [Territory] repeats once for each
unique value for territory. For more information about tablix members, see Tablix Data Region Cells, Rows, and
Columns (Report Builder) and SSRS.
You can select a tablix member in the Grouping pane and set the properties KeepWithGroup , KeepTogether ,
and RepeatOnNewPage in the Properties pane. Use KeepWithGroup to help display group headers and
footers on the same page as the group. Use KeepTogether to help display static members with the rows or
columns of a group. Use RepeatOnNewPage to repeat the group header or footer on every page that displays
at least one complete instance of the row group member designated by the KeepWithGroup value.
RepeatOnNewPage is not supported for column group members.

NOTE
KeepWithGroup , KeepTogether , and RepeatOnNewPage are group member properties that you can set by using
the Advanced Mode of the Grouping pane. For more information, see Grouping Pane (Report Builder).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To keep a static row with a set of dynamic rows associated with a row group
1. On the design surface, click anywhere in the tablix data region to select it. The Grouping pane displays the
row and column groups for the data region.
2. On the right side of the Grouping pane, click the down arrow, and then click Advanced Mode . The Row
Groups pane displays the hierarchical static and dynamic members for the row groups hierarchy.
3. Click the static member that corresponds to the row header or footer that you want to keep with the
group rows. The Properties pane displays the Tablix Member properties.
4. In the Properties pane, click KeepWithGroup , and then choose one of the following values from the
drop-down list:
None Select this option to indicate no preference for keeping this member with the members of
the selected row group.
Before Select this option to keep this member with the members of the previous group. You
might use this for group footer rows.
After Select this option to keep this member with the members of the following group. You might
use this for group header rows.
5. (Optional) Preview the report. Where possible, the report renderer keeps this member with the specified
row group members.
To keep a static column with a set of dynamic columns associated with a column group
1. On the design surface, click anywhere in the tablix data region to select it. The Grouping pane displays the
row and column groups for the data region.
2. On the right side of the Grouping pane, click the down arrow, and then click Advanced Mode . The
Column Groups pane displays the hierarchical static and dynamic members for the column group
hierarchy.
3. Click the static member that corresponds to the static column that you want to keep with the group
columns. The Properties pane displays the Tablix Member properties.
4. In the Properties pane, click KeepWithGroup , and then choose one of the following values from the
drop-down list:
None Select this option to indicate no preference for keeping this member with the members of
the selected column group.
Before Select this option to keep this member with the members of the previous group. You
might use this for column labels that display before the specified column group members.
After Select this option to keep this member with the members of the following group. You might
use this for column totals that display after the specified column group members.
5. (Optional) Preview the report. Where possible, the report renderer keeps this member with the specified
column group members.

See Also
Tablix Data Region Cells, Rows, and Columns (Report Builder) and SSRS
Create a Stepped Report (Report Builder and SSRS)
3/31/2021 • 4 minutes to read • Edit Online

A stepped report is a type of Reporting Services paginated report that shows detail rows or child groups
indented under a parent group in the same column, as shown in the example below:

Traditional table reports place the parent group in an adjacent column on the report. The new tablix data region
enables you to add a group and detail rows or child groups to the same column. To differentiate the group rows
from the detail or child group rows, you can apply formatting such as font color, or you can indent the detail
rows.
The procedures in this topic show you how to manually create a stepped report, but you can also use the New
Table and Matrix Wizard. It provides the layout for stepped reports, making it easy to create them. After you
complete the wizard, you can further enhance the report.

NOTE
The wizard is available only in Report Builder.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To create a stepped report


1. Create a table report. For example, insert a tablix data region and add fields to the Data row.
2. Add a parent group to your report.
a. Click anywhere in the table to select it. The Grouping pane displays the Details group in the Row
Groups pane.
b. In the Grouping Pane, right-click the Details Group, point to Add Group , and then click Parent
Group .
c. In the Tablix Group dialog box, provide a name for the group and type or select a group
expression from the drop-down list. The drop-down list displays the simple field expressions that
are available in the Report Data pane. For example, [PostalCode] is a simple field expression for the
PostalCode field in a dataset.
d. Select Add group header . This option adds a static row above the group for the group label and
group totals. Likewise, you can select Add group footer to add a static row below the group.
Click OK .
You now have a basic tabular report. When it is rendered, you see one column with the group instance
value, and one or more columns with grouped detail data. The following figure shows what the data
region might look like on the design surface.

The following figure shows how the rendered data region might look when you view the report.

3. For a stepped report, you do not need the first column that shows the group instance. Instead, copy the
value in the group header cell, delete the group column, and paste in the first text box in the group
header row. To remove the group column, right-click the group column or cell, and click Delete
Columns . The following figure shows what the data region might look like on the design surface.

4. To indent the detail rows under the group header row in the same column, change the padding of the
detail data cell.
a. Select the cell with the detail field that you want to indent. The text box properties for that cell
appear in the Properties pane.
b. In the Properties pane, under Alignment , expand the properties for Padding .
c. For Left , type a new padding value, such as .5in . Padding indents the text in the cell by the value
you specify. The default padding is 2 points. Valid values for the Padding properties are zero or a
positive number, followed by a size designator.
Size designators are:

DESIGN ATO R DESC RIP T IO N

in Inches (1 inch = 2.54 centimeters)

cm Centimeters

mm Millimeters
DESIGN ATO R DESC RIP T IO N

pt Points (1 point = 1/72 inch)

pc Picas (1 pica = 12 points)

Your data region will look similar to the following example.

Data Region for Stepped Repor t Layout


On the Home tab Click Run . The report displays the group with indented levels for the child group
values.

To create a stepped report with multiple groups


1. Create a report as described in the previous procedure.
2. Add additional groups to your report.
a. In the Row Groups pane, right-click the group, click Add Group , and then choose the type of
group you want to add.

NOTE
There are several ways to add groups to a data region. For more information, see Add or Delete a Group
in a Data Region (Report Builder and SSRS).

b. In the Tablix Group dialog box, type a name.


c. In Group expression , type an expression or select a dataset field to group on. To create an
expression, click the expression (fx ) button to open the Expression dialog box.
d. Click OK .
3. Change the padding for the cell that displays the group data.

See Also
Page Headers and Footers (Report Builder and SSRS)
Formatting Report Items (Report Builder and SSRS)
Tablix Data Region (Report Builder and SSRS)
Tables (Report Builder and SSRS)
Matrices (Report Builder and SSRS)
Lists (Report Builder and SSRS)
Tables, Matrices, and Lists (Report Builder and SSRS)
Add, Move, or Delete a Table, Matrix, or List
(Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

In a Reporting Services paginated report, a data region displays data from a report dataset. Data regions include
table, matrix, list, chart, and gauge. To nest one data region inside another, add each data region separately, and
then drag the child data region onto the parent data region.
The simplest way to add a table or matrix data region to your report is to run the New Table or New Matrix
Wizard. These wizards will guide you through the process of choosing a connection to a data source, arranging
fields, and choosing the layout and style. The wizards are only available in Report Builder.

To add a table or matrix to a report by using the New Table or New


Matrix Wizard
1. On the Inser t tab, click Table or Matrix , and then click Table Wizard or Matrix Wizard .
2. Follow the steps in the New Table or New Matrix wizard.
3. On the Home tab, click Run to see the rendered report.
4. On the Run tab, click Design to continue working on the report.

To add a data region


1. On the Ribbon , in the Data Regions group, click the data region to add.
2. Click the design surface, and then drag to create a box that is the desired size of the data region.
3. Drag a report dataset field from the Report Data pane onto a data region cell. The data region is now
bound to data from the report dataset.

To select a data region


For a tablix data region, right-click the corner handle. For a chart or gauge data region, click in the data
region.
A selection handle and eight resizing handles appear.
For nested data regions, right-click in the nested data region, click Select , and then select the report item
you want. To verify which report item is selected, use the Properties pane. The name of the selected item
on the design surface appears in the toolbar of the Properties pane.

To move a data region


To move a data region, click the selection handle of the data region and drag it. Use snaplines to align it to
existing report items.
If the ruler is not visible, click the View tab and select the Ruler option.
Alternatively, use the arrow keys to move the selected data region on the design surface.
To delete a data region
Select the data region, right-click in the data region, and then click Delete .

See Also
Tablix Data Region (Report Builder and SSRS)
Tables, Matrices, and Lists (Report Builder and SSRS)
Report Parts (Report Builder and SSRS)
11/2/2020 • 10 minutes to read • Edit Online

Report items such as tables, matrices, charts, and images can be published as report parts. Report parts are
paginated report items that have been published separately to a report server and that can be reused in other
paginated reports. Report parts have an .rsc file extension.
With report parts, work groups can now take advantage of the different strengths and roles of their team
members. For example, if you are responsible for creating charts, you can save your charts as separate parts
that you and your coworkers can reuse in other reports. You can publish report parts on a report server or
SharePoint site integrated with a report server. You can reuse them in multiple reports, and you can update
them on the server.
The report part that you add to your report maintains a relationship to the instance of the report part on the site
or server by means of a unique ID. After you add report parts from a site or server to a report, you can modify
them, independent of the original report part on the site or server. You can accept updates that others have
made to the report part on the site or server, and you can save the modified report part back to the site or
server, either adding a new report part or writing over the original, if you have sufficient permissions.

Life Cycle of a Report Part

1. Person A creates a report with a chart that depends on an embedded dataset.


2. Person A chooses to publish the chart to the report server. Report Builder assigns a unique ID to the
published chart. Person A does not choose to share the dataset, so the dataset remains embedded in the
chart.
3. Person B creates a blank report, searches the Report Part Gallery, finds the chart, and adds it to the report
. The chart is now part of Person B's report, along with the embedded dataset. Person B can modify the
instances of the chart and dataset that are in the report. This will have no effect on the instances of the
chart and dataset on the report server, nor will it break the relationship between the instances in the
report and on the report server.

4. Person C adds the chart to a report and changes this chart in the report from a bar to a pie chart.
5. Person C has permissions to overwrite the chart on the server and does so, republishing it to the server.
This updates the published copy of the chart on the server. Person C does not choose to share the dataset
either, so it remains embedded in the chart.
6. Person B accepts the updated chart from the server. This overwrites the changes that Person B had made
to the chart in Person B's report.

Publishing Report Parts


When you publish a report part, Report Builder assigns it a unique ID, which is distinct from the report part
name. Report Builder maintains that ID, no matter what else you change about the report part. The ID links the
original report item in your report to the report part. When other report authors reuse the report part, the ID
also links the report part in their report to the report part on the report server.
These are the report items you can publish as report parts:
Charts
Gauges
Images
Maps
Parameters
Rectangles
Tables
Matrices
Lists
When you publish a report item that displays data, such as a table, matrix, or chart, the dataset that the report
item depends on is saved with it, as a dataset embedded in it. You can also save the dataset separately, as a
shared dataset that you and others can use as a basis for other report parts. For more information, see Report
Parts and Datasets in Report Builder.
Some report parts can contain other report items. For example, a table can contain a chart, and a rectangle can
contain a matrix and a chart. When you publish a report item that contains other report items, they are saved as
a unit. The other report items are saved embedded in the container report part. You cannot update them
separately, and you cannot save the items in the container as separate report parts.
For more information on publishing report parts, see Publish and Republish Report Parts (Report Builder and
SSRS).
Modifying Report Part Metadata
You can publish report parts with default settings to a default location, or you can save each report part to a
different location, and modify the metadata, such as the title and description.
It is a good idea to give the report part a clear name and description when you publish it to help people identify
it when searching. You could end up with a lot of report parts with similar names on your site or server.
Consider using naming conventions to illustrate relationships between report parts and their dependent items.
Also, consider saving shared data sources, shared datasets, and the report parts that depend on them in the
same folder.
You can also edit the description in the Properties pane.

Reusing Report Parts


The easiest way to create a report is to add an existing report part, like a table or chart, to your report from the
Report Part Gallery. After you add it to your report, you can modify it as much as you need, or accept updates
from the server. Changing the report item in your report will not affect the instance of the report part published
on the site or server, nor will it break the relationship between the instance in the report and on the site or
server. If you have sufficient permissions, you can save the updated copy back to the site or server. If someone
else modifies the copy on the site or server, you can decide to keep your copy as it is, or you can update it to be
like the copy on the site or server.
Searching for Report Parts
You look for report parts to add to your report in the Report Part Gallery. You can filter the report parts by all or
part of the name of the part, who created it, who last modified it, when it was last modified, where it's stored, or
what type of report part it is. For example, you could search for all charts created last week by one of your
coworkers.
You can view the search results either as thumbnails or as a list, and sort the search results by name, created and
modified dates, and creator. For more information, see Browse for Report Parts and Set a Default Folder (Report
Builder and SSRS).
What Comes with a Report Part
When you add a report part to your report, you are also adding everything it must have to work. For example,
any object that displays data is dependent on a dataset - a query and a connection to a data source. It may also
have one or more parameters. All of the items it is dependent on are its dependencies, and all of them, or
pointers to them, are included with the report part when you add it to your report. The dataset and parameters
are listed in the Report Data pane of your report.
The dataset for the report part may be embedded in the report part, or it may be a separate, shared dataset that
the report part points to. If it is embedded in the report part, you may be able to modify it. If it is a shared
dataset, it is a separate object that you would need permissions for. For more information about shared and
embedded datasets, see Report Datasets (SSRS).
Resolving Naming Conflicts
When you add a report part, Report Builder fixes any name conflicts. For example, if you have a Chart1 in your
report already and you add a report part called Chart1, Report Builder automatically renames the new report
part Chart2. If you have a Dataset1 in your report already, and you add a report part that refers to a different
dataset that is also called Dataset1, Report Builder renames the new dataset Dataset2 and updates the
references.
Adding More Than One Report Part
You can add an unlimited number of report parts to your report. However, you can only add one report part at a
time. You can even add multiple instances of one report part to the same report. They will all have unique
names, but will all be instances of the same report part on the server and have the same unique ID.
When you add another report part that uses a dataset identical to a dataset already in your report, the wizard
does not add another version of that dataset to your report; it redirects the references in the report part to go to
the existing dataset. For more information, see Report Parts and Datasets in Report Builder.

Updating Report Parts with Changes from the Server


Every time you open a report, Report Builder checks to see if the server instances of report parts in that report
have been updated on the server. It also checks for changes in the report parts' dependent items, such as the
dataset and parameters. If any published report parts or their dependencies have been updated on the server,
an information bar in your report displays the number that have been updated. You can choose to view and
accept or reject the updates, or dismiss the information bar. If you choose to view the updates, you see a
thumbnail of the report part, who last modified it, and when. Then you can accept any or all of the updated
items.
NOTE
You can disable the information bar and not be informed if a report part has changed. You set this option when you add
the report part to your report. Even if you have disabled the information bar, you can still check for updates.

Report Builder checks for differences between the date the report part was last updated on the server and the
date when you last synchronized the report part with the server. It does not check the date that you modified the
report part in your report. Thus, the report part in your report and the report part on the server could be quite
different, but when Report Builder checks for updates, it will not find any.
Accepting Updates
When you accept an update for a report part, it completely replaces the copy of the report part already in your
report. You cannot combine features of the report part in the report with features of the published report part
on the server. However, if you have changed one of the report part's dependencies, such as an embedded
dataset, Report Builder does not copy over the dependency already in your report. It downloads a new copy of
the dependency, and updates the report part to point to the new copy.
Reverting to a Previous Version of a Report Part
If you have changed a version of a report part in your report and decide you want to replace it with the version
that is on the server, you cannot use the Update dialog box to do that. Updating is only for report parts that
have changed on the server since you downloaded them.
To revert to the version on the server, just delete the version you have in your report and add it again.

Updating Report Parts Already on the Server


You can choose to update an existing report part on the server, or to publish it as a new report part without
replacing the existing one. When you update the report part on the server, it does not automatically modify
copies of the report part in other reports. If other report authors have added that report part to a report, they
are informed of the change the next time they open that report. They can choose to accept your changes or not.
If you choose to publish it as a new report part, Report Builder gives it a new unique ID, and it no longer links to
the original report part.
If the dataset is embedded in the report part, then every time you publish the report part, the dataset will be
displayed in the Publish Repor t Par ts dialog box. Shared datasets are not displayed in the Publish Repor t
Par ts dialog box.

Working with Report Parts in Report Designer


Report parts work a little differently in Report Designer in SQL ServerSQL Server Data Tools (SSDT). In Report
Designer, publishing is one-way: you can publish a report part from Report Designer, but you cannot reuse an
existing report part in Report Designer. For more information, see Report Parts in Report Designer (SSRS).

How-to Topics
Publish and Republish Report Parts (Report Builder and SSRS)
Browse for Report Parts and Set a Default Folder (Report Builder and SSRS)

See Also
Report Parts and Datasets in Report Builder
Managing Report Parts
Publish and Republish Report Parts (Report Builder
and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

Report parts are paginated report items that have been published separately to a report server and that can be
reused in other paginated reports. You can publish a report part with default settings in a default location, or
you can edit report part metadata such as name and description, and save it somewhere else on a report server.
You can also save it to a SharePoint site that is integrated with a report server if you have the correct
permissions.
You can publish just the report part, with the dataset that it depends on embedded in it, or you can publish the
dataset separately. If you publish the dataset separately, it becomes a shared dataset, and the report part links to
it. For more information, see Report Parts and Datasets in Report Builder.
You can republish an existing report part. If you have permissions, you can save over the original instance of the
report part on the server, even if you didn't create it. You can also publish it as a new report part and save it
either in the same or a different location.

To publish a report part


1. On the Report Builder menu, click Publish Repor t Par ts .
If you are not connected to a report server, you will be prompted to connect. If you cannot connect to a
report server, you cannot publish report parts.
2. To save your report parts with default settings to the default location, click Publish all repor t par ts
with default settings .
Otherwise, click Review and modify repor t par ts before publishing .
3. Edit the report part name and description: Double-click the name to edit it and click in the Description
field to add a description.

NOTE
It is a good idea to give the report part name and description, to help people identify it when searching. The
maximum length for the name of a report part is 260 characters for the entire path, including the names of the
folders on the server, followed by the actual name of the report part.

4. To save your report part to a folder other than the default, click the Browse button.
5. When you have set the options for all the report parts in the report, click Publish .
After you publish the report parts, the dialog box shows which were successfully published and which
were not. You can view details in the Publish Repor t Par ts dialog box for the report parts that failed to
publish.
6. Click Close .

To republish a report part


1. Follow the previous procedure for publishing a report part.
2. In the Publish Repor t Par ts dialog box, if you click Publish as a New Copy of the Repor t Par t ,
Report Builder will not save over the existing report part on the server, but will create another report part
instead.

NOTE
If you publish it as a new report part, it will have a new unique ID. It will no longer receive updates if the original report
part changes.

See Also
Report Parts (Report Builder and SSRS)
Report Parts and Datasets in Report Builder
Browse for Report Parts and Set a Default Folder (Report Builder and SSRS)
Browse for Report Parts and Set a Default Folder
(Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

The easiest way to create a Reporting Services paginated report is to add existing report parts, such as tables
and charts, to your report from the Report Part Gallery. When you add a report part to your report, you are also
adding everything it must have to work. For example, any report part that displays data depends on a dataset,
that is, a query and a connection to a data source. After you add the report part to your report, you can modify it
as much as you need.
You can set a default folder to publish report parts to the report server or SharePoint site integrated with a
report server.
For more information, see Report Parts (Report Builder and SSRS).

To browse for report parts


1. On the Inser t menu, click Repor t Par ts .
If you are not already connected, click Connect to a repor t ser ver , and enter the name.

NOTE
You must be connected to a report server to browse for report parts.

2. You can narrow your search by specifying details about the report part. Type all or part of the name and
description in the Search box, or click Add Criteria and add values for any or all of these fields:
Created by
Date created
Date last modified
Last modified by
Server folder
Type
For example, to find an image, click Add Criteria , and then click Type . In the dropdown box, select the
Image check box, press ENTER, and then click the Search magnifying glass.

NOTE
For the Created by and Last modified by values, search for the person's user name as it is represented on the
report server.

To set a default folder for report parts


1. Click Repor t Builder , and then click Options .
2. In the Options dialog box, on the Settings tab, type a folder name in the Publish repor t par ts to this
folder by default textbox.
Report Builder will create this folder if you have permissions to create folders on the report server and the
folder does not exist yet.
You do not need to restart Report Builder for this setting to take effect.

See Also
Report Parts (Report Builder and SSRS)
Report Parts and Datasets in Report Builder
Publish and Republish Report Parts (Report Builder and SSRS)
Report Parts in Report Designer (SSRS)
11/2/2020 • 4 minutes to read • Edit Online

In Report Designer, after you create tables, charts, and other paginated report items in a project, you can publish
them as report parts to a report server or SharePoint site integrated with a report server so that you and others
can reuse them in other reports.
In general, report parts function the same way in Report Designer and in Report Builder. To read about basic
functionality, see Report Parts (Report Builder and SSRS).
There are fundamental differences in the way report parts work in Report Designer. A main difference is the
work flow. Report Builder enables collaborative authoring: I create a report part and publish it. You can reuse,
modify, and republish it. In Report Designer, publishing is one-way: I can publish a report part from Report
Designer, and you can reuse it. But I cannot reuse an existing report part in a report in Report Designer. This
topic elaborates on these differences, after a quick overview of report parts.

Life Cycle of Report Part Publishing

1. In Report Designer, Person A creates a project that contains a report with a chart that depends on an
embedded dataset.
2. Person A flags the chart with its embedded dataset for publishing. Report Designer assigns it a unique ID.
Person A then deploys the report to the report server. Report Designer publishes the chart.
3. Person B creates a blank report in Report Builder and adds the chart to it. The chart is now part of Person
B's report, along with the embedded dataset. Person B can modify the instances of the chart and dataset
that are in the report. This will have no effect on the instances of the chart and dataset on the report
server, nor will it break the relationship between the instances in the report and on the report server.

4. In Report Designer, Person A modifies the chart in the original report.


5. Person A redeploys the report, which republishes the chart to the server, thus updating the chart on the
server.
6. In Report Builder, Person B accepts the updated chart from the server. This overwrites the changes that
Person B had made to the chart in Person B's report.

Publishing Report Parts


When you publish a report part, Report Designer assigns it a unique ID. From then on, it maintains that ID, no
matter what else you change about it. The ID links the original report item in your report to the report part.
When other report authors reuse the report part in Report Builder, the ID also links the report part in their
report to the report part.
These are the report items you can publish as report parts:
Charts
Gauges
Images and embedded images
Maps
Parameters
Rectangles
Tables
Matrices
Lists
If you are publishing a report part that displays data, such as a table, matrix, or chart, you can base it on a
shared dataset; otherwise, when you publish the report part, the dataset that it depends on is saved as an
embedded dataset. Embedded datasets can be based on embedded data sources, but credentials are not stored
in embedded data sources. Thus, if your report part depends on an embedded dataset that uses an embedded
data source, anyone who reuses this report part will need to provide the credentials for the embedded data
source. To avoid this, base your embedded and shared datasets on shared data sources with stored credentials.
For more information, see Report Parts and Datasets in Report Builder.
Publishing a report part in Report Designer is a two-step process:
1. Flag the report items that you want to publish in the Publish Repor t Par ts dialog box.
2. Deploy the report.
When you deploy the report, the report part is published to a SharePoint site or report server, and others can
reuse it. To publish a report part, you must have a connection to and sufficient permissions on a report server
when you deploy the report.

Reusing Report Parts


Unlike in Report Builder, you cannot search for and reuse a report part in a project other than the one in which it
was created.
Report authors working in Report Builder can search for and reuse report parts that you publish in reports that
they create.

Republishing Report Parts


In Report Designer, you should update an existing report part from within the report in which you created it. In
Report Builder, report authors can reuse the report part, and publish it as a new report part without replacing
the report part that you published. If they have sufficient permissions they can also update the report part that
you published. Anyone with sufficient permissions for a folder on a site or server can update the report parts
stored there. The last update overwrites previous updates.
You can modify and then republish the report part to the site or server. Report Builder report authors who have
added that report part to a report are informed of the change the next time they open that report. They can
choose to accept your changes or not.
You can also choose to publish as new a report that you have already published. In the Publish Report Parts
dialog box, click the Publish as a new report part. This new report part has a new unique ID and no relationship
to the old report part.

Next steps
Managing Report Parts
More questions? Try asking the Reporting Services forum
Managing Report Parts
11/2/2020 • 6 minutes to read • Edit Online

Report parts can be reused in paginated reports, by multiple users and in multiple reports. Users can search for
report parts on the server and add them to a report. Users can also be informed of updates to the report part
on the server, and republish new versions of a report part. Those report authoring actions can be affected by
and controlled by reporting services security permissions. This topic reviews report part properties and
behavior after they are on the server.

Managing Report Parts


To manage report parts, you can use the Reporting Services web portal for a report server in native mode, or
application pages for a report server in SharePoint integrated mode.
Server-side interaction and search
Report parts can be published to a report server in either native mode or SharePoint integrated mode. Users
can use the report part gallery feature in a report authoring application such as Microsoft SQL Server Report
Builder to find and add report parts to their reports. When a user searches for a report part, the search looks at
the report server catalog regardless of which mode the server was installed for.
When report parts are published from a report authoring application such as Report Builder to a report server
in SharePoint integrated mode, the report server catalog is also updated, and searches from the gallery to
accurately reflect the new or update report part.
Directly uploading report parts to a SharePoint folder
If a report part is uploaded directly to a SharePoint document folder instead of being published from a report
authoring application, the report server catalog is not updated. Searches from the report part gallery will not
find the uploaded report part. To help keep your SharePoint folders and report server catalog synchronized, you
can activate the Reporting Services file sync feature on the SharePoint server. For more information, see Activate
the Report Server File Sync Feature in SharePoint Central Administration.
The files can also be synchronized by calling some of the reporting services management APIs such as
GetProperties and SetProperties.
Organizing and moving report parts
You should consider and plan ahead for how your team will use and organize report parts, shared datasets, and
shared data sources. Although you can move them at a later time, there can be problems.
Native mode report server
If you move a report part on a native mode report server to any other folder on the same server, it does not
affect the ability of report authoring applications to search for or download updates of the report part. This is
because the server relies on the unique ComponentID. However, if the report part is moved to a folder that a
user does not have permissions to, their searches will not find the report part, and their reports will not be
notified when there are updates to the report part.
Report server in SharePoint integrated mode
Moving report parts to a different document library or folder has the same effect as uploading them directly to
a SharePoint server: the report server catalog will not be synchronized. To avoid this, activate the Report Server
File Sync Feature on the SharePoint server.
The exception is subfolders. The search will always search subfolders, so if you manually move a report part to a
subfolder, a search from the report gallery will find the report part. it will still be found in a search from the
report part gallery.
Report server catalog properties
The following table describes how existing report server catalog fields relate to a report part, and to new fields
that are added to the catalog for report parts. These are exposed in the Reporting Services web portal and
SharePoint libraries, and in report authoring applications such as Report Builder.
(*) indicates it is new for this release.

REP O RT PA RT

P RO P ERT Y DESC RIP T IO N GA L L ERY SEA RC H C RIT ERIA

Name This is one of the criteria a user can Yes


search for in the Report Part Gallery.

Description You might want to organize report Yes


part names in a way that will make it
easier for users to find in the gallery.
For example, you can search for the
description starting with "Sales>>" to
find all report parts that involve sales
related data and presentation.

CreatedBy The ID of the user that added the Yes


report part to the report server
database. The exact format depends
on the authentication method. For
example, some authentication
methods result in showing the full
domain\user name in the CreatedBy
and ModifiedBy fields.

CreationDate The date the report part was originally Yes


created.

This is one of the criteria a user can


search for in the Report Part Gallery.

ModifiedBy ModifiedBy is the ID of the user who Yes


last modified the report part.

ModifiedDate The date the report part was last Yes


modified on the server.

This field is used as part of the logic to


determine when there are server-side
updates to a report part. For more
information, see the description of the
ComponentID later in this table.

SubType (*) SubType is a string that indicates the Yes


kind of report part to search for, such
as "Tablix" or "Chart".
REP O RT PA RT

P RO P ERT Y DESC RIP T IO N GA L L ERY SEA RC H C RIT ERIA

ComponentID (*) ComponentID is a unique identifier for N0


the report part. This is a new field
added to the catalog, and is visible on
both the server-side and report
authoring applications such as Report
Builder.

This field is used by client applications


when checking the server for updates
of a report part. The client application
searches the server for ComponentIDs
that are in the current client-side
report. When there is a ComponentID
match, the ModifiedDate is then
compared to the client side SyncDate
of the report item.

Controlling access to report parts


The following tables describe the default role assignments and how they let you perform various operations.
The role assignment names are different depending on the type of report server that is being used.
Server in Native mode
A C T IO N S RO L ES

Add, delete, edit item properties, manage security, and Content Manager
download report parts
My Reports

Add, delete, and download report parts Publisher

Search for and re-use Browser

Report Builder

Server in SharePoint integrated mode


A C T IO N S RO L E

Add, delete, edit item properties, manage security, and Full Control
download report parts

Add, delete, edit item properties, and download report parts Design

Contribute

Search for and re-use Read

View Only

Security considerations
When report part definitions are re-used in a report, they are copied into the report definition in their
entirety, along with the identifying ComponentID. If a report part is updated on the server, users can
choose to download the updated report parts to their report. The updates are also complete copies of the
report part, replacing the existing version of the report part that was in their report.

IMPORTANT
In each of these steps, ensure that the report parts are being reused in reports from trusted locations and users.

Report parts use the same permission policies as the existing "Resource" item type. Within a folder, there
is no differentiation between traditional resource items and report parts from a security inheritance
perspective. The report part will inherit the same permission policy as the images in the same folder.
When this distinction is needed, item level security can be configured for the desired report parts. Or, you
can put report parts should be in separate folders that have the correct permissions configured.

See Also
Report Parts and Datasets in Report Builder
Report Server Content Management (SSRS Native Mode)
Report Parts in Report Designer (SSRS)
Charts (Report Builder and SSRS)
11/2/2020 • 8 minutes to read • Edit Online

Read about using chart data regions to help readers of your Reporting Services paginated reports understand
large volumes of aggregated data at a glance.
The more time you spend carefully preparing and understanding your data before you create a chart, the easier
it will be to design your charts quickly and efficiently. For help choosing which chart to use, see Chart Types To
start experimenting with charts immediately, see the bar, column, sparkline, and pie chart tutorials in Report
Builder Tutorials.
The following illustration shows many of the different elements used in the chart.

You can publish charts separately from a report as report parts. For more information, see Report Parts.

Designing a Chart
After you add a chart data region to the design surface, you can drag report dataset fields for numeric and non-
numeric data to the Chart Data pane of the chart. When you click the chart on the design surface, the Chart Data
pane appears, with three areas-Category Groups, Series Groups, and Values. If the report has a shared or
embedded dataset, the fields in the dataset appear in the Report Data pane. Drag fields from the dataset into the
appropriate area of the Chart Data pane. By default, when a field is added to one of the areas of the chart,
Reporting Services calculates an aggregate for the field. You can also use series grouping to dynamically
generate series. A chart is organized like a matrix.
NOTE
The data in the chart at design time is different from the data in the chart when the report is processed. It is not your real
data. It is generated data that has been added so that you can design your chart with an idea of what the chart will look
like.

How a Chart is like a Matrix


One way to think about how charts work is to compare them to matrices.

Conceptually, their organization is identical:


The Columns group in the matrix is like the Category Groups area in the chart.
The Rows group in the matrix is like the Series Groups area in the chart.
The Data area in the matrix is like the Values area in the chart.

Adding Data to the Chart


Suppose you have a report that shows Sales by Name. You drop the Full Name field to the Category Groups
area and the Sales field to the Values area.
When you add the Sales field to the Values area, the text of the data field appears in the legend, and the data
from this numeric field will be aggregated into one value. By default, the value is aggregated using the built-in
function Sum. The Chart Data pane will contain a simple expression for your field. In our example, [Sum(Sales)]
will appear for the field expression =Sum(Fields!Sales.Value) . If no groups are specified, the chart will only
show one data point. In order to show multiple data points, you must group your data by adding a grouping
field. When you add the Name field to the Category Groups area, a grouping field of the same name as the
name of the field is automatically added to the chart. When fields that define the values along the x and y axes
are added, the chart has enough information to plot the data correctly.
When the Series Groups area is left empty, the number of series is fixed at design time. In this example, Sales is
the only series that appears on the chart.

Category and Series Groups in a Chart


A chart supports nested category and series groups. Charts do not display detail data. Add groups to a chart by
dragging dataset fields to the category and series drop zones for a selected chart.
Shape charts such as pie charts support category groups and nested category groups. Other charts such as bar
charts support category groups and series groups. You can nest groups, but make sure that the numbers of
categories or series do not obscure the presentation of information in the chart.
Adding Series Grouping to a Chart
If you add a field to the Series Groups area, the number of series depends on the data that is contained in that
field. In our earlier example, suppose you add a Year field to the Series Groups area. The number of values in the
Year field will determine how many series will appear on the chart. If the Year field contains the years 2004,
2005, and 2006, the chart will display three series for every field in the Values area.

Dataset Considerations Before Creating a Chart


Charts provide a summary view of your data. However, with large datasets, the information on a chart can
become obscured or unreadable. Missing or null data points, data types ill-suited to the type of chart, and
advanced applications such as combining charts with tables can all affect the readability of a chart. Before
designing a chart, you should carefully prepare and understand your data so that you can design your charts
quickly and efficiently.
You can have as many charts in your report as you want. A chart, like any other data region such as a matrix or
table, is bound to a single dataset. If you want to display multiple datasets on the same chart, you can create an
additional dataset that uses a JOIN or UNION statement in your SQL query before adding data to the chart.
Consider pre-aggregating data in the dataset query if detail data is not necessary or useful. To display each data
point more clearly, reduce the number of categories in your dataset. You can filter the dataset or add a condition
to your query that reduces the number of rows returned.

Best Practices When Displaying Data in a Chart


Charts are most effective when the number of elements that are displayed presents a clear image of the
underlying information. Some charts, like scatter graphs, benefit from numerous data points, while others, like
pie charts, are more effective with fewer data points. Choose a chart type carefully based on the values in your
dataset and how you want this information to be shown. For more information, see Chart Types (Report Builder
and SSRS).
There are several ways you can consolidate data on a chart:
When using a pie chart, collect small slices into one slice called "Other." This will reduce the number of
slices on your pie chart. For more information, see Collect Small Slices on a Pie Chart (Report Builder and
SSRS).
Avoid using data point labels when there are numerous data points. Data point labels are most effective
when there are only a few points on the chart.
Filter unwanted or irrelevant data. This helps you highlight the key data that you are trying to show on
the chart. To filter data points in a chart, set a filter on a category group or a series group. By default, the
chart uses the built-in function Sum to aggregate values that belong to the same group into an individual
data point in the series. If you change the aggregate function of a series, you must also change the
aggregate function in the filter expression. For more information, see Filter, Group, and Sort Data (Report
Builder and SSRS).
To display ratio data in a table or matrix template, consider using a linear gauge instead of a bar graph.
Gauges are better suited for showing a single value inside a cell. For more information, see Nested Data
Regions (Report Builder and SSRS).

Aggregating Values from a Data Field on the Chart


By default, when a field is added to the Values area of the chart, Reporting Services calculates an aggregate for
the field. If you drag a field onto the chart without dropping the field into a specific area, the chart will determine
whether this field belongs on the category (x) axis or value (y) axis based on the data type of the field. Numeric
fields that are dropped in the Values area are aggregated using the SUM function. If the data type of your value
field is String in the Values area, the chart cannot display a numeric value, even if there are numbers in the fields,
so the chart displays the COUNT function. To avoid this behavior, make sure that the fields that you use have
numeric data types, instead of Strings that contain formatted numbers. You can use a Visual Basic expression to
convert String values to a numeric data type using the CDbl or CInt constant. For example, the following
complex expression converts a field that is named MyField that contains numeric values that are formatted as
Strings.
=Sum(CDbl(Fields!MyField.Value))

For more information about aggregate expressions, see Aggregate Functions Reference (Report Builder and
SSRS).

In This Section
Add a Chart to a Report (Report Builder and SSRS)
Describes the first steps in adding a chart to your report.
Chart Types (Report Builder and SSRS)
Describes all of the chart types and sub-types available in Reporting Services, including considerations and best
practices for using various chart types.
Formatting a Chart (Report Builder and SSRS)
Use formatting to improve the overall appearance and highlight key data points of your chart.
Empty and Null Data Points in Charts (Report Builder and SSRS)
Describes considerations when working with charts based on fields with empty or null values.
Displaying a Series with Multiple Data Ranges on a Chart (Report Builder and SSRS)
Describes how to add scale breaks to a series that contains more than one range of data.
Multiple Series on a Chart (Report Builder and SSRS)
Describes several methods of showing multiple series on the same chart, including combining chart types, using
the secondary axis, specifying different chart types and using multiple chart areas.
Linking Multiple Data Regions to the Same Dataset (Report Builder and SSRS)
Provide different views of data from the same report dataset.
Add or Delete a Group in a Chart (Report Builder and SSRS)
Describes adding groups and nested groups to a chart.
Add a Moving Average to a Chart (Report Builder and SSRS)
Describes using the Moving Average formula to calculate the average of the data in your series.
Troubleshoot Charts (Report Builder and SSRS)
Describes tips for working with charts.

See Also
Images, Text Boxes, Rectangles, and Lines (Report Builder and SSRS)
Interactive Sort, Document Maps, and Links (Report Builder and SSRS)
Nested Data Regions (Report Builder and SSRS)
Tutorial: Add a Column Chart to Your Report (Report Builder)
Tutorial: Add a Pie Chart to Your Report (Report Builder)
Tutorial: Add a Bar Chart to Your Report (Report Builder)
Add a Chart to a Report (Report Builder and SSRS)
3/5/2021 • 2 minutes to read • Edit Online

When you want to summarize data in a visual format in a Reporting Services paginated report, use a Chart data
region. It is important to choose an appropriate chart type for the type of data that you are presenting. This
affects how well the data can be interpreted when put in chart form. For more information, see Charts (Report
Builder and SSRS).
The simplest way to add a Chart data region to your report is to run the New Chart Wizard. The wizard offers
column, line, pie, bar, and area charts. For these and other chart types, you can also add a chart manually.
After you add a Chart data region to the design surface, you can drag report dataset fields for numeric and non-
numeric data to the Chart Data pane of the chart. Click the chart to display the Chart Data pane with its three
areas: Series Groups, Category Groups, and Values.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To add a chart to a report by using the Chart Wizard


1. NOTE
The Chart Wizard is only available in Report Builder.

On the Inser t tab, click Char t , and then click Char t Wizard .
2. Follow the steps in the New Chart wizard.
3. On the Home tab, click Run to see the rendered report.
4. On the Run tab, click Design to continue working on the report.

To add a chart to a report


1. Create a report and define a dataset. For more information, see Report Datasets (SSRS).
2. On the Inser t tab, click Char t , and then click Inser t Char t .
3. Click on the design surface where you want the upper-left corner of the chart, and then drag to where
you want the lower-right corner of the chart.
The Select Char t Type dialog box appears.
4. Select the type of chart you want to add. Click OK .
5. Click the chart to display the Char t Data pane.
6. Add one or more fields to the Values area. This information will be plotted on the value axis.
7. Add a grouping field to the Categor y Groups area. When you add this field to the Categor y Groups
area, a grouping field is automatically created for you. Each group represents a data point in your series.
8. To summarize the data by category, right-click the data field and click Series Proper ties . In the
Categor y box, select the category field from the drop-down list. Click OK .
9. On the Home tab, click Run to see the rendered report.
10. On the Run tab, click Design to continue working on the report.
On charts with axes, such as bar and column charts, the category axis may not display all the category labels.
For more information about how to change the axis labels, see Specify an Axis Interval (Report Builder and
SSRS).

See Also
Charts (Report Builder and SSRS)
Chart Types (Report Builder and SSRS)
Empty and Null Data Points in Charts (Report Builder and SSRS)
Tutorial: Adding a Bar Chart to Your Report (Report Builder)
Tutorial: Adding a Bar Chart to a Report (Report Designer)
Tutorial: Adding a Pie Chart to Your Report (Report Builder)
Tutorial: Adding a Pie Chart to a Report (Report Designer)
Chart Types (Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

It is important to choose an appropriate chart type for the type of data that you are presenting. This will
determine how well the data can be interpreted when put in chart form. For example, if your dataset contains a
lot of data points relative to the size of the chart, it may be better presented using an area, line, or scatter chart.
For discussion on how to prepare your data depending on the chart type selected, see Charts (Report Builder
and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Choosing a Chart Type


Each chart type has unique characteristics to help you visualize your dataset. You can use any chart type to
display your data, but your data will be easier to read when you use a chart type that is suitable to your data,
based on what you are trying to show in your report. The following table summarizes chart features that affect
the suitability of a chart to your particular dataset.
You can change the chart type after you have created it. For more information, see Change a Chart Type (Report
Builder and SSRS).
Examples of many of these types of charts are available as sample reports. For more information about
downloading sample reports, see Report Builder and Report Designer sample reports.

DISP L AY STO C K DISP L AY L IN EA R DISP L AY M ULT I-


C H A RT T Y P E DISP L AY RAT IO DATA DATA DATA VA L UE DATA

Area Charts (Report


Builder and SSRS)

Bar Charts (Report


Builder and SSRS)

Data Bars

Column Charts
(Report Builder and
SSRS)

Line Charts (Report


Builder and SSRS)

Pie Charts (Report


Builder and SSRS)

Polar Charts (Report


Builder and SSRS)
DISP L AY STO C K DISP L AY L IN EA R DISP L AY M ULT I-
C H A RT T Y P E DISP L AY RAT IO DATA DATA DATA VA L UE DATA

Range Charts (Report


Builder and SSRS)

Scatter Charts
(Report Builder and
SSRS)

Shape Charts (Report


Builder and SSRS)

Sparklines

Stock Charts (Report


Builder and SSRS)

Next steps
Charts
Empty and Null Data Points in Charts
Add a Chart to a Report
More questions? Try asking the Reporting Services forum
Change a Chart Type (Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

When you first insert a chart into a Reporting Services paginated report, the Select Char t Type dialog
appears. If you cancel this dialog, a Column chart type is added by default.
At any point when designing the report, you can change the chart type to something more suitable to the
report. It is important to select the correct chart type for your data so that it can be interpreted correctly. You
should understand each chart type's characteristics to determine what chart type is best suited for your data. For
more information, see Chart Types (Report Builder and SSRS).
When multiple series are displayed on a chart, you may want to change the chart type of an individual series.
You can only change the chart type of an individual series if the chart type is Area, Column, Line, or Scatter. For
all other chart types, all series in your chart will be changed to the selected chart type.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To change the chart type


1. In Design view, right-click the chart and then click Change Char t Type .

NOTE
When there are multiple series on a chart, you must right-click on the series, not the chart, which you want to
change.

2. In the SelectChar t Type dialog box, select a chart type from the list.

See Also
Charts (Report Builder and SSRS)
Gauges (Report Builder and SSRS)
Add a Chart to a Report (Report Builder and SSRS)
Area Charts (Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

An area chart displays a series as a set of points connected by a line, with all the area filled in below the line. For
more information on how to add data to an area chart, see Charts (Report Builder and SSRS).
The following illustration shows an example of a stacked area chart. The data is well suited for display on a
stacked area chart because the chart can display totals for all series as well as the proportion that each series
contributes to the total.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Variations
Stacked area . An area chart where multiple series are stacked vertically. If there is only one series in
your chart, the stacked area chart will display the same as an area chart.
Percent stacked area . An area chart where multiple series are stacked vertically to fit the entire chart
area. If there is only one series in your chart, the stacked area chart will display the same as an area chart.
Smooth area . An area chart where the data points are connected by a smooth line instead of a regular
line. Use a smooth area chart instead of an area chart when you are more concerned with displaying
trends than with displaying the values of individual data points.

Data Considerations for Area Charts


Along with the line chart, the area chart is the only chart type that displays data contiguously. For this
reason, an area chart is commonly used to represent data that occurs over a continuous period of time.
A percent stacked area chart is useful for showing proportional data that occurs over time.
If there is only one series, a stacked area chart will be drawn as an area chart.
In a plain area chart, if the values in multiple series are similar, the areas may overlap, obscuring
important data point values. You can resolve this issue by changing the chart type to a stacked area chart,
which is designed to show multiple series on an area chart.
If your stacked area chart contains gaps, it is possible that your dataset includes empty values, which will
be shown as a vacant section on a stacked area chart. If your dataset includes empty values, consider
inserting empty points on the chart. Adding empty points will fill in the empty areas on the chart with a
different color to indicate null or zero values. For more information, see Add Empty Points to a Chart
(Report Builder and SSRS).
Area chart types are very similar to column and line charts in behavior. If you are making a comparison
between multiple series, consider using a column chart instead. If you are analyzing trends over a period
of time, consider using a line chart.

See Also
Charts (Report Builder and SSRS)
Chart Types (Report Builder and SSRS)
Line Charts (Report Builder and SSRS)
Change a Chart Type (Report Builder and SSRS)
Empty and Null Data Points in Charts (Report Builder and SSRS)
Bar Charts (Report Builder and SSRS)
3/5/2021 • 4 minutes to read • Edit Online

A bar chart displays series as sets of horizontal bars. The plain bar chart is closely related to the column chart,
which displays series as sets of vertical bars, and the range bar chart, which displays series as sets of horizontal
bars with varying beginning and end points.
The bar chart is the only chart type that displays data horizontally. For this reason, it is popular for representing
data that occurs over time, with a finite start and end date. It is also popular for showing categorical information
since the categories can be displayed horizontally. For more information about how to add data to a bar chart,
see Charts (Report Builder and SSRS).
The following illustration shows a bar chart. The bar chart is well suited for this data because all three series
share a common time period, allowing for valid comparisons to be made.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Variations of the Bar Chart


Stacked . A bar chart where multiple series are stacked vertically. If there is only one series in your chart,
the stacked bar chart will display the same as a bar chart.
Percent stacked . A bar chart where multiple series are stacked vertically to fit 100% of the chart area. If
there is only one series in your chart, all the bars will fit to 100% of the chart area.
3D clustered . A bar chart that shows individual series in separate rows on a 3D chart.
3D cylinder . A bar chart that shapes the bars as cylinders on a 3D chart.

Data Considerations for Bar Charts


Bar charts have their axes reversed. The category axis is the vertical axis (or "y-axis") and the value axis is
the horizontal axis (or "x-axis"). This means that in a bar chart, you have more space for category labels to
be displayed along the y-axis as a list that reads from top to bottom.
Bar and column charts are most commonly used to show comparisons between groups. If more than
three series are present on the chart, consider using a stacked bar or column chart. You can also collect
stacked bar or column charts into multiple groups if you have several series on your chart.
A bar chart displays values from left to right, which may be more intuitive when displaying data related
to durations.
If you are looking to add bars to a table or matrix within the report, consider using a linear gauge instead
of a bar chart. The linear gauge is designed to show one value instead of multiple groups, so it is more
flexible for use within a list or table data region. For more information, see Gauges (Report Builder and
SSRS).
You can add special drawing styles to the individual bars on a bar chart to increase its visual impact.
Drawing styles include wedge, emboss, cylinder, and light-to-dark. These effects are designed to improve
the appearance of your 2D chart. If you are using a 3D chart, the drawing styles will still be applied, but
may not have the same effect. For more information about how to add a drawing style to a bar chart, see
Add Bevel, Emboss, and Texture Styles to a Chart (Report Builder and SSRS).
Stacked bar charts place series on top of each other to create one bar stack. You have the option of
separating the stacked bar chart into multiple sets of stacks for each category. The grouped stacked chart
is displayed side-by-side. You can have any number of grouped stacked series in a chart.
When data point labels are shown on a bar chart, the labels are placed on the outside of each bar. This
can cause labels to overlap when the bars take up all of the allotted space within the chart area. You can
change the position of the data point labels displayed for each bar by setting the BarLabelStyle property
in the Properties pane.
If there are a lot of data points in your dataset relative to the size of your chart, the size of the columns or
bars and the spacing between them are reduced. To manually set the width of the columns in a chart,
modify their width, in pixels, by modifying the PointWidth property. By default, this property has a value
of 0.8. When you increase the width of the columns or bars in a chart, the space between each column or
bar decreases.

See Also
Charts (Report Builder and SSRS)
Chart Types (Report Builder and SSRS)
Empty and Null Data Points in Charts (Report Builder and SSRS)
Column Charts (Report Builder and SSRS)
Range Charts (Report Builder and SSRS)
Formatting Series Colors on a Chart (Report Builder and SSRS)
Formatting Axis Labels on a Chart (Report Builder and SSRS)
Formatting the Legend on a Chart (Report Builder and SSRS)
Add Bevel, Emboss, and Texture Styles to a Chart (Report Builder and SSRS)
Tutorial: Adding a Bar Chart to a Report (Report Builder)
Tutorial: Adding a Bar Chart to a Report
Column Charts (Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

A column chart displays a series as a set of vertical bars that are grouped by category. Column charts are useful
for showing data changes over a period of time or for illustrating comparisons among items. The plain column
chart is closely related to the bar chart, which displays series as sets of horizontal bars, and the range column
chart, which displays series as sets of vertical bars with varying beginning and end points. For more
information, see Bar Charts (Report Builder and SSRS) and Range Charts (Report Builder and SSRS).
The column chart is well suited for this data because all three series share a common time period, allowing for
valid comparisons to be made.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Variations of a Column Chart


Stacked . A column chart where multiple series are stacked vertically. If there is only one series in your
chart, the stacked column chart will display the same as a column chart.
Percent stacked . A column chart where multiple series are stacked vertically to fit 100% of the chart
area. If there is only one series in your chart, all the column bars will fit to 100% of the chart area.
3D clustered . A column chart that shows individual series in separate rows on a 3D chart.
3D cylinder . A column chart whose bars are shaped like cylinders on a 3D chart.
Histogram . A column chart which the chart calculates so that its bars are arranged in a normal
distribution.
Pareto . A column chart whose bars are arranged from highest to lowest.

Data Considerations for a Column Chart


Bar and column charts are most commonly used to show comparisons between groups. If more than
three series are present on the chart, consider using a stacked bar or column chart. You can also collect
stacked bar or column charts into multiple groups if you have several series on your chart. For more
information, see Bar Charts (Report Builder and SSRS).
In a column chart, you have less space for category axis labels to display horizontally. If you have longer
category labels, consider using a bar chart or changing the rotation angle of the label.
You can add special drawing styles to the individual bars on a column chart to increase its visual impact.
Drawing styles include wedge, emboss, cylinder and light-to-dark. These effects are designed to improve
the appearance of your 2D chart. If you are using a 3D chart, the drawing styles will still be applied, but
may not have the same effect. For more information about how to add a drawing style to a bar chart, see
Add Bevel, Emboss, and Texture Styles to a Chart (Report Builder and SSRS).
Unique to column charts is the ability to show your chart as a histogram or Pareto chart. To do so, set the
ShowColumnAs property to Histogram or Pareto in the Properties window to true .
See Also
Charts (Report Builder and SSRS)
Chart Types (Report Builder and SSRS)
Bar Charts (Report Builder and SSRS)
Range Charts (Report Builder and SSRS)
Tutorial: Add a Bar Chart to Your Report (Report Builder)
Empty and Null Data Points in Charts (Report Builder and SSRS)
Line Charts (Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

A line chart displays a series as a set of points connected by a single line. Line charts are used to representing
large amounts of data that occur over a continuous period of time. For more information about how to add data
to a line chart, see Charts (Report Builder and SSRS).
The following illustration shows a line chart that contains three series.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Variations
Smooth line . A line chart that uses a curved line instead of a regular line.
Stepped line . A line chart that uses a stepped line instead of a regular line. The stepped line connects
points by using a line that makes it look like steps on a ladder or staircase.
Sparkline char ts . Variations of the line chart that show only the line series in the cell of a table or
matrix. For more information, see Sparklines and Data Bars (Report Builder and SSRS).

Data Considerations for Line Charts


To improve the visual impact of the default line chart, consider changing the width of the series border to
3, and adding a shadow offset of 1. This will create a much bolder line chart. You will need to revert these
properties to their original values if you change the chart type from Line to another type.
If your dataset includes empty values, the line chart will add empty points, in the form of placeholder
lines, in order to maintain continuity on the chart. If you would rather not see these lines, consider
displaying your dataset using a non-contiguous chart type such as a bar or column chart.
A line chart requires at least two points to draw a line. If your dataset has only one data point, the line
chart will display as a single data point marker.
A series that is drawn as a line will not take up much space within a chart area. For this reason, line charts
are frequently combined with other chart types such as column charts. However, you cannot combine a
line chart with bar, polar, pie or shape chart types.
See Also
Bar Charts (Report Builder and SSRS)
Column Charts (Report Builder and SSRS)
Charts (Report Builder and SSRS)
Chart Types (Report Builder and SSRS)
Area Charts (Report Builder and SSRS)
Empty and Null Data Points in Charts (Report Builder and SSRS)
Charts (Report Builder and SSRS)
Pie Charts (Report Builder and SSRS)
11/2/2020 • 5 minutes to read • Edit Online

Pie charts and doughnut charts display data as a proportion of the whole. Pie charts are most commonly used
to make comparisons between groups. Pie and doughnut charts, along with pyramid and funnel charts,
comprise a group of charts known as shape charts. Shape charts have no axes. When a numeric field is dropped
on a shape chart, the chart calculates the percentage of each value to the total. For more information on shape
charts, see Shape Charts (Report Builder and SSRS).
The following illustration shows a 3-D pie chart with data labels formatted as percentages. The legend is
positioned in the right-center.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Variations
Exploded pie . A pie chart where all of the slices are moved away from the center of the pie. In addition
to the exploded pie chart, in which all slices are separated, you can create an exploded slice chart, in
which only one slice is called out.
Doughnut . A pie chart that has an open space in the center.
Exploded doughnut . A doughnut chart where all of the slices are moved away from the center of the
doughnut.
3D Pie . A pie chart that has a 3-D style applied.
3D Exploded Pie . An exploded pie chart that has a 3-D style applied.

Data Considerations for Display on a Pie Chart


Pie charts are popular in reports because of their visual impact. However, pie charts are a very simplified
chart type that may not best represent your data. Consider using a pie chart only after the data has been
aggregated to seven data points or less.
Pie charts display each data group as a separate slice on the chart. You must add at least one data field
and one category field to the pie chart. If more than one data field is added to a pie chart, the pie chart
will display both data fields in the same chart.
Null, empty, negative, and zero values have no effect when calculating ratios. For this reason, these values
are not shown on a pie chart. If you want to visually indicate these types of values on your chart, change
the chart type to be something other than a pie chart.
If you are defining your own colors on a pie chart using a custom palette, be sure that you have enough
colors in your palette to display each data point with its own unique color. For more information, see
Formatting Series Colors on a Chart (Report Builder and SSRS).
Unlike most other chart types, a pie chart will display individual data points, and not individual series, in
its legend.
A pie chart requires at least two values in order to make a valid comparison between proportions. If your
pie chart contains only one color, verify that you have added a category field to group by. When the pie
chart does not contain categories, it aggregates the values from your data field into one value for display.
Like all other chart types, the pie chart generates colors based on the color values contained in the
default palette. This approach might cause different pie charts to color data points differently when you
are using multiple pie charts in a report. If you have several pie charts in your report, you might want to
manually set colors for each category group in order to retain the same color across different charts. For
more information about how to define colors on a chart, see Formatting Series Colors on a Chart (Report
Builder and SSRS).

Applying Drawing Styles to a Pie Chart


You can add special drawing styles to the pie chart to increase its visual impact. Drawing styles include bevel and
concave effects. These effects are available only on a 2-D pie chart. The following illustration shows an example
of the bevel and concave drawing styles on a pie chart.

For more information, see Add Bevel, Emboss, and Texture Styles to a Chart (Report Builder and SSRS).

Displaying Percentage Values on a Pie Chart


Like other Shape charts, pie charts represent proportions of the total. As a result, it is common to format pie
chart labels as percentages. In order to be consistent with other chart types, the chart does not display
percentage labels by default. For more information about how to display values as percentages on the chart, see
Display Percentage Values on a Pie Chart (Report Builder and SSRS). For more information about how to format
numbers as percentages in your report, see Formatting Numbers and Dates (Report Builder and SSRS).

Preventing Overlapped Labels on a Pie Chart


If there are a lot of data points on a pie chart, the data labels will overlap. There are several ways to prevent
labels from overlapping:
Decrease the font size of the data point labels.
Increase the width and height of your chart to allow more room for the labels.
Display pie labels outside the chart area. For more information, see Display Data Point Labels Outside a
Pie Chart (Report Builder and SSRS).
Collect the small pie slices into one slice.

Consolidating Small Slices on a Pie Chart


When the pie chart has too many points, the data becomes obscured and hard to read. If your data has many
small data points, there are two ways of collecting multiple pie slices:
Collect smaller data slices into one slice on the pie chart. This is useful in situations where, for example,
you want the pie chart to have an "Other" data point that simply collects the remaining data. For more
information, see Collect Small Slices on a Pie Chart (Report Builder and SSRS).
Collect small slices into a supplementary pie chart. The second pie chart does not display in the designer.
Instead, during report processing, the chart calculates if a second pie chart is necessary to be shown,
based on the values of the data points. If so, the values are added into another pie chart.

See Also
Display Data Point Labels Outside a Pie Chart (Report Builder and SSRS)
Collect Small Slices on a Pie Chart (Report Builder and SSRS)
Display Percentage Values on a Pie Chart (Report Builder and SSRS)
Tutorial: Add a Pie Chart to Your Report (Report Builder)
Formatting the Legend on a Chart (Report Builder and SSRS)
Empty and Null Data Points in Charts (Report Builder and SSRS)
Formatting Series Colors on a Chart (Report Builder and SSRS)
Polar Charts (Report Builder and SSRS)
5/20/2020 • 2 minutes to read • Edit Online

A polar chart displays a series as a set of points that are grouped by category on a 360-degree circle. Values are
represented by the length of the point as measured from the center of the circle. The farther the point is from
the center, the greater its value. Category labels are displayed on the perimeter of the chart. For more
information on how to add data to a polar chart, see Charts (Report Builder and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Variations
Radar char t . A radar chart displays a series as a circular line or area. Unlike the polar chart, the radar chart
does not display data in terms of polar coordinates.

Data Considerations for Polar Charts


The radar chart is useful for comparisons between multiple series of category data.
Polar charts are most commonly used to graph polar data, where each data point is determined by an
angle and a distance.
Polar charts cannot be combined with any other chart type in the same chart area.

Example
The following example shows how a radar chart can be used. The table below provides sample data for the
chart.

NAME SA L ES

Shrubs 61

Seeds 78

Bulbs 60

Trees 38

Flowers 81

In this example, the Name field is placed in the Category Groups area. The Sales field is placed in the Values
area. The Sales field is automatically aggregated for the chart when you drop it. The radar chart calculates where
to place the labels based on the number of values in the Sales field, which contains five values and places labels
at five equidistant points on a circle. If the Sales field contained three values, the labels would be placed at three
equidistant points on a circle.
The following illustration shows an example of a radar chart based on the data presented.

See Also
Charts (Report Builder and SSRS)
Formatting a Chart (Report Builder and SSRS)
Chart Types (Report Builder and SSRS)
Line Charts (Report Builder and SSRS)
Empty and Null Data Points in Charts (Report Builder and SSRS)
Range Charts (Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

A range chart type displays a set of data points that are each defined by multiple values for the same category.
Values are represented by the height of the marker as measured by the value axis. Category labels are displayed
on the category axis. The plain range chart fills in the area between the top and bottom value for each data
point.
The following illustration shows a plain range chart with three series.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Variations
Smooth range . A smooth range chart displays curved lines rather than straight.
Column range . A column range chart uses columns instead of areas to display the ranges.
Bar range . A bar range chart uses bars instead of areas to display the ranges.

Data Considerations for Range Charts


Range chart types require two values per data point. These values correspond with a high value and a
low value that defines the range for each data point.
Range charts are useful for analysis only if the top values are always higher than the bottom values. If
this is not the case, consider using a line chart. If the high value is lower the low value, the range chart
will display the absolute value of the difference between these values.
If only one value is specified, the range chart will display as if it were a regular area chart, with one value
per data point.
Range charts are often used to graph data that contains minimum and maximum values for each
category group in the dataset.
Displaying markers on each data point is not supported on the range chart.
Like the area chart, in a plain range chart, if the values in multiple series are similar, the series will
overlap. In this scenario, you may want to use a column range or bar range chart instead of a plain range
chart.
Gantt charts can be created using a range bar chart.

See Also
Charts (Report Builder and SSRS)
Chart Types (Report Builder and SSRS)
Formatting a Chart (Report Builder and SSRS)
Scatter Charts (Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

A scatter chart displays a series as a set of points. Values are represented by the position of the points on the
chart. Categories are represented by different markers on the chart. Scatter charts are typically used to compare
aggregated data across categories. For more information on how to add data to a scatter chart, see Charts
(Report Builder and SSRS)
The following illustration shows an example of a scatter chart.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Variations
Bubble. Bubble charts display the difference between two values of a data point based on the size of the
bubble. The larger the bubble, the larger the difference between the two values.
3-D Bubble . A bubble chart displayed in 3-D.

Data Considerations for a Scatter Chart


Scatter charts are commonly used for displaying and comparing numeric values, such as scientific,
statistical, and engineering data.
Use the scatter chart when you want to compare large numbers of data points without regard to time.
The more data that you include in a scatter chart, the better the comparisons that you can make.
The bubble chart requires two values (top and bottom) per data point.
Scatter charts are ideal for handling the distribution of values and clusters of data points. This is the best
chart type if your dataset contains many points (for example, several thousand points). Displaying
multiple series on a point chart is visually distracting and should be avoided. In this scenario, consider
using a line chart.
By default, scatter charts display data points as circles. If you have multiple series on a scatter chart,
consider changing the marker shape of each point to be square, triangle, diamond, or another shape.
See Also
Charts (Report Builder and SSRS)
Chart Types (Report Builder and SSRS)
Formatting a Chart (Report Builder and SSRS)
Line Charts (Report Builder and SSRS)
Shape Charts (Report Builder and SSRS)
11/2/2020 • 3 minutes to read • Edit Online

A shape chart displays value data as percentages of a whole. Shape charts are typically used to show
proportional comparisons between different values in a set. Categories are represented by individual segments
of the shape. The size of the segment is determined by the value. Shape charts are similar in use to pie charts,
except that they order categories from largest to smallest.
A funnel chart displays values as progressively decreasing proportions. The size of the area is determined by the
series value as a percentage of the total of all values. For example, you might use a funnel chart to display Web
site visitor trends. It is likely that the funnel chart will display a wide area at the top, indicating visitor page hits
to the homepage, and the other areas will be proportionally smaller. For more information about how to add
data to a funnel chart, see Charts (Report Builder and SSRS).
The following illustration shows an example of a funnel chart.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Variations
Pyramid . A pyramid chart displays proportional data so that the chart looks like a pyramid.

Data Considerations for Shape Charts


Shape charts are popular in reports because of their visual impact. However, shape charts are a very
simplified chart type that may not best represent your data. Consider using a shape chart only once the
data has been aggregated to seven data points or less. In general, use the shape chart to display only one
category per data region.
Shape charts display each data group as a separate segment of the chart. You must add at least one data
field and one category field. If more than one data field is added to a shape chart, the shape chart will
display both data fields in the same chart.
Shape charts are most effective for showing proportional percentages in sorted order. However, in order
to maintain consistency, the chart does not sort the values in your dataset by default. Consider ordering
your values from highest to lowest to most accurately represent your data as a funnel or a pyramid. For
more information, see Filter, Group, and Sort Data (Report Builder and SSRS).
Null, empty, negative and zero values have no effect when calculating ratios. For this reason, these values
are not shown on a shape chart. If you want to visually indicate these types of values on your chart,
change the chart type to be something other than a shape chart. For more information about how to add
empty points to a non-shape chart, see Add Empty Points to a Chart (Report Builder and SSRS).
If you are defining your own colors on a shape chart using a custom palette, be sure that you have
enough colors in your palette to highlight each data point with its own unique color. For more
information, see Formatting Series Colors on a Chart (Report Builder and SSRS).
Unlike all other chart types, a shape chart will display individual data points, and not individual series, in
its legend.
Settings for the value and category axis are ignored for funnel charts. If you have multiple category or
series groups, the group labels are displayed in the chart legend.
Shape chart types cannot be combined with any other chart type in the same chart area. If you have to
show comparisons between data displayed on a shape chart, and data displayed on another chart type,
you will need to add a second chart area.
You can apply additional drawing styles to pie and doughnut charts for increased visual impact. See
Formatting Series Colors on a Chart (Report Builder and SSRS) for more information.

See Also
Charts (Report Builder and SSRS)
Formatting a Chart (Report Builder and SSRS)
Empty and Null Data Points in Charts (Report Builder and SSRS)
Pie Charts (Report Builder and SSRS)
Stock Charts (Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

A stock chart is specifically designed for financial or scientific data that uses up to four values per data point.
These values align with the high, low, open and close values that are used to plot financial stock data. This chart
type displays opening and closing values by using markers, which are typically lines or triangles. In the following
example, the opening values are shown by the markers on the left, and the closing values are shown by the
markers on the right.

An example of a stock chart is available as a sample Report Builder report. For more information about
downloading this sample report and others, see Report Builder and Report Designer sample reports.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Variations
Candlestick . The candlestick chart is a specialized form of the stock chart, wherein boxes are used to show
the range between the open and close values. Like the stock chart, the candlestick chart can display up to
four values per data point.

Data Considerations for Stock Charts


When presenting many stock data points, such as annual stock price trend, it is difficult to distinguish
each open, close, high and low value of each data point. In this scenario, consider using a line chart
instead of a stock chart.
When axis labels are generated, labeling usually begins at zero. In general, stock prices do not fluctuate to
the same degree as other data sets. For this reason, you may want to disable the axis labels from starting
at zero, in order to get a better view of your data. To do this, set IncludeZero to false in the Axis
Proper ties dialog box or the Properties window. For more information about how the chart generates
axis labels, see Formatting Axis Labels on a Chart (Report Builder and SSRS).
Reporting Services provides many calculated formulas for use with stock charts, including Price Indicator,
Relative Strength Index, MACD and more.

Next steps
Range Charts
Charts
Formatting a Chart
Axis Properties Dialog Box, Axis Options
More questions? Try asking the Reporting Services forum
Treemap and sunburst charts in Reporting Services
11/2/2020 • 5 minutes to read • Edit Online

The SQL Server Reporting Services treemap and sunburst visualizations are great for visually representing
hierarchical data. This article is an overview of how to add a treemap or sunburst chart to a Reporting Services
report. The article also includes an AdventureWorks sample query to help you get started.

Treemap chart
A treemap chart divides the chart area into rectangles that represent the different levels and relative sizes of the
data hierarchy. The map is similar to branches on a tree that start with a trunk and divide into smaller and
smaller branches. Each rectangle is broken into smaller rectangles that represent the next level in the hierarchy.
The top-level treemap rectangles are arranged with the largest rectangle in the upper left corner of the chart to
the smallest rectangle in the lower right corner. Within a rectangle, the next level of the higher is also arranged
with rectangles from the upper left to the lower right.
For example, in the following image of the sample treemap, the Southwest territory is the largest and Germany
is the smallest. Within the Southwest, Road Bikes are larger than Mountain Bikes.

To insert a treemap chart and set up the sample AdventureWorks data

NOTE
Before you add a chart to your report, create a data source and dataset. For sample data and a sample query, see Sample
AdventureWorks data.

1. Right-click the design surface, then select Inser t > Char t . Select the Treemap icon.

2. Reposition and resize the chart. To use with the sample data, a chart that is 5 inches wide is a good start.
3. Add the following fields from the sample data:
Values : LineTotal
Categor y Groups (in the following order):
a. CategoryName
b. SubcategoryName
Series Groups : TerritoryName

4. To optimize the page size for the general shape of a treemap, set the legend position to the bottom.
5. To add tooltips that display the subcategory and the line total, right-click LineTotal , and then select
Series Proper ties .

Set the Tooltip property to the following value:

=Fields!SubcategoryName.Value &": " &Format(Sum(Fields!LineTotal.Value),"C")

For more information, see Show ToolTips on a series (Report Builder and SSRS).
6. Change the default chart title to Categorized Sales by Territor y .
7. The number of label values that are displayed are affected by the size of the font, the size of the overall
chart area, and the size of specific rectangles. To see more labels, change the Label Font property of
LineTotal to 10pt from the default of 8pt .

Sunburst chart
In a sunburst chart, the hierarchy is represented by a series of circles. The highest level of the hierarchy is in the
center, and lower levels of the hierarchy are rings displayed outside the center. The lowest level of the hierarchy
is the outside ring.
To insert a sunburst chart and set up the sample AdventureWorks data

NOTE
Before you add a chart to your report, create a data source and dataset. For sample data and a sample query, see Sample
AdventureWorks data.

1. Right-click the design surface, and then select Inser t > Char t . Select the Sunburst icon.

2. Reposition and resize the chart. To use with the sample data, a chart that is 5 inches wide is a good start.
3. Add the following fields from the sample data:
Values : LineTotal
Categor y Groups (in the following order):
a. CategoryName
b. SubcategoryName
c. SalesReasonName
Series Groups : TerritoryName
4. To optimize the page size for the general shape of a sunburst chart, set the legend position to the bottom.
5. Change the default chart title to Categorized Sales by Territor y, with sales reason .
6. To add the values of the category groups to the sunburst as labels, set the label properties Visible=true
and UseValueAsLabel=false .

The label values that are displayed are affected by the size of the font, the size of the overall chart area,
and the size of specific rectangles. To see more labels, change the Label Font property of LineTotal to
10pt from the default of 8pt .

7. If you want a different range of colors, change the chart Palette property.
Sample AdventureWorks data
This section includes a sample query and the basic steps for creating a data source and dataset in Report Builder.
If your report already contains a data source and dataset, you can skip this section.
The query returns AdventureWorks sales order detail data with sales territory, product category, product
subcategory, and sales reason data.
1. Get the data .
The query in this section is based on the AdventureWorks database, which is available for download from
GitHub: AdventureWorks 2016 full database backup.
2. Create a data source .
a. Under Repor t Data , right-click Data Sources , and then select Add data source .
b. Select Use a connection embedded in my repor t .
c. For connection type, select Microsoft SQL Ser ver .
d. Enter the connection string to your server and database. For example:

Data Source=[server name];Initial Catalog=AdventureWorks2016

e. To verify the connection, select the Test Connection button, and then select OK .
For more information about creating a data source, see Add and verify a data connection (Report Builder
and SSRS).
3. Create a dataset .
a. Under Repor t Data , right-click Datasets , and then select Add dataset .
b. Select Use a dataset embedded in my repor t .
c. Select the data source that you created.
d. Select the Text query type, and then copy and paste the following query into the Quer y text box:
SELECT Sales.SalesOrderHeader.SalesOrderID, Sales.SalesOrderHeader.OrderDate,
Sales.SalesOrderDetail.SalesOrderDetailID, Sales.SalesOrderDetail.ProductID,
Sales.SalesOrderDetail.LineTotal,
Sales.SalesOrderDetail.UnitPrice, Sales.SalesOrderDetail.OrderQty,
Production.Product.Name, Production.Product.ProductNumber, Sales.SalesTerritory.TerritoryID,
lower(Sales.SalesTerritory.Name) AS TerritoryName,
Production.ProductSubcategory.Name AS SubcategoryName,
Production.ProductCategory.Name AS CategoryName, Sales.SalesReason.SalesReasonID,
Sales.SalesReason.Name AS SalesReasonName
FROM Sales.SalesOrderDetail INNER JOIN
Sales.SalesOrderHeader ON Sales.SalesOrderDetail.SalesOrderID =
Sales.SalesOrderHeader.SalesOrderID INNER JOIN
Production.Product ON Sales.SalesOrderDetail.ProductID =
Production.Product.ProductID INNER JOIN
Sales.SalesTerritory ON Sales.SalesOrderHeader.TerritoryID =
Sales.SalesTerritory.TerritoryID AND Sales.SalesOrderHeader.TerritoryID =
Sales.SalesTerritory.TerritoryID AND
Sales.SalesOrderHeader.TerritoryID = Sales.SalesTerritory.TerritoryID
INNER JOIN
Production.ProductSubcategory ON
Production.Product.ProductSubcategoryID = Production.ProductSubcategory.ProductSubcategoryID
AND
Production.Product.ProductSubcategoryID =
Production.ProductSubcategory.ProductSubcategoryID AND
Production.Product.ProductSubcategoryID =
Production.ProductSubcategory.ProductSubcategoryID INNER JOIN
Production.ProductCategory ON
Production.ProductSubcategory.ProductCategoryID = Production.ProductCategory.ProductCategoryID
AND
Production.ProductSubcategory.ProductCategoryID =
Production.ProductCategory.ProductCategoryID AND
Production.ProductSubcategory.ProductCategoryID =
Production.ProductCategory.ProductCategoryID INNER JOIN
Sales.SalesOrderHeaderSalesReason ON
Sales.SalesOrderHeader.SalesOrderID = Sales.SalesOrderHeaderSalesReason.SalesOrderID AND
Sales.SalesOrderHeader.SalesOrderID =
Sales.SalesOrderHeaderSalesReason.SalesOrderID AND Sales.SalesOrderHeader.SalesOrderID =
Sales.SalesOrderHeaderSalesReason.SalesOrderID AND
Sales.SalesOrderHeader.SalesOrderID =
Sales.SalesOrderHeaderSalesReason.SalesOrderID INNER JOIN
Sales.SalesReason ON Sales.SalesOrderHeaderSalesReason.SalesReasonID
= Sales.SalesReason.SalesReasonID AND
Sales.SalesOrderHeaderSalesReason.SalesReasonID =
Sales.SalesReason.SalesReasonID AND Sales.SalesOrderHeaderSalesReason.SalesReasonID =
Sales.SalesReason.SalesReasonID AND
Sales.SalesOrderHeaderSalesReason.SalesReasonID =
Sales.SalesReason.SalesReasonID

e. Select OK .
For more information about creating a dataset, see Create a shared dataset or embedded dataset (Report
Builder and SSRS).

See also
Shared dataset design view (Report Builder)
Show ToolTips on a series (Report Builder and SSRS)
Tutorial: Treemaps in Power BI
Treemap: Microsoft Research Data Visualization Apps for Office
Formatting a Chart (Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

After you have defined the data for your chart and it is appearing the way you want, you can add formatting to
improve the overall appearance and highlight key data points. The most common formatting options can be
modified from the Properties dialog box that are found when you right-click a chart element to display its
shortcut menu. Each chart element has its own dialog box. For more information about chart elements, see
Charts (Report Builder and SSRS).
All properties that relate to the chart are located in the Properties pane, but many of these properties can also
be set from a dialog box. If you are formatting the series, you can specify series-specific properties using custom
attributes, which can only be found in the CustomAttributes category of properties, located in the Properties
pane.
To effectively format the chart using a minimal number of steps, change the default border style, palette and
drawing style. These three features produce the largest visible change on the chart. Drawing styles are only
applicable to pie, doughnut, bar and column charts.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

In This Section
Formatting Series Colors on a Chart (Report Builder and SSRS)
Discusses how colors are defined using a palette, how you can define your own color palette, and how to define
colors based on an expression.
Formatting Axis Labels on a Chart (Report Builder and SSRS)
Discusses how to display gridlines, tick marks, and titles, and how to format numbers and dates on the axis
scale.
Formatting the Legend on a Chart (Report Builder and SSRS)
Discusses how to re-order and format items in the chart legend.
Formatting Data Points on a Chart (Report Builder and SSRS)
Discusses how to position data point labels and format data point markers for every series on the chart.
3D, Bevel, and Other Effects in a Chart (Report Builder and SSRS)
Discusses various 3D effects that you can apply to a chart.
Add a Border Frame to a Chart (Report Builder and SSRS)
Explains how to add a border frame to a chart.

See Also
Charts (Report Builder and SSRS)
Add a Border Frame to a Chart (Report Builder and SSRS)
Define Colors on a Chart Using a Palette (Report Builder and SSRS)
Add Bevel, Emboss, and Texture Styles to a Chart (Report Builder and SSRS)
Formatting Series Colors on a Chart (Report Builder
and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

Reporting Services provides several built-in palettes for charts, or you can define a custom palette. By default,
charts use the built-in Pacific color palette to fill each series. These colors also appear in the legend. When
multiple series are added to the chart, the chart assigns the series a color in the order that the colors have been
defined in the palette.
If there are a greater number of series than there are colors in the palette, the chart will begin reusing colors,
and two series may have the same color. This frequently occurs if you are using a Shape chart, where each data
point is assigned a color from the palette. To avoid confusion, define a custom palette with at least the same
number of colors as you have series on your chart.
You can select a new palette or define a custom palette from the Properties pane. For more information, see
Define Colors on a Chart Using a Palette (Report Builder and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Using Built-In Palettes


Reporting Services provides a list of predefined, built-in palettes that you can use to define a color set for series
on your chart. All built-in palettes contain between 10 and 16 color values. You cannot extend the built-in palette
to include more colors, so if you need more than 16 colors, you must define a custom palette.
If you are printing a report, consider using the Greyscale palette. This palette uses shades of black and white to
represent each series in a chart.
The palette named Default was used as the default chart palette in earlier versions of Reporting Services. It has
been maintained with the same name for consistency. Charts will upgrade seamlessly using the Default palette,
but after upgrading, you might consider changing it.

Using Custom Palettes


If you want to apply your own colors to the chart, use a custom palette. A custom palette let you add your own
colors in the order you want them to appear on the chart. A custom palette is especially helpful if the number of
series in your chart is unknown at design time. For more information, see Define Colors on a Chart Using a
Palette (Report Builder and SSRS).

Using a Color Fill on Each Series


You can also define your own colors on the chart by specifying a color for each series on the chart. To do this,
open the Series Proper ties dialog box and set the Color property for Fill . This approach will override all
defined palettes. Generally, it is better to use a custom palette to define your own colors because the number of
series in your dataset may not be known until report processing.
This approach is best suited when you want to conditionally set the color of the series based on an expression.
For more information, see Formatting Data Points on a Chart (Report Builder and SSRS).

In This Section
Specify Consistent Colors across Multiple Shape Charts (Report Builder and SSRS)
Define Colors on a Chart Using a Palette (Report Builder and SSRS))
Highlight Chart Data by Adding Strip Lines (Report Builder and SSRS)

See Also
Formatting a Chart (Report Builder and SSRS)
Add Bevel, Emboss, and Texture Styles to a Chart (Report Builder and SSRS)
Charts (Report Builder and SSRS)
Formatting the Legend on a Chart (Report Builder and SSRS)
Specify Consistent Colors across Multiple Shape
Charts (Report Builder and SSRS)
5/20/2020 • 3 minutes to read • Edit Online

On non-shape charts in a paginated report, Reporting Services selects a new color from the palette based on
the index of series in the chart. For example, the first series on your chart will be mapped to the first color in the
palette. However, this behavior differs for shape charts. On shape charts, each color in the palette is mapped to a
data point in the dataset. For example, data point 1 is mapped to the first color in the palette, data point 2 is
mapped to the second color palette and so on.
If a data point has no value, it is omitted from display on a shape chart. This means that the data point is skipped
from being colored. For example, if point 2 has a value of zero, point 1 will be mapped to the first color in the
palette, and point 3 will be mapped to the second color in the palette. This approach is useful because the empty
points in the dataset of a pie chart do not unnecessarily use a palette color when the empty point does not need
to be drawn.
As a side effect, when multiple pie charts are displayed in a report, the pie charts may display different colors for
data points that have the same category grouping. To resolve this, you need to define individual colors that map
to a category group instead of individual data values. How you do this depends on if the shape charts are
sparklines in a table or matrix, or if they are shape charts in the report itself.
The legend is connected to the series, so any color you specify for the series will automatically be shown on the
legend.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To specify consistent colors across multiple sparkline shape charts in a


table or matrix
1. Click the chart to display the Chart Data pane.
2. In the Categor y Groups area, right-click a category and click Categor y Group Proper ties .
3. On the General tab, in the Synchronize groups in box, click the name of the category for which you
would like to synchronize colors, and then click OK .

To specify consistent colors across multiple shape charts


1. Right-click outside the body of the report, and select Repor t Proper ties .
2. In Code , type the following code into the textbox.
Private colorPalette As String() = {"Color1", "Color2", "Color3"}
Private count As Integer = 0
Private mapping As New System.Collections.Hashtable()
Public Function GetColor(ByVal groupingValue As String) As String
If mapping.ContainsKey(groupingValue) Then
Return mapping(groupingValue)
End If
Dim c As String = colorPalette(count Mod colorPalette.Length)
count = count + 1
mapping.Add(groupingValue, c)
Return c
End Function

NOTE
You will need to replace the "Color1" strings with your own colors. You can use named colors, for example "Red", or
you can use six-digit hexadecimal value that represent the color, such as "#FFFFFF" for black. If you have more
than three colors defined, you will need to extend the array of colors so that the number of colors in the array
matches the number of points in your shape chart. You can add new colors to the array by specifying a comma-
separated list of string values that contain named colors or hexadecimal representations of colors.

3. Click OK .
4. Right-click on the shape chart and select Series Proper ties .
5. In Fill , click the Expression (fx) button to edit the expression for the Color property.
6. Type the following expression, where "MyCategoryField" is the field that is displayed in the Categor y
Groups area:

=Code.GetColor(Fields!MyCategoryField)

See Also
Formatting Series Colors on a Chart (Report Builder and SSRS)
Add Bevel, Emboss, and Texture Styles to a Chart (Report Builder and SSRS)
Define Colors on a Chart Using a Palette (Report Builder and SSRS)
Add Empty Points to a Chart (Report Builder and SSRS)
Shape Charts (Report Builder and SSRS)
Linking Multiple Data Regions to the Same Dataset (Report Builder and SSRS)
Nested Data Regions (Report Builder and SSRS)
Sparklines and Data Bars (Report Builder and SSRS)
Define Colors on a Chart Using a Palette (Report
Builder and SSRS)
5/20/2020 • 2 minutes to read • Edit Online

You can change the color palette for a chart by selecting a pre-defined palette or defining a custom palette.
Custom palettes are chart-specific.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To change the colors on the chart using a built-in color palette


1. Open the Properties pane.
2. On the design surface, click the chart. The properties for the chart object are displayed in the Properties
pane.
The object name (Char t1 by default) appears in the drop-down list at the top of the Properties pane.
3. In the Char t section, for the Palette property, select a new palette from the drop-down list.

NOTE
You cannot change the colors or order in a pre-defined palette.

To define your own colors on the chart using a custom color palette
1. Open the Properties pane.
2. On the design surface, click the chart. The properties for the chart object are displayed in the Properties
pane.
3. In the Char t section, for the Palette property, select Custom .
4. In the CustomPaletteColors property, click the Edit Collection (...) button. The Repor tColorExpression
Collection Editor opens.
5. Click Add to add a color. Select a color from the drop-down list or select Expression and specify a hex
value for a specific color, such as ff6600 for "Orange".
For more information about hex values, see Color Table on MSDN.
6. Click Add to add more colors to the palette.
7. When you are done, click OK .
If you are using a custom palette, you can change the order of the colors to change the color of different series
in the chart.

See Also
Formatting Series Colors on a Chart (Report Builder and SSRS)
Charts (Report Builder and SSRS)
Specify Consistent Colors across Multiple Shape Charts (Report Builder and SSRS)
Highlight Chart Data by Adding Strip Lines (Report
Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

Strip lines, or strips, are horizontal or vertical ranges that shade the background of the chart in regular or
custom intervals. You can use strip lines to:
Improve readability for looking up individual values on the chart. Specify strip lines at regular intervals to
help separate data points when reading the chart.
Highlight dates that occur at regular intervals. For example, in a sales report you might use strip lines to
identify weekend data points.
Highlight a specific key range. Using the previous example, you can use one strip line to highlight the
highest range of sales that is between $80-100.
Strip lines are not applicable to Shape or Polar chart types.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To display interlaced strip lines at regular intervals on a chart


1. To show horizontal strip lines, right-click the vertical chart axis and click Ver ticalAxis Proper ties .
To show vertical strip lines, right-click the horizontal chart axis and click Horizontal Axis Proper ties .
2. Select the Use interlacing option. Grey strip lines will appear on your chart.
3. (Optional) Specify a color for the strip lines using the adjacent Color drop-down list.
To display interlaced strip lines at custom intervals on a chart
1. To show horizontal strip lines, right-click the vertical chart axis and click Ver ticalAxis Proper ties .
To show vertical strip lines, right-click the horizontal chart axis and click Horizontal Axis Proper ties .
The axis properties are displayed in the Properties window.
2. In the Appearance section of the Properties pane, for the StripLines property, click the Edit Collection (...)
button to open the Char tStripLine Collection Editor .
3. Click Add to add a new strip line to the collection.
4. Click StripWidth to specify the width of the strip line, measured in inches on the report. If you are
highlighting dates or times, click StripWidthType and select a time interval.
5. Type a value or expression for the Interval to specify how often the strip line will repeat. For example, if
you specify an interval of 10, and your strip line width is 5, strip lines will display at values of 0 to 5, 15 to
20, 30 to 35, and so on.
NOTE
By default, Interval is set to Auto, which means the chart will not calculate an interval for custom strip lines. The chart
only calculates intervals for strip lines if an interval value is set.

See Also
Formatting Axis Labels on a Chart (Report Builder and SSRS)
Formatting a Chart (Report Builder and SSRS)
Add a Moving Average to a Chart (Report Builder and SSRS)
Formatting Axis Labels on a Chart (Report Builder
and SSRS)
11/2/2020 • 7 minutes to read • Edit Online

Coordinate-based chart types (column, bar, area, point, line, and range) have two axes that are used to
categorize and display data relationships. Different types of formatting will be applied to each axis.
You can format axes by using the Axis Proper ties dialog box or by using the Properties pane. Right-click the
axis you want to format and click Axis Proper ties to change values for the axis text, numeric and date formats,
major and minor tick marks, auto-fitting for labels, and the thickness, color, and style of the axis line. To change
values for the axis title, right-click the axis title, and click Axis Title Proper ties .
Axis labels identify major intervals on the chart. By default, the chart uses an algorithm to determine how the
labels should be optimally placed on the axis to avoid overlapping text.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Types of Axes
The chart has two primary axes: the value axis and the category axis.

When you drag a field from your dataset onto the chart surface, the chart will determine whether this field
belongs on the category or value axis.
The value axis is usually the vertical axis, or y-axis, of the chart. It is used to display numeric data values that are
being charted. A field that is dragged into the data fields region will be plotted on the value axis. The category
axis is usually the horizontal axis, or x-axis, of the chart. For bar charts, these axes are reversed. In bar chart
types, the category axis is the vertical axis and the value axis is the horizontal axis. For more information, see Bar
Charts (Report Builder and SSRS).

How the Chart Calculates Axis Label Intervals


Before you format axis labels, you should understand how the chart calculates axis label intervals. This will
enable you to set the properties necessary to achieve the axis labeling behavior that you want.
The axis scale is bound by a minimum and a maximum value that define the data range to be displayed along
the axis. The chart calculates the minimum and maximum value along each axis based on the values in your
result set. On the value axis, the scale will always be determined by the smallest and largest number in the value
field. On the category axis, the minimum and maximum value types are determined depending on the type of
your category field. Any field in a dataset can be categorized into one of three category field types. The following
table illustrates these three types of category fields.

C AT EGO RY F IEL D T Y P E DESC RIP T IO N EXA M P L E

Numeric Categories are plotted in numeric A sales report by employee


order along the x-axis. identification number displays the
employee identification numbers along
the x-axis.

Date/time Categories are plotted in chronological A sales report by month displays


order along the x-axis. formatted dates along the x-axis.

Strings Categories are plotted in the order it A sales report by region displays
first appears in the data source along region names along the x-axis.
the x-axis.

All chart types with two axes are designed to suppress some axis labels when there are too many categories to
fit in order to produce a cleaner image on the chart and avoid label collisions.
The application calculates where labels are placed on an axis according to the following steps:
1. Minimum and maximum values are identified based on the values in the result set.
2. An equidistant number of axis intervals, usually between four and six, are calculated based on these
minimum and maximum values.
3. Based on the axis label properties, labels are displayed at these intervals. Properties that affect label
placement include font size, the angle at which the labels are displayed, and text wrapping properties.
These axis label auto-fit options can be changed.
Example of How the Chart Calculates Axis Labels
The table shown here contains sample sales data to be plotted on a column chart. The Name field is added to
the Category Groups area, and the Quantity field is added to the Values area.

NAME Q UA N T IT Y

Michael Blythe 229

Jae Pak 112

Ranjit Varkey Chudukatil 494

Jillian Carson 247

Linda Mitchell 339

Rachel Valdez 194

The Quantity field is plotted along the value -axis. The lowest value is 112 and the highest value is 494. In this
case, the chart calculates the scale to start at 0 and end at 500. The chart also calculates five equidistant intervals
of 100, and creates labels at 0, 100, 200, 300, 400, and 500.
The Name field is plotted along the category axis. The chart calculates between four and six labels and it
calculates auto-fit settings to determine how the labels can fit on the category axis without causing label
collisions. As a result, some category labels might be omitted. You can override auto-fitting options for each axis
independently.

Displaying All Labels on the Category Axis


On the value axis, axis intervals provide a consistent measure of the data points on the chart. However, on the
category axis, this functionality can cause categories to appear without axis labels. Typically, you want all
categories to be labeled. You can set the number of intervals to 1 to show all categories. For more information,
see Specify an Axis Interval (Report Builder and SSRS).

NOTE
By superseding the automatic labeling features with a manual interval on an axis, the chart must resize all other elements
appropriately. As a result, you may encounter unpredictable results with the sizing and positioning of the labels, or the
size of other elements on the chart.

Variable Axis Intervals


The chart calculates approximately five axis label intervals regardless of the size of the chart. On wider or taller
charts, if you show only five labels on an axis, large gaps can appear between each label. This makes it more
difficult to identify the value of each data point against the axis. To avoid this behavior on wider or taller charts,
you can set a variable axis interval. The chart will calculate the optimal number of labels that can appear on the
axis based on the width or height of the chart, depending on the corresponding axis. For more information, see
Specify an Axis Interval (Report Builder and SSRS).

Sorting Axis Values


Categories appear along the x-axis in the order that they appear in the result set. You can change the group
order by adding a SORT command to the query or by sorting the dataset using an expression. Chart data
regions are sorted the same as all other data regions. For more information about how to sort data, see Sort
Data in a Data Region (Report Builder and SSRS).

Specifying Scalar Values on the Category Axis


By default, the chart will only display axis labels for data points in the dataset that contain valid values. For
example, if you have values of 1, 2, and 6 on the category axis, the chart will only show categories 1, 2, and 6. To
maintain the scale of category values, you can specify the chart to use a scalar axis. In this scenario, the chart will
show labels for 1-6 on the x-axis of the chart, even though your dataset does not contain values for 3-5.
There are two ways to set a scalar axis:
Select the Scalar axis option in the Axis Proper ties dialog box. This will add numeric or date/time
values to the axis where no data grouping values exist. For more information, see Axis Properties Dialog
Box, Axis Options (Report Builder and SSRS).
Select a field or type an expression for the Categor y field option in the Series Proper ties dialog box.
The chart will add axis intervals for all values in the category field you specified.

Adding or Removing Side Margins from the Category Axis


In Bar, Column and Scatter chart types, the chart automatically adds side margins on the ends of the x-axis. You
cannot change the size of the margin. In all other chart types, the chart does not add side margins. For more
information, see Add or Remove Margins from a Chart (Report Builder and SSRS).

In This Section
Format Axis Labels as Dates or Currencies (Report Builder and SSRS)
Position Labels in a Chart (Report Builder and SSRS)
Specify an Axis Interval (Report Builder and SSRS)
Add or Remove Margins from a Chart (Report Builder and SSRS)
Specify a Logarithmic Scale (Report Builder and SSRS)

See Also
Formatting a Chart (Report Builder and SSRS)
Charts (Report Builder and SSRS)
Formatting Data Points on a Chart (Report Builder and SSRS)
Format Axis Labels as Dates or Currencies (Report
Builder and SSRS)
5/20/2020 • 2 minutes to read • Edit Online

When you show properly formatted DateTime values on an axis in a Reporting Services paginated report, a
chart will automatically display these values as days. To specify a date/time interval for the x-axis, such as an
interval of months or an interval of hours, you must format the axis labels and set the type of axis interval to a
valid date or time interval.

NOTE
In column and scatter charts, the horizontal, or x-axis, is the category axis. In bar charts, the vertical, or y-axis, is the
category axis.

In order to format time intervals correctly, the values displayed on the x-axis must evaluate to a DateTime data
type. If your field has a data type of String, the chart will not calculate intervals as dates or times. For more
information, see Charts (Report Builder and SSRS).
When a numeric value is added to the y-axis, by default, the chart does not format the number before displaying
it. If your numeric field is a sales figure, consider formatting the numbers as currencies to increase the
readability of the chart.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To format x-axis labels as monthly intervals


1. Right-click the horizontal, or x-axis, of the chart, and select HorizontalAxis Proper ties .
2. In the HorizontalAxis Proper ties dialog box, select Number .
3. From the Categor y list, select Date . From the Type list, select a date format to apply to the x-axis labels.
4. Select Axis Options.
5. In Inter val , type 1 . In Inter val type property, select Months .

NOTE
If you do not specify an interval type, the chart will calculate intervals in terms of days.

6. Click OK .

To format y-axis labels using a currency format


1. Right-click the vertical, or y-axis, of the chart, and select Ver ticalAxis Proper ties .
2. In the Ver ticalAxis Proper ties dialog box, select Number .
3. From the Categor y list, select Currency . From the Symbol list, select a currency format to apply to the
y-axis labels.
4. Click OK .

See Also
Formatting Axis Labels on a Chart (Report Builder and SSRS)
Formatting a Chart (Report Builder and SSRS)
Specify a Logarithmic Scale (Report Builder and SSRS)
Specify an Axis Interval (Report Builder and SSRS)
Position Labels in a Chart (Report Builder and SSRS)
5/20/2020 • 3 minutes to read • Edit Online

Because each chart type in a Reporting Services paginated report has a different shape, data point labels are
placed in an optimal location so as not to interfere on the chart. The default position of the labels varies with the
chart type:
On stacked charts, labels can only be positioned inside the series.
On funnel or pyramid charts, labels are placed on the outside in a column.
On pie charts, labels are placed inside the individual slices on a pie chart.
On bar charts, labels are placed outside of the bars that represent data points.
On polar charts, labels are placed outside of the circular area that represents data points.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To change the position of point labels in a Pie chart


1. Create a pie chart.
2. On the design surface, right-click the chart and select Show Data Labels .
3. Open the Properties pane. On the View tab, click Proper ties .
4. On the design surface, click the chart. The properties for the chart are displayed in the Properties pane.
5. In the General section, expand the CustomAttributes node. A list of attributes for the pie chart is
displayed.
6. Select a value for the PieLabelStyle property.

To change the position of point labels in a Funnel or Pyramid chart


1. Create a funnel or pyramid chart.
2. On the design surface, right-click the chart and select Show Data Labels .
3. Open the Properties pane. On the View tab, click Proper ties
4. On the design surface, click the chart. The properties for the chart are displayed in the Properties pane.
5. In the General section, expand the CustomAttributes node. A list of attributes for the funnel chart is
displayed.
6. For a funnel chart, select a value for the FunnelLabelStyle property. For a pyramid chart, select a value for
the PyramidLabelStyle property.
NOTE
When this property is set to a value OutsideInColumn , the labels are drawn in a vertical column. There is no
way to change the position of the column.

To change the position of point labels in a Bar chart


1. Create a bar chart.
2. On the design surface, right-click the chart and select Show Data Labels .
3. Open the Properties pane. On the View tab, click Proper ties
4. On the design surface, click the chart. The properties for the chart are displayed in the Properties pane.
5. In the General section, expand the CustomAttributes node. A list of attributes for the bar chart is
displayed.
6. Select a value for the BarLabelStyle property.
When the bar label style is set to Outside , the labels will be placed outside of the bar, as long as it fits in the
chart area. If the label cannot be placed outside of the bar but inside of the chart area, the label is placed inside
the bar at the position closest to the end of the bar.

To change the position of point labels in an Area, Column, Line or


Scatter chart
1. Create an Area, Column, Line or Scatter chart.
2. On the design surface, right-click the chart and select Show Data Labels .
3. Open the Properties pane. On the View tab, click Proper ties
4. On the design surface, click the series. The properties for the series are displayed in the Properties pane.
5. In the Data section, expand the DataPoint node, then expand the Label node.
6. Select a value for the Position property.

See Also
Pie Charts (Report Builder and SSRS)
Bar Charts (Report Builder and SSRS)
Formatting Axis Labels on a Chart (Report Builder and SSRS)
Format Axis Labels as Dates or Currencies (Report Builder and SSRS)
Display Data Point Labels Outside a Pie Chart (Report Builder and SSRS)
Formatting Data Points on a Chart (Report Builder and SSRS)
Specify an Axis Interval (Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

Learn to change the number of labels and tick marks on the category (x) axis in a chart by setting the axis
interval in a Reporting Services paginated report.
On the value axis (usually the y axis), axis intervals provide a consistent measure of the data points on the chart.
But on the category axis (usually the x axis), sometimes an automatic axis interval results in categories without
axis labels. You can specify the number of intervals you want in the axis Interval property. Reporting Services
calculates the number of intervals at run time, based on the data in the result set. For more information about
how axis intervals are calculated, see Formatting Axis Labels on a Chart.
To try setting the axis interval with sample data, see Tutorial: Add a Column Chart to Your Report (Report
Builder).

NOTE
The category axis is usually the horizontal or x-axis. However, for bar charts, the category axis is the vertical or y-axis.
This topic doesn't apply to:
Date or time values on the category axis. Be default, DateTime values appear as days. You can specify a different date
or time interval, such as a month or time interval. For more information, see Format Axis Labels as Dates or
Currencies.
Pie, doughnut, funnel or pyramid charts, which do not have axes.

To show all the category labels on the x-axis


In this column chart, the horizontal label interval is set to Auto.

1. Right-click the category axis and click Horizontal Axis Proper ties .
2. In the Horizontal Axis Proper ties dialog box > Axis Options tab, set Inter val to 1 to show every
category group label. To show every other category group label on the x-axis, type 2 .

3. Click OK .
Now the column chart displays all its horizontal axis labels.

NOTE
When you set an axis interval, all automatic labeling is disabled. If you specify a value for the axis interval, you may
see unpredictable labeling behavior, depending on how many categories are on the category axis.
Change the label interval in Properties pane
You can also set the label interval in the Properties pane.
1. In report design view, click the chart, then select the horizontal axis labels.
2. In the Properties pane, set LabelInterval to 1 .

The chart looks the same in design view.


3. Click Run to preview the report.

Now the chart displays all its labels.

To enable a variable interval calculation on an axis


By default, Reporting Services sets the axis interval to Auto. This procedure explains how to set it back to the
default.
1. Right-click the chart axis that you want to change, and then click Axis Proper ties .
2. In the Horizontal Axis Proper ties dialog box > Axis Options tab, set Inter val to Auto . The chart will
display the optimal number of category labels that can fit along the axis.
3. Click OK .
See Also
Formatting a Chart (Report Builder and SSRS)
Formatting Data Points on a Chart (Report Builder and SSRS)
Sort Data in a Data Region (Report Builder and SSRS)
Axis Properties Dialog Box, Axis Options (Report Builder and SSRS)
Specify a Logarithmic Scale (Report Builder and SSRS)
Plot Data on a Secondary Axis (Report Builder and SSRS)
Add or Remove Margins from a Chart (Report
Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

For Column and Scatter chart types in Reporting Services paginated reports, the chart automatically adds side
margins on the ends of the x-axis. In Bar chart types, the chart automatically adds side margins on the ends of
the y-axis. In all other chart types, the chart does not add side margins. You cannot change the size of the
margin.
This topic does not apply to pie, doughnut, funnel, or pyramid chart types.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To enable or disable side margins


1. Right-click the axis and select Axis Proper ties . The Ver tical or HorizontalAxis Proper ties dialog box
appears.
2. On the Axis Options page, set the Side margins property:
Auto The chart will determine whether to add a side margin based on the chart type.
Disabled Bar, column, and scatter charts will have no side margins.
3. Click OK .

See Also
Formatting Axis Labels on a Chart (Report Builder and SSRS)
Axis Properties Dialog Box, Axis Options (Report Builder and SSRS)
Specify an Axis Interval (Report Builder and SSRS)
Format Axis Labels as Dates or Currencies (Report Builder and SSRS)
Charts (Report Builder and SSRS)
Specify a Logarithmic Scale (Report Builder and
SSRS)
5/20/2020 • 2 minutes to read • Edit Online

If you have data that is logarithmically proportional, you may want to consider using a logarithmic scale on a
chart in a Reporting Services paginated report. This helps improve the appearance of the chart by making your
data more manageable. Most logarithmic scales use a base of 10.
This feature is only available on the value axis. The value axis is usually the vertical, or y-axis. On bar charts,
however, it is the horizontal, or x-axis.
If your axis is logarithmic, all other properties relating to the axis will be scaled logarithmically. For example, if
you specify a base-10 logarithmic scale on your axis, setting an axis interval of 2 will generate intervals in
magnitudes of 10 to the power of 2, or 100. This means your axis values will read 1, 100, 10000, instead of the
default result of 1, 10, 100, 1000, 10000.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To specify a logarithmic scale


1. Right-click the y-axis of your chart, and click Ver ticalAxis Proper ties . The Ver ticalAxis Proper ties
dialog box appears.
2. In Axis Options , select Uselogarithmic scale .
3. In the Logbase text box, type a positive value for the logarithmic base. If no value is specified, the
logarithmic base defaults to 10.

See Also
Formatting Axis Labels on a Chart (Report Builder and SSRS)
Formatting a Chart (Report Builder and SSRS)
Format Axis Labels as Dates or Currencies (Report Builder and SSRS)
Charts (Report Builder and SSRS)
Chart Legend - Formatting (Report Builder)
11/2/2020 • 5 minutes to read • Edit Online

The chart legend contains descriptions for each category in a chart. A legend always contains one or more
legend items, where each legend item consists of a colored box that represents the series, and a text string that
describes the series, as indicated in the following illustration.

A legend item is connected to an individual series on the chart, except for Shape charts, where the legend is
connected to individual data points. The chart automatically adds items into the legend based on the series that
are generated from your data.
You can format a legend by using the Legend Proper ties dialog box or by using the Properties pane. Right-
click the legend and click Legend Proper ties to change values for the legend text, background color, borders,
and 3D effects. To change values for the legend title, select the legend, right-click the legend title, and click
Legend Title Proper ties .
You cannot add images, extra columns or other supplementary items to the legend.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Ordering Legend Items in the Legend


Series are ordered in the legend according to the order that they are processed by the Reporting Services
processing engine. You can change the order by changing the order of fields in the data fields drop-zone. If you
are using series grouping, the series data is not known until processing, so that there is no way for you to re-
order these items. The changes can be seen in Preview. For more information about series grouping, see Charts
(Report Builder and SSRS).
You can hide any series from being shown in the legend. If you are using series grouping, all series related to the
data field will be hidden. For more information, see Hide Legend Items on the Chart (Report Builder and SSRS).

Changing the Text or Color of a Legend Item in the Legend


When a field is placed in the data field drop-zone of a chart, a legend item is automatically generated that
contains the name of this field. By default, the text of each legend item is taken from the name of the data field.
Every legend item is connected to an individual series on the chart with the exception of Shape charts, where
the legend is connected to individual data points instead of individual series. When a category group is defined
on a Shape chart, the text of each legend item is taken from the string representation of the category group. You
can specify custom label text for pie, doughnut and funnel charts to show information other than the category
group label that relates to each individual data point in the legend. To do this, select the legend and specify
legend text in either the Series Proper ties dialog box or the LegendText property in the Properties pane. For
more information, see Change the Text of a Legend Item (Report Builder and SSRS).
You can also specify chart-specific, case-sensitive keywords for commonly referenced attributes in the
LegendText property or in the Series Proper ties dialog box. The chart control replaces these keywords at run
time with their data representation. This approach is useful on Shape charts because you are able to show
information relating to specific data points. For more information, see Formatting Data Points on a Chart
(Report Builder and SSRS).
The colored box displayed for each legend item is inherited from the fill color of its corresponding series. If you
want to change the color displayed in a legend item, you will have to change the color of the corresponding
series. For more information, see Formatting Series Colors on a Chart (Report Builder and SSRS).

Removing Extra Legend Items from the Legend


The legend is always connected to a series. If a legend item appears in the legend but the corresponding series is
not displayed in the chart, the most likely cause is that the series does not contain any values. You must remove
this series in order to remove the legend item from the legend. To remove a series from your chart, you can
right-click the specified series and select the Delete Series option.

Repositioning the Legend


The chart area is the rectangular area that encompasses the axis labels and the plotting area. You can drag the
legend to one of twelve different positions when the legend is placed outside the chart area. By default, the
legend is shown outside the chart area. You can also set the position in the Legend Proper ties dialog box.
You cannot drag the legend inside or outside the chart area. If you want to position the legend inside the chart
area, on the Legend Proper ties dialog box, under Docking , select Default from the drop-down list and clear
the Show legend outside char t area option. By placing the legend inside the chart area, you can maximize
space for data points on the chart. However, depending on the dataset, it can cause the legend to overlap some
data points on the chart area, making the chart more difficult to read.

Displaying Legend Items Horizontally


By default, the legend is formatted as a list of one or more rows containing one legend item each. The legend
area expands to accommodate the number of legend items. If the legend cannot expand, an ellipsis (...) is
displayed. Depending on the specified legend style, the legend can expand vertically or horizontally. You can
change the layout style on the Legend Proper ties dialog box or change the allocated space to display all the
legend items.
To display the legend horizontally, dock the legend to the top or bottom of the chart. This causes the legend to
expand horizontally. You can also set the Layout property to Row or Wide Table . Set the MaxAutoSize property
in the Properties pane to control the vertical space allocated to the legend when it is docked at the top or
bottom of the chart area.

Formatting the Legend Text


You can change the font, size, style, and color of legend text on the Font page of the Legend Proper ties dialog
box.
By default, the legend text is not optimized to fit the legend area. To cause the legend text to automatically fit the
allocated space, set the AutoFitTextDisabled property to False and set a minimum font size for the MinFontSize
property to the lowest font size that you think will be presentable and still allow for legend optimization.

See Also
Legend Properties Dialog Box, General (Report Builder and SSRS)
Change the Text of a Legend Item (Report Builder and SSRS)
Formatting a Chart (Report Builder and SSRS)
Formatting Series Colors on a Chart (Report Builder and SSRS)
Charts (Report Builder and SSRS)
Hide Legend Items on the Chart (Report Builder and SSRS)
Define Colors on a Chart Using a Palette (Report Builder and SSRS)
Chart Legend - Hide Items (Report Builder)
11/2/2020 • 2 minutes to read • Edit Online

By default, any series added to a non-Shape chart in a Reporting Services paginated report will be added as an
item in the legend. For pie, doughnut, funnel, and pyramid charts, any series added to the chart will add
individual data points in the legend.
You can hide any item on the legend. When you hide a legend item, it will still appear in the chart. This is useful
in situations where you do not want to show more information for a series that is added to the chart. For
example, if you have added a calculated series like a moving average to the chart, you may want to hide this
entry in the legend so that more information is only shown for the original series.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To hide an item from display in the legend


1. Right-click on the series you want to hide and select Series Proper ties .
2. Click Legend . Select the Do not show this series in a legend option.

NOTE
You cannot hide a series for one group and not for the others. If you have added a field to the Series Groups
area, all series belonging to this group will be hidden.

See Also
Formatting the Legend on a Chart (Report Builder and SSRS)
Formatting Data Points on a Chart (Report Builder and SSRS)
Change the Text of a Legend Item (Report Builder and SSRS)
Add a Moving Average to a Chart (Report Builder and SSRS)
Legend Properties Dialog Box, General (Report Builder and SSRS)
Chart Legend - Change Item Text (Report Builder)
11/2/2020 • 2 minutes to read • Edit Online

When a field is placed in the Values area of the chart, a legend item is automatically generated that contains the
name of this field. Every legend item is connected to an individual series on the chart, with the exception of
shape charts, where the legend is connected to individual data points instead of individual series.
On shape charts, you can change the text of a legend item to show more information about the individual data
points. For example, if you want to show the values of the data points as percentages in the legend, you can use
a keyword such as #PERCENT . You can append .NET Framework format codes in conjunction with keywords to
apply numeric and date formats. For more information about keywords, see Formatting Data Points on a Chart
(Report Builder and SSRS).

On non-shape charts, you can change the text of a legend item. For example, if your series name is "Series1",
you may want to change the text to something more descriptive like "Sales for 2008".

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To modify the text that appears in the legend on a Shape chart


1. Right-click on a series, or right-click on a field in the Values area, and select Series Proper ties .
2. Click Legend and in the Custom legend text box, type a keyword.
The following table provides examples of chart-specific keywords to use for the Custom Legend Text property.
For more information about keywords, see Formatting Data Points on a Chart (Report Builder and SSRS).
EXA M P L E O F W H AT A P P EA RS A S T EXT
K EY W O RD DESC RIP T IO N IN T H E L EGEN D

#PERCENT{P1} Displays the percentage of the total 85.0%


value to one decimal place.

#VALY Displays the actual numeric value of 17000


the data field.

#VALY{C2} Displays the actual numeric value of $17000.00


the data field as a currency to two
decimal places.

#AXISLABEL (#PERCENT{P0}) Displays the text representation of the Michael Blythe (85%)
category field, followed by the
percentage that each category displays
on the chart.

NOTE
The #AXISLABEL keyword can only be evaluated at run time when there is not a field specified in the Series Groups
area.

To modify the text that appears in the legend on a non-Shape chart


1. Right-click on a series, or right-click on a field in the Values area, and select Series Proper ties .
2. Click Legend and in the Custom legend text box, type a legend label. The series is updated with your
text.

See Also
Formatting the Legend on a Chart (Report Builder and SSRS)
Formatting Series Colors on a Chart (Report Builder and SSRS)
Hide Legend Items on the Chart (Report Builder and SSRS)
Formatting Data Points on a Chart (Report Builder
and SSRS)
3/5/2021 • 6 minutes to read • Edit Online

In a Reporting Services paginated report, a data point is the smallest individual entity on the chart. On non-
Shape charts, data points are represented depending on their chart type. For example, a Line series consists of
one or more connected data points. On Shape charts, data points are represented by individual slices or
segments that add up to the whole chart. For example, on a pie chart, each piece is a data point. For more
information, see Chart Types (Report Builder and SSRS).
One or more data points form a series. By default, all formatting options are applied to all data points in the
series. If you want to specify properties for individual data points, you can specify a field or expression on the
series that formats individual data point at run time based on the dataset.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Adding ToolTips and Drillthrough Actions to Data Points


You can add ToolTips to each data point by setting the value of the ToolTip property on the series. By displaying
ToolTips, you can give your users the ability to see any information related to the data point, such as the group
name, the value of the data point and the percentage of the data point relative to the series total. For more
information, see Show ToolTips on a Series (Report Builder and SSRS).
You can also specify a drillthrough action for data points on the series to display another report or a URL. You
can pass parameters to show information relating to the data point that has been clicked. For more information,
see Add a Drillthrough Action on a Report (Report Builder and SSRS).

Highlighting Individual Data Points in a Series


On any non-Shape chart, you can highlight individual data points by specifying an expression for the Color
property. For example, to highlight the highest data point value in a series that is named MyField with a
different color than the other data points, the expression would be similar to the following:
=Iif(Fields!MyField.Value >= Max(Fields!MyField.Value, "MyDataSet"), "Red", "Green")

In this example, the highest value for MyField will have the color Red and all other data points will have the
color Green. When you specify a color for the series using the Fill property on the series, the chart overrides the
colors that are specified in the palette. For more information, see Formatting Series Colors on a Chart (Report
Builder and SSRS).

Positioning Data Point Labels on a Chart


For all chart types, you can show data point labels when you right-click the chart and select Show Data Labels .
The position of the data point labels is specified depending on the chart type:
On a bar chart, you can reposition the data point label using the BarLabelStyle custom attribute. There
are four possible positions: Outside, Left, Center and Right. When the bar label style is set to Outside, the
labels will be positioned outside the bar, as long as it fits in the chart area. If the label cannot be
positioned outside the bar and inside the chart area, the label is positioned inside the bar.
On a pie chart, you can reposition the data point label using the PieLabelStyle custom attribute. There
are many considerations when positioning data point labels around a pie chart, including the size of the
pie chart, the available space between the pie chart and its corresponding legend, and the size of the
labels. For more information, see Display Data Point Labels Outside a Pie Chart (Report Builder and
SSRS).
On a pyramid or funnel chart, you can reposition the data point labels using the FunnelLabelStyle and
PyramidLabelStyle custom attributes. You can set these attributes in the Proper ties pane when you
have selected a pyramid or funnel chart type.
On stacked charts, data point labels are always positioned inside the series and the Position property on
the series label is ignored.
On all other chart types, you can reposition the data point label using the Position property on the series
label. By default, the chart automatically calculates the position for data point labels to avoid label
collisions. When you set a value for Position , all data point labels will be positioned the same way, which
may cause the labels to overlap. Consider using this approach only when you have fewer data points.
For more information, see Position Labels in a Chart (Report Builder and SSRS).

Adding Keywords for Data Point Labels, ToolTips, and Legend Text
You can use case-sensitive, chart-specific keywords to represent an item that exists in the chart. These keywords
are only applicable to ToolTips, custom legend text, and data point label properties. In many cases, a chart
keyword has an equivalent simple expression, but the keyword is faster and easier to type. The following is a list
of chart keywords.

EXA M P L E O F A N
A P P L IC A B L E TO C H A RT EQ UIVA L EN T SIM P L E
C H A RT K EY W O RD DESC RIP T IO N TYPE EXP RESSIO N

#VALY Y value of the data point. All =Fields!MyDataField.Value

#VALY2 Y value #2 of data point. Range, Bubble None

#VALY3 Y value #3 of data point. Stock, Candlestick None

#VALY4 Y value #4 of data point. Stock, Candlestick None

#SERIESNAME Series name. All None

#LABEL Data point label. All None

#AXISLABEL Axis data point label. Shape =Fields!MyDataField.Value

#INDEX Data point index. All None

#PERCENT Percentage of the data All =FormatPercent(Fields!MyDataField.Value/Sum(Fields!MyDataFiel


point Y value. "MyDataSet"),2)

#TOTAL Total of all Y values in the All =Sum(Fields!MyDataField.Value)


series.

#LEGENDTEXT The text that corresponds All None


to the text of the legend
item.

#AVG Average of all Y values in All =Avg(Fields!MyDataField.Value)


the series.

#MIN Minimum of all Y values in All =Min(Fields!MyDataField.Value)


the series.

#MAX Maximum of all Y values in All =Max(Fields!MyDataField.Value)


the series.

#FIRST First of all Y values in the All =First(Fields!MyDataField.Value)


series.

To format the keyword, enclose a .NET Framework format string in parentheses. For example, to specify the
value of the data point in a ToolTip as a number with two decimal places, include the format string "N2" in
braces, such as "#VALY{N2}" for the ToolTip property on the series. For more information about .NET
Framework format strings, see Formatting Types on MSDN. For more information about formatting numbers in
Reporting Services, see Formatting Numbers and Dates (Report Builder and SSRS).
For more information about adding keywords to a chart, see Show ToolTips on a Series (Report Builder and
SSRS), Change the Text of a Legend Item (Report Builder and SSRS).

Increasing Readability in a Chart with Multiple Data Points


If you have multiple series on your chart, it may reduce the readability of the chart data points. When adding
multiple series to the chart, consider using a technique that distinguishes how to read and understand each
series in the chart effectively. For more information, see Multiple Series on a Chart (Report Builder and SSRS).
For simplicity, when you are using a Shape chart, consider adding only one data field and one category field. For
more information, see Shape Charts (Report Builder and SSRS). If your chart needs more than one data field
and category field, consider changing the chart type. You can right-click the series and select Change Char t
Type .

Inserting Data Point Markers


A data point marker is a visual indicator used to draw attention to each data point in a series. On a scatter chart,
the marker is used to determine the shape and size of the individual data points. The size of the marker is
specified based on the chart type. You can change the size, color, or style of the marker. Markers are not available
for range and shape chart types, or any stacked subtypes.

In This Section
Show ToolTips on a Series (Report Builder and SSRS)
Display Data Point Labels Outside a Pie Chart (Report Builder and SSRS)
Display Percentage Values on a Pie Chart (Report Builder and SSRS)

See Also
Formatting a Chart (Report Builder and SSRS)
Formatting Axis Labels on a Chart (Report Builder and SSRS)
Charts (Report Builder and SSRS)
Format Axis Labels as Dates or Currencies (Report Builder and SSRS)
Tutorial: Add a Pie Chart to Your Report (Report Builder)
Expression Examples (Report Builder and SSRS)
Expressions (Report Builder and SSRS)
Show ToolTips on a Series (Report Builder and
SSRS)
11/2/2020 • 2 minutes to read • Edit Online

You can add a ToolTip to each data point on the series of a chart to display information related to the data point,
such as the group name, the value of the data point, or the percentage of the data point relative to the series
total. When users hover over the data point in a rendered paginated report, they'll see this information.
You cannot add a ToolTip to a calculated series.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To specify a ToolTip on each data point


1. Right-click on the series or right-click on the field in the Values area, and click Series Proper ties .
2. Click Series Data and, for the ToolTip property, type in a string or expression. You can use any chart-
specific keyword to represent another element on the chart. For more information, see Formatting Data
Points on a Chart (Report Builder and SSRS).

See Also
Formatting Data Points on a Chart (Report Builder and SSRS)
Change the Text of a Legend Item (Report Builder and SSRS)
Formatting Series Colors on a Chart (Report Builder and SSRS)
Add a Drillthrough Action on a Report (Report Builder and SSRS)
Display Data Point Labels Outside a Pie Chart
(Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

In Reporting Services, pie chart labeling is optimized to display labels on only several slices of data. Labels may
overlap if the pie chart contains too many slices. One solution is to display the labels outside the pie chart, which
may create more room for longer data labels. If you find that your labels still overlap, you can create more space
for them by enabling 3D. This reduces the diameter of the pie chart, creating more space around the chart.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To display data point labels inside a pie chart


1. Add a pie chart to your report. For more information, see Add a Chart to a Report (Report Builder and
SSRS).
2. On the design surface, right-click on the chart and select Show Data Labels .
To display data point labels outside a pie chart
1. Create a pie chart and display the data labels.
2. Open the Properties pane.
3. On the design surface, click on the pie itself to display the Categor y properties in the Properties pane.
4. Expand the CustomAttributes node. A list of attributes for the pie chart is displayed.
5. Set the PieLabelStyle property to Outside .
6. Set the PieLineColor property to Black . The PieLineColor property defines callout lines for each data
point label.
To prevent overlapping labels displayed outside a pie chart
1. Create a pie chart with external labels.
2. On the design surface, right-click outside the pie chart but inside the chart borders and select Char t
Area Proper ties .The Char t AreaProper ties dialog box appears.
3. On the 3D Options tab, select Enable 3D .
4. If you want the chart to have more room for labels but still appear two-dimensional, set the Rotation
and Inclination properties to 0 .

See Also
Pie Charts (Report Builder and SSRS)
Collect Small Slices on a Pie Chart (Report Builder and SSRS)
Display Percentage Values on a Pie Chart (Report Builder and SSRS)
Display Percentage Values on a Pie Chart (Report
Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

In Reporting Services paginated reports, by default the legend shows categories. You may also want
percentages in the legend or the pie slices themselves.

The Tutorial: Add a Pie Chart to Your Report (Report Builder) walks you through adding percentages to pie slices,
if you'd like to try this with sample data first.

To display percentage values as labels on a pie chart


1. Add a pie chart to your report. For more information, see Add a Chart to a Report (Report Builder and
SSRS).
2. On the design surface, right-click on the pie and select Show Data Labels . The data labels should appear
within each slice on the pie chart.
3. On the design surface, right-click on the labels and select Series Label Proper ties . The Series Label
Proper ties dialog box appears.
4. Type #PERCENT for the Label data option.
5. (Optional) To specify how many decimal places the label shows, type "#PERCENT{Pn}" where n is the
number of decimal places to display. For example, to display no decimal places, type "#PERCENT{P0}".

To display percentage values in the legend of a pie chart


1. On the design surface, right-click on the pie chart and select Series Proper ties . The Series Proper ties
dialog box displays.
2. In Legend , type #PERCENT for the Custom legend text property.

See Also
Tutorial: Add a Pie Chart to Your Report (Report Builder)
Pie Charts (Report Builder and SSRS)
Formatting the Legend on a Chart (Report Builder and SSRS)
Display Data Point Labels Outside a Pie Chart (Report Builder and SSRS)
Chart Effects - 3D, Bevel, and Other (Report
Builder)
11/2/2020 • 3 minutes to read • Edit Online

Three-dimensional (3D) effects can be used to provide depth and add visual impact to charts in your Reporting
Services paginated reports. For example, if you want to emphasize a particular slice of an exploded pie chart,
you can rotate and change the perspective of the chart so that people notice that slice first. When 3D effects are
applied to your chart, all gradient colors and hatching styles are disabled.
Three-dimensional effects can be applied to individual charts, and it is possible to display both two-dimensional
and three-dimensional charts on the same report.
For all chart types, you can add three-dimensional effects to a chart area in the Char t Area Proper ties dialog
box by selecting Enable 3D . For more information, see Add 3D Effects to a Chart (Report Builder and SSRS).
Another way to add visual impact to charts is by adding bevel, emboss and texture styles in bar, column, pie and
doughnut charts. For more information, see Add Bevel, Emboss, and Texture Styles to a Chart (Report Builder
and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Coordinate-Based Three-Dimensional Charts


When working with coordinate-based chart types (Column, Bar, Area, Point, Line and Range), three-dimensional
effects display the chart with a third axis, known as the "z-axis". The introduction of this third axis allows you to
apply a variety of visual enhancements to your chart.
Changing the White Space in a 3D Chart
When you display a chart area in three-dimensional mode, each series is shown in a separate row along the z-
axis of the chart. To change the amount of space between each series, modify the chart's point gap depth by
changing the Point Gap Depth property in the 3D Effects dialog box.
Changing the Projection of a 3D Chart
There are two types of 3D projections: oblique and perspective. An oblique projection to the chart adds a depth
dimension to a two-dimensional chart. The z-axis is drawn at equal angles from the horizontal and vertical axes,
which remain perpendicular to each other just as in a two-dimensional chart.
Perspective projection transforms the chart by estimating a view plane and re-drawing the chart as if it were
being viewed from that point. The Rotation value shifts the view vertically from "ground level" at 0 to overhead
at 90. The Inclination value shifts the viewing angle to the left or right. A value of 0 is equivalent to a two-
dimensional view of the chart. The Perspective value defines the percentage of distortion that will be used
when displaying the projection. This type of projection maintains the proportions of your chart, but the chart's
appearance becomes distorted, so it is most effective to use a lower degree of perspective.
NOTE
The oblique and perspective projections are separate types of projections, so they cannot be used together on the same
chart.

Clustering Data
In 2D charts, multiple series of data appear side-by-side. Clustering shows individual series in separate rows on
a 3D chart. For example, if you have a chart that contains three series of data points, clustering will display each
of the three series on a separate row along the z-axis. By default, all chart types shown in 3D are clustered.
Clustering can be disabled for bar and column charts. When clustering is disabled, multiple bar and column
series are displayed side-by-side in one row.

Shape-Based Three-Dimensional Charts


Shape-based chart types (Pie, Doughnut, Funnel, Pyramid) have fewer three-dimensional effects available. When
working with shape-based chart types, you can change the rotation and inclination values only.

Rotations
Charts can be rotated horizontally and vertically from -90 to 90 degrees. A positive horizontal angle will rotate
the chart counter-clockwise around the x-axis, while a positive vertical angle will rotate the chart clockwise
around the y-axis.

Highlighting 3D Effects
You can add highlighting styles to a 3D chart via the Shading property, which appears under Area3DStyle in the
Properties pane when the chart area is selected. A simple lighting style applies the same hue to the chart area
elements. A realistic style changes the hues of the chart area elements depending on a specified lighting angle.

See Also
Formatting Axis Labels on a Chart (Report Builder and SSRS)
Formatting a Chart (Report Builder and SSRS)
Add 3D Effects to a Chart (Report Builder and SSRS)
Chart Effects - Add 3D Effects (Report Builder)
11/2/2020 • 2 minutes to read • Edit Online

Three-dimensional (3D) effects can be used to provide depth and add visual impact to charts in your Reporting
Services paginated reports. For example, if you want to emphasize a particular slice of an exploded pie chart,
you can rotate and change the perspective of the chart so that people notice that slice first. When 3D effects are
applied to your chart, all gradient colors and hatching styles are disabled.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To apply 3D effects to a Range, Area, Line, Scatter or Polar chart


1. Right-click anywhere inside the chart area and select 3D Effects . The Char t Area Proper ties dialog
box appears.
2. In 3D Options , select the Enable 3D option.
3. (Optional) In 3D Options , you can set a variety of properties relating to 3D angles and scene options.
For more information about these properties, see 3D, Bevel, and Other Effects in a Chart (Report Builder
and SSRS).
4. Click OK .

To apply 3D effects to a Funnel chart


1. Right-click anywhere inside the chart area and select 3D Effects . The Char t Area Proper ties dialog
box appears.
2. In 3D Options , select the Enable 3D option. Click OK .
3. (Optional) To customize the funnel chart visual appearance, you can go to the Properties pane and
change properties specific to the funnel chart.
a. Open the Properties pane.
b. On the design surface, click anywhere on the funnel. The properties for the series of the funnel
chart are displayed in the Properties pane.
c. In the General section, expand the CustomAttributes node.
d. For the Funnel3DDrawingStyle property, select whether the funnel will be shown with as
circular or square.
e. For the Funnel3DRotationAngle property, set a value between -10 and 10. This will determine
the degree of tilt that will be displayed on the 3D funnel chart.

To apply 3D effects to a Pie chart


1. Right-click anywhere inside the chart area and select 3D Effects. The Char t Area Proper ties dialog box
appears.
2. In 3D Options , select the Enable 3D option. Click OK .
3. (Optional) In Rotation , type an integer value that represents the horizontal rotation of the pie chart.
4. (Optional) In Inclination , type an integer value that represents the vertical tilt rotation of the pie chart.
5. Click OK .

To apply 3D effects to a Bar or Column chart


1. Right-click anywhere inside the chart area and select 3D Effects . The Char t Area Proper ties dialog
box appears.
2. Select the Enable 3D option. Click OK .
3. (Optional) Select the Enable series clustering option. If your chart contains multiple bar or column
chart series, this option will display the series as clustered. By default, multiple bar or column series are
shown side-by-side.
4. Click OK .
5. (Optional) To add cylinder effects to a bar or column chart, follow these steps:
a. Open the Properties pane.
b. On the design surface, click any of the bars in the series. The properties for the series are displayed
in the Properties pane.
c. In the General section, expand the CustomAttributes node.
d. For the DrawingStyle property, specify the Cylinder value.

See Also
3D, Bevel, and Other Effects in a Chart (Report Builder and SSRS)
Formatting a Chart (Report Builder and SSRS)
Charts (Report Builder and SSRS)
Chart Effects - Add Bevel, Emboss, or Texture
(Report Builder)
11/2/2020 • 2 minutes to read • Edit Online

When using certain chart types, you can specify a drawing effect to increase the visual impact of your chart.
These drawing effects are only applied to the series of your chart. They have no effect on any other chart
element.
When you are using any variant of a pie or doughnut chart, you can specify a soft edge or concave drawing
style, similar to bevel or emboss effects that can be applied to an image.
When you are using any variant of a bar or column chart, you can apply texture styles, such as cylinder, wedge,
and light-to-dark, to the individual bars or columns.
In addition to these drawing styles, you can add borders and shadows to many chart elements to give the
illusion of depth. For more information on other ways to format the chart, see Formatting a Chart (Report
Builder and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To add bevel or emboss styles to a pie or doughnut chart


1. On the View tab, select Proper ties to open the Properties pane.
2. Select the pie or doughnut chart that you want to enhance. Select a data field in the chart, not the entire
chart.
3. In the Properties pane, expand the CustomAttributes node.
4. For PieDrawingStyle, select a style from the drop-down list.

NOTE
You can't have 3D and bevel or emboss styles on the same chart. If you have enabled 3D for the chart, you will not see
the PieDrawingStyle property.

To add texture styles to a bar or column chart


1. Select the bar or column chart that you want to enhance. Select a data field in the chart, not the entire
chart.
2. Open the Properties pane.
3. Expand the CustomAttributes node.
4. For DrawingStyle, select a style from the drop-down list.

NOTE
You can't have 3D and bevel or emboss styles on the same chart. If you have enabled 3D for the chart, you will not see
the PieDrawingStyle property.

See Also
Bar Charts (Report Builder and SSRS)
Column Charts (Report Builder and SSRS)
Pie Charts (Report Builder and SSRS)
Formatting a Chart (Report Builder and SSRS)
Add a Border Frame to a Chart (Report Builder and
SSRS)
11/2/2020 • 2 minutes to read • Edit Online

To give a chart more visual impact, consider using a border frame around the outside of the chart. You can select
a border frame by using the Char t Proper ties dialog box or by using the Properties pane. The chart border
frames cannot be applied to any other data region.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To apply a border to a chart


1. Right-click anywhere on the chart and select Char t Proper ties .

NOTE
If you do not see the Char t Proper ties , point to Char t on the shortcut menu and select Char t Proper ties .

2. Select Border , and click the type of border to apply to the chart.
3. (Optional) Select a value or type an expression that represents the style of the border.
4. (Optional) Specify the color of the line that will be drawn around the chart as the border.

NOTE
The Line color list contains common colors. If you want to select from a list of more colors, click More colors in
the list or click the expression (fx) button next to the list to bring up the Expression editor.

5. (Optional) Specify the width of the border. Valid values are between 0.25pt and 20pt. Consider keeping
the size of your border to between 1 and 3pt for the best visual effect.
6. (Optional) If your report contains a background color other than white, consider defining a page color
that is the same color. The page color is the background color outside of the border line.
7. (Optional) If you choose a Frame type, specify a style and color for the frame. The Frame fill color list
contains common colors.

See Also
Charts (Report Builder and SSRS)
Formatting a Chart (Report Builder and SSRS)
Add Bevel, Emboss, and Texture Styles to a Chart (Report Builder and SSRS)
Start Pie Chart Values at the Top of the Pie (Report
Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

In pie charts in Reporting Services paginated reports, by default the first value in the dataset starts at 90
degrees from the top of the pie.

Chart values start at 90 degrees.


You might want the first value to start at the top instead.

Chart values start at the top of the chart.

To Start the Pie Chart at the Top of the Pie


1. Click the pie itself.
2. If the Proper ties pane is not open, on the View tab, click Proper ties .
3. In the Proper ties pane, under Custom Attributes , change PieStar tAngle from 0 to 270 .
4. Click Run to preview your report.
The first value now starts at the top of the pie chart.

See Also
Formatting a Chart (Report Builder and SSRS)
Pie Charts (Report Builder and SSRS)
Empty and Null Data Points in Charts (Report
Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

If you are displaying fields with empty or null values in a chart in your Reporting Services paginated report, the
chart may not look as you expect. Charts process empty values differently depending on the specified chart
type:
If the chart type is a linear chart type (bar, column, scatter, line, area, range), empty values are displayed as
empty spaces or "gaps" in the chart. If you want to indicate empty points, you must add empty point
placeholders. For more information, see Add Empty Points to a Chart (Report Builder and SSRS).
If the chart type is a contiguous, linear chart type (area, bar, column, line, scatter), empty data points are
added to the chart to maintain continuity in the series.
If the chart type is a nonlinear chart type (polar, pie, doughnut, funnel or pyramid), empty values are
omitted from display on the chart.
In shape chart types, null values are omitted.
An example of a chart with empty data points is available as a sample report. For more information about
downloading this sample report and others, see Report Builder and Report Designer sample reports.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Removing Empty or Null Values


To avoid obscuring important data, consider removing empty values from your dataset. To filter nulls, you can
use the NOT IS NULL clause in your query. Alternatively, you can add a filtering expression that specifies that
you only want to display values not equal to zero. For more information, see Add Dataset Filters, Data Region
Filters, and Group Filters (Report Builder and SSRS).

Fields with No Values in a Chart


If a field does not contain any values in the returned dataset, the chart displays an empty chart with no data
points, but the series name (typically the field name) is added as a legend item.
This behavior differs from the case where there are zero rows of data in the returned dataset, which can occur
when the report is parameterized and the selected value returns an empty result set. If your dataset query
returns zero rows of data, a message is displayed at run time to indicate that no data can be shown. You can
customize this message by modifying the NoDataMessage caption for the report in the Proper ties pane. For
more information, see Report Embedded Datasets and Shared Datasets (Report Builder and SSRS).

Next steps
Charts
Formatting a Chart
Add a Chart to a Report
Troubleshoot Charts
More questions? Try asking the Reporting Services forum
Add Empty Points to a Chart (Report Builder and
SSRS)
11/2/2020 • 2 minutes to read • Edit Online

Null values are shown on the chart as empty spaces or gaps between data points in a series. In Reporting
Services paginated reports, empty points are data points that can be inserted in the empty space created by null
values.
By default, empty points are calculated by taking the average of the previous and next data points that contain a
value. You can change this so that all empty points are inserted at zero.
For more information, see Empty and Null Data Points in Charts (Report Builder and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To specify empty points on a chart


1. Open the Properties pane.
2. On the design surface, right-click the series that contains null values. The properties for the series are
displayed in the Properties pane.
3. Expand the EmptyPoint node.
4. Select a color value for the Color property.
5. In the EmptyPoint node, expand the Marker node.
6. Select a marker type for the MarkerType property.

NOTE
You must select a marker type to add empty points to a bar, column or scatter chart. However, for area, line and
radar charts, selecting a marker type is optional because the chart fills in the empty space or gap without
requiring a marker to be specified.

7. Set the value of the empty point.


a. In the Properties pane, expand the CustomAttributes node.
b. Set the EmptyPointValue property. To insert empty points at an average of the previous and next
data points, select Average . To insert empty points at zero, select Zero .

See Also
Add Dataset Filters, Data Region Filters, and Group Filters (Report Builder and SSRS)
Chart Types (Report Builder and SSRS)
Add Scale Breaks to a Chart (Report Builder and SSRS)
Charts (Report Builder and SSRS)
Displaying a Series with Multiple Data Ranges on a
Chart
11/2/2020 • 3 minutes to read • Edit Online

Chart will use the minimum and maximum values of a series to calculate the axis scale. When a series on your
chart contains more than one range of data, the data points can become obscured, and only a few data points to
be seen easily on the chart. For example, suppose a report displays daily sales totals over a period of 30 days.

For most of the month, the sales are between 10 and 40. However, a one-week sales marketing campaign has
caused a sudden sales increase at the beginning of April. This change in sales data produces an uneven
distribution of data points that reduces the overall readability of the chart.
There are different ways to improve readability:
Enable scale breaks . If your data forms two or more sets of data ranges, use a scale break to remove
the gap between the ranges. A scale break is a stripe drawn across the plotting area to denote a break
between the high and low values of a series.
Filter out unnecessar y values . If you have data points that are obscuring the important data range to
be displayed on the chart, remove the unwanted points using a report filter. For information on how to
add a filter to the chart in Reporting Services, see Add Dataset Filters, Data Region Filters, and Group
Filters (Report Builder and SSRS).
Plot each data range as a separate series for multiple series comparison . If you have more than
two data ranges, consider separating the data ranges into separate series. For more information, see
Multiple Series on a Chart (Report Builder and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Displaying Multiple Data Ranges Using Scale Breaks


When you enable a scale break, the chart calculates where to draw a line across the chart. You must have
sufficient separation between ranges to draw a scale break. By default, a scale break can be added only if there is
a separation between the data ranges of at least 25% of the chart.
NOTE
You cannot specify where to place a scale break on a chart. You can, however, modify how the scale break is calculated,
described later in this topic.

If you enable a scale break but it does not appear, even though there is sufficient distance between the data
ranges, you can set the CollapsibleSpaceThreshold property to a value less than 25. The
CollapsibleSpaceThreshold specifies the percent of collapsible space required between the data ranges. For
more information, see Add Scale Breaks to a Chart (Report Builder and SSRS).
Charts support up to five scale breaks per chart; however, displaying more than one scale break can cause the
chart to become unreadable. If you have more than two data ranges, consider using a different method for
displaying this data. For more information, see Multiple Series on a Chart (Report Builder and SSRS).

Unsupported Scale Break Scenarios


Scale breaks are not supported in the following chart scenarios:
The chart is 3-D enabled.
A logarithmic value axis has been specified.
The value axis minimum or maximum has been explicitly set.
The chart type is polar, radar, pie, doughnut, funnel, pyramid, or any stacked chart.
An example of chart with scale breaks is available as a sample report. For more information about downloading
this sample report and others, see Report Builder and Report Designer sample reports.

Next steps
Multiple Series on a Chart
Formatting a Chart
3D, Bevel, and Other Effects in a Chart
Charts
Axis Properties Dialog Box, Axis Options
Collect Small Slices on a Pie Chart
More questions? Try asking the Reporting Services forum
Add Scale Breaks to a Chart (Report Builder and
SSRS)
11/2/2020 • 2 minutes to read • Edit Online

A scale break is a stripe drawn across the plotting area of a chart to denote a break in continuity between the
high and low values on a value axis (usually the vertical, or y-axis). Use a scale break to display two distinct
ranges in the same chart area.

NOTE
You cannot specify where to place a scale break on your chart. The chart uses its own calculations based on the values in
your dataset to determine whether there is sufficient separation between data ranges to draw a scale break on the value
axis (y-axis) at run time.

An example of a chart with scale breaks is available as a sample report. For more information about
downloading this sample report and others, see Report Builder and Report Designer sample reports.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To enable scale breaks on the chart


1. Right-click the vertical axis and then click Axis Proper ties . The Ver ticalAxis Proper ties dialog box
opens.
2. Select the Enable scale breaks check box.
To change the style of the scale break
1. Open the Properties pane.
2. On the design surface, right-click on the y-axis of the chart. The properties for the y-axis object (named
Chart Axis by default) are displayed in the Properties pane.
3. In the Scale section, expand the ScaleBreakStyle property.
4. Change the values for ScaleBreakStyle properties, such as BreakLineType and Spacing. For more
information about scale break properties, see Displaying a Series with Multiple Data Ranges on a Chart
(Report Builder and SSRS).
Next steps
Charts
Formatting a Chart
Axis Properties Dialog Box, Axis Options
More questions? Try asking the Reporting Services forum
Multiple Series on a Chart (Report Builder and
SSRS)
11/2/2020 • 4 minutes to read • Edit Online

When multiple series are present on a chart, you must determine the best way to compare the series. You can
use a stacked chart to show relative proportions of each series. If you are comparing only two series that share a
common category (x) axis, use the secondary axis. This is useful when showing two related series of data, for
example, price and volume, or income and tax. If the chart becomes unreadable, consider using multiple chart
areas to create more visual separation between each series.
In addition to using chart features, it is important to decide which chart type should be used for your data. If the
fields in your dataset are related, consider using a range chart.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Using Stacked and 100% Stacked Charts


Stacked charts are commonly used to display multiple series in one chart area. Consider using stacked charts
when the data that you are trying to show is closely related. It is also a good practice to show four or less series
on a stacked chart. If you want to compare the proportion that each series contributes to the whole, use a 100%
stacked area, bar, or column chart. These charts calculate the relative percentage that each series contributes to
the category. For more information, see Area Charts (Report Builder and SSRS), Bar Charts (Report Builder and
SSRS) and Column Charts (Report Builder and SSRS).

Using the Secondary Axis


When a new series is added to the chart, it is plotted using the primary x and y axes. When you want to compare
values that are of a different unit of measure, consider using the secondary axis so that you can plot two series
on separate axes. The secondary axis is useful when comparing values that are of a different unit of measure.
The secondary axis is drawn on the opposite side of the primary axis. The chart only supports a primary and a
secondary axis. The secondary axis has the same properties as the primary axis. For more information, see Plot
Data on a Secondary Axis (Report Builder and SSRS).
If you want to display more than two series that have different ranges of data, consider putting the series in
separate chart areas.

Using Chart Areas


The chart is the top-level container that includes the outer border, the chart title, and the legend. By default, the
chart contains one default chart area. The chart area is not visible on the chart surface, but you can think of the
chart area as a container that includes only the axis labels, the axis title, and the plotting area of one or more
series. The following illustration shows the concept of chart areas within a single chart.
Using the Char t Area Proper ties dialog box, you can specify the 2D and 3D orientation of all series contained
in the chart area, align multiple chart areas within the same chart, and format the colors of the plotting area.
When a new chart area is defined on a chart that contains only one default chart area, the available space for a
chart area is horizontally divided by two and the new chart area is positioned below the first chart area.
Each series can be connected to only one chart area. By default, all series are added to the default chart area.
When using area, column, line, and scatter charts, any combination of these series can be displayed on the same
chart area. For example, you can display a column series and a line series on the same chart area. The advantage
of using the same chart area for multiple series is that end users can make comparisons easily.
Bar, radar, and shape charts cannot be combined with any other chart type in the same chart area. If you want to
make comparisons with multiple series that are of type bar, radar, or shape, you will need to do one of the
following:
Change all series in the chart area to be of the same chart type.
Create a new chart area and move one or more of the series from the default chart area into the newly
created chart area.
The multiple chart area on a single chart feature is also useful if you are trying to compare data that has
different scales of values. For example, if your first series contains data in the range of 10 to 20 and your second
series contains data in the range of 400 to 800, the values in your first series may become obscured. Consider
separating each series into a different chart area. For more information, see Specify a Chart Area for a Series
(Report Builder and SSRS).

Using Range Charts


Range charts have two values per data point. If your chart contains two series that share the same category (x)
axis, you can use a range chart to show the difference between the two series. Range charts are best suited for
displaying high-low or top-bottom information. For example, if your first series contains the highest sale for
each day in January, and your second series contains the lowest sale for each day in January, you can use a
range chart to show the difference between the highest and lowest sale for each day. For more information, see
Range Charts (Report Builder and SSRS).

See Also
Charts (Report Builder and SSRS)
Displaying a Series with Multiple Data Ranges on a Chart (Report Builder and SSRS)
Chart Types (Report Builder and SSRS)
Specify a Chart Area for a Series (Report Builder
and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

In Reporting Services paginated reports, the chart is the top-level container that includes the outer border, the
chart title, and the legend. By default, the chart contains one chart area. The chart area is not visible on the chart
surface, but you can think of the chart area as a container that encompasses only the axis labels, the axis title
and the plotting area of one or more series. The following illustration shows the concept of multiple chart areas
within a single chart.

By default, all series are added to the default chart area. When using area, column, line, and scatter charts, any
combination of these series can be displayed on the same chart area. If you have several series in the same
chart area, the readability of the chart is reduced. You may want to separate the chart types into multiple chart
areas. Using multiple chart areas will increase readability for easier comparisons. For example, price-volume
stock charts often have different ranges of values, but comparisons can be made between the price and volume
data over the same period of time.
The bar, polar, or shape series can only be combined with series of the same chart types in the same chart area.
If you are using a Polar or Shape chart, consider using a separate chart data region for each field that you wish
to show.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To associate a series with a new chart area


1. Right-click anywhere on the chart and select Add New Char t Area . A new, blank chart area appears on
the chart.
2. Right-click the series on the chart or right-click a series or data field in the appropriate area in the Chart
Data pane, and then click Series Proper ties .
3. In Axes and Char t Areas , select the chart area that you want the series to be shown in.
4. (Optional) Align the chart areas vertically. To do this, right-click the chart and select Char t Area
Proper ties . In Alignment , select another chart area that you want to align the selected chart area with.
See Also
Multiple Series on a Chart (Report Builder and SSRS)
Formatting Data Points on a Chart (Report Builder and SSRS)
Define Colors on a Chart Using a Palette (Report Builder and SSRS)
Polar Charts (Report Builder and SSRS)
Shape Charts (Report Builder and SSRS)
Pie Charts (Report Builder and SSRS)
Plot Data on a Secondary Axis (Report Builder and
SSRS)
11/2/2020 • 2 minutes to read • Edit Online

The chart has two axis types: primary and secondary. The secondary axis is useful when comparing two value
sets with two distinct data ranges that share a common category.
For example, suppose you have a chart that calculates Revenue vs. Tax for the year 2008. In this case, the 2008
time period is common to both value sets. However, when both series are plotted on the same y-axis, we cannot
make a useful comparison because the scale of the y-axis is optimized for the largest values in the dataset. If we
show Revenue on the primary axis, and Tax on the secondary axis, we can display each series on its own y-axis
with its own scale of values. The series still share a common x-axis.
In situations where there are more than two series to be compared, consider a different approach for comparing
and displaying multiple series in a chart. For more information, see Multiple Series on a Chart.
An example of this chart is available as a sample report. For more information about downloading this sample
report and others, see Report Builder and Report Designer sample reports.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To plot a series on the secondary axis


1. Right-click the series in the chart or right-click on a field in the Values area that you want to display on
the secondary axis and click Series Proper ties . The Series Proper ties dialog box appears.
2. Click Axes and Char t Area , and select which of the secondary axes you want to enable, the value axis or
the category axis.

Next steps
Formatting Axis Labels on a Chart
Specify an Axis Interval
More questions? Try asking the Reporting Services forum
Linking Multiple Data Regions to the Same Dataset
(Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

You can add multiple data regions to a Reporting Services paginated report to provide different views of data
from the same report dataset. For example, you might want to display data in a table and also display it visually
in a chart. To do so, you must use identical expressions and scopes for the appropriate filter expressions, sort
expressions, and group expressions.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To use a chart and a table or matrix to display the same data, it helps to understand the similarities between a
table and shape charts, and a matrix and area, bar, and column charts. A table with a single row group can easily
be displayed as a pie chart. As you add multiple row groups, you can choose different types of charts to best
display the nested groups. Adding nested row groups to a pie chart increases the number of slices in the pie.
You must decide if the number of group instances for the parent group and child group combined is too many
to display in a single pie chart. For multiple group values that display as small slices on a pie chart, you can set a
property so that all values below a certain threshold display as one pie slice. For more information, see Collect
Small Slices on a Pie Chart.
A table with multiple row groups can be shown as a column chart with multiple category groups. For more
information, see Display the Same Data on a Matrix and a Chart. For an example of a table and chart that
present different views of the same report dataset, see the Product Line Sales report in AdventureWorks Report
Samples. Because both the table and the chart are linked to the same dataset in this report, when you click the
interactive sort button for Employee Name in the sort the Top Employees table, the Top Employees chart also
automatically shows the new sort order. For more information about downloading this sample report and
others, see Report Builder and Report Designer sample reports.
A matrix with multiple row and column groups can best be displayed by using an area, bar, or column chart with
both category and series groups. Use the same group expressions for column groups on the matrix and
category groups on the chart, and the same group expressions for row groups on the matrix and series groups
on the chart. You must keep in mind that the number of group instances affects the readability of the chart. You
can define groups based on range values to reduce the number of group instances in a report. For more
information, see Group Expression Examples.

Next steps
Charts
Tables, Matrices, and Lists
Nested Data Regions
More questions? Try asking the Reporting Services forum
Display the Same Data on a Matrix and a Chart
(Report Builder)
11/2/2020 • 4 minutes to read • Edit Online

When you want to show the same data in a matrix and a chart, you must set properties on both data regions to
specify the same dataset, and also the same expressions for filters, groups, sorts, and data.
Because both data regions will have the same ancestor for data (the report dataset), you can add an interactive
sort button to the matrix that, when the user clicks it, changes the sort order for both the matrix and the chart.
For more information, see Add Interactive Sort to a Table or Matrix (Report Builder and SSRS).
To use the matrix column group values as a legend for the chart, you must specify the colors for the series data
on the chart, and then use the same colors as the fill colors for the background of the text boxes in the matrix
cell that displays the group values. For more information, see Specify Consistent Colors across Multiple Shape
Charts (Report Builder and SSRS).
At run-time, your report may appear cluttered if there are too many group values for your group definitions.
You might need to filter values, combine groups, or adjust the threshold for the chart to combine groups for
you. For more information, see Linking Multiple Data Regions to the Same Dataset (Report Builder and SSRS)

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To add a matrix and chart to display the same data


1. Open a report in design view.
2. From the Inser t tab, in the Data Regions group, click Matrix , and then click the report body or in a
rectangle in the report body. A matrix is added to the report.
3. From the Inser t tab, in the Data Regions group, click Char t , and then select the chart type. A chart is
added to the report.
4. (Optional) From the Inser t tab, in the Repor t Items group, click Rectangle , and then click the report. A
rectangle is added to the report. Drag the matrix and chart from steps 2 and 3 into the rectangle.
By placing multiple data regions in the rectangle container, you help control how the matrix and chart
render when you view the report.
In the next few steps, you will choose the same dataset field to display in the matrix and to display in the
chart.
5. From the Report Data pane, drag a numeric dataset field to the Data cell in the matrix.
By default, the aggregate function Sum is used for calculating the group value. If you change the
aggregate function in the matrix, you must change in the chart also.
6. In the matrix, right-click the cell with data, click Text Box Proper ties , and then click Number . Choose an
appropriate format for the dataset field value.
7. Click OK .
8. Drag the same dataset field you chose in step 3 to the Values area on the chart.
9. In the chart, right-click the Y axis, click Axis Proper ties , and then click Number . Choose the same
format for the data that you chose in step 4.
10. Click OK .
In the next few steps, you will set the matrix row group and the chart series group to the same
expression, and also set the sort order for the chart series group.
11. From the Report Data pane, drag the dataset field that you want to group by for matrix rows to the Row
Groups pane.
By default, the matrix row group adds a sort expression that is the same as the group expression.
12. Drag the same dataset field that you used in step 9 to the Series Groups area for the chart.
13. Right-click the group in the Series Groups area, and then click Series Group Proper ties .
14. Click Sor ting .
15. Click Add . A new row appears in the sort expressions grid.
16. In Sor t by , from the drop-down list, choose the dataset field that you chose to group by in step 9.
17. Click OK .
In the next few steps, you will set the matrix column group and the chart category group to the same
expression, and also set the sort order for the chart category group.
18. From the Report Data pane, drag the dataset field that you want to group by for matrix columns to the
Column Groups pane.
By default, the matrix column group adds a sort expression that is the same as the group expression.
19. Drag the same dataset field that you used in step 16 to the Categor y Groups area for the chart.
20. Right-click the group in the Categor yGroups area, and then click Categor y Group Proper ties .
21. Click Sor ting .
22. Click Add . A new row appears in the sort expressions grid.
23. In Sor t by , from the drop-down list, choose the dataset field that you chose to group by in step 16.
24. Click OK .
25. Preview the result. The matrix row and column groups display the same data as the chart series and
category groups.

See Also
Linking Multiple Data Regions to the Same Dataset (Report Builder and SSRS)
Add Dataset Filters, Data Region Filters, and Group Filters (Report Builder and SSRS)
Tables, Matrices, and Lists (Report Builder and SSRS)
Charts (Report Builder and SSRS)
Add or Delete a Group in a Chart (Report Builder
and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

In Reporting Services paginated reports, click in the chart data region to display the Char t Data pane. Create
groups by dragging dataset fields to the Categor y Groups and Series Groups areas. To add nested groups,
add multiple fields to the area.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To add a parent or child group to a chart


1. On the report design surface, click anywhere in the chart to select it. The Char t Data pane appears.
2. Drag a field from the Repor t Data window to the Categor y Groups or Series Groups area. To add a
parent group, position the cursor in front of an existing group. To add a child group, position the cursor
after an existing group.

To edit a category group on a chart


1. On the report design surface, click anywhere in the chart to select it. The Char t Data pane appears.
2. Right-click the group in the Categor y Groups area, and then click Categor y Group Proper ties .
3. Add or remove group expressions, filters, sort expressions, and group variables.
4. Click OK .

To edit a series group on a chart


1. On the report design surface, click anywhere in the chart to select it. The Char t Data pane appears.
2. Right-click the group in the Series Groups area, and then click Series Group Proper ties .
3. Add or remove group expressions, filters, sort expressions, and group variables.
4. Click OK .

To delete a group from a chart


1. On the report design surface, click anywhere in the chart to select it. The Char t Data pane appears.
2. Right-click the group in the Categor y Groups or Series Groups area, and then click Delete .

See Also
Charts (Report Builder and SSRS)
Add a Moving Average to a Chart (Report Builder
and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

A moving average is an average of the data in your series, calculated over a defined period of time. In Reporting
Services paginated reports, the moving average can be shown on the chart to identify significant trends.

The Moving Average formula is the most popular price indicator used in technical analyses. Many other
formulas, including mean, median and standard deviation, can also be derived from a series on the chart. When
specifying a moving average, each formula may have one or more parameters that must be specified.
The Tutorial: Add a Column Chart to Your Report (Report Builder) walks you through adding a moving average
to a chart, if you'd like to try it with sample data.
When a moving average formula is added in Design mode, the line series that is added is only a visual
placeholder. The chart will calculate the data points of each formula during report processing.
Built-in support for trend lines is not available in Reporting Services.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To add a calculated moving average to a series on the chart


1. Right-click on a field in the Values area and click Add Calculated Series . The Calculated Series
Proper ties dialog box opens.
2. Select the Moving average option from the Formula drop-down list.
3. Specify an integer value for the Period that represents the period of the moving average.
NOTE
The period is the number of days used to calculate a moving average. If date/time values are not specified on the
x-axis, the period is represented by the number of data points used to calculate a moving average. If there is only
one data point, the moving average formula does not calculate. The moving average is calculated starting at the
second point. If you specify the Star t from first point option, the chart will start the moving average at the first
point. If there is only one data point, the point in the calculated moving average will be identical to the first point
in your original series.

See Also
Tutorial: Add a Column Chart to Your Report (Report Builder)
Formatting a Chart (Report Builder and SSRS)
Charts (Report Builder and SSRS)
Add Empty Points to a Chart (Report Builder and SSRS)
Collect Small Slices on a Pie Chart (Report Builder
and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

Pie charts with too many slices can look cluttered. Learn to collect many small slices in a pie chart into one
single slice in Reporting Services paginated reports.
To collect small slices into one slice, first decide whether your threshold for collecting small slices is measured as
a percentage of the pie chart or as a fixed value.
The Tutorial: Add a Pie Chart to Your Report (Report Builder) walks you through collecting small slices into a
single slice, if you'd like to try this with sample data first.

You can also collect small slices into a second pie chart that is called out from a collected slice of the first pie
chart. The second pie chart is drawn to the right of the original pie chart.
You cannot combine slices of funnel or pyramid charts into one slice.

To collect small slices into a single slice on a pie chart


1. Open the Properties pane.
2. On the design surface, click on any slice of the pie chart. The properties for the series are displayed in the
Properties pane.
3. In the General section, expand the CustomAttributes node.
4. Set the CollectedStyle property to SingleSlice .
5. Set the collected threshold value and type of threshold. The following examples are common ways of
setting collected thresholds.
By percentage. For example, to collect any slice on your pie chart that is less than 10% into a
single slice:
Set the CollectedThresholdUsePercent property to True .
Set the CollectedThreshold property to 10 .

NOTE
If you set CollectedStyle to SingleSlice , CollectedThreshold to a value greater than 100 , and
CollectedThresholdUsePercent to True , the chart will throw an exception because it cannot calculate a
percentage. To resolve this issue, set CollectedThreshold to a value less than 100 .

By data value. For example, to collect any slice on your pie chart that is less than 5000 into a
single slice:
Set the CollectedThresholdUsePercent property to False .
Set the CollectedThreshold property to 5000 .
6. Set the CollectedLabel property to a string that represents the text label that will be shown on the
collected slice.
7. (Optional) Set the CollectedSliceExploded, CollectedColor, CollectedLegendText and CollectedToolTip
properties. These properties change the appearance, color, label text, legend text and tooltip aspects of
the single slice.

To collect small slices into a secondary, callout pie chart


1. Follow Steps 1-3 from above.
2. Set the CollectedStyle property to CollectedPie .
3. Set the CollectedThresholdproperty to a value that represents the threshold at which small slices will be
collected into one slice. When the CollectedStyle property is set to CollectedPie , the
CollectedThresholdUsePercentproperty is always set to True , and the collected threshold is always
measured in percent.
4. (Optional) Set the CollectedColor, CollectedLabel, CollectedLegendText and CollectedToolTip properties.
All other properties named "Collected" do not apply to the collected pie.

NOTE
The secondary pie chart is calculated based on the small slices in your data so it will only appear in Preview. It does not
appear on the design surface.

NOTE
You cannot format the secondary pie chart. For this reason, it is strongly recommended to use the first approach when
collecting pie slices.

See Also
Tutorial: Add a Pie Chart to Your Report (Report Builder)
Pie Charts (Report Builder and SSRS)
Formatting Data Points on a Chart (Report Builder and SSRS)
Display Data Point Labels Outside a Pie Chart (Report Builder and SSRS)
Display Percentage Values on a Pie Chart (Report Builder and SSRS)
Troubleshoot Charts (Report Builder and SSRS)
5/20/2020 • 2 minutes to read • Edit Online

These issues can be helpful when working with charts.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Why does my chart count, not sum, the values on the value axis?
Most chart types require numeric values along the value axis, which is typically the y-axis, in order to draw
correctly. If the data type of your value field is String , the chart cannot display a numeric value, even if there are
numerals in the fields. Instead, the chart displays a count of the total number of rows that contain a value in that
field. To avoid this behavior, make sure that the fields that you use for value series have numeric data types, as
opposed to strings that contain formatted numbers.

Need more help?


Try:
SQL Server Reporting Services on Stack Overflow
Log an issue or suggestion at Microsoft SQL Server UserVoice.

See Also
Charts (Report Builder and SSRS)
Sparklines and Data Bars (Report Builder and SSRS)
3/5/2021 • 5 minutes to read • Edit Online

Sparklines and data bars are small, simple charts that convey a lot of information in a little space, often inline
with text.
In Reporting Services reports, sparklines and data bars are often used in tables and matrices. Their impact
comes from viewing many of them together and being able to quickly compare them one above the other,
rather than viewing them singly. They make it easy to see the outliers, the rows that are not performing like the
others. Although they are small, each sparkline often represents multiple data points, often over time. Data bars
can represent multiple data points, but typically illustrate only one. Each sparkline typically presents a single
series. You cannot add a sparkline to a detail group in a table. Because sparklines display aggregated data, they
must go in a cell associated with a group. Sparklines and data bars have the same basic chart elements of
categories, series, and values, but they have no legend, axis lines, labels, or tick marks.

To quickly get started with sparklines, see Tutorial: Add a Sparkline to Your Report (Report Builder) and the
videos How to: Create a Sparkline in a Table and Sparklines, Bar Charts, and Indicators in Report Builder .

NOTE
You can publish sparklines and data bars with their parent table, matrix, or list, separately from a report as a report part.
Read more about Report Parts.

Types of Sparklines
You can create almost as many types of sparklines as there are regular charts. In general, you cannot make 3D
sparklines. You can make sparkline versions of these full charts:
Column Charts (Report Builder and SSRS): The basic, stacked, and 100% stacked column charts.
Line Charts (Report Builder and SSRS): All except the 3D line chart.
Area Charts (Report Builder and SSRS): All except the 3D area charts
Pie Charts (Report Builder and SSRS): And doughnut charts, both flat and 3D, but not the other shapes
such as funnel and pyramid charts.
Range Charts (Report Builder and SSRS): The stock, candlestick, error bar, and box plot charts.

Data Bars
Data bars typically represent a single data point, though they can represent multiple data points, just like regular
bar charts. They often contain several series with no category, or have series grouping.

In this example using stacked data bars, each data bar, although only one bar, illustrates more than one data
point. For example, the three different colors of the bar could represent tasks of three levels of priority with the
length of the bar representing the total number of tasks assigned to each person. If you made these 100%
stacked data bars instead, each bar would fill the cell, and the different colors would represent the percentage of
the whole for each priority level.
You can make data bar versions of these full charts:
Bar Charts (Report Builder and SSRS): Basic, stacked, and 100% stacked bar charts.
Column Charts (Report Builder and SSRS): Basic, stacked, and 100% stacked column charts. Column
charts can be either sparklines or data bars.

Aligning Sparkline Data in a Table or Matrix


When you insert a sparkline in a table or matrix, it is usually important for the data points in each sparkline to
align with the data points of the other sparklines in that column. Otherwise it is hard to compare the data in the
different rows. For example, when you compare sales data by month for different salespeople in your company,
you would want the months to align. If an employee was out for the month of April, there would be no data for
that employee for that month. You would want to see a gap for that month, and see the data for subsequent
months align with the data for the other employees. You can do this by aligning the horizontal axis. For more
information, see the section about sparklines in Expression Scope for Totals, Aggregates, and Built-in Collections
(Report Builder and SSRS), and see Align the Data in a Chart in a Table or Matrix (Report Builder and SSRS).
Likewise, to be comparable across rows, data must also align vertically, meaning that the height of the bars or
lines in one sparkline or data bar must be relative to the height of the bars and lines in all the other sparklines or
data bars. Otherwise, you can't compare the rows to each other.

In this image, the column chart shows daily sales for each employee. Note that for days that an employee has no
sales, the chart leaves a blank and aligns subsequent days. This is an example of horizontal alignment. Also note
that for some employees, every bar is short, and no bar reaches the top of the cell. This is an example of vertical
alignment; without it, in the rows with no tall bars, the short bars would expand to fill the height of the cell.

Understanding the Data Supplied to a Sparkline or Data Bar


When you add a sparkline or data bar to a table or matrix, this is referred to as nesting one data region inside
another. Nesting means that the data supplied to the sparkline or data bar is controlled by the dataset that the
table or matrix is based on, and by where you put it in the table or matrix. For more information, see Nested
Data Regions (Report Builder and SSRS).

Converting a Sparkline or Data Bar to a Full Chart


Because sparklines and data bars are just a kind of chart, if you decide you would rather have the full chart
functionality, you can convert one to a full chart by right-clicking the chart and clicking Conver t to Full Char t .
When you do, the axis lines, labels, tick marks, and legend are added automatically.

NOTE
You cannot convert a full chart to a sparkline or data bar with one click. However, you can make a sparkline or data bar
from a full chart just by deleting all the chart elements that are not in sparklines and data bars.

How-to Topics
Add Sparklines and Data Bars (Report Builder and SSRS)
Align the Data in a Chart in a Table or Matrix (Report Builder and SSRS)
Other how-to topics for charts
Because sparklines and data bars are a type of chart, you might also find the following how-to topics for charts
helpful and relevant:
Add a Chart to a Report (Report Builder and SSRS)
Add Empty Points to a Chart (Report Builder and SSRS)
Add or Remove Margins from a Chart (Report Builder and SSRS)
Change a Chart Type (Report Builder and SSRS)
Define Colors on a Chart Using a Palette (Report Builder and SSRS)
Show ToolTips on a Series (Report Builder and SSRS)
Specify a Logarithmic Scale (Report Builder and SSRS)
Specify an Axis Interval (Report Builder and SSRS)
Specify Consistent Colors across Multiple Shape Charts (Report Builder and SSRS)

See Also
Charts (Report Builder and SSRS)
Tutorial: Add a Sparkline to Your Report (Report Builder)
Add Sparklines and Data Bars (Report Builder and
SSRS)
11/2/2020 • 2 minutes to read • Edit Online

Sparklines and data bars are small, spare charts that convey a lot of information with little extraneous detail. For
more information about them, see Sparklines and Data Bars (Report Builder and SSRS).
In Reporting Services paginated reports, sparklines and data bars are most commonly placed in cells in a table
or matrix. Sparklines usually display only one series each. Data bars can contain one or more data points. Both
sparklines and data bars derive their impact from repeating the series information for each row in the table or
matrix.

To add a sparkline or data bar to a table or matrix


1. If you have not done so already, create a table or matrix with the data you want to display.
2. Insert a column in your table or matrix. For more information, see Insert or Delete a Column (Report
Builder and SSRS).
3. On the Inser t tab, click Sparkline or Data Bar , and then click in a cell in the new column.

NOTE
You cannot place sparklines in a detail group in a table. They must go in a cell associated with a group.

4. In the Change Sparkline/Data Bar Type dialog box, click the kind of sparkline or data bar you want,
and then click OK .
5. Click the sparkline or data bar.
The Char t Data pane opens.
6. In the Values area, click the Add Fields plus sign (+ ), and then click the field whose values you want
charted.
7. In the Categor y Groups area, click the Add Fields plus sign (+ ), and then click the field whose values
you want to group by.
Typically for sparklines and data bars, you will not add a field to the Series Group area because you only
want one series for each row.

See Also
Charts (Report Builder and SSRS)
Align the Data in a Chart in a Table or Matrix (Report Builder and SSRS)
Align the Data in a Chart in a Table or Matrix
(Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

Sparklines and data bars are small, simple charts that convey a lot of information with little extraneous detail. In
a Reporting Services paginated report, when you check this option the values in your sparklines and data bars
will align across the different cells in the table or matrix, even if there are missing values in the data they are
based on.

In this image, the column chart shows daily sales for each employee. Note that for days that an employee has no
sales, the chart leaves a blank and aligns subsequent days horizontally. It also aligns the charts vertically by
making the sizes of the different charts relative to each other. For more information, see Sparklines and Data
Bars (Report Builder and SSRS).

Align the data in a sparkline or data bar


1. Add a sparkline or data bar to a table or matrix.
2. Click in the sparkline or data bar, and then click Horizontal Axis Proper ties or Ver tical Axis
Proper ties .
3. On the Axis Options tab, check the Align axes in box, and then in the dropdown box, select the group
on which to align the axis.
4. Click OK .

See Also
Charts (Report Builder and SSRS)
Add Sparklines and Data Bars (Report Builder and SSRS)
Gauges (Report Builder and SSRS)
11/2/2020 • 12 minutes to read • Edit Online

In Reporting Services paginated reports, a gauge data region displays a single value from your dataset. An
individual gauge is always positioned inside a gauge panel, where you can add child or adjacent gauges. Inside a
single gauge panel, you can create multiple gauges that share common functions such as filtering, grouping, or
sorting.
Gauges can perform many tasks in a report:
Display key performance indicators (KPIs) in a single radial or linear gauge.
Place a gauge inside a table or matrix to illustrate values inside each cell.
Use multiple gauges in a single gauge panel to compare data between fields.
There are two types of gauges: radial and linear. The following illustration shows the basic elements of a single
radial gauge in the gauge panel.

For more information about using gauges as KPIs, see Tutorial: Adding a KPI to Your Report (Report Builder).

NOTE
You can publish gauges separately from a report as report parts. Read more about Report Parts.

Gauge Types
Reporting Services provides two gauge types: radial and linear. The radial gauge is typically used when you want
to express the data as a velocity. The linear gauge is used to express the data as a temperature or scale value.
The key differences between the two types are the overall shape of the gauge and the available gauge pointers.
Radial gauges are circular, or degrees of circular, and resemble speedometers. The gauge pointers are often
needles, but can be markers or bars.
Linear gauges are rectangular, oriented horizontally or vertically, and resemble rulers. The gauge pointers are
often thermometers, but can be markers or bars. Because of its shape, this gauge type is useful for integrating
into the table or matrix data regions to show progress data.
Other than these differences, the two gauge types are interchangeable. However, if you have to use a simple
gauge in your report, you should consider using an indicator instead of a gauge. For more information, see
Indicators (Report Builder and SSRS).
The following illustrations show radial and linear gauges. The radial gauge is round and uses the needle pointer.
The linear gauge is horizontal and uses the thermometer pointer.
Radial Gauge

Radial gauge options: Radial, Radial with Mini Gauge, Two Scales, 90 Degrees Northeast, 90 Degrees Northwest,
90 Degrees Southwest, 90 Degrees Southeast,180 Degrees North, 180 Degrees South, 180 Degrees West180
Degrees East, and Meter.
Linear Gauge

Linear gauge options: Horizontal, Vertical, Multiple Bar Pointers, Two Scales, Three Color Range, Logarithmic,
Thermometer, Thermometer Fahrenheit/Celcius, and Bullet Graph.

Adding Data to a Gauge


After you add a gauge to the design surface, drag a dataset field to the gauge data pane. By default, the gauge
aggregates field values into one value that is shown on the gauge. That value is attached to the pointer by using
the Value property. Depending on the data type of the field, the gauge uses the SUM or COUNT aggregate.
When you use numeric data, appropriate to add, the gauge uses the SUM function. Otherwise, it uses the
COUNT aggregate. The value of the pointer can use a different aggregate, or no aggregate.
You can add grouping to the gauge to view individual groups or individual rows on the gauge. When grouping
and filtering is applied, the gauge uses the pointer value to display the last group or row in the returned dataset.
You can add multiple values to an individual gauge by adding another pointer. This pointer can belong to the
same scale, or you can add another scale and then associate the pointer with that scale.
Unlike the chart types available in the Select Char t Type dialog box, the gauge types available in the Select
Gauge Type dialog box are created by using a combination of gauge properties. Therefore, you cannot change
the gauge type the same way you change a chart type. To change the gauge type, you must remove the gauge
and re-add it to the design surface. A gauge has at least one scale and one pointer. You can have multiple scales
by right-clicking the gauge and selecting Add Scale . By default, this creates a smaller scale that is positioned
inside the first scale. The scale displays labels and tick marks. There are two sets of tick marks, minor and major.
You can have multiple pointers by right-clicking the gauge and selecting Add Pointer . This will create another
pointer on the same scale, but if you have multiple scales, you can associate a pointer with any scale on the
gauge.
Considerations When Adding Data to the Gauge
Like all other data regions, the Gauge data region can be bound to only one dataset. If you have multiple
datasets, consider using a JOIN or UNION to create one dataset, or use separate gauges for each dataset.
Numeric data types are aggregated with the SUM function. Non-numeric data types are aggregated with the
COUNT function, which counts the number of instances for a particular value or field within the dataset or
group.
After data is added, when you right-click the pointer, you get Clear Pointer Value and Delete Pointer options. The
Clear Pointer Value option removes the field attached to the gauge, but the pointer will still appear on the gauge.
The Delete Pointer option removes the field from the gauge and deletes the pointer from view. If you re-add a
field to the gauge, the default pointer reappears. After you have added the field to the gauge, you must set the
maximum and minimum values on the corresponding scale to give context to the value on the gauge. You can
also set the minimum and maximum values on a range, which shows a critical area on the scale. The gauge will
not automatically set the minimum or maximum values on the scale or the range because it cannot determine
how the value should be perceived.
Methods of Adding Data to a Gauge
After you have defined a dataset for your report, you can add a data field to the gauge by using one of the
following approaches:
Drag a field from your dataset into the data pane. Click the gauge and drag a field to it. You can open the
data pane by clicking on the gauge or dragging a field across the gauge. If a pointer is not already on the
gauge, a pointer is added to the gauge and bound to the field you have added.
Display the data pane and point to the field placeholder. Click the down arrow next to the field
placeholder and select the field that you want to use. If there is a field already selected, click the down
arrow, and then select a different field.

NOTE
This approach is not applicable when there is no pointer on the gauge or the report contains more than one
dataset and the gauge panel is not associated with a dataset.

Right-click on the gauge pointer and select Pointer Proper ties . For Value , select a field from the drop-
down list or define a field expression by clicking the Expression (fx) button.
Aggregating Fields into a Single Value
When a field is added to a gauge, Reporting Services calculates an aggregate for the field by default. Numeric
data types are aggregated with the SUM function. Non-numeric data types are aggregated with the COUNT
function, which counts the number of instances for a particular value or field within the dataset or group. If the
data type of your value field is String, the gauge cannot display a numeric value, even if there are numerals in
the fields. Instead, the gauge aggregates string fields using the COUNT function. To avoid this behavior, make
sure that the fields you use have numeric data types, as opposed to strings that contain formatted numbers. You
can use a Visual Basic expression to convert String values to a numeric data type using the CDbl or CInt
constant. For example, the following expression converts a string field called MyField to numeric values.
=Sum(CDbl(Fields!MyField.Value))

For more information about aggregate expressions, see Aggregate Functions Reference (Report Builder and
SSRS).
Defining a Group on a Gauge
After you have added a field to the gauge, you can add one data group. The Gauge differs from all other data
regions in Reporting Services, which can display multiple groups in one data region. When you add a group by
defining a group expression on the gauge, it is the same as when you add a row group on the Tablix data region.
However, when the group is added, only the value of the last group is displayed as the pointer value on the
gauge. For example, if you add a grouping expression on Year, the pointer will point to the value that represents
the aggregate sales value for the last year in the dataset. For more information about groups, see Understanding
Groups (Report Builder and SSRS).
You might want to add a group on the gauge if, for example, you are displaying multiple gauges in a table or list
and you want to display data aggregated by group. For more information, see Add or Delete a Group in a Data
Region (Report Builder and SSRS).
Positioning Elements in a Gauge
The gauge panel is the top-level container that holds one or more gauges. You can view the Gauge Panel
Proper ties dialog box by clicking just outside the gauge. Each gauge, in turn, contains several gauge elements:
a gauge scale, a gauge range, and a gauge pointer. When you are using the gauge, you will need to understand
how elements are measured in the gauge panel in order to modify the size and location of these elements.
Understanding Size and Position Measurements
All size and position measurements on the gauge are calculated as a percentage of their parent element. When
parent elements have different width and height values, the size of the gauge element is calculated as a
percentage of the smaller of the two values. For example, on a linear gauge, all pointer measurements are
calculated as a percentage of the width or height of the linear gauge, whichever is smaller.
Position measurements are also calculated as a percentage of their parent element using a coordinate system.
The origin of this coordinate system is in the upper-left corner with the X axis pointing to the right and the Y axis
pointing down. Coordinate values should be between 0 and 100, and all measurements are represented as a
percentage. For example, when the X and Y positions of the linear gauge are set to 50 and 50, the linear gauge is
positioned in the middle of the gauge panel.
Positioning Multiple Gauges inside the Gauge Panel
There are two ways to add a new gauge to a gauge panel that already contains one gauge. You can add a gauge
as a child of the first one or you can add another gauge adjacent to the first one.
When a new gauge is added to a gauge panel, it is sized and positioned in equal proportion to all other gauges
in the gauge panel. For example, if a radial gauge is added to a gauge panel that already contains a radial gauge,
the two gauges will automatically be resized to each fit half of the panel.
You can add a new gauge to a gauge panel that already contains a gauge. To do this, right-click anywhere on the
gauge panel, hover over Add New Gauge and select Child . The Select Gauge Type dialog box will appear.
When the new gauge is added as a child, it is added in one of two ways. In a radial gauge, the child gauge is
positioned in the top-left corner of the first gauge. In a linear gauge, the child gauge is positioned in the middle
of the first gauge. You can position the child gauge, relative to the parent gauge, by using the Position
properties. As with all other elements, position measurements are calculated as a percentage of their parent
element.
Positioning Gauge Scale Labels and Gauge Ranges
There are two properties that determine the position of labels on a gauge scale. You can set the gauge scale's
Placement property to specify whether the labels are displayed inside, outside or across the scale bar. You can
also specify a numeric value for the Distance from scale property, which specifies the number of units that are
added or subtracted from the placement to determine the label position. For example, if Placement is set to
Outside and you have set Distance from scale to 10, the labels will be positioned 10 units from the outer
edge of the gauge scale, where 1 unit is either:
1% of the gauge diameter on a radial gauge, or
1% of the smallest value of the gauge height or width on a linear gauge.
The Position and Distance from scale properties also apply to gauge ranges.
Maintaining Aspect Ratio on a Linear Gauge
The radial gauge assumes a circular form, so this gauge type usually maintains the same width and height
values. However, on a linear gauge, which assumes a rectangular form, the proportion between the width and
height is usually uneven. The aspect ratio of a gauge determines the proportion of width to height that should
be maintained when the gauge is resized. For example, if this value is set to 2, the width of the gauge will always
be twice the height of the gauge, no matter how the gauge is resized. To set the aspect ratio, you can set the
AspectRatio property from the Linear Gauge Proper ties dialog box.
How-To Topics
This section lists procedures that show you, step by step, how to work with gauges in your reports; how to get
data to display effectively in gauges and how to add and configure gauges and their elements.
Add a Gauge to a Report (Report Builder and SSRS)
Set a Minimum or Maximum on a Gauge (Report Builder and SSRS)
Set a Snapping Interval on a Gauge (Report Builder and SSRS)

In This Section
The following topics provide additional information about working with gauges.

T ERM DEF IN IT IO N

Formatting Scales on a Gauge (Report Builder and SSRS) Provides general information about formatting scales on
gauges and detailed information about the formatting
options for scales on radial and linear gauges.

Formatting Pointers on a Gauge (Report Builder and SSRS) Provides general information about formatting pointers on
gauges and detailed information about the formatting
options for pointer styles available for radial and linear
gauges.

Formatting Ranges on a Gauge (Report Builder and SSRS) Provides information about formatting ranges on gauges to
indicate an important subsection of values on the gauge or
visually indicate when the pointer value has gone into a
certain span of values.

See Also
Expressions (Report Builder and SSRS)
Filter, Group, and Sort Data (Report Builder and SSRS)
Report Parameters (Report Builder and Report Designer)
Charts (Report Builder and SSRS)
Tables, Matrices, and Lists (Report Builder and SSRS)
Formatting Scales on a Gauge (Report Builder and
SSRS)
11/2/2020 • 7 minutes to read • Edit Online

In a Reporting Services paginated report, the gauge scale is the range of numbers, bound by a minimum and a
maximum, shown on a gauge. Typically, a gauge scale contains gauge labels and tick marks to give an accurate
reading of what the gauge pointer shows. A gauge scale is generally associated with one or more gauge
pointers. You can have more than one scale on the same gauge.

Unlike the chart, where multiple groups are defined, the gauge only shows one value. You must define the
minimum and maximum values of the scale. The interval numbers are calculated automatically based on the
values specified for the minimum and maximum.
When you add a second scale on a gauge that already contains one scale, the appearance properties of the first
scale are cloned on the second scale.
You can set properties on the scale by right-clicking on the scale labels or tick marks and selecting Radial Scale
Proper ties or Linear Scale Proper ties . Each gauge type contains at least one scale with the same set of
properties. There are also properties unique to each gauge type:
On a radial gauge, you can specify the radius, start angle, and sweep angle of the radial scale.
On a linear gauge, you can specify the width of the start and end margins relative to the endpoints on a
linear gauge.
To quickly get started with formatting scales, see Set a Minimum or Maximum on a Gauge (Report Builder and
SSRS).

Defining Minimum, Maximum, and Intervals on a Scale


A gauge is frequently used to display KPIs that are measured in percentages from 0 to 100, so these are the
default values given to the minimum and maximum properties on the gauge. However, these values may not
represent the scale of values that you are trying to show. Because there is no built-in logic to determine what the
KPI data field represents, the gauge does not automatically calculate minimum and maximum values. If your KPI
data field is not a value between 0 and 100, you must explicitly set values for the minimum and maximum
properties in order to give context to the one value that is being displayed on the gauge.
On the scale are major and minor tick marks. In addition, the scale has labels that are typically associated with
the major tick marks. For example, a scale might have major tick marks at 0, 20, 40, 60, 80, and 100. The labels
should correspond to those tick marks. The difference between the label values is called the scale interval. In this
example, the scale interval is set to 20. You can set the Interval property in the Radial Scale Proper ties or
Linear Scale Proper ties dialog box.
The application calculates scale intervals according to the following steps:
1. Specify minimum and maximum values. These values are not calculated automatically based on your
dataset, so you must provide the values on the gauge's Proper ties dialog box.
2. If you do not specify a value for Interval, the default value is Auto. This means the application will
calculate an equidistant number of intervals based on the minimum and maximum values specified in the
first step. If you do specify a value for Interval, the gauge will calculate the difference between the
maximum and minimum value, and divide that number by the value specified in the Interval property.
There are also properties to define label and tick mark intervals. If you specify a value for these properties, they
will override the value specified for the scale interval property. For example, if the scale interval is Auto, but you
specify 4 for the label interval, the labels will be displayed as 0, 4, 8 and so on, but the major tick marks will still
be calculated by the gauge based on its own calculation. This may cause situations where the labels are not in
sync with the tick marks. Consider hiding tick marks from display if you set a label interval.
The interval offset determines the number of units that will be skipped before the first label is shown. All
successive major tick marks and labels that appear on the scale will use the interval specified. A value of 0 for
label or tick mark intervals is the same as resetting the interval to Auto.

Reducing Label Collisions with Multipliers


If your values contain many digits, they may begin to obscure the readability of the gauge. You can use a scale
multiplier to increase or reduce the scale of the values. When a scale multiplier is specified, each original value
on the scale is multiplied by the multiplier before being displayed on the scale. To reduce the scale of values, you
must specify a decimal number. For example, if your scale goes from 0 to 10000 but you want to show the
numbers 0 to 10 on the gauge, you can use a multiplier value of 0.001.

NOTE
Using a multiplier does not multiply the actual value of the aggregated field that the gauge uses. It only multiplies the
values of the labels displayed on the gauge after the minimum, maximum, and intervals are defined. Consider keeping the
interval calculations as automatic when using a multiplier.

Specifying the Scale Bar Width, Radius, and Angles on a Radial Scale
Use the Layout page of the Radial Scale Proper ties dialog box to set the scale bar width, scale radius, start
angle, and sweep angle of the scale. You can use these properties to customize the size and format of the scale.
For example, if you position scale labels outside the scale, you will need to resize the radius of the scale so that
the labels fit inside the gauge.

NOTE
When you click the scale of a gauge, a dotted outline appears around the scale. This outline is not the scale bar, and it is
not used when calculating measurements on the gauge. It is available only at design time so that you can highlight the
scale in order to access the scale properties.
All measurements are based on the scale bar. When you select a gauge, the scale bar width is not shown. If you
specify a value for the scale bar, it will help you with all other measurements related to the scale. To view the
scale bar, set the Scale bar width property on the Layout page of the Radial Scale Proper ties dialog box to
a value greater than 0. On a radial gauge, the scale bar is measured as a percentage of the gauge diameter. On a
linear gauge, the scale bar is measured as a percentage of the gauge width or height, whichever is smallest.
The scale radius is the distance from the center of the gauge to the middle of the scale bar. The value of the scale
radius is measured as a percentage of the gauge diameter. It is a good practice to keep the scale radius below a
value of 35. If you specify a value higher than 35, the scale will likely be drawn outside the boundaries of the
gauge. The following illustration shows how the scale radius is measured, relative to the diameter of the gauge,
on the scale bar.

The start angle is the angle of rotation, between 0 and 360, at which the scale will begin. The zero (0) position is
located at the bottom of the gauge, and the start angle rotates clockwise. For example, a start angle of 90
degrees starts the scale at the 9 o'clock position.
The sweep angle is the number of degrees, between 0 and 360 that the scale will sweep in a circle. A sweep
angle of 360 degrees produces a scale that is a complete circle. This is useful if you want to design a gauge to
look like a clock.

Positioning Labels on a Linear or Radial Scale


There are two properties that determine the position of labels. The label placement property specifies whether
the labels are displayed on the inside, outside, or across the scale bar. The distance property sets the label
distance from the scale, starting at the scale bar. If you want to position labels within the scale bar, specify a
negative number. For example, if your labels are outside the scale and you have set a distance from scale of 10,
the labels will be shown at 10 units outside where the labels would typically be placed, where 1 unit is either:
1% of the gauge diameter on a radial gauge, or
1% of the smallest value of the gauge height or width on a linear gauge.

See Also
Formatting Ranges on a Gauge (Report Builder and SSRS)
Formatting Pointers on a Gauge (Report Builder and SSRS)
Format Axis Labels as Dates or Currencies (Report Builder and SSRS)
Formatting Axis Labels on a Chart (Report Builder and SSRS)
Gauges (Report Builder and SSRS)
Formatting Pointers on a Gauge (Report Builder
and SSRS)
11/2/2020 • 4 minutes to read • Edit Online

In a Reporting Services paginated report, the gauge pointer indicates the current value of the gauge.
By default, when a field is added, the values that are contained in the field are aggregated into one value that is
shown by the pointer on the gauge. You can add multiple pointers to the gauge to point at multiple values on
the same scale, or add multiple scales and a pointer for every scale you have added. After you add a field to a
gauge, you must set the maximum and minimum values on the corresponding scale to give context to the
pointer value. You also have the option of setting the minimum and maximum values on a range, which shows a
critical area on the scale.
You can set appearance properties on the pointer by right-clicking on the pointer and selecting Radial Pointer
Proper ties or Linear Pointer Proper ties . Each gauge pointer contains the same set of properties. There are
also corresponding appearance properties unique to each gauge type:
On a radial gauge, you can specify a needle pointer and a needle cap.
On a linear gauge, you can specify a thermometer pointer, which is a variation of the bar pointer. The
thermometer pointer lets you specify the shape of the bulb.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

How the Pointer is Connected to Data


By default, when a gauge is added, it contains one pointer that has no associated field. This is known as an
empty pointer. It will display zero until a field is added to the data pane. When you add a field to the data pane,
the pointer is connected to that field. If you delete a field from the data pane, the pointer that is associated with
that field is also deleted.
After data is added, when you right-click on the pointer, you will get Clear Pointer and Delete Pointer options.
The Clear Pointer Value option will remove the field that is attached to the gauge, but the pointer will still
appear on the gauge. The Delete Pointer option will remove the field from the gauge and delete the pointer
from view. If you re-add a field to the gauge, the default pointer will reappear. When you set the pointer's
Hidden property to True , the pointer is not hidden on the design surface, but it is hidden at run time.

Displaying Multiple Pointers on the Gauge


You can add multiple pointers to the gauge to point at multiple values on the same scale. This can be useful for
showing a low and a high value at the same time. To specify more than one pointer on the gauge for the same
scale, right-click anywhere inside the gauge and click Add Pointer on the shortcut menu. Alternatively, you can
add a scale by right-clicking anywhere in the gauge and clicking Add Scale . Then you can add a new pointer,
and it will automatically be associated with the last scale.
When pointers overlap, the drawing order of the pointers is determined by the order in which they are added to
the gauge. You cannot reorder the drawing order of the pointers by changing the order of the fields in the data
pane. To change the order of drawing for multiple pointers, open the Properties pane and click Pointers (...) .
Then, change the order of the pointers in the Pointer collection.

Setting Gradients on a Needle Cap


You can specify a needle cap that can be drawn on top or underneath the pointer on a radial gauge only. All
needle cap styles are drawn by using built-in gradients that cannot be modified. The exception is the
RoundedDark style, where you can specify a gradient color and gradient style.

Setting a Snapping Interval


A snapping interval defines the multiple to which values are rounded. By default, the gauge will point to the
exact value of the field you have specified in the data pane. However, you might want to round the exact value
up or down so that the pointer will snap to a pre-set interval. For example, if the value on your gauge is 34.2 and
you specify a snapping interval of 5, the gauge pointer will point to 35. If the value on your gauge is 31.2 and
you specify a snapping interval of 5, the gauge pointer will point to 30. For more information, see Set a
Snapping Interval on a Gauge (Report Builder and SSRS).

Specifying an Image as a Pointer on a Radial Gauge


In addition to the built-in list of pointer styles, you can specify an image as a pointer. This is most effective when
you use an image to replace an existing needle pointer style. The image is superimposed over the pointer, but all
pointer functionality is applicable. Color and gradient options are not applicable when an image is used for the
pointer.
If the pointer image is an irregular shape, you should define the color as transparent to hide the areas of your
image that should not appear on the gauge. When you define a transparent color, the gauge transposes the
image on top of your existing pointer and trims the image so that only the shape of the pointer appears. The
gauge rescales the image to fit the size of your pointer. When you specify an image for a pointer, any subsequent
pointer that is added on top of the gauge will be drawn underneath the image. For this reason, it is better not to
specify an image for the pointer if there are multiple pointers on the gauge.

See Also
Formatting Scales on a Gauge (Report Builder and SSRS)
Formatting Ranges on a Gauge (Report Builder and SSRS)
Gauges (Report Builder and SSRS)
Formatting Ranges on a Gauge (Report Builder and
SSRS)
11/2/2020 • 2 minutes to read • Edit Online

In a Reporting Services paginated report, the gauge range is a zone or area on the gauge scale that indicates an
important subsection of values on the gauge. Using a gauge range, you can visually indicate when the pointer
value has gone into a certain span of values. Ranges are defined by a start value and an end value.
You can also use ranges to define different sections of a gauge. For example, on a gauge with values from 0 to
10, you can define a red range that has a value from 0 to 3, a yellow range that has a value from 4 to 7 and a
green range that has a value from 8 to 10. If the start value that you specified is greater than the end value that
you specified, the values are swapped so that the start value is the end value and the end value is the start value.
You can position the range in the same way that you position pointers on a scale. The Position and Distance
from scale properties determine the position of the range. For more information, see Gauges (Report Builder
and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

See Also
Formatting Scales on a Gauge (Report Builder and SSRS)
Formatting Pointers on a Gauge (Report Builder and SSRS)
Set a Minimum or Maximum on a Gauge (Report Builder and SSRS)
Tutorial: Adding a KPI to Your Report (Report Builder)
Gauges (Report Builder and SSRS)
Add a Gauge to a Report (Report Builder and
SSRS)
11/2/2020 • 2 minutes to read • Edit Online

In a Reporting Services paginated report, when you want to summarize data in a visual format, you can use a
gauge data region. After you add a gauge data region to the design surface, you can drag report dataset fields to
a data pane on the gauge.

To add a gauge to your report


1. Create a report or open an existing report.
2. On the Insert tab, double-click Gauge. The Select Gauge Type dialog box opens.
3. Select the type of gauge you want to add. Click OK .

NOTE
Unlike charts, gauges have only two types: linear and radial. The available gauges in the Select a Gauge Type
dialog box are templates for these two types of gauges. For this reason, you cannot change the gauge type after
you add the gauge to your report. You must delete and re-add a gauge to change its type.

If the report has no data source and dataset the Data Source Proper ties dialog box opens and takes
you through the steps to create both. For more information see, Add and Verify a Data Connection
(Report Builder and SSRS).
If the report has a data source, but no dataset the Dataset Proper ties dialog box opens and takes you
through the steps to create one. For more information, see Create a Shared Dataset or Embedded Dataset
(Report Builder and SSRS).
4. Click the gauge to display the data pane. By default, a gauge has one pointer corresponding to one value.
You can add additional pointers.
5. Add one field from the dataset to the data field drop-zone. You can add only one field. If you want to
display multiple fields, you must add additional pointers, one for each field.
Right-click the gauge scale, and select Scale Proper ties . Type a value for the Minimum and Maximum
of the scale. For more information, see Set a Minimum or Maximum on a Gauge (Report Builder and
SSRS).

See Also
Nested Data Regions (Report Builder and SSRS)
Gauges (Report Builder and SSRS)
Set a Minimum or Maximum on a Gauge (Report
Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

Unlike charts in a Reporting Services paginated report, where multiple groups are defined, gauges show only
one value. Because Report Builder and Report Designer determine the context or relative significance of the one
value that you are trying to show on the gauge, you must define the minimum and maximum of the scale.
For example, if your data values are rankings between 0 and 10, you will want to set the minimum to 0 and
maximum to 10. The interval numbers are calculated automatically based on the values specified for the
minimum and maximum. By default, the minimum and maximum are set to 0 and 100, but this is an arbitrary
value that you should change. The application does not calculate your value as a percentage.
If the range of your values is large, for example from 0 to 10000, consider using a multiplier to reduce the
number of zeroes on the gauge. The multiplier will only reduce the scale of the numbers on the gauge, not the
value itself.
You can use expressions to set the values of the Minimum and Maximum options. For more information, see
Expressions (Report Builder and SSRS).

To set the minimum and maximum on the gauge


1. Right-click on the scale and select Scale Proper ties . The Scale Proper ties dialog box appears.
2. In General , specify a value for Minimum . By default, this value is 0. Optionally, click the Expression (fx)
button to edit the expression that sets the value of the option.
3. Specify a value for Maximum . By default, this value is 100. Optionally, click the Expression (fx) button to
edit the expression that sets the value of the option.
4. (Optional) If the values for your minimum and maximum are large, specify a value for the Multiply
scale labels by option. To specify a multiplier that reduces your scale, use a decimal number. For
example, if you have a scale from 0 to 1000, you can specify a multiplier value of 0.01 to reduce the scale
to read 0 to 10.

See Also
Formatting Scales on a Gauge (Report Builder and SSRS)
Formatting Pointers on a Gauge (Report Builder and SSRS)
Gauges (Report Builder and SSRS)
Indicators (Report Builder and SSRS)
11/2/2020 • 10 minutes to read • Edit Online

In Reporting Services paginated reports, indicators are small gauges that convey the state of a single data value
at a glance. The icons that represent indicators and their states are simple and visually effective even when used
in small sizes.
You can use state indicators in your reports to show the following:
Trends by using trending-up, flat (no change), or trending-down arrows.
State by using commonly recognized symbols such as checkmarks and exclamation marks.
Conditions by using commonly recognized shapes such traffic lights and signs.
Ratings by using common recognized shapes and symbols that show progress such number of
quadrants in a square and stars.
You can use indicators by themselves in dashboards or free-form reports, but they are most commonly used in
tables or matrices to visualize data in rows or columns. The following diagram shows a table with a traffic light
indicator that conveys year to date sales by sales person and territory.

Reporting Services provides built-in indicator sets and indicator icons to use as is, and you can also customize
individual indicator icons and indicators sets to suit your needs.
For more information about using indicators as KPIs, see Tutorial: Adding a KPI to Your Report (Report Builder).

NOTE
You can publish indicators separately from a report as report parts. Read more about Report Parts.

Comparing Indicators to Gauges


Although they look very different, indicators are just simple gauges. Both indicators and gauges display a single
data value. The key differences are that gauges have elements such as frames and pointers. Indicators have only
states, icons, and (optionally) labels. Indicator states are similar to gauge ranges.
Like gauges, indicators are positioned inside a gauge panel. When you want to configure an indicator by using
the Indicators Proper ties dialog box or the Properties pane, you need to select the indicator instead of the
panel. Otherwise, the available options apply to the gauge panel options and you cannot configure the indicator.
The following picture shows a selected indicator in its gauge panel.
Depending on how you want to depict the data value, gauges might be more effective than indicators. For more
information, see Gauges (Report Builder and SSRS).

Choosing the Indicator Type to Use


Using the right indicator set is key to instantly communicating the meaning of the data, whether the data is in a
detail row or row or column group in a table or matrix, or by itself in the report body or dashboard. The built-in
indicator sets have three or more icons. The icons can vary by shape, color, or both. Each icon communicates a
different data state.
The following table lists the built-in indicator sets and describes some common uses of them.

IN DIC ATO R SET IN DIC ATO R T Y P E

Directional: indicates trends using up, down, flat (no change),


up-trending, or down-trending arrows.

Symbols: indicates states using commonly recognized


symbols such as checkmarks and exclamation marks.

Shape: indicates conditions using commonly shapes such as


traffic signs and diamond shapes.

Ratings: indicates ratings by using common recognized


shapes and symbols that show progressive values such as
number of quadrants in a square.

After you choose a indicator set, you can customize the appearance of each indicator icon in the set by setting its
properties in the dialog boxes for indicators or the Properties pane. You can use the built-in colors, icons, and
sizes or expressions to configure indicators.

Customizing Indicators
Indicators can be customized to suit your needs. You can modify the indicators sets as well as individual
indicator icon within a set in the following ways:
Change the colors of indicator icons. For example, you might want the color scheme of an indicator set to
be monochromatic or use colors other than the default ones.
Change the icon in the indicator set. For example, you might want to use the star, circle, and square icons
in one indicator set.
Specify the start and end values for and indicator. For example, you might want to skew data display by
using one icon for 75 percent of the indicator values.
Add icons to the indicator set. For example, you might want to add additional icons to indicator sets to
differentiate the indicator values in a more detailed way.
Delete icons from the indicator set to make the data display simpler by using only a few icons.
For more information, see Change Indicator Icons and Indicator Sets (Report Builder and SSRS).

Using Indicators in Tables and Matrices


The simple shapes of indicators make them ideal to use in tables and matrices. Indicators are effective even in
small sizes. This makes them useful in detail or group rows of reports.
The following diagram shows a report with a table that uses the directional indicator set, Four Arrows
(Colored) , to indicate sales. The indicator icons in the report are configured to use shades of blue instead of the
default colors: red, yellow, and green.

For more information about adding, changing, and deleting indicators, see Add or Delete an Indicator (Report
Builder and SSRS).
When you first add an indicator to a report, it is configured to use default values. You can then change the values
so the indicator depicts data the way you want. You can change the appearance of the indicator icons, the way
the indicator chooses which icon to use, and change the icons used by an indicator set. For more information,
see Change Indicator Icons and Indicator Sets (Report Builder and SSRS).
By default, indicators are configured to use percentages as the measurement unit and automatically detect the
minimum and maximum values in the data. Each icon in the indicator set has a percentage range. The number of
percentage ranges depends on the number of icons in the icon set, but the ranges are the same size and
sequential. For example, if the icon set has five icons, there are five percentage ranges, each 20 percent in size.
The first one starts at 0 and ends at 20, the second starts at 20 and ends at 40, and so forth. The indicator on the
report uses the icon from the indicator set that has a percentage range within which the indicator data value
falls. You can change the percentage range for each icon in the set. The minimum and maximum values can be
set explicitly by providing a value or an expression. You can change the measurement unit to be a numeric value
instead. In this situation, you do not specify minimum or maximum for the data. Instead, you provide only the
start and end values for each icon that the indicator uses. For more information, see Set and Configure
Measurement Units (Report Builder and SSRS).
Indicators convey data values by synchronizing across indicator data values within a specified scope. By default,
the scope is the parent container of the indicator such as the table or matrix that contains the indicator. You can
change the synchronization of the indicator by choosing a different scope, depending on the layout of your
report. The indicator can omit synchronization. For more information, see Set Synchronization Scope (Report
Builder and SSRS).
For general information about understanding and setting scope within reports, see Expression Scope for Totals,
Aggregates, and Built-in Collections (Report Builder and SSRS).
Indicators use only a single value. If you have to show multiple data values, use a sparkline or data bar instead of
an indicator. They can represent multiple data values but are also simple, easy to understand at small sizes, and
work well in tables and matrices. For more information, see Sparklines and Data Bars (Report Builder and SSRS).

Sizing Indicators to Maximize Visual Impact


In addition to color, direction, and shape you can use size to maximize the visual impact of indicators. Imagine a
report that uses indicators to show customer satisfaction with different types of bicycles. The icon that the
indicator uses can be configured to be different sizes depending on customer satisfaction. The greater the
satisfaction, the larger the icon that appears in the report. The following picture shows a report of bicycle sales,
and the sizes of the icon reflect the sales amount.
You use expressions to dynamically set the size of the stars based on values of field used by the indicator. For
more information, see Specify the Size of an Indicator Using an Expression (Report Builder and SSRS).
To learn more about writing and using expressions, see Expressions (Report Builder and SSRS).

Including Indicators and Gauges in Gauge Panels


Indicators are always positioned inside a gauge panel. The gauge panel is a top-level container that can include
one or more gauges and state indicators. The gauge panel can contain child or adjacent gauges or indicators. If
you use an indicator as a child to a gauge, you can further visualize the data by showing the state of the data
value displayed in the gauge. For example, an indicator within a gauge can display a green circle to tell you that
the value in the gauge points to the upper 33 percentage of the value range. Using a gauge and indicator side by
side, you can represent the data in different ways. In either case, the indicator and gauge can use the same or
different data fields.
The following diagram shows an indicator side by side and within a gauge.

For more information, see Include Indicators and Gauges in a Gauge Panel (Report Builder and SSRS).
For more information about using gauges, see Gauges (Report Builder and SSRS).

Sequence of Indicator States


The sequence of the indicator states in the Value and States tab of the Indicator Proper ties dialog box affect
which indicator icon displays for a data value when the start and end values of indicator states overlap.
This might happen whether you use the percentage or numeric state measurement unit. It is more likely to occur
when you use the numeric measurement unit because you provide specific values for this measurement. It is
also more likely to occur when you round report data values because this tends to make values less discrete.
The following scenarios describe how the data visualization of data is affected when you change the sequence of
the three states in the 3 Arrows (Colored) directional indicator. By default the sequence is:
1. Red down arrow
2. Yellow horizontal arrow
3. Green up arrow
The following scenarios show for four different state sequences and their value ranges and how the sequences
affect data visualization.
In these scenarios, the 3 Arrows (Colored) indicator uses numeric state measurements.

STAT E SEQ UEN C E STA RT VA L UE EN D VA L UE

Red 0 3500

Yellow 3500 5000

Green 5000 10000

The red down arrow depicts the value 3500 and the yellow horizontal arrow 5000.

STAT E SEQ UEN C E STA RT VA L UE EN D VA L UE

Green 5000 10000

Yellow 3500 5000

Red 0 3500

The yellow horizontal arrow depicts the value 3500 and the green up arrow 5000.

STAT E SEQ UEN C E STA RT VA L UE EN D VA L UE

Green 5000 10000

Red 0 3500

Yellow 3500 5000

The red down arrow depicts the value 3500 and the green up arrow 5000.

STAT E SEQ UEN C E STA RT VA L UE EN D VA L UE

Yellow 3500 5000

Red 0 3500

Green 5000 10000

The yellow down arrow now depicts both the value 3500 and 5000.
In summary, evaluation starts and the top of the indicator state list and the report displays the indicator icon
associated with the first one indicator state that has a value range that the data fits into. By changing the
sequence of the indicator states you can therefore affect the visualization of data values.
How-to Topics
This section lists procedures that show you how to add, change, and delete indicators; how to configure and
customize indicators; and how to use indicators in gauges.
Add or Delete an Indicator (Report Builder and SSRS)
Change Indicator Icons and Indicator Sets (Report Builder and SSRS)
Set and Configure Measurement Units (Report Builder and SSRS)
Set Synchronization Scope (Report Builder and SSRS)
Specify the Size of an Indicator Using an Expression (Report Builder and SSRS)
Include Indicators and Gauges in a Gauge Panel (Report Builder and SSRS)

See Also
Gauges (Report Builder and SSRS)
Sparklines and Data Bars (Report Builder and SSRS)
Charts (Report Builder and SSRS)
Add or Delete an Indicator (Report Builder and
SSRS)
11/2/2020 • 2 minutes to read • Edit Online

In a Reporting Services paginated report, indicators are minimal gauges that convey the state of a single data
value at a glance. For more information about them, see Indicators (Report Builder and SSRS).
Indicators are commonly placed in cells in a table or matrix, but you can also use indicators by themselves, side-
by-side with gauges, or embedded in gauges.
When you first add an indicator, it is by default configured to use percentages as measurement units. The
percentage ranges are evenly distributed across members of the indicator set, and the scope of values shown by
the indicator is the parent of the indicator such as a table or matrix.
You can update the values and states of indicators. For more information, see the following topics:
Change Indicator Icons and Indicator Sets (Report Builder and SSRS)
Set and Configure Measurement Units (Report Builder and SSRS)
Set Synchronization Scope (Report Builder and SSRS)
Because an indicator is positioned inside the gauge panel, you need to select the indicator instead of the panel
when you want to configure the indicator by using the Indicators Proper ties dialog box or the Proper ties
pane. The following picture shows a selected indicator in its gauge panel.

NOTE
Depending on column width and the length of data values, the text in table or matrix cells might wrap and display text on
multiple lines. When this occurs, the indicator icon might be stretched and change shape. This can make the indicator icon
less readable. Place the indicator inside a rectangle to ensure that the icon is never stretched.

To add an indicator to a table or matrix


1. Open an existing report or create a new report that contains a table and matrix with the data you want to
display. For more information, see Tables (Report Builder and SSRS) or Matrices.
2. Insert a column in your table or matrix. For more information, see Insert or Delete a Column (Report
Builder and SSRS).
3. Optionally, on the Inser t tab, click Rectangle , and then click a cell in the new column.
4. On the Inser t tab, click Indicator , and then click a cell in the new column.
If you added a rectangle to a cell, click that cell.
5. In the Select Indicator Style dialog box, in the left pane, click the indicator type you want, and then click
the indicator set.
6. Click OK .
7. Click the indicator. The Gauge Data pane opens.
8. In the Values area, in the (Unspecified) drop-down list, click the field whose values you want to display
as an indicator.
The indicator is configured to use default values. By default, indicators are configured use percentages as
measurement units and the percentage ranges are evenly distributed across the members of the
indicator and the value that the indicator conveys uses the scope of the nearest group.

To delete an indicator to a table or matrix


1. Right-click the indicator to delete and click Delete .

NOTE
An indicator might be positioned inside a gauge panel that contains other indicators or gauges. If the gauge
panels contain multiple items, be sure to click the indicator to delete it, not the gauge panel. If you click and then
delete the gauge panel, the gauge panels and all the items in it are deleted.

2. Click Delete .

See Also
Indicators (Report Builder and SSRS)
Change Indicator Icons and Indicator Sets (Report
Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

The preconfigured indicators sets that Reporting Services provides for paginated reports might not always
depict your data effectively and work well in the delivered report. This topic provides procedures to change the
appearance of indicator icons and change the indicator sets to include different, more, or fewer indicator icons.
Options such as colors can be set by using expressions. For more information, see Expressions (Report Builder
and SSRS).

To change the color of an indicator icon


1. Right-click the indicator you want to change and click Indicator Proper ties .
2. Click Values and States in the left pane.
3. Click the down arrow in the Color column next to the icon that you want to change and click the color to
use, No Color , or More colors .
Optionally, click the Expression (fx) button to edit an expression that sets the value of the Color option.
If you clicked More Colors , the Select Color dialog box opens, where you can choose from a wide
array of colors. For more information about its options, see Select Color Dialog Box (Report Builder and
SSRS). Click OK to close the Select Color dialog box.
4. Click OK .

To change the icon


1. Right-click the indicator you want to change and click Indicator Proper ties .
2. Click Values and States in the left pane.
3. Click the down arrow next to the icon that you want to change and select a different icon.
Optionally, click the Expression (fx) button to edit an expression that sets the value of the Icon option.
4. Click OK .

To use a custom image as an indicator icon


1. Right-click the indicator you want to change and click Indicator Proper ties .
2. Click Values and States in the left pane.
3. Click the down arrow next to the icon that you wan to change and select Image .
4. In the Select the image source list, click External , Embedded , or Database .
5. Depending on the source of the image, do the one of the following:
To use an image that is stored externally to the report, click Browse and locate the image. The
report will include a reference to the image.
To use an image that is embedded in the report, click Impor t and locate the image. The image will
be added to the report definition and saved with it.
To use an image that is in a database, in the Use this field list. select the field from the list and
then in the Use this MIME type list, select the MIME type of the image.
6. Click OK .

To add an icon to the indicator set


1. Right-click the indicator you want to change and click Indicator Proper ties .
2. Click Values and States in the left pane.
3. Click Add . An indicator is added, using the default icon and the No Color option.
Configure the indictor to use the icon and color you want. Procedures earlier in this topic describe the
steps to do this.
4. Click OK .

To delete an icon to the indicator set


1. Right-click the indicator you want to change and click Indicator Proper ties .
2. Click Values and States in the left pane.
3. Select the icon to delete, and click Delete .
4. Click OK .

See Also
Indicators (Report Builder and SSRS)
Set and Configure Measurement Units (Report
Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

In a Reporting Services paginated report, indicators use one of two measurement units: percentage or numeric.
By default, indicators are configured to use percentages as the measurement unit. This means that the indicator
values assigned to each icon in the indicator set are determined by a percentage range. The percentage ranges
are evenly divided across the icons in the indicator set. Each icon represents an indicator state. You can change
the percentages for each icon in the indicator set by specifying different start and end percentages. Indicators
also automatically detect the minimum and maximum values in the data.
You can change the measurement unit to be a numeric value. In this case, you do not specify minimum or
maximum for the data; instead, you provide only the start and end values for each icon that the indicator uses.
Options such as measurement units can be set by using expressions. For more information, see Expressions
(Report Builder and SSRS).

To use the numeric state measurement unit


1. Right-click the indicator you want to change and click Indicator Proper ties .
2. Click Values and States in the left pane.
3. In the States Measurement Unit list, click Numeric .
Optionally, click the Expression (fx) button to edit an expression that sets the value of the option.
4. For each icon in the indicator set, update the values in the Star t and End text boxes.
Optionally, click the Expression (fx) button to edit an expression that sets the values of the Star t and
End options.

NOTE
The values in the Star t and End text boxes must be numeric.

5. Click OK .

To use the percentage measurement unit


1. Right-click the indicator you want to change and click Indicator Proper ties .
2. Click Values and States in the left pane.
3. In the States Measurement Unit list, click Percentage .
Optionally, click the Expression (fx) button to edit an expression that sets the value of the option.
4. Optionally, change the Minimum and Maximum options to use specific values instead of automatically
detecting the minimum and maximum values of the data that the indicator uses. The value of Minimum
must be smaller than the value of Maximum .
NOTE
If you explicitly set minimum and maximum values, that value range is used by the indicator regardless of the
actual the minimum and maximum values in the data. This means that values lower than the minimum and higher
than the maximum are excluded from the evaluation that determine what indictor icon to show in the report.

Optionally, click the Expression (fx) button to edit an expression that sets the values of the option.
5. For each icon in the indicator set, update the values in the Star t and End text boxes.
Optionally, click the Expression (fx) button to edit an expression that sets the values of the Star t and
End options.

NOTE
The values in the Star t and End text boxes must be numeric.

6. Click OK .

See Also
Indicators (Report Builder and SSRS)
Set Synchronization Scope (Report Builder and
SSRS)
11/2/2020 • 2 minutes to read • Edit Online

In a Reporting Services paginated report, indicators convey data values by synchronizing across the range of
indicator values within a specified scope.
By default, the scope is the parent container of the indicator such as the table or matrix that contains the
indicator. You can change the synchronization of the indicator depending on the layout of your report. For
example, if a data region such as a table has a row group, you can specify the group as the indicator scope. The
indicator can also omit synchronization.
Options such as measurement units can be set by using expressions. For more information, see Expressions
(Report Builder and SSRS).
For general information about understanding and setting scope within reports, see Expression Scope for Totals,
Aggregates, and Built-in Collections (Report Builder and SSRS).

To change the synchronization scope of an indicator


1. Right-click the indicator you want to change and click Indicator Proper ties .
2. Click Values and States in the left pane.
3. In the Synchronization scope list, click the scope that you want to apply.
The (None) option, which removes synchronization scope from the indicator, is always available. Other
options depend on the layout of your report.
Optionally, click the Expression (fx) button to edit an expression that sets the scope.
4. Click OK .

See Also
Indicators (Report Builder and SSRS)
Specify the Size of an Indicator Using an Expression
(Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

In addition to color, direction, and shape, you can use size to maximize the visual impact of indicators.
An indicator has a collection of indicator states named IndicatorStates. The IndicatorStates collection typically
have multiple states. Each state is a member of the collection and is represented by an icon. Together the states
constitute the IndicatorsStates collection.
To dynamically configure the sizes of icons, you set properties of members of the IndicatorsStates collection in
the Properties pane of Report Builder. If the Proper ties pane is not visible, click the View tab and select
Proper ties .

NOTE
In SQL Server Data Tools (SSDT), you use the Proper ties window to set the member properties. If the Proper ties
window is not open, press the F4 key.

The Proper ties pane provides access to the properties of the IndicatorStates collection of an indicator. You
configure the icons to be different sizes by setting the ScaleFactor property of the IndicatorStates collection
members using an expression. For more information, see Expressions (Report Builder and SSRS).
The expression used in this procedure was also used to generate the report with different sizes of indicators,
shown in Indicators (Report Builder and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To specify the indicator icon size using an expression


1. Click the indicator you want to change.
2. In the Properties pane, locate the IndicatorStates property.
If the Properties pane is organized by category, you will find IndicatorStates in the States category.
3. Click the ellipsis (...) button next to IndicatorStates. The IndicatorState Collection Editor dialog box
opens.
Select all members of the collection.
4. In the Multi-Select Proper ties list, click the down arrow next to ScaleFactor and then click Expression .
5. In the Expression dialog box write the expression.
The following sample expression makes the icon a different size based on the value of the SalesYTD
field.
=IIF(Fields!SalesYTD.value = 0,0,Fields!SalesYTD.value/Max(Fields!SalesYTD.value,"Indicator"))

For more information, see Expression Examples (Report Builder and SSRS).
6. Click OK .
7. Click OK .

See Also
Indicators (Report Builder and SSRS)
Include Indicators and Gauges in a Gauge Panel
(Report Builder and SSRS)
11/2/2020 • 3 minutes to read • Edit Online

The gauge panel is the top-level container that holds one or more gauges and indicators. Indicators can be
embedded in gauges or placed next to them in the gauge panel.
If the indicator and gauge are adjacent in the gauge panel and show data from different fields, you might want
to add labels to make it clear what data the gauge and indicator convey.
Gauge and indicator options can be set by using expressions. For more information, see Expressions (Report
Builder and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To embed an indicator in a gauge


1. Open an existing report or create a new report that contains a table and matrix with the data you want to
display.
2. Insert a column in your table or matrix. For more information, see Insert or Delete a Column (Report
Builder and SSRS).
3. On the Inser t tab, in the Data Regions group, click Gauge , and then, and then click a cell in the new
column. The Select Gauge Type dialog box appears.
4. Click Radial . The first radial gauge is selected.
5. Click OK .
6. Click the gauge. The Gauge Data pane opens.
7. In the Values area, in the (Unspecified) list box, click the field whose values you want to display in the
gauge. Alternatively, drag the field to use from the report dataset.
8. Right-click the gauge, click Add Indicator , and then click Child . The Select Indicator Style dialog box
opens.
9. In the Select Indicator Style dialog box, in the left pane, click the indicator type you want, and then click
the indicator set.
10. Click OK .
11. Click the indicator. The Gauge Data pane opens.
12. In the Values area, in the (Unspecified) list box, click the field whose values you want to display as an
indicator. Alternatively, drag the field to use from the report dataset.
The field can be the same or a different field from the one you use in the gauge.
13. Click OK .
To show an indicator and gauge side by side
1. Open an existing report or create a new report that contains a table and matrix with the data you want to
display.
2. Insert a column in your table or matrix. For more information, see Insert or Delete a Column (Report
Builder and SSRS).
3. On the Inser t tab, in the Data Regions group, click Gauge , and then click a cell in the column you
inserted. The Select Gauge Type dialog appears.
4. Click Radial . The first radial gauge is selected.
5. Click OK .
6. Click the gauge. The Gauge Data pane opens.
7. In the Values area, in the (Unspecified) list box, click the field whose values you want to display in the
gauge. Alternatively, drag the field to use from the report dataset.
8. Right-click the gauge, click Add Indicator , and then click Adjacent . The Select Indicator Style dialog
box opens.
9. In the Select Indicator Style dialog box, in the left pane, click the indicator type you want, and then click
the indicator set.
10. Click OK .
11. Click the indicator. The Gauge Data pane opens.
12. In the Values area, in the (Unspecified) list box, click the field whose values you want to display as an
indicator. Alternatively, drag the field to use from the report dataset.
The field can be the same or a different field from the one you use in the gauge.
13. Click OK .
14. Right-click the gauge panel and click Add Label . A label is added to the gauge panel. Repeat one more
time.
The gauge panel has two labels.
15. Drag each label to a location near the gauge or indicator.
16. Right-click the label near the gauge, click Label Proper ties ,and type the text you want in the Text box.
17. Right-click the label near the indicator, click Label Proper ties ,and type the text you want in the Text box.
18. Click OK .

See Also
Indicators (Report Builder and SSRS)
Maps (Report Builder and SSRS)
3/5/2021 • 17 minutes to read • Edit Online

To visualize business data against a geographical background, you can add a map to your Reporting Services
paginated report. The type of map that you select depends on what information that you want to communicate
in your report. You can add a map that displays locations only, or a bubble map that varies bubble size based on
number of households for an area, or a marker map that varies marker style based on the most profitable
product for each store, or a line map that displays routes between stores.
A map contains a title, a viewport that specifies the center point and scale, an optional Bing map tile background
for the viewport, one or more layers that display spatial data, and a variety of legends that help users interpret
the data visualizations. The following illustration shows the basic parts of a map.

To start to use a map immediately, see Tutorial: Map Report (Report Builder) or Report Samples (Report Builder
and SSRS).

NOTE
You can save maps separate from a report as report parts. Read more about Report Parts.

Adding a Map to Your Report


To add a map to your report, here is a list of the general steps to follow:
Determine which analytical data that you want to display and what types of spatial data that you need.
For example, to display relative annual store sales on a bubble map, you need store name and store sales
for analytical data and store name and store location as latitude and longitude for spatial data.
Decide on the style of map you want. Basic maps display locations only. Bubble maps vary bubble size
based on a single analytical value. Analytical color maps vary map elements based on ranges of analytical
data. The style that you select depends both on the data that you want to visualize and the type of spatial
data that you use.
Collect the information that you must have to specify spatial data sources, spatial data, analytical data
sources, and analytical data. This includes connection strings to spatial data sources, specifying the type
of spatial data that you need, and making sure that your report data includes match fields that associate
the spatial data and analytical data.
Run the Map wizard to add a map to your report. This adds the first map layer to the map. Run the Map
Layer wizard to create additional layers or modify existing layers. The wizards provide an easy way to get
started. For more information, see Map Wizard and Map Layer Wizard (Report Builder and SSRS).
After you preview the map in your report, you will probably want to adjust the map view, change the way
your data varies the display of each layer, provide legends to help your users interpret the data, and
adjust the resolution to provide a good viewing experience for your users.
For more information, see Plan a Map Report (Report Builder and SSRS).

Adding Data to a Map


A map uses two types of data: spatial data and analytical data. Spatial data defines the appearance of the map
whereas analytical data provides the values that are associated with the map. For example, spatial data defines
the locations of cities in an area whereas analytical data provides the population for each city.
A map must have spatial data; analytical data is optional. For example, you can add a map that displays just store
locations in a city.
To visualize data on a map, the analytical data and the spatial data must have a relationship. When the spatial
data and the analytical data come from the same source, the relationship is known. When the spatial data and
the analytical data come from different sources, you must specify match fields to relate them.
Spatial Data
Spatial data consists of sets of coordinates. Spatial data from a data source can be a single point, multiple points,
a single line, multiple lines, or a set of polygons. Each set of coordinates defines a map element, for example, a
polygon that represents the outline of a county, a line that represents a road, or a point that represents the
location of a city.
Spatial data is based on one of the following coordinate systems:
Geographic Specifies geodesic coordinates on a spherical surface by using longitude and latitude. When
spatial data is geographic, a projection must be specified. A projection is a set of rules that specifies how
to draw objects that have spherical coordinates onto a planar surface. Only geographic data with the
same projection can be compared or combined.
Planar Specifies geometric coordinates on a planar surface by using X and Y.
Each map layer displays one type of spatial data: polygons, lines, or points. To display multiple types of spatial
data, add multiple layers to the map. You can also add a layer of Microsoft Bing map tiles. The tile layer does not
depend on spatial data. The tile layer displays image tiles that correspond to the coordinates of the map
viewport.
Sources of Spatial Data
The following sources of spatial data are supported:
Map Galler y repor ts. Spatial data is embedded in reports located in the map gallery. By default, the
Map Gallery is installed in <drive>:\Program Files\Microsoft SQL Server\Report Builder \MapGallery.
NOTE
This Reporting Services mapping feature uses data from TIGER/Line Shapefiles provided courtesy of the U.S.
Census Bureau (https://www.census.gov/). TIGER/Line Shapefiles are an extract of selected geographic and
cartographic information from the Census MAF/TIGER database. TIGER/Line Shapefiles are available without
charge from the U.S. Census Bureau. To obtain more information about the TIGER/Line Shapefiles go to
TIGER/Line Shapefiles and TIGER/Line Files Technical Documentation. The boundary information in the TIGER/Line
Shapefiles are for statistical data collection and tabulation purposes only; their depiction and designation for
statistical purposes does not constitute a determination of jurisdictional authority or rights of ownership or
entitlement and they are not legal land descriptions. Census TIGER and TIGER/Line are registered trademarks of
the U.S. Bureau of the Census.

ESRI Shapefiles. ESRI Shapefiles contain data that complies with the Environmental Systems Research
Institute, Inc. (ESRI) Shapefile spatial data format. ESRI Shapefiles refer to a set of files. Data in the .shp file
specifies the geographical or geometrical shapes. Data in the .dbf file provides attributes for the shapes.
To view a map in design view or to run a map from the report server, both files must be in the same
folder. When you add spatial data from a .shp file on your local file system, the spatial data is embedded
in your report. To retrieve spatial data dynamically at run time, upload the Shapefiles to your report
server, and then specify them as the source for spatial data. For more information, see Finding ESRI
Shapefiles for a Map.
SQL Ser ver spatial data stored in a database. You can use a query that specifies SQLGeometr y or
SQLGeography data types from a SQL Server relational database. For more information, see Spatial
Data Types Overview.
In the result set that you see in the query designer, each row of spatial data is treated as a unit and stored
in a single map element. For example, if there are multiple points that are defined in one row in the result
set, display properties apply to all points in that map element.
Custom locations that you create. You can manually add locations as embedded points to an
embedded point layer. For more information, see Add Custom Locations to a Map (Report Builder and
SSRS).
Spatial Data in Design View
In Design view, the report processor displays sample spatial data to help you design the map layer. The data that
you see depends on the availability of the spatial data:
Embedded data. The sample data is retrieved from map elements embedded in map layers in your
report.
Link to ESRI Shapefile . If the ESRI Shapefile (.shp) and the support file (.dbf) are available, the sample
data is loaded from the Shapefile. Otherwise, the report processor generates sample data and displays
the message No spatial data available .
SQL Ser ver spatial data. If the data source is available and the credentials are valid, the sample data is
loaded from the spatial data in the database. Otherwise, the report processor generates sample data and
displays the message No spatial data available .
Embedding Spatial Data in the Report Definition
Unlike analytical data, you have the option to embed spatial data for a map layer in the report definition. When
you embed spatial data, you embed map elements that are used in the map layer.
Embedded elements increase the size of the report definition but ensure that the spatial data is always available
when the report runs, either in preview or on the report server. More data means more storage and longer
processing times. It is always a best practice to limit spatial data, in addition to other report data, to just the
information that is needed for your report.
Controlling Map Resolution at Run Time
When you change the resolution for spatial data, you are specifying how detailed you want the lines drawn on a
map. For example, for areas, do you need granularity down to a hundred meters of surface area on the earth, or
is one mile enough detail?
If the spatial data is embedded in the report, the resolution that you use affects the number of map elements in
the report definition. A higher resolution increases the number of elements that are required to draw borders at
that resolution. If the spatial data is not embedded in the report, the report server calculates the lines that are
required to draw the borders at that resolution every time you view the report. To design a report that balances
display resolution and acceptable report rendering time, simplify the map resolution to the level of detail that
you need in your report to visualize your analytical data.
Analytical Data
Analytical data is the data that you want to visualize on the map, for example, population for a city or sales total
for a store. Analytical data can come from one of the following sources:
Dataset field. A field from a dataset in the Report Data pane.
Spatial data source field. A field from the spatial data source that is included with the spatial data. For
example, an ESRI Shapefile frequently includes both spatial and analytical data. Field names from the
spatial data source begin with # and appear in the drop-down list of fields when you are specifying the
data field for rules for a layer.
Embedded data for a map element. After you embed polygons, lines, or points in a report, you can
override the data fields for individual map elements and set custom values.
When you specify rules for a layer and select the analytical data field, if the data type is numeric, the report
processor automatically uses the default function Sum to calculate aggregate values for the map element. If the
field is not numeric, no aggregate function is specified, and the implicit aggregate function First is used. To
change the default expression, change the options for the rules for the layer. For more information, see Vary
Polygon, Line, and Point Display by Rules and Analytical Data (Report Builder and SSRS).
Match Fields
To relate analytical data to map elements on a layer, you must specify match fields. Match fields are used to build
a relationship between map elements and analytical data. You can use one or more fields to match on as long as
they specify a unique analytical value for each spatial location.
For example, for a bubble map that varies bubble size by city population, the following data is needed:
From the spatial data source:
SpatialData. A field that has spatial data that specifies the latitude and longitude of the city.
Name. A field that has the name of the city.
Area. A field that has the name of the region.
From the analytical data source:
Population. A field that has the city population.
City. A field that has the name of the city.
Area. A field that has the name of the territory, state, or region.
In this example, the name of the city alone is not enough to uniquely identify the population. For example, there
are many cities named Albany in the United States. To name a specific city, you must specify the area in addition
to the city name.
Understanding the Map Viewport
After you specify map data for a report, you can limit the display area of the map by specifying a map viewport.
By default, the viewport is the same area as the whole map. To crop the map, you can specify the center, zoom
level, and maximum and minimum coordinates that define the area that you want to include in your report. To
improve the display of the map in the report, you can move the legends, distance scale, and color scale outside
the viewport. The following figure shows a viewport:

Adding a Bing Map Tiles Layer


You can add a layer for Bing map tiles that provides a geographic background for the current map view as
defined by the viewport. To add a tile layer, you must specify the coordinate system geographic and the
projection type Mercator . Tiles that match the viewport center and zoom level that you select are automatically
retrieved from Bing Maps Web Services.
You can customize the layer by specifying the following options:
Tile type. The following styles are supported:
Road. Displays a road map style that has a white background, roads, and label text.
Aerial. Displays an aerial image style without text.
Hybrid. Displays a combination of the Road and Aerial styles.
The language for the display text on the tiles.
Whether to use a secure connection to retrieve the tiles from the Bing Maps Web service.
For step-by-step instructions, see Add, Change, or Delete a Map or Map Layer (Report Builder and SSRS).
For more information about tiles, see Bing Maps Tile System. For more information about the use of Bing map
tiles in your report, see Additional Terms of Use.

Understanding Map Layers and Map Elements


A map can have multiple layers. There are three types of layers. Each layer displays one type of spatial data:
Polygon Layer. Displays outlines of areas or markers for the polygon center point, which is
automatically calculated for each polygon.
Line Layer. Displays lines for paths or routes.
Point Layer. Displays markers for point locations.
When you specify the source of spatial data for a layer, the wizard checks the spatial data field and sets the layer
type based on its type. A map element is added to the layer for each value from the data source.
For example, to display delivery routes from a central warehouse to your stores, you might add two layers: a
point layer with pushpin markers to display store locations and a line layer to display delivery routes to each
store from the warehouse. The point layer needs Point spatial data that specifies store locations and the line
layer needs Line spatial data that specifies the delivery routes.
The fourth type of layer is a tile layer. A tile layer adds a background of Bing map tiles that corresponds to the
map viewport center and zoom level.
To work with layers, select a map on the report design surface to display the Map pane. The Map pane displays
the list of layers that are defined for the map. Use this pane to select a layer to change the options, to change the
drawing order of layers, to add a layer or run the Map Layer wizard, to hide or show a layer, and to change the
view center and zoom level for the map viewport. The following figure shows a viewport:

For more information about map layers, see Add, Change, or Delete a Map or Map Layer (Report Builder and
SSRS).
Varying Display Properties for Points, Lines, and Polygons
Display options for a map elements can be set at the layer level, by using rules for the layer, or on individual
elements. For example, you can set display properties for all points on a layer, or you can set rules that control
the display properties for all points on a layer whether or not they are embedded, or you can override display
property settings for specific embedded points.
When you view a report, the display values that you see are controlled by this hierarchy, listed in ascending
order. The higher numbers take precedence:
1. Layer proper ties. Properties that apply to the whole layer. For example, use layer properties to set the
source of analytical data or the visibility for the whole layer.
2. Polygon, Line, Point proper ties and Embedded Polygon, Line, Point proper ties. Properties that
apply to all map elements on a layer, whether the elements are from dynamic spatial data or embedded
spatial data. For example, use polygon center point properties to set the fill color for bubbles to a
gradient that fills bubble areas from dark blue to light blue and from top to bottom.
3. Color Rules, Size Rules, Width Rules, Marker Type Rules. Rules apply properties to a layer when
the layer has map elements that have a relationship to analytical data. The type of rules vary based on
layer type. For example, use point size rules to vary bubble size based on population.
4. Override for Embedded Polygon, Line, or Point proper ties . For embedded map elements, you can
select the override option and change any property or data value. Any changes that you make to override
rules for individual elements are irreversible. For example, you can highlight a specific store by using a
pushpin marker.
For more information, see Vary Polygon, Line, and Point Display by Rules and Analytical Data (Report Builder
and SSRS).
In addition to varying the appearance of map elements, you can add interactivity to points, lines, and polygons,
or to layers, in the following ways:
Create tooltips to provide additional details for a map element when the user hovers a pointer over the
map.
Add drillthrough actions to link to other locations in the report, to other reports, or to Web pages.
Add parameters in expressions that define layer visibility to enable a user to show or hide specific map
layers.
For more information, see Interactive Sort, Document Maps, and Links (Report Builder and SSRS).

Understanding Map Legends, Color Scale, and Distance Scale


You can add a variety of legends to your report to help users interpret a map. Maps can include the following
items:
Legends. You can create multiple legends. Items that are listed in a legend are generated automatically
based on the rules that you specify for map elements on each layer. For each rule, you specify the legend
to use to display its related items. In this manner, you can assign items from multiple layers to the same
legend or to different legends.
Color scale. You can create one color scale. As an alternative to providing a legend for a color rule, you
can display items for a color rule in the color scale. Multiple color rules can apply to the color scale.
Distance scale. You can display one distance scale. The distance scale displays a scale for the current
map view in both kilometers and miles.
You can position the legends, color scale, and distance scale in discrete locations inside or outside the viewport.
For more information, see Change Map Legends, Color Scale, and Associated Rules (Report Builder and SSRS).

Troubleshooting Maps
Map reports use spatial and analytical data from a variety of data sources. Each map layer can use different
sources of data. The display properties for each layer follow a specific precedence based on layer properties,
rules, map element properties.
If you do not see the result that you want when you view a map report, the root causes can come from a variety
of issues. To help you isolate and understand each issue, it helps to work with one layer at a time. Use the Map
pane to select a layer and easily toggle its visibility.
For more information about map report issues, see Troubleshoot Reports: Map Reports (Report Builder and
SSRS)

How-To Topics
This section lists procedures that show you, step by step, how to work with maps and map layers in your
reports.
Add, Change, or Delete a Map or Map Layer (Report Builder and SSRS)
Change Map Legends, Color Scale, and Associated Rules (Report Builder and SSRS)
Add Custom Locations to a Map (Report Builder and SSRS)

In This Section
Plan a Map Report (Report Builder and SSRS)
Map Wizard and Map Layer Wizard (Report Builder and SSRS)
Customize the Data and Display of a Map or Map Layer (Report Builder and SSRS)
Vary Polygon, Line, and Point Display by Rules and Analytical Data (Report Builder and SSRS)
Add, Change, or Delete a Map or Map Layer (Report Builder and SSRS)
Change Map Legends, Color Scale, and Associated Rules (Report Builder and SSRS)
Add Custom Locations to a Map (Report Builder and SSRS)
Troubleshoot Reports: Map Reports (Report Builder and SSRS)
Plan a Map Report (Report Builder and SSRS)
11/2/2020 • 9 minutes to read • Edit Online

Good reports present information that leads to actions or insights. To present analytical data such as sales totals
or demographics against a geographic background, you can add a map to your Reporting Services paginated
report. A map can contain multiple layers, where each layer displays map elements that are defined by a specific
type of spatial data: points that represent locations, lines that represent routes, or polygons that represent areas.
You can associate your analytical data with map elements on each layer.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Specify the Purpose of the Map


Good report design provides information that help users take actions to address issues. To create a useful, easily
understood map display, decide what questions you want the map to help answer. For example, on a map you
can visualize the following types of data to identify market opportunities:
Relative sales for each store.
Sales categorized by customer demographics, based on customer location relative to store locations.
Comparative sales or other financial data by sales territory.
Comparative sales for different discount strategies across multiple stores.
After you identify the purpose of the map display, you must analyze what data you need. Analytical data comes
from report datasets. Location data comes from spatial data sources that you must specify.

Specify the Spatial and Analytical Data


You must specify which spatial and analytical data that you need.
Analytical data comes from a report dataset, from sample data included with a map from the map gallery, or
from analytical data included with spatial data in an ESRI Shapefile.
Spatial data comes in three forms: points, lines, and polygons.
Points. Points specify locations, for example, a city or an address for a store, restaurant, or convention
center. For every location that you want to display on a map, you must provide the spatial data for that
location. After you add points to a map, you can display a marker at the point location and vary the
marker type, size, and color.
Lines. Lines specify paths or routes, for example, delivery routes or flight paths. After you add a line to a
map, you can vary the line color and line width.
Polygons. Polygons specify areas, for example, regions, territories, countries, states, provinces, counties,
cities, or areas covered by cities, postal codes, telephone exchanges, or census districts. After you add
polygons to a map, in addition to displaying the outline, you can display a marker at the center point of
the area of the polygon.
After you identify which spatial data that you need, you must find a source for it.
Find a Source for Spatial Data
To find spatial data to use in your map, you can use the following sources:
ESRI Shapefiles, including publicly available Shapefiles that you can search for on the Internet.
Spatial data from SQL Server spatial data sources.
Maps from reports in the Map Gallery.
Third-party sites that offer spatial data as ESRI Shapefiles or SQL Server spatial data.
Bing map tiles, which provide a background for the map view. To display tiles in a map, the report server
must be configured to support Bing Maps Web Services.
For more information, see "Where can I get ESRI shapefiles?" in Map Wizard and Map Layer Wizard (Report
Builder and SSRS).
Spatial data can be politically sensitive and possibly copyrighted. Check the terms of use and privacy statements
for spatial data sources to understand how you can use spatial data in your report.
After you find the data that you want, you can embed the data in the report definition or retrieve the data
dynamically when the report is processed. For more information, see Balance Report Definition Size and Report
Processing Time later in this topic.
Determine the Spatial Data and the Spatial Data Match Fields
To display analytical data on a map and to vary the size, color, or marker type, you must specify fields that relate
the spatial data and analytical data.
Spatial data must contain the following fields:
Spatial data. A spatial data field that has the sets of coordinates that define each point, line, or polygon.
Match fields. One or more fields that uniquely identify each spatial data field. For example, for a store
location point, you might use the name of the store. If the store name is not unique in the spatial data,
you might include the name of the city as well as the store.
The match fields are used to relate the spatial data with the analytical data.
Determine the Analytical Data and the Analytical Data Match Fields
After you identify the spatial data, you must identify the analytical data. Analytical data can come from the
following sources:
An existing report dataset. Fields are specified as simple field expressions, for example, [Sales] or
=Fields!Sales.Value.
Data fields provided by the spatial data source. Fields are specified as keywords that begin with #
followed the field name from the source of spatial data.
You must then determine the names of the match fields:
Match fields. One or more fields that specify the same information as the spatial data match fields to build a
relationship between the spatial data and the analytical data. Match fields should match data type as well as
formatting.
When you have identified the spatial data source, the spatial data, the analytical data source, the analytical data,
and the match fields, you are ready to decide which type of map to add to your report.
Choose a Map Type
When you run the Map wizard, you add a map and the first map layer to your report. The wizard enables you to
add one of the following types of maps to your report:
A basic map that displays locations without associated analytical data.
A map that has one analytical value associated with each map element, for example, sales total for each
store location.
A map that has more than one analytical value associated with a map element, for example, number of
customers and sales total for each store location.
The following table describes each map type. All map types allow you to select a theme that controls palette,
border style, and font, and to display labels.

DESC RIP T IO N A N D
W IZ A RD IC O N L AY ER ST Y L E L AY ER T Y P E O P T IO N S

Basic Map Polygon A map that displays areas


only, for example, sales
territories.

Options: Vary color by


palette or use a single color.
A palette is a predefined set
of colors. When all colors in
a palette have been
assigned, shades of colors
are assigned.

Color Analytical Map Polygon A map that displays


analytical data by varying
color, for example, sales
data by area.

Bubble Map Polygon A map that displays


analytical data by varying
bubble size centered on
areas, for example, sales
data by area.

Options: Vary area colors


based on a second
analytical field and specify
color rules.

Basic Line Map Line A map that displays lines


only, for example, delivery
routes.

Options: Vary color by


palette or use a single color.
DESC RIP T IO N A N D
W IZ A RD IC O N L AY ER ST Y L E L AY ER T Y P E O P T IO N S

Analytical Line Map Line A map that varies line color


and width, for example,
number of packages
delivered and on-time
metrics by route.

Options: Vary line width by


one analytical field, vary line
color by a second analytical
field, and specify color rules.

Basic Marker Map Point A map that displays a


marker at each location, for
example, cities.

Options: Vary color by


palette or use a single color,
and change marker style.

Bubble Marker Map Point A map that displays a


bubble for each location
and varies bubble size by
one analytical data field, for
example, sales data by city.

Options: Vary bubble color


by a second analytical field,
and specify color rules.

Analytical Marker Map Point A map that displays a


marker at each location and
varies marker color, size,
and type based on
analytical data, for example,
top selling products, profit
range, and discount
strategy.

Options: Vary marker type


by one analytical field, vary
marker size by a second
analytical field, vary marker
color by a third analytical
field, and specify color rules.

After you add a map with the Map wizard, you can create additional layers or change options for a layer by
using the Layer wizard. For more information about the wizards, see Map Wizard and Map Layer Wizard (Report
Builder and SSRS).
You can customize the display or data options for each layer independently. For more information about
customizing a map after you run a wizard, see Customize the Data and Display of a Map or Map Layer (Report
Builder and SSRS).

Plan for Legends


To help your users interpret a map, you can add multiple map legends, a color scale, and a distance scale. When
you design a map, plan where you want the legends to display. You can specify the following information about
each legend:
Legend location. For example, legends can display inside or outside the viewport, and in 12 discrete
locations relative to the viewport.
Legend styles . For example, you can specify the font style, border style, separator line, and fill
properties.
Legend title. For example, you can specify title text, and independently control whether to display the
title for a map legend or the color scale.
Map legend layout. For example, map legends can display as tall tables or wide tables.
The contents of the legend are created automatically during report processing based on rule options that you
set for each layer.
By default, all layers display the results of rules in the first map legend. You can create multiple legends and then,
for each rule, assign which legend to use to display the results.
For more information, see Vary Polygon, Line, and Point Display by Rules and Analytical Data (Report Builder
and SSRS) and Change Map Legends, Color Scale, and Associated Rules (Report Builder and SSRS).

Balance Report Definition Size and Report Processing Time


Good report design for maps require that you balance the options that control report performance and report
definition size. Map elements that are based on spatial data, or Bing map tiles, can be static and embedded in the
report definition or dynamic and created every time the report is processed. You must assess the trade-offs for
static or dynamic map data and find the balance that works for your circumstances. Consider the following
information to make this decision:
Embedded map elements can significantly increase the size of the report definition, but reduce the time
that is required to view the map in the report. Your report server might have size limits that you need to
work with.
The report definition specifies limits to the number of spatial data points that can be processed and a
separate value that specifies the number of map elements that can be included in the report definition.
Dynamic map elements reduce the report definition size but increase the time that is required to process
and render the map.
When the source of spatial data is located on the your computer, map elements are always embedded in
the report definition. This includes spatial data from the Map Gallery or ESRI Shapefiles that have been
installed locally.
To use dynamic spatial data, the spatial data source must be on the report server. When reports are designed in
SQL Server Data Tools (SSDT), spatial data sources can be added to a project and published to the report server
together with the report definition. If you are using Report Builder to design reports, you must upload the
spatial data to the report server first, and then, in the wizard or in the layer properties, specify that source of
spatial data for the map layer.

See Also
Customize the Data and Display of a Map or Map Layer (Report Builder and SSRS)
Tutorial: Map Report (Report Builder)
Maps (Report Builder and SSRS)
Troubleshoot Reports: Map Reports (Report Builder and SSRS)
Map Wizard and Map Layer Wizard (Report Builder
and SSRS)
3/5/2021 • 14 minutes to read • Edit Online

In Reporting Services paginated reports, the Map Wizard and Map Layer Wizard automate the task of creating a
map, adding a map layer, or changing map layer options on an existing layer.
Before you add a map to a report or a map layer to a map, gather the following information:
Spatial data source. The location or connection to a source that provides spatial data, for example, the
name of a SQL Server instance and a database that contains spatial data, or the name of an
Environmental Systems Research Institute, Inc. (ESRI) Shapefile.
Spatial data. From the spatial data source, a field that contains sets of coordinates that specify locations.
Analytical data. Analytical data to use to vary the map display, for example, annual store sales.
Match fields. Match fields that define the relationship between spatial data and analytical data, for
example, the name of a region and city to uniquely identify each city.
The following sections provide information about options that you specify when in the Map and Map Layer
Wizards.
When you first open Report Builder, click the Map wizard icon in the center of the design surface.
On the Inser t tab, click Map , and then click Map Wizard .
To open the Map Layer wizard, do the following action:
Click the map to display the Map pane and on the toolbar, click the New layer wizard button.
Click the title of the wizard page for the corresponding help content. The pages that you see vary depending on
your choices for the type of map, the source of spatial data, and the source of analytical data.
1. Choose a source of spatial data. Spatial data can come from the map gallery, an Environmental Systems
Research Institute, Inc. (ESRI) Shapefile, or from spatial data in a SQL Server relational database.
What is spatial data?
What is the Map gallery?
What is an ESRI Shapefile?
Where can I get ESRI shapefiles?
What is a SQL Server spatial query?
2. Choose spatial data and map view options. Set the map view, the map resolution, specify whether to
embed spatial data in the report, and specify whether to include a tile background of Microsoft Bing map
tiles.
What is the map view or viewport?
What is map resolution or optimization?
What does embedding spatial data do?
What is a Bing maps tile background?
3. Choose map visualization. Choose the type of map to create.
What is the difference between a Basic Map, a Bubble Map, and an Analytical Map?
Choose map visualization: Polygons
Choose map visualization: Lines
Choose map visualization: Points
4. Choose a connection to a data source Choose map visualization: Points. Choose a data source connection
or create one to an external data source that contains analytical data to display on the map.
5. Design a query. Build a query that specifies the analytical data.
6. Choose the analytical dataset. Specify a data source for the analytical data.
What is the difference between spatial data and analytical data?
7. Specify the match fields for spatial and analytical data. Build a relationship between the spatial data and
analytical data so that the appearance of map elements can vary based on data.
What is a match field?
8. Choose color theme and data visualization. To specify how to visualize your data against the map
background, specify the map theme, the fields to visualize, and what to vary: color, size, and/or marker
type.
What does the theme do?
What are the legends and scales in Map Preview for?
What are rules?
After you add a map or map layer and preview the report, you can change map and map layer options that you
set in the wizards. For more information, see Customize the Data and Display of a Map or Map Layer (Report
Builder and SSRS).
For more information about maps, see Maps (Report Builder and SSRS). For step-by-step instructions to add a
map to a report, see Tutorial: Map Report (Report Builder).

Choose a source of spatial data


On this page, specify the spatial data source and which spatial data to include. Spatial data can come from the
map gallery, an ESRI Shapefile, or a dataset query that specifies SQL Server spatial data from a SQL Server 2008
or later version database.
You can use the same source or a different source of spatial data for each layer, but you must specify the source
every time you add a layer. When the spatial data is from the map gallery or an ESRI Shapefile, the spatial data
source is not a separate report item. It does not appear in the Report Data pane.
What is spatial data?
Spatial data contains coordinates that define geographic or geometric elements. In a map, spatial data defines
map elements: polygons that define areas or shapes, lines that define routes or paths, and points that define
markers or pushpins. Spatial data is stored in binary format on the data source and is specified as sets of
coordinates. For example, a point is an X and Y coordinate (X Y), a line is two sets of coordinates ((X1 Y1), (X2
Y2)), a polygon is four or more sets of coordinates where the first and last set of coordinates are the same ((X1
Y1), (X2 Y2), (X3 Y3), (X1 Y1)).
For more information, see the documentation for the type of spatial data that you use.
What is the map gallery?
The map gallery contains maps from reports that are located in the map gallery folder for the report authoring
environment. Maps from the gallery provide a quick start to add a map to your report. The predefined maps in
the gallery are provided by a map provider.

NOTE
This Reporting Services mapping feature uses data from TIGER/Line Shapefiles provided courtesy of the U.S. Census
Bureau (https://www.census.gov/). TIGER/Line Shapefiles are an extract of selected geographic and cartographic
information from the Census MAF/TIGER database. TIGER/Line Shapefiles are available without charge from the U.S.
Census Bureau. To obtain more information about the TIGER/Line Shapefiles go to TIGER/Line Shapefiles and TIGER/Line
Files Technical Documentation. The boundary information in the TIGER/Line Shapefiles are for statistical data collection
and tabulation purposes only; their depiction and designation for statistical purposes does not constitute a determination
of jurisdictional authority or rights of ownership or entitlement and they are not legal land descriptions. Census TIGER and
TIGER/Line are registered trademarks of the U.S. Bureau of the Census.

To extend the map gallery, you can add or remove reports from the map gallery directory, and add folders to
organize the maps. For more information, see Maps (Report Builder and SSRS).
What is an ESRI shapefile?
An ESRI Shapefile is a set of files with data that conforms to the Environmental Systems Research Institute, Inc.
(ESRI) shapefile spatial data format. The set of files typically includes the <filename>.shp file that contains the
spatial data and a support file, <filename>.dbf.
When you specify a shape file as a spatial data source and it is located on your local computer, the spatial data is
automatically embedded in the report. To use spatial data from an ESRI file dynamically, you must do the
following:
In Report Builder, upload both the .shp file and the .dbf file to the same folder on a report server, and then link to
the .shp file as the spatial data source.
In Report Designer in SQL Server Data Tools (SSDT), add both the .shp file and the .dbf file to the report project,
and then specify the name of the .shp file as the spatial data source.
Where can I get ESRI shapefiles?
ESRI shapefiles are available on the Web. For more information, see Finding ESRI Shapefiles for a Map.
What is a SQL Server spatial query?
A SQL Server spatial query is a dataset query that specifies data that is either a SQLGeometry or a
SQLGeography data type from a SQL Server relational database.

NOTE
When you define a data source in the wizard, you will see different query designers in the Design a Query page,
depending on what type of data source you are connecting to. For more information, see Query Design Tools (SSRS).

When you run the query in the query designer, the result set displays a column with spatial data that appears as
text. For example, one row might contain spatial data that is a single point and the next row might contain
spatial data that defines a set of points. Each row becomes one map element. You can vary the display of each
map element as an indivisible unit.
For more information, see Spatial Data Types.
Choose spatial data and map view options
On this page you can set the following options:
Set the view center and zoom level for the spatial data that you selected in the previous wizard page. The
view that you set applies to the whole map.
Set the map resolution.
Specify whether to embed the spatial data in the report.
For embedded data, specify whether to include all data or just the data in the current view.
Specify whether to include a Microsoft Bing map tiles background.
What is the map view or viewport?
The map viewport defines the map area to display for all layers in your report.
By default, color scale and distance scale appear inside the viewport, and the map legend appears outside the
viewport. You can change these options for the viewport after you complete the wizard.
What is map resolution and optimization?
When you change the resolution for spatial data that represents lines or polygons, you are specifying how
detailed you want the map to be drawn. For example, for aerial views of a region, do you need granularity down
to a hundred meters of surface area on the earth, or is one mile resolution enough?
When spatial data is embedded in the report, a higher resolution increases the number of elements that are
needed to draw details at that resolution. When the spatial data is not embedded in the report, a higher
resolution increases the amount of time required by the report processor to calculate the lines for the map at
that resolution every time you view the report.
When you lower the resolution, the report processor applies an algorithm to reduce the number of points
needed to draw the map elements. The lower the resolution, the less data is required to display the map
elements, which can lead to better display performance.
As you adjust the slider, the preview data in the wizard pane updates to give you an indication of the effect. After
you add the map to the report, you can adjust this value by changing map viewport options.
What does embedding spatial data do?
When you embed map elements or Bing map tiles in a report, the spatial data is stored in the report definition.
A report with a map can use spatial data or Bing map tiles that are retrieved dynamically either when the report
is processed or at design time and then embedded in the report definition. Embedded map elements can
significantly increase the size of the report definition, but reduce the time it takes to view the map in the report.
Dynamic map elements reduce the report definition size but increase the time it takes to process and view the
map.
Good report design requires that you assess the trade-offs for static or dynamic map data and find the balance
that works for your circumstances. In general, more data means the report definition and the compiled report
requires more storage on the report server and longer processing times. It is always a best practice to crop
spatial data, as well as limit other report data, to include just what is needed for the report.
What is a Bing map tile background?
To add a geographic image background to your map, select the Bing map tile background option. The report
processor downloads tiles from Bing Maps Web Services for the map area and resolution that you specify on
this wizard page. You can specify one of the following tile types:
Road. Display a road map style with white background.
Aerial. Display an aerial view only. No text is displayed in this mode.
Hybrid. Display the combination of Road and Aerial views.
For more information about tiles, see Bing Maps Tiles System. For more information about the use of Bing map
tiles in your report, see Additional Terms of Use.
To see a tile background in Design view, you must have Internet access. To see the tile background in preview
from a report on a report server, the report server must be configured to support Bing map tiles. For more
information, see Troubleshoot Reports: Map Reports (Report Builder and SSRS) and Plan a Map Report.
For more information on other ways to customize a tile layer, see Add, Change, or Delete a Map or Map Layer
(Report Builder and SSRS).

Choose map visualization


On this page, choose the type of map or map layer to add to your report. The first time you run the wizard, you
are adding the map and the first map layer to the report. A map can contain multiple map layers. Each map layer
displays a specific type of spatial data: polygons, lines, or points.
The type of map that you choose depends on the purpose of the map and the data that you have available.
What is the difference among a Basic Map, a Bubble Map, and an Analytical Map?
A Basic Map displays locations only. You can vary the colors of the areas on the map by shade, but the color
does not represent analytical data values.
A Bubble Map conveys the relative value for a single analytical data aggregate as bubble size, for example,
store sales. You can create bubble maps for either polygons or points. For polygons, set the polygon center point
properties; for points, set the marker properties.
An Analytical Map conveys the relative value of one or more analytical data aggregates for each map element.
For example, store sales as marker size, profit range for product categories as marker color, and top selling
product as marker type.
For more information, see Plan a Map Report (Report Builder and SSRS).

Choose the analytical dataset


On this page, specify where to get the analytical data to display on this map layer.
To display your report data or any analytical data against the map background, you must specify where the data
is and how it is related to the spatial data. Your data can come from an existing report dataset, or from a new
dataset that you build a query for. Existing analytical data might be included in the ESRI Shapefile that contains
the spatial data.
What is the difference between spatial data and analytical data?
Spatial data consists of sets of coordinates that specify points, lines, and polygons. Map elements are based on
spatial data.
Analytical data is numeric or categorical data that you want use to vary the appearance of the map. Analytical
can come from a report dataset or might be included with spatial data from a map from the map gallery or
from an ESRI shape file.

Specify the match fields


On this page, build a relationship between the spatial data and analytical data.
What are match fields?
Match fields enable the report processor to build a relationship between the analytical data and the spatial data.
Match fields specify unique values within the analytical data. For example, the store name might not be unique
within the data, so you could specify both a city and the store name.

Choose color theme and data visualization


On this page, specify how to visualize your data against the map background, the map theme, the fields to
visualize, and what to vary: color, size, and/or marker type.
What does the theme do?
The theme that you choose sets default values for color, border, and font. You can change these options after you
complete the wizard.
What are the legends and scales in Map Preview for?
Legends help a user interpret the data that is displayed on a map. A map provides a color range, a distance scale,
and a legend.
Color range. The color range displays a color bar with a scale that provides a guide to the data intervals
that are determined by the report processor based on the rules that you specify for the layer.
Distance scale. The distance scale provides a guide to the distance units on the map. Distance units are
determined automatically based on the map projection and zoom level.
Legend. The legend provides a guide to help interpret the meaning of colors, sizes, and marker types on
a map. By default, all the rules for all the layers display data intervals in the first legend. You can
customize this legend and add legends after you add the map to the report.
What are rules?
Rules are calculations that the report processor uses to divide analytical data into ranges. You can specify
different rules for each layer. The type of rules you can specify depend on the type of spatial data on the layer:
Polygons. You can specify color rules.
Center points for polygons. You can specify color, size, and marker type rules.
Lines. You can specify color and width rules.
Points. You can specify color, size, and marker type rules.
The report processor applies the rules that you set and automatically determines the list of items to display in a
legend. By default, the results of all rules for all layers display in the first legend. You can adjust this after you
complete the wizard. For more information, see Vary Polygon, Line, and Point Display by Rules and Analytical
Data (Report Builder and SSRS).

See Also
Troubleshoot Reports: Map Reports (Report Builder and SSRS)
Plan a Map Report (Report Builder and SSRS)
Maps (Report Builder and SSRS)
Customize the Data and Display of a Map or Map
Layer (Report Builder and SSRS)
11/2/2020 • 8 minutes to read • Edit Online

After you add a map or map layer to a Reporting Services paginated report by using a wizard, you might want
to change the way the map looks in the report. You can make improvements by considering the following ideas:
To help your users understand how to interpret the data display on a map, you can add legends and a
color scale, and add labels and tooltips.
To make the map easier to read, change the center and zoom level, add a distance scale, and display a
background grid.
To help control map drawing time when you run the report, you can adjust the resolution to simplify the
map elements.
You can embed map elements in the report definition, and then change how individual elements appear.
For example, you can display the primary office location with a pushpin and other office locations with
circles.
You can add customized regions by specifying your own data group expressions.
You can add a custom location at a point that you specify on a map layer that has embedded points. You
can set the value and display properties for custom points independently from other points on a point
layer.
To provide more detail, you can add links to map elements on each layer that a user can click to open
related reports.
For more ideas about improving a report, see Planning a Report (Report Builder).
Display options affect the way a map or the parts of a map appear when you view the report. Some options
control the appearance of the map, such as the borders and fonts or the area represented on the map. Other
options control the content of each layer, such as bubble sizes, marker types, labels, or tooltips.
A map report item includes the following parts: the map itself, a map viewport, a set of titles, a set of legends
(legend, color scale, and distance scale), a set of layers, a set of map elements on each layer (polygons or lines or
points). Use the information in the following sections to understand which property dialog box controls the
display options for different parts of a map.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Change Options for the Map


On a map report item, you can control the following:
Add multiple titles.
Add multiple legends. To change the contents of a legend, you need to create additional legends and then
change the rules to specify in which legend to enter the legend items created by each rule.
Add more layers.
Hide or show the distance scale or color scale.
Provide the illusion of depth by specifying a shadow.
To change these options, right-click the map, click Map , and change the options.

Change Options for the Viewport


Use the viewport options to change the view of the map that appears in your report.
The source of spatial data might provide more area than you need to display in the report. You can use the
viewport to set the center, the zoom level, and to crop the area for the map.
The following options can be set for the viewport:
Choose the coordinate system and, for a geographic coordinate system, choose the projection.
Choose the center for the map.
Crop the view for the map.
Set the zoom level.
Resolution and simplification. Choose a balance between drawing time and detailed outlines for lines and
polygons.
To change these options, right-click the map viewport, use the Map Viewport Properties Dialog Box, General
page and related pages.

Change Options for the Legends


Legends help users interpret the data on a map.
By default, all rules that you specify for a layer add items to the first legend. In addition, all color rules display
values in the color scale.
To change the display options for the appearance of the legend, including its position relative to the
viewport, set options on the legend itself.
To change the contents or the format of contents for a legend, change the legend options for the
corresponding rules for a layer.
For more information, see Change Map Legends, Color Scale, and Associated Rules (Report Builder and SSRS).

Change Options for the Layer


To display the layers for a map, click the map to select it. The Map pane appears. To change options for a layer,
right-click the layer and use the shortcut menu.
A layer can be one of three types based on the spatial data that is returned by the spatial data source: a polygon
layer, a line layer, or a point layer.
The following options can be set for the layer:
The associated analytical data and match fields. The source of the spatial data is listed on the Map pane
under the name of the layer. When the source is embedded, the map elements for the layer are part of
the report definition. If the source is not embedded, then the spatial data is retrieved at run time and the
report processor creates the map elements for the layer when the report is processed. To change data
options on the layer, use the Analytical Data page in the Map Layer dialog box.
Layer drawing order. The order that you see the layers listed in the Map pane is the reverse drawing order
for the layers. The last layer in the list is drawn first. For example, if you want the points on a point layer
to appear on top of the polygons in the polygon layer, the point layer should be first and the polygon
layer second.
Layer visibility, including transparency. To have one layer show through another layer, set the
transparency to a value higher than 0. A value of 100% means the layer is not visible. To work with an
individual layer, you can easily show or hide each layer independently by using the Visibility icon in the
Map pane. You can also set zoom level options to specify when to show or hide map elements on the
layer based on the zoom level.
Add a Bing map tile layer for the current viewport center and zoom level. You do not need to specify the
geographic coordinates for a tile layer. Tiles are automatically loaded to match the viewport area when
the coordinate system is Geographic, the projection is Mercator, the Bing Maps servers are available, and
when the report server has been configured to support this feature. For each report, you can specify
whether to use a secure connection to retrieve tiles.
For more information about layers, see Add, Change, or Delete a Map or Map Layer (Report Builder and SSRS).

Change Data Grouping for the Layer


You can customize the way to aggregate spatial data for your own shapes. To set the group properties for a layer,
select the layer in the Map pane, and in the Properties pane for the layer, click Group , and then click the ellipsis
(...) to open the Group properties. In this dialog box, you can specify group expressions, create group variables,
and filter data that is used for grouping.
The group expression specifies how analytical data that has a relationship to spatial data is aggregated for each
map element on the layer. By default, the group expression is the set of match fields that was specified for the
relationship between the spatial data and the analytical data. For example, for a bubble map that displays city
locations and population size for a country or region, the match fields include city name [City] and region name
[Region] because there can be multiple cities with the same name. The corresponding group expression includes
two fields: [City] and [Region].
For more information, see Map Tips: How To Import Shapefiles Into SQL Server and Aggregate Spatial Data.

Change Options for the Map Elements on the Layer


Map elements are the points, lines, or polygons on a layer that are based on the spatial data. For map elements,
the following options can be set. These options apply to all map elements on the layer, whether or not they are
embedded:
Labels, label visibility, label offset, and formatting.
Borders and fill.
Drillthrough actions.
Display options.
Display options for map elements follow a precedence order based on the layer, the map element, rules for the
map element, and override options for embedded map elements.
To change these options, right-click the map element, use the embedded properties dialog box. For example, for
an embedded polygon, use the Map Embedded Polygon Properties Dialog Box, General page and related pages.
Understanding Display Option Precedence
When you want to control the display appearance of a point, line, or polygon on a map layer, you must
understand where display options can be set and which options have a higher precedence. The following display
options are listed from lowest to highest. Higher display options override lower display options in this list:
Layer options.
Points, Lines, or Polygons options on each layer. This applies whether the map elements are dynamically
retrieved when the report is processed or whether they the map elements are embedded in the report
definition. For example, you specify a fill color for all elements on a layer.
Rules. You can set rules to control color, size, width, or marker type for all map elements on a layer. The
rules that you can set depend on the type of map element.
Color Rules. Apply to markers for points, lines, polygons, and markers for polygon center points.
Size Rules. Apply to markers for points and markers for polygon center points.
Width Rules. Applies to line widths.
Marker Type Rules. Applies to markers for points and markers for polygon center points.
Override options for individual embedded points, lines, or polygons on a layer. Changes that you make
are permanent. To revert these changes, you must reload the data for the layer.
For more information, see Vary Polygon, Line, and Point Display by Rules and Analytical Data (Report Builder
and SSRS).

See Also
Map Wizard and Map Layer Wizard (Report Builder and SSRS)
Maps (Report Builder and SSRS)
Vary Polygon, Line, and Point Display by Rules and
Analytical Data
11/2/2020 • 7 minutes to read • Edit Online

The display options for polygons, lines, and points on a map layer are controlled by setting options for the layer,
by setting rules for the map elements on the layer, or by overriding options for specific embedded map
elements on a layer.
Display options apply in a specific precedence, listed from lowest to highest precedence:
1. Options set on a polygon layer, a line layer, and a point layer apply to all map elements on that layer,
whether or not the map elements are embedded in the report definition.
2. Options set for rules apply to all map elements on a layer. All data visualization options apply only to map
elements that are associated with spatial data. A data visualization option requires you to specify a data
field to base display variations on. You must have set the match fields for the analytical and spatial data
before you can apply data visualization rules. For more information, see Maps (Report Builder and SSRS).
3. Options that you set for selected embedded map elements. Note that, when you override the layer
options, the changes that you make to the report definition are permanent. You can change the data field
values as well as override display options to customize the way specific polygons, lines, and points
appear on a layer.
In addition to controlling the display of map elements on a layer, you can control the layer transparency to allow
layers that are drawn earlier to show through layers that are drawn later. For more information about changing
options that affect the map or the entire map layer, see Customize the Data and Display of a Map or Map Layer
(Report Builder and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Understanding Rules
You can set four types of rules that enable the report processor to automatically adjust display properties for
map elements on a layer. Rules vary depending on the map element type: polygons, lines, or points.
Polygons. Vary polygon color.
Polygon Center Points. For markers that display at the center point of each polygon, vary marker
color, marker size, and marker type.
Lines. Vary line color and line width.
Points. For markers that display for each point, vary marker color, marker size, and marker type.

Understanding Color Rules


Color rules apply to fill colors for polygons, lines, and markers that represent points or polygon center points.
Color rules support four options:
Apply template style. The theme that you chose in the wizard defines the template style for the layer.
Theme sets the style for font, the border style, and the palette.
Visualize data by using color palette. You specify a palette by name. The report processor sets the color of
each map element in a layer by stepping through each color in the palette, and then applying successively
lighter shades of each color in the palette.
Visualize data by using color ranges. You specify a beginning, middle, and end color. Then you specify
distribution options. The report processor uses the distribution option values to create a set of colors that
produces a display similar to a heat map. A heat map displays color as related to temperature. For
example, on a scale of 0 to 100, low values are blue to represent cold and high values are red to represent
hot.
Visualize data by using custom colors. You specify a set of colors. The report processor sets the color of
each map element in the layer by stepping through the values that you specify.
The default palette includes the color white. To avoid the strong contrast between white and other colors in the
palette, specify a start color that is a light color in the palette.
To display map elements that are not associated with data as colorless, set No Color for the default color for
map elements on the layer.
Color Scale
By default, all color rule values appear in the color scale, in addition to appearing in the first legend. The color
scale is designed to display one range of colors. Choose the most important data to display in the color scale.
To remove the values that you do not want in the color scale, clear the color scale option for every color rule on
every layer.

Understanding Line Width Rules


Width rules apply to lines. Width rules support two options:
Use a default line width. You specify the line width in points.
Visualize data by using line width. You set the minimum and maximum widths for the line, specify the
data field to use to vary the width, and then specify the distribution options to apply to that data.

Understanding Marker Size Rules


Size rules apply to markers that represent points or polygon center points. Size rules support two options:
Use a default marker size. You specify the size in points.
Visualize data by using size. You set the minimum and maximum sizes for the marker, specify the data
field to use to vary the size, and then specify the distribution options to apply to that data.

Understanding Marker Type Rules


Marker type rules apply to markers that represent points or polygon center points. Marker type rules support
two options:
Use a default marker type. You specify one of the available marker types.
Visualize data by using markers. You specify a set of markers and specify the order in which you want
them used. Marker types include Circle , Diamond , Pentagon , PushPin , Rectangle , Star , Triangle ,
Trapezoid , and Wedge .
Understanding Distribution Options
To create a distribution of values, you can divide your data into ranges. You specify the distribution type, the
number of subranges, and the minimum and maximum range values.
In the following list, assume that you have three map elements and six related analytical values that range from
1 to 9999 with the following values: 1, 10, 200, 2000, 4777, 8999.
EqualInter val. Create ranges that divide the data into equal range intervals. For the example, the three
ranges would be 0-2999, 3000-5999, 6000-8999. Subrange 1: 1, 10, 200, 500. Subrange 2: 4777.
Subrange 3: 8999. This method does not take into account how the data is distributed. Very large values
or very small values can skew the distribution results.
EqualDistribution. Create ranges that divide that data so that each range has an equal number of items.
For the example data, the three ranges would be 0-10, 11-500, 501-8999. Subrange 1: 1, 10. Subrange 2:
200, 500. Subrange 3: 4777, 8999. This method can skew the distribution by creating divisions that span
very large or very small ranges.
Optimal. Create ranges that automatically adjust distribution to create balanced subranges. The number
of subranges is determined by the algorithm.
Custom. Specify your own number of ranges to control the distribution of values. For the example data,
you can specify ranges 3 ranges: 1-2, 3-8, 9.
The distribution values are used by the rules to vary the map element display values.

Understanding Legends and Legend Items


Legend items are created automatically from the rules that you specify for each layer. Rule options control how
many items are created and which legend they appear in. By default, all items for all rules are added to the first
legend. To move items out of the first legend, create as many additional legends as you need, and for each rule,
specify the legend to use to display the items that result from the rule. To hide items based on a rule, specify a
blank legend name.
To control where a legend appears, use the Legend Properties dialog box to specify a position relative to the
map viewport. For more information, see Change Map Legends, Color Scale, and Associated Rules (Report
Builder and SSRS).
Legends automatically expand to display the legend title or legend text. To format the text of legend items, use
map legend keywords and custom formats. For more information, see To change the format of content in a
legend.
The following tables shows examples of different formats that you can use.

EXA M P L E O F W H AT A P P EA RS A S T EXT
K EY W O RD A N D F O RM AT DESC RIP T IO N IN T H E L EGEN D

#FROMVALUE {C0} Displays the currency of the total value $400


with no decimal places

#FROMVALUE {C2} Displays the currency of the total value $400.55


to two decimal places.

#TOVALUE Displays the actual numeric value of 10000


the data field.
EXA M P L E O F W H AT A P P EA RS A S T EXT
K EY W O RD A N D F O RM AT DESC RIP T IO N IN T H E L EGEN D

#FROMVALUE{N0} - #TOVALUE{N0} Displays the actual numeric values of 10 - 790


the beginning of the range and end of
the range.

See Also
Change Map Legends, Color Scale, and Associated Rules (Report Builder and SSRS)
Maps (Report Builder and SSRS)
Map Wizard and Map Layer Wizard (Report Builder and SSRS)
Add, Change, or Delete a Map or Map Layer
(Report Builder and SSRS)
11/2/2020 • 9 minutes to read • Edit Online

A map is a collection of layers. When you add a map to a Reporting Services paginated report, you define the
first layer. You can create additional layers by using the map layer wizard.
The easiest way to add, remove, or change options for a layer is to use the map layer wizard. You can also
change options manually from the Map pane. To display the Map pane, click in the map on the report design
surface. The following figure displays the parts of the pane:

Map layers are drawn from bottom to top in the order that they appear in the Map pane. In the previous figure,
the tile layer is drawn first and the polygon layer is drawn last. Layers that are drawn later might hide map
elements on layers that are drawn earlier. You can change the order of layers by using the arrow keys on the
Map pane toolbar. To show or hide layers, toggle the visibility icon. You can change the transparency of a layer
on the Visibility page of the Layer Data properties dialog box.
The following table displays the toolbar icons for the Map pane.

SY M B O L DESC RIP T IO N W H EN TO USE

Map Layer Wizard To add a layer by using a wizard, click


New layer wizard .

Add Layer To manually add a layer, click Add


Layer , and then click the type of map
layer to add.

Polygon Layer Add a map layer that displays areas or


shapes that are based sets of polygon
coordinates.

Line Layer Add a map layer that displays paths or


routes that are based on sets of line
coordinates.

Point Layer Add a map layer that displays locations


that are based on sets of point
coordinates.
SY M B O L DESC RIP T IO N W H EN TO USE

Tile Layer Add a map layer that displays Bing


Map tiles that correspond to the
current map view area that is defined
by the viewport.

At the bottom of the Map pane is the Map view area. To change the center or zoom options for the map, use the
arrow keys to adjust the view center and the slider to adjust the zoom level.
For more information about layers, see Maps (Report Builder and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To add a layer from the map layer wizard


From the Ribbon, on the Inser t menu, click Map , and then click Map Wizard. The wizard enables you to
add a layer to the existing map. Most wizard pages are identical between the map wizard and the map
layer wizard.
For more information, see Map Wizard and Map Layer Wizard (Report Builder and SSRS).

To change options for a layer by using the map layer wizard


Run the map layer wizard. This wizard enables you to change options for a layer that you created by
using the map layer wizard. In the Map pane, right-click the layer, and on the toolbar, click the layer wizard
button ( ).
For more information, see Map Wizard and Map Layer Wizard (Report Builder and SSRS).

To add a point, line, or polygon layer from the Map pane toolbar
1. Click the map until the Map pane appears.
2. On the toolbar, click the Add Layer button, and from the drop-down list, click the type of layer that you
want to add: Point , Line , or Polygon .

NOTE
Although you can add a map layer and configure it manually, we recommend that you use the map layer wizard
to add new layers. To launch the wizard from the Map pane toolbar, click the layer wizard button ( ).

3. Right-click the layer, and then click Layer Data .


4. In Use spatial data from , select the source of spatial data. Options vary based on your selection.
If you want to visualize analytical from your report on this layer, do the following:
a. Click Analytical data .
b. In Analytical dataset , click the name of the dataset that contains analytical data and the match
fields to build a relationship between analytical and spatial data.
c. Click Add .
d. Type the name of the match field from the spatial dataset.
e. Type the name of the match field from the analytical dataset.
For more information about linking spatial and analytical data, see Customize the Data and Display of a
Map or Map Layer (Report Builder and SSRS).
5. Click OK .

To filter analytical data for the layer


1. Click the map until the Map pane appears.
2. Right-click the layer in the Map pane, and then click Layer Data .
3. Click Filters .
4. Define a filter equation to limit the analytical data that is used in the map display. For more information,
see Filter Equation Examples (Report Builder and SSRS).

To control point properties for a point layer or for polygon center


points
1. Select General on the Map Point Proper ties dialog box to change label, tooltip, and marker type
options for the following map elements:
All dynamic or embedded points on a point layer. Color rules, size rules, and marker type rules for
points override these options. To override options for a specific embedded point, use the Map
Embedded Point Properties Dialog Box, Marker page.
The center point for all dynamic or embedded polygons on a polygon layer. Color rules, size rules,
and marker type rules for center points override these options. To override options for a specific
center point, use the Map Embedded Point Properties Dialog Box, Marker page.

To specify embedded data as a source of spatial data


1. Click the map until the Map pane appears.
2. Right-click the layer, and then click Layer Data .
3. In Use spatial data from , select Data embedded in repor t .
4. To load map elements from an existing report or to create map elements based on an ESRI file, click
Browse , point to the file, and then click Open . The map elements are embedded in this report definition.
The spatial data that you point to must match the layer type. For example, for a point layer, you must
point to spatial data that specifies sets of point coordinates.
5. In Spatial field , specify the name of the field that contains spatial data. You might need to determine this
name from the source of spatial data.

NOTE
If you do not know the name of the field and you browsed to an ESRI Shapefile, use the Link to ESRI shape file
option instead of this option.

6. Click OK .
To specify an ESRI Shapefile as a source of spatial data
1. Click the map until the Map pane appears.
2. Right-click the layer, and then click Layer Data .
3. In Use spatial data from , select Link to ESRI Shapefile .
4. In File name , type the location of an ESRI Shapefile, or click Browse to select an ESRI Shapefile.

NOTE
If the Shapefile is on your local computer, the spatial data is embedded in the report definition. To retrieve the
data dynamically when the report is processed, you must upload the ESRI .shp file and its .dbf support file to the
report server. For more information, see Upload a File or Report.

5. Click OK .

To specify a report dataset field as a source of spatial data


1. Click the map until the Map pane appears.
2. Right-click the layer, and then click Layer Data .
3. In Use spatial data from , select Spatial field in a dataset .
4. In Dataset name , click the name of a dataset in the report that contains that spatial data that you want.
5. In Spatial field name , click the name of the field in the dataset that contains spatial data.
6. Click OK .

To add a tile layer


1. Click the map until the Map pane appears.
2. On the toolbar, click the Add Layer button, and from the drop-down list, click Tile Layer .

NOTE
For more information about the use of Bing map tiles in your report, see Additional Terms of Use.

3. Right-click the tile layer in the Map pane, and then click Tile Proper ties .
4. In Tile options , select a tile style. If the Bing map tiles are available, the layer on the design surface
updates with the style that you select.

NOTE
A tile layer can also be added when you add a polygon, line, or point layer in the Map or Map Layer wizard. On
the Choose spatial data and map view options page, select the option Add a Bing Maps background
for this map view .

To change the drawing order of a layer


1. Click the map until the Map pane appears.
2. Click the layer in the Map pane to select it.
3. On the Map pane toolbar, click the up or down arrow to change the drawing order of each layer.

To change the transparency of a polygon, line, or point layer


1. Click the map until the Map pane appears.
2. Right-click the layer, and then click Layer Data .
3. Click Visibility .
4. In Transparency options , type a value that represents the percentage transparency, for example, 40 .
Zero (0) % transparency means that the layer is opaque. 100% transparency means that you will not see
the layer in the report.
5. Click OK .

To change the transparency of a tile layer


1. Click the map until the Map pane appears.
2. Right-click the layer, and then click Tile Proper ties .
3. Click Visibility .
4. In Transparency options , type a value that represents the percentage transparency, for example, 40 .
5. Click OK .

To specify a secure connection for a tile layer


1. Click the map until the Map pane appears.
2. In the Map pane, click the tile layer to select it. The Properties pane displays the tile layer properties.
3. In the Properties pane, set UseSecureConnection to True .
The connection for the Bing Maps Web service will use the HTTP SSL service to retrieve Bing map tiles for this
layer. Transport Layer Security (TLS) was previously known as Secure Sockets Layer (SSL).

To specify the language for tile labels


1. By default, for tile styles that display labels, the language is determined from the default locale for Report
Builder. You can customize the language setting for tile labels in the following ways.
Click the map outside the viewport to select the map. In the Properties pane, for the TileLanguage
property, select a culture value from the drop-down list.
Click the report background to select the report. In the Properties pane, from for the Language
property, select a culture value from the drop-down list.
The order of precedence for setting the tile label language is: report property Language, default locale for
Report Builder, and map property TileLanguage.

To conditionally hide a layer based on viewport zoom level


1. Set Visibility options to control the display for a map layer.
In the Map Layers pane, right-click a layer to select it, and on the Map Layers toolbar, click
Properties to open Map Layer Proper ties .
Click Visibility .
In Layer visibility, select Show or hide based on zoom value .
Enter minimum and maximum zoom values for when display the layer.
Optional. Enter a value for transparency.
You can also conditionally hide the layer. For more information, see Hide an Item (Report Builder and
SSRS).

See Also
Maps (Report Builder and SSRS)
Troubleshoot Reports: Map Reports (Report Builder and SSRS)
Change Map Legends, Color Scale, and Associated
Rules (Report Builder and SSRS)
11/2/2020 • 8 minutes to read • Edit Online

In a Reporting Services paginated report, a map can contain map legends, a color scale, and a distance scale.
These parts of a map help users interpret the data visualization on the map.
Legends include the following parts of a map:
Map legend Displays a guide to help interpret the analytical data that varies the display of a map
elements on a map layer. A map can have multiple legends. For each map layer, you A specify which
legend to use. A legend can provide a guide to more than one map layer.
Color scale Displays a guide to help interpret colors on the map. A map has one color scale. Multiple
layers can provide the data for the color scale.
Distance scale Displays a guide to help interpret the scale of the map. A map has one distance scale. The
current map viewport zoom value determines the distance scale.

To change the position of a legend relative to the viewport


To change the position of a legend relative to the viewport
1. In Design view, right-click the legend and open the <report item>Proper ties page.
2. In Position , click the location that specifies where to display the legend relative to the viewport.
3. To display the legend outside the viewport, select Show <repor t item> outside viewpor t .
4. Click OK .

NOTE
In preview, map legends and the color scale appear only when there are results from the rules related to that
legend. If there are no items to display, the legend does not appear in the rendered report.

To change the layout of a map legend


To change the layout of a map legend
1. In Design view, right-click the legend and open the Legend Proper ties page.
2. In Legend layout , click the table layout that you want to use for the legend. As you click different
options, the layout on the design surface changes.
3. Click OK .

To show or hide a map legend title


To show or hide a map legend title
Right-click the map legend on the design surface, and then click Show Legend Title .

To show or hide a color scale title


To show or hide a color scale title
Right-click the color scale on the design surface, and then click Show Color Scale Title .

To move items out of the first legend


Create as many additional legends as you need and then update the rules for each map layer specify which
legend to display the rule results in.
To create a new legend
In Design view, right-click the map outside the map viewport, and then click Add Legend .
A new legend appears on the map.
To display rule results in a legend
1. In Design view, click the map until the Map pane appears.
2. Right-click the layer that has the data that you want and then click <map element type>Color Rule .
3. Click Legend .
4. In the Show in this legend drop-down list, click the name of the legend to display the rule results in.
5. Click OK .

To vary map element colors based on a template style


To vary map element colors based on a template style
1. In Design view, click the map until the Map pane appears.
2. Right-click the layer that has the data that you want and then click <map element type>Color Rule .
3. Click Apply template style .
A template style specifies font, border style, and color palette. Each map element is assigned a different
color from the color palette for the theme that was specified in the Map Wizard or Map Layer Wizard.
This is the only option that applies to layers that do not have associated analytical data.
4. Click OK .

To vary map element colors based on color palette


To vary map element colors based on color palette
1. In Design view, click the map until the Map pane appears.
2. Right-click the layer that has the data that you want, and then click <map element type>Color Rule .
3. Click Visualize data by using color palette .
This option uses a built-in or custom palette that you specify. Based on related analytical data, each map
element is assigned a different color or shade of color from the palette.
4. In Data field , type the name of the field that contains the analytical data that you want to visualize by
color.
5. In Palette , from the drop-down list, select the name of the palette to use.
6. Click OK .

To vary map element colors based on color ranges


To vary map element colors based on color ranges
1. In Design view, click the map until the Map pane appears.
2. Right-click the layer that has the data that you want, and then click <map element type>Color Rule .
3. Click Visualize data by using color ranges .
This option, combined with the start, middle, and end colors that you specify on this page and the options
that you specify on the Distribution page, divide the related analytical data into ranges. The report
processor assigns the appropriate color to each map element based on the its associated data and the
range that it falls into.
4. In Data field , type the name of the field that contains the analytical data that you want to visualize by
color.
5. In Star t color , specify the color to use for the lowest range.
6. In Middle color , specify the color to use for the middle range.
7. In End color , specify the color to use for the highest range.
8. Click OK .

To vary map element colors based on custom colors


To vary map element colors based on custom colors
1. In Design view, click the map until the Map pane appears.
2. Right-click the layer that has the data that you want, and then click <map element type>Color Rule .
3. Click Visualize data by using custom colors .
This option uses the list of colors that you specify. Based on related analytical data, each map element is
assigned a color from the list. If there are more map elements than colors, no color is assigned.
4. In Data field , type the name of the field that contains the analytical data that you want to visualize by
color.
5. In Custom colors , click Add to specify each custom color.
6. Click OK .

To set distribution options for a legend


To set distribution options for a legend
1. In Design view, click the map until the Map pane appears.
2. Right-click the layer that has the data that you want, and then click <map element type>Color Rule .
3. Select the Visualize data by using <rule type> option. To use distribution options, you must create
ranges on the Distribution page based on analytical data that is associated with the layer.
4. Click Distribution .
5. Select one of the following distribution types:
EqualInter val . Specifies ranges that divide the data into equal range intervals.
EqualDistribution . Specifies ranges that divide that data so that each range has an equal number
of items.
Optimal . Specifies ranges that automatically adjust distribution to create balanced subranges.
Custom . Specify your own number of ranges to control the distribution of values.
For more information about distribution options, see Vary Polygon, Line, and Point Display by Rules and
Analytical Data (Report Builder and SSRS).
6. In Number of subranges , type the number of subranges to use. When the distribution type is Optimal ,
the number of subranges is automatically calculated.
7. In Range star t , type a minimum range value. All values less than this number are the same as the range
minimum.
8. In Range end , type a maximum range value. All values larger than this number are the same as the
range maximum.
9. Click OK .

To change the contents of a rule legend


To change the contents of a color, size, width, or marker type legend
1. In Design view, click the map until the Map pane appears.
2. Right-click the layer that has the data that you want, and then click <map element type>Rule .
3. Verify that Visualize data by using <rule type> is selected.
4. In Data field , verify that the analytical data that you are visualizing on the layer is selected.

NOTE
If no fields appear in the drop-down list, right-click the layer, and then click Layer Data to open the Map Layer
Data Properties Dialog Box, Analytical Data page and verify that you have specified analytical data for this layer.

5. Click Legend .
6. In Show in this legend , select the map legend to use to display the rule results.
7. Click OK .

To change the contents of the color scale


To change the contents of the color scale or a color legend
1. In Design view, click the map until the Map pane appears.
2. Right-click the layer that has the data that you want, and then click <map element type>Color Rule .
3. Select the color rule option to use. To display items in a map legend or color scale, you must select one of
the Visualize data by using <rule type> options.
4. In Data field , verify that the analytical data that you are visualizing on the layer is selected.

NOTE
If no fields appear in the drop-down list, right-click the layer, and then click Layer Data to open the Map Layer
Data Properties Dialog Box, Analytical Data page and verify that you have specified analytical data for this layer.

5. Click Legend .
6. In Color scale options , select Show in color scale to display the rule results in the color scale. You can
specify this option for more than one color rule.
7. Click OK .

To remove all items from a legend


To hide items based on a rule
1. In Design view, click the map until the Map pane appears.
2. Right-click the layer that has the data that you want, and then click <map element type>Rule .
3. Click Legend .
4. Click OK .

To change the format of content in a legend


Set legend options for the rule that is associated with the map legend.
To change the format of content in a legend
1. In Design view, click the map until the Map pane appears.
2. Right-click the layer that has the data that you want, and then click <map element type>Rule .
3. Click Legend .
4. Legend text displays keywords that specify which data appears in the legend. Use map keywords and
custom formats to help control the format of legend text. For example, #FROMVALUE {C2} specifies a
currency format with two decimal places. For more information, see Vary Polygon, Line, and Point Display
by Rules and Analytical Data (Report Builder and SSRS).
5. Click OK .

See Also
Maps (Report Builder and SSRS)
Add, Change, or Delete a Map or Map Layer (Report Builder and SSRS)
Customize the Data and Display of a Map or Map Layer (Report Builder and SSRS)
Troubleshoot Reports: Map Reports (Report Builder and SSRS)
Map Wizard and Map Layer Wizard (Report Builder and SSRS)
Add Custom Locations to a Map (Report Builder
and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

After you add a map to a Reporting Services paginated report, you can add your own point locations.
Display properties for all points on a layer are controlled by setting options for the point properties for the layer.
For a selected embedded point, you can override the display properties.

NOTE
When you override the layer display properties for the embedded point, the changes that you make are not reversible.

For more information, see Vary Polygon, Line, and Point Display by Rules and Analytical Data (Report Builder
and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To add a point layer


1. On the report design surface, click the map to select it and display the Map pane.
2. On the toolbar, click Add Layer .
3. From the drop-down list, click Add Point Layer . A point layer with no points is added to the map. By
default, the point layer is ready for embedded points.

To add a custom point


1. On the report design surface, click the map to select it and display the Map pane.
2. In the Map pane, right-click a point layer that has type Embedded , and then click Add Point . The cursor
changes to crosshairs.
3. To add a point, click a location on the map. An embedded point is added to the selected layer at the
location where you click.

To customize the display for an embedded point


1. Right-click the point, and then click Point Proper ties . The Map Embedded Point Proper ties dialog
box opens.
2. Click Override point options for this layer . Multiple property pages appear in the left pane.
3. Click the pages and set the display properties that you want to apply to this point.

See Also
Maps (Report Builder and SSRS)
Vary Polygon, Line, and Point Display by Rules and Analytical Data (Report Builder and SSRS)
Troubleshoot Reports: Map Reports (Report Builder
and SSRS)
3/5/2021 • 14 minutes to read • Edit Online

Issues with maps in a Reporting Services paginated report might occur when you add a map or map layer to
your report, when you customize an existing map or map layer in your report, when you preview a map in a
report, or when you publish a report with a map. Use this topic to help troubleshoot these issues.

Need more help?


Try:
SQL Server Reporting Services on Stack Overflow
Log an issue or suggestion at Microsoft SQL Server UserVoice.

Report Definition Size Issues


Use this section to help solve issues that relate to report definition size.

How do I reduce the report definition size?


A map layer contains map elements that are created from spatial data. In some cases, map elements are
embedded in the report definition. This happens in the following ways:
If the source of spatial data is from a map in the Map Gallery or from an ESRI Shapefile on your local
computer, map elements are automatically embedded in the report definition.
If you publish a report to the report server and there is a spatial data source reference to a local file, the
spatial data cannot be retrieved at report processing time. To avoid this issue, the map data is embedded
in the report definition.
In the Map wizard or Layer wizard, if you select the option to embed spatial data, map elements based on
the spatial data are embedded in the map layer in the report definition.
In the Map pane, if you right-click the layer, and then click one of the Embed Spatial Data options, map
elements based on the spatial data are embedded in the map layer in the report definition.
To remove embedded data that is based on an ESRI Shapefile from a report definition, you must do the
following:
1. Upload or publish the ESRI .shp and .dbf files to the report server.
2. In the report, in the Map pane in Design view, select the layer that has embedded data, and open the
Layer Data properties. In Use spatial data from , select Link to ESRI Shapefile , and then browse to
the folder on the report server that contains the ESRI Shapefiles, select it, and click OK.
3. Save your report. The embedded data for the layer that you changed has been removed from the report
definition.
Map elements from a report in the Map Gallery will always be embedded in a map layer.

Spatial Data Issues


Use this section to help solve issues that relate to spatial data.

On the design surface, I see sample spatial data


At design time, the design surface might show the message about sample spatial data for the following reasons:
Spatial data comes from an ESRI .shp file, but the corresponding .dbf file is not available. ESRI Shapefiles
usually include both a .shp file with spatial data and a support file .dbf. Verify that the .dbf file is in the
same directory as the .shp file.
Spatial data comes from a dataset and the data connection for the query is not valid or the current
credentials are not valid.
The map layer contains a property with an expression. Expressions are not evaluated until the report
runs. To see the map, you must preview the report.
Spatial data comes from a dataset that has a specific scope. For example, when a map is nested in a tablix
data region, or the map uses the same dataset scope for analytical and for spatial data, the data scope is
not calculated until the report runs.

When I set an offset for an individual map element, a cluster of map


elements move
Spatial data defines the map elements that are displayed on each map layer. A map element can be based on
spatial data that is a single point, a set of points, a single line, a set of lines, a single polygon, or a set of
polygons. Each map element is a unit. If a map element contains multiple points, and you move the element, all
points for that map element will move.
The data for each map element is determined by the format of the spatial data from the external source. For
example, when a query specifies spatial data from a SQL Server database, each row in the result set can contain
multiple sets of point or line or polygon coordinates. All map elements that are defined by a single row in the
result set are treated as a unit. If you want to vary the display of specific sets of coordinates, you must do one of
the following:
Change the query to return the coordinate sets as separate rows in the result set.
Select the map elements to vary and set the corresponding embedded point, line, or polygon properties
by overriding the default display properties for the corresponding layer type.

My layer that uses spatial data from an ESRI Shapefile always has
embedded data.
To ensure that reports with maps can run on a report server, ESRI Shapefiles must be available as resources on
the report server. If you add a layer to a map and specify a Shapefile that is on your local file system, the spatial
data is automatically embedded in the report.
To replace the embedded data with a link to the ESRI Shapefile, you must upload the .shp file and its matching
.dbf file to the report server, and then change the source of spatial data for the layer.

I renamed a data source or dataset to a friendly name and now no


data appears in my map.
The report definition is not automatically updated when you manually change the name of any report item.
When you change the name of a dataset, any data region or map layer that refers to that dataset must be
manually updated. To rebind a tablix, chart, or gauge to a dataset, select the item on the design surface, open the
data region properties, and select the name of the appropriate dataset. To rebind a map layer to a dataset, select
the layer, open the layer properties, and select the name of the appropriate dataset.

My spatial data contains nulls and empty strings.


In spatial data for the map report item, nulls are set to zero (0) and empty strings are set to blank ("").
For spatial that comes from a SQL Server database, to change this behavior, you must change the query that
returns the spatial data.

My map exceeds the maximum number of spatial elements


By default, a map can have 20,000 map elements or 1,000,000 points. If your map exceeds these limits, you can
use one of the following approaches:
Remove a layer.
Decrease the map resolution.
Decrease the map viewport coordinates to view a smaller area.
If the spatial data comes from a report dataset, set a filter to limit the data from the dataset. The filter
must be set on a field that is not a spatial data type.
If the spatial data comes from a SQL Server database, change the query to use spatial functions to limit
the data to a smaller area.

Viewport Center and View Issues


Use this section to help solve issues that relate to viewport options.

I cannot set the center and view on an embedded map element.


To center a viewport on a specific map element, you must have associated the spatial data on a layer with
analytical data.

I set the map center and view in my report. When I reopen the
report, why isn't the map view the same?
If the user credentials that are needed to read spatial data are not available to the report when you open it,
placeholder spatial data is used. Depending on the center and zoom options set for the map viewport, the map
view might center on a different layer.
To reload the spatial data and use the map view center saved in the report, right-click the map viewport, and
then click Reload . After you enter the credentials for the spatial data source, the layer loads the spatial data and
the map view is restored.

The center and view for a map layer option does not work.
When the viewport is set to center on the spatial data for a specific layer, and the center of the view does not
appear to be the center for the layer, there are probably small islands or areas that are included in the spatial
data that are too small to be seen in the viewport. For example, spatial data for a country might include small
islands or other small territories as part of the territory. The viewport uses all spatial data to calculate the center
for the layer.
To override calculations for the layer, you can do one of the following:
Specify a custom center for the viewport.
Change the zoom level for the viewport to eliminate the locations that you do not want to include.
Embed the spatial data in the report and delete the locations that you do not want to include.

Layer Issues
Use this section to help solve issues that relate to layer options.

I do not see one or more layers in my map.


Whether you see a map layer in a report depends on the availability of the spatial data, the relationship between
the spatial data and the analytical data, the type of spatial data and the corresponding layer type, the visibility
and transparency options on the layer, and the layer drawing order. If you do not see data from a layer, check the
following options:
Layer type and spatial data type. The layer type displays only spatial data that matches the layer type.
For example, if the layer type is Point but the spatial data is Line, no data will appear.
Match field values. The values in the fields that you specify to relate analytical data and spatial data
must uniquely identify each map element. The fields must have the same data type. The values in the
fields must be identical. For more information, see Legend, Color Scale, and Distance Scale Issues.
Layer order. The order of layers in the Map pane is the order in which layers are drawn in the report
renderer. Spatial data on layers which are drawn first might be overwritten by spatial data for layers that
are drawn later. Layers that appear at the top of the list are drawn first. When you change the order layers
in the list, you are changing the drawing order of the layers.
Transparency. You can specify the transparency for each map layer independently. Default values for
transparency differ depending on how you add a layer. A transparency of 0% means the layer is opaque
and no other layer data will show through this one. To allow other data to show through an existing layer,
adjust the value to a higher percentage that gives you the effect that you want.
Visibility. Visibility for a layer is either Visible , Hidden , or ZoomBased , based on the zoom level of the
map viewport. The maximum and minimum range for zoom level can also be specified. Visibility can be
based on an expression that evaluates to one of these values.

TIP
You can toggle visibility for each layer in the Map pane. When you are designing each layer, toggle all other layers
off to determine whether the issue is for an individual layer or is for transparency issues among layers.

I set a filter on the map layer and it has no effect.


To filter data for a layer, the data type in the filter expression must be specified. Verify that you have specified the
correct underlying data type so that the filter equation correctly evaluates the specified condition. For more
information, see Filter Equation Examples (Report Builder and SSRS).

Legend, Color Scale, and Rule Issues


Use this section to help solve issues that relate to rules, legend, and color scale options.

How do I control the values in the map legend?


Legend values are determined automatically from map element type rules that you specify for each map layer
and by distribution rules that you specify for the legend.
By default, all items generated by all rules display in the first legend. Values for all polygon, line, and point rules
for each layer contribute to the combined legend range. To display items in different legends, you must first
create multiple legends and then, for each rule, specify in which legend to display the related items.
To associate a rule with a specific legend, open the rule properties, and on the Legend page, select the name of
the legend to use. To remove items from a legend, in legend options, select the blank line for the name of the
legend. If you rename legend elements in the report, you must manually associate each layer with the
appropriate legend item.
To control the title and content for each legend, use the Legend properties for the rule. You can specify how
many divisions to create, change the calculations that assign values to each division, set minimum and
maximum range values, and change the format of the legend text.
For more information, see Change Map Legends, Color Scale, and Associated Rules (Report Builder and SSRS).

The rules that I set do not give the results that I expect.
Rules apply to the analytical data that is associated with map elements on a layer. Use the following list to help
identify issues with all color rules, size rules, width rules, and marker type rules:
The precedence for applying style to each map element (polygon, line, point) is, from lowest to highest
precedence: layer properties; map element properties for all map elements on the layer; rules that you
specify; and then, for embedded map elements that you select the override option for, the values that you
specify. Once you select the override option for an embedded element, rules no longer apply, even if you
later change values back to their original setting.
Match field issues. Match fields enable data binding between map elements and analytical data. The
spatial data and analytical data fields that correspond to match fields must have the same data type and
the same format. If the match field does not exactly match the spatial data and analytical data, the rule
has no effect. For example, if the match field for spatial data has extra blanks or extra punctuation
compared to the match field for the analytical data, no match occurs.
For more information, see Vary Polygon, Line, and Point Display by Rules and Analytical Data (Report
Builder and SSRS).

What is the value NaN on the Color Scale?


NaN stands for Not a Number. Color scales values are expected to be numeric. Check the distribution settings
and the legend text value for the rules that are associated with the color scale. If you created custom distribution
ranges, verify that you specified the lower bound on the first range and the upper bound on the last range.

My color scale does not appear when I run the report.


The color scale displays information to the user when a map layer specifies color rules for polygons, lines, or
points for the whole layer or for embedded map elements. If no map element specifies a color rule, or if the
color rules specify by using a legend instead of the color map, then the color map does not appear in the
rendered report.
To display the color scale, specify color rules for a layer or an embedded map element. For more information,
see Change Map Legends, Color Scale, and Associated Rules (Report Builder and SSRS).

Tile Issues
Use this section to help solve issues that relate to tile background options.
I cannot see the Bing maps tile background.
The following settings affect whether a Bing maps tile background displays in local preview or on a report that
runs from the report server:
The map tile layer must exist. In the Map wizard or Layer wizard, select Add a Bing Maps background
for this map view . This adds a tile layer for the current map viewport view center and zoom level. You
can also add a tile layer from the Map pane toolbar.
The map coordinate system for the viewport must be Geographic , not Planar .
The map projection must be Mercator .
For local preview, you must have internet access. For a report that runs from the report server, the report
server must be configure to support tile background. For more information, see Plan a Map Report.
For more information about adding a tile layer, see Add, Change, or Delete a Map or Map Layer (Report Builder
and SSRS).

How do I control the text on a tile layer?


Both Road and Hybrid views include text. The text is part of the tiles that come from Bing Maps Web Services.
To include a tile layer without text, select Aerial view.

ToolTip and Label Issues


Use this section to help solve issues that relate to label or ToolTip options.

I get an expression error about dataset scope when I set a label or


ToolTip to an expression.
When your spatial data comes from a map gallery or an ESRI Shapefile, the associated data is not part of a
report dataset. You cannot use expression syntax for a dataset field reference to specify this data for a label or
tooltip.
To specify data that is related to spatial data that is not part of a report dataset, you must use the symbol #
followed by a label that specifies the name of the data.

See Also
Maps (Report Builder and SSRS)
Troubleshoot Report Builder
Images, Text Boxes, Rectangles, and Lines (Report
Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

In addition to data regions like tables, matrices, and charts, Reporting Services paginated reports use other
report items like images, text boxes, and rectangles to add visual interest, highlight key information, or provide
related information. You can change the formatting of a report item. For example, you can add a border or
padding, change the initial visibility or direction, or specify an exact size and location for the item.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

In This Section
Text Boxes (Report Builder and SSRS)
Text boxes can be placed anywhere on a report and can contain labels, fields, or calculated data. You use
expressions to define the value to display in a text box when you view a report.
Every cell in a table or matrix is also a text box, which you can format in the same way that you format stand-
alone text boxes.
Rectangles and Lines (Report Builder and SSRS)
Lines display horizontally, vertically, or diagonally. A line is defined with a start and end point and can have
various styles (for example, weight and color) assigned to it. A line has no data associated with it.
Rectangles can be used as a graphical element, or as a container for other report items. As a graphical element,
a rectangle has the same properties as a line. As a container, a rectangle acts as a parent container for all report
items inside it. Placing report items in a parent container helps control how they appear on each report page.
Images (Report Builder and SSRS)
Images display binary image data in a report. You provide the source for the image. The source can be a URL
reference to an image stored on a Web server, a reference to embedded image data, or a reference to binary
image data in a database. Report Builder and Report Designer support .bmp, .jpeg, .gif, and .png files.

See Also
Formatting Report Items (Report Builder and SSRS)
Text Boxes (Report Builder and SSRS)
11/2/2020 • 3 minutes to read • Edit Online

When you think of a text box, you probably think of a stand-alone box containing text on a surface like in
Microsoft Office PowerPoint. In Reporting Services paginated reports, some text boxes are like that, and they can
display static text for titles, descriptions, and labels, or dynamic text based on expressions. But every cell in a
table or matrix (a tablix data region) also contains a text box, which you can format the same way you format
stand-alone text boxes in your report.

NOTE
If you drag a report dataset field value directly to the report design surface, or to a text box on the report design surface,
you only see the first value in the result set when you run the report. To see all the values for a field, you need to create a
table, matrix, or list data region first, and drag the field to a cell in the data region. That way, when you run the report,
you will see all the values in that field.

To show repeating text in a free-form layout, create a list data region and place the text box in it. Use a list when
you want to repeat a form for multiple values, for example, a customer invoice form repeated once for each
customer. Read more about creating invoices and forms with lists.
Use a rectangle container when you want to control the text box layout and white space below the last text box.
For more information, see Rectangles and Lines (Report Builder and SSRS).
The expressions in a text box can contain literal text, point to a field in the database, or calculate data. All
expressions are shown as placeholder text so that you can format numbers, colors, and other appearance
properties. You can also combine placeholders with literal text in the same text box.
You can format text in any single text box with multiple fonts, colors, styles, and actions. For more information,
see Formatting Text and Placeholders (Report Builder and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Growing and Shrinking a Text Box


By default, text boxes are a fixed size. You can allow a text box to shrink or expand vertically based on its
contents. For more information, see Allow a Text Box to Grow or Shrink (Report Builder and SSRS).

Rotating a Text Box


Rotating text boxes can help you create more readable reports, support locale-specific text orientation, fit more
columns on a printed report that has fixed page size, and create reports with more graphical appeal. A text box
can be rotated in different directions: horizontal, vertical (rotated 90 degrees), or rotated by 270 degrees. The
vertical option is most commonly used for East Asian languages that are written top to bottom. In most
renderers the vertical option handles the glyph rotation properly so that the text is written top to bottom, but
the characters are not on their sides. For other languages, in the vertical and 270-degree options the text is
written sideways.
You can rotate text boxes that contain static text, fields from a report dataset, or calculated data. The text box can
be stand-alone in the report body, in a table or matrix, or in a report header and footer.
The following picture shows three versions of a table report that groups data by month. The text box that
contains the month value uses a different text box orientation.

Orientation is set on the text box and applies to all the text in the box. You cannot specify a different orientation
for parts of the text box.
To get started, see the section on rotating text in the Tutorial: Format Text (Report Builder), and see Set Text Box
Orientation (Report Builder and SSRS).

How-To Topics
Add, Move, or Delete a Text Box (Report Builder and SSRS)
Format Text in a Text Box (Report Builder and SSRS)
Set Text Box Orientation (Report Builder and SSRS)
Allow a Text Box to Grow or Shrink (Report Builder and SSRS)

See Also
Formatting Text and Placeholders (Report Builder and SSRS)
Formatting Numbers and Dates (Report Builder and SSRS)
Add, Move, or Delete a Text Box (Report Builder
and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

Text boxes are the most commonly used report item in Reporting Services paginated reports. You can add a text
box to the report body to display information such as titles, parameter choices, built-in fields, and dates.
Every cell in a table or matrix is really a text box. Almost all report data displayed in a report with tables and
matrices is the result of the report processor evaluating the contents of each text box in the report. As such, you
can format cells in the same way you would format other text boxes outside the data region.
To add a text box to a list data region, you must first add the text box and then drag it into the list.

NOTE
When you click a text box, you're immediately editing the text in the text box. To select the text box itself, not the text in it,
press ESC.

To add a text box


1. On the Inser t tab in Design view, click Text Box .
2. On the design surface, click and then drag a box to the desired size of the text box.

To add a text box in a list


1. On the Inser t tab in report design view, click List .
2. On the design surface, click and then drag a box to the desired size of the list.
3. On the Inser t tab, click Text Box .
4. On the design surface, click and then drag a box to the desired size of the text box inside the list you
added in step 1.
5. To confirm the text box is correctly nested inside the list, select the text box.

NOTE
If you click in the text box and are in edit mode, press ESC to select the text box.

6. In the Properties pane, verify that the Parent property is the rectangle that was automatically added to
the list data region.

NOTE
If the Properties pane is not visible, check Proper ties on the View tab.

To move a text box


1. In report design view, click any empty space within the text box to select the text box.

NOTE
If you click in the text box and are in edit mode, press ESC to select the text box.

2. Click the text box handle and drag the text box to the new location.
Alternatively, use the arrow keys to move a selected text box horizontally or vertically. To move the text
box in smaller increments on the design surface, hold down CTRL plus the arrow keys.

To delete a text box


1. In report design view, right-click any empty space within the text box to select it, and then click Delete .
Alternatively, click any empty space within the text box, and then press DELETE.

NOTE
If you click in the text box and are in edit mode, press ESC to select the text box.

See Also
Text Boxes (Report Builder and SSRS)
Expressions (Report Builder and SSRS)
Keyboard Shortcuts (Report Builder)
Set Text Box Orientation (Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

In a Reporting Services paginated report, you can rotate a text box in different directions:
Horizontally
Vertically (rotated 90 degrees, with text reading from top to bottom, except East Asian text characters)
Rotated by 270 degrees (text reading from bottom to top).
Because you rotate the text box not the text, the rotation applies to all the text in the text box. You cannot specify
different directions for parts of the text. Size the column width and the row height manually to accommodate
the rotated text.
The WritingMode property, which you use to specify text orientation, isn't in the Text Box Proper ties dialog
box. It's in the Properties pane and set the property there.

To rotate text
1. Create a report or open an existing report, and add a text box to the design surface.
2. Select the text box that you want to rotate.
3. If the Properties pane is not open, on the View tab, select the Proper ties check box.
4. In the Properties pane, find the WritingMode property and select the text orientation to apply to the text
box.

NOTE
When the properties in the Properties pane are organized into categories, WritingMode is in the Localization
category.

5. In the list box, select Horizontal , Ver tical , or Rotate270 .

See Also
Text Boxes (Report Builder and SSRS)
Tutorial: Format Text (Report Builder)
Allow a Text Box to Grow or Shrink (Report Builder
and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

In a Reporting Services paginated report, text boxes aren't just the stand-alone boxes on the report design
surface. Every cell in a table or matrix (a tablix data region) also contains a text box, which can be formatted in
the same way as stand-alone text boxes. By default, text boxes are a fixed size. You can set options that let a text
box expand or shrink based on its contents. These options correspond to the CanGrow or CanShrink
properties in the Properties pane.

To Allow a Text Box to Grow or Shrink


1. Right-click the text box and click Text Box Proper ties .
2. Click the General tab.
To allow the text box to expand vertically based on its contents, select Allow height to increase .
To allow the text box to shrink based on its contents, select Allow height to decrease .

See Also
Text Boxes (Report Builder and SSRS)
Rectangles and Lines (Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

Rectangles and lines can create visual effects within a Reporting Services paginated report. You can set display
properties on these report items from the Border section of the Home tab, and set other properties in the
Properties pane. You can add features like a background color or image, a tooltip, or a bookmark to a rectangle.

Rectangles and Lines as Report Parts


You can publish rectangles with the items that they contain separately from the report as report parts. Report
parts are self-contained report items that are stored on the report server and can be included in other reports.
You cannot publish the report items within a rectangle as report parts. When people add the rectangle to a
report, they get the rectangle and the items it contains. Read more about Report Parts.

Using a Rectangle as a Container


You can use a rectangle as a container for other items. When you move the rectangle, the items that are
contained within the rectangle move along with it. An item within the rectangle shows the name of the rectangle
in its Parent property. For more information about using a rectangle as a container, see Add a Rectangle or
Container (Report Builder and SSRS) and Display the Same Data on a Matrix and a Chart (Report Builder).

NOTE
A rectangle is only a container for items that you either create in the rectangle or drag into the rectangle. If you draw a
rectangle around an item that already exists on the design surface, the rectangle will not act as its container. The rectangle
will not be listed in the item's Parent property.

When using rectangles to contain report items, consider how the items will be affected as a whole during report
rendering. Report items that contain repeated rows of data (for example, tables) will expand to accommodate
the data that is returned by a query, and this affects the positioning of other items in the rectangle. A table will
push items down if they are positioned below the data region. To anchor an item in place, you can place the
report item inside of a rectangle that has an upper edge above the lower edge of the table. For more
information, see Rendering Behaviors (Report Builder and SSRS).

Adding a Report Border


You can add a border to a report by adding borders to the headers, footers, and report body themselves,
without adding lines or rectangles. For more information, see Add a Border to a Report (Report Builder and
SSRS).

How-To Topics
Add a Border to a Report (Report Builder and SSRS)
Add a Rectangle or Container (Report Builder and SSRS)
Add and Modify a Line (Report Builder and SSRS)

See Also
Add a Rectangle or Container (Report Builder and SSRS)
Add a Rectangle or Container (Report Builder and
SSRS)
11/2/2020 • 2 minutes to read • Edit Online

Add a rectangle to a Reporting Services paginated report when you want a graphical element to separate areas
of the report, emphasize areas of a report, or provide a background for one or more report items. Rectangles
are also used as containers to help control the way data regions render in a report. You can customize the
appearance of a rectangle by editing rectangle properties such as the background and border colors. For more
information about using a rectangle as a container, see Rectangles and Lines (Report Builder and SSRS) and
Display the Same Data on a Matrix and a Chart (Report Builder).

To add a rectangle
1. On the Inser t tab, in the Repor t Items group, click Rectangle.
2. On the design surface, click the location where you want the upper left corner of the rectangle, and drag
to where you want the lower-right corner.
Note that as you move the cursor, "snap lines" appear as the cursor lines up with other objects on the
design surface. These help you if you want objects to be aligned.

To create a container
1. Add a rectangle report item to the report.
2. Drag other report items into the rectangle.

NOTE
A rectangle is only a container for items that you either create in the rectangle or drag into the rectangle. If you
draw a rectangle around an item that already exists on the design surface, the rectangle will not act as its
container.

To change rectangle properties such as color, style, or weight


1. Select the rectangle, and then click the line color, style, or weight options in the Border section of the
Home tab.
2. Click the arrow next to the Border button to determine which sides of the rectangle to change.

NOTE
If you set the line style to Double and the line width is 1 1/2 pt or narrower, the line may not appear double
when you run the report in Report Builder, Report Designer, or in the Reporting Services web portal. It appears
double when you export the report to other formats such as Microsoft Word and Acrobat PDF.

See Also
Rectangles and Lines (Report Builder and SSRS)
Rendering Behaviors (Report Builder and SSRS)
Add and Modify a Line (Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

You can add a line to a Reporting Services paginated report when you want a graphical element to separate
sections of the report. You can customize the appearance of the line by editing line properties such as color or
style. For example, you might want to incorporate company colors into the report.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To add a line
1. On the Inser t tab, click Line .
2. On the design surface, click where you want one end of the line, and then click where you want the other
end.
Note that as you move the end of the line, "snap lines" appear as the end lines up with other objects on
the design surface. These help you if you want objects to be aligned.
3. To change the line properties, select the line on the design surface and then edit its properties in the
Border section of the Home tab.

NOTE
If you set the line style to Double and the line width is 1 1/2 pt or narrower, the line may not appear double
when you run the report in Report Builder, Report Designer, or a Reporting Services web portal. It appears double
when you export the report to other formats such as Microsoft Word and Acrobat PDF.

See Also
Rectangles and Lines (Report Builder and SSRS)
Add a Border to a Report (Report Builder and
SSRS)
11/2/2020 • 2 minutes to read • Edit Online

You can add a border to a Reporting Services paginated report by adding borders to the headers, footers, and
report body themselves, without adding lines or rectangles.
If you add a report border that appears on the page header and footer, do not suppress the header and footer
on the first and last pages of the report. If you do, the border might appear cut off at the top or bottom of the
first and last pages of the report. For more information, see Page Headers and Footers (Report Builder and
SSRS).

To add a border to a report


1. Right-click in the header outside any items in the header, and click Header Proper ties . On the Border
tab, add a left, top, and right border with the style you want.

NOTE
If your report doesn't have headers, you can place borders around just the report body, or you can add headers
from the Inser t tab.

2. Right-click in the body outside any items on the design surface, and click Body Proper ties . On the
Border tab, add a left and right border with the style you want.
3. Right-click in the footer outside any items in the footer, and click Footer Proper ties . On the Border tab,
add a left, bottom, and right border with the style you want.

See Also
Rectangles and Lines (Report Builder and SSRS)
Images in paginated reports (Report Builder)
6/30/2021 • 4 minutes to read • Edit Online

APPLIES TO: ✔
️ Report Builder ✔
️ Power BI Report Builder ✔
️ Report Designer in SQL Server Data Tools
An image is a paginated report item that contains a reference to an image that is embedded in the report, stored
in a database, stored on the report server, or stored elsewhere on the Web. An image can be a picture that is
repeated with rows of data. You can also use an image as a background for certain report items.
Storing logos on a server is a good idea because you can use the same logo in many reports.

Comparing External, Embedded, and Data-Bound Images


When you use a server-based or other external image in a report, the image item contains a path that points to
an image on the report server or wherever it exists on the Web. When you use an embedded image, however,
the image data is stored within the report definition and does not exist as a separate file.
Server-based images work well for logos and static pictures that are shared among several reports or Web
pages. Embedded images ensure that the images are always available to the report, but they cannot be shared.
Report definitions with external images are smaller than definitions with embedded images.
Data-bound images can also be displayed from binary data stored in a database. For example, the pictures that
appear alongside product names in a product list are database images. In the following picture, the images of
bicycles are stored in a database and retrieved in the report to illustrate each product.

Images as Report Parts


You can save images separately from a report as report parts. Report parts are self-contained report items that
are stored on the report server and can be included in other reports. Use Report Builder to browse and select
parts from the Report Part Gallery to add to your reports. Use Report Designer or Report Builder to save report
parts for use in the Report Part Gallery. For more information, see Repor t Par ts (Repor t Builder and SSRS)
and Repor t Par ts in Repor t Designer (SSRS) on the Web at microsoft.com.

Embedding Images
You can embed images in a report so that all image data is stored within the report definition. When you embed
an image, the image is MIME-encoded and stored as text in the report definition. Using an embedded image
ensures that the image is always available to the report, but it also increases the size of the report definition.
For more information about embedding an image, see Embed an Image in a Report (Report Builder and SSRS).

External Images
You can include stored images in a report by specifying a URL to the image. When you use an external image in
a report, the image source is set to External and the value for the image is the URL address or path to the
image.
For more information, see Specifying Paths to External Items (Report Builder and SSRS).
When the report is run in Report Builder or Report Designer, preview uses the credentials of the user to display
the image. When the report is run on the report server, the image in the report may not be displayed if the
server credentials are not sufficient to access the image. In that case, contact your system administrator.
For more information about adding an external image to a report, see Add an External Image (Report Builder
and SSRS).

Background Images
You can use an image as a background image in the body of the report or in a rectangle, text box, list, matrix, or
table. A background image and an image have similar properties. You can also specify how the image is
repeated to fill the background of the item.

NOTE
Some rendering extensions, like the HTML rendering extension, render the background image for the report body in the
body, the page header, and the page footer. You can define a separate background image for the page header and footer,
but if no image is defined, the report uses the background image of the body. Other rendering extensions, like the Image
rendering extension, do not render the body background image in the page header and footer.

For more information about adding a background image, see Add a Background Image (Report Builder and
SSRS).

Data-bound Images
You can add images that are stored in a database to your report. You use the same image report item as the one
used for static images, but with a set of properties that indicate that the image is stored in a database. To view
instructions about working with data-bound images, see Add a Data-Bound Image (Report Builder and SSRS).

Supported file types


These are the image file types you can use in paginated reports:
BMP
GIF
JPG
PNG
SVG files aren't supported.

How-to Topics
Add an External Image (Report Builder and SSRS)
Embed an Image in a Report (Report Builder and SSRS)
Add a Background Image (Report Builder and SSRS)
Add a Data-Bound Image (Report Builder and SSRS)

See Also
Exporting to an Image File (Report Builder and SSRS)
Rendering Behaviors (Report Builder and SSRS)
Add an external image to a paginated report
(Report Builder)
6/30/2021 • 2 minutes to read • Edit Online

APPLIES TO: ✔
️ Report Builder ✔
️ Power BI Report Builder ✔
️ Report Designer in SQL Server Data Tools
External images can be on a report server in native mode or any other Web site, including a report server in
SharePoint integrated mode (SQL Server 2016 or before). When you include external images in your paginated
report, you must verify that the image exists and that the report reader has permissions to access the image. For
more information, see Images (Report Builder).

To add an external image


1. In report design view, on the Inser t tab, click Image .
2. On the design surface, click and then drag a box to the desired size of the image.
3. On the General tab of the Image Proper ties dialog box, type a name in the Name text box or accept
the default.
4. (Optional) In the Tooltip text box, type text to display when the user hovers over the image in a report
rendered for HTML.
5. In Select the image source , select External .
For an image on a report server in native mode, type a relative path to the image in the Use this image
box-for example, ../images/image1.jpg.
For an image on any Web site (including a report server in SharePoint integrated mode), type a full URL
to the image in the Use this image box: for example,
https://\<SharePointservername>/\<site>/Documents/images/image1.jpg .

For more information, see Specifying Paths to External Items (Report Builder and SSRS).
6. (Optional) Click Size , Visibility , Action , or Border to set additional properties for the image report
item.
7. Click OK .

See Also
Embed an Image in a Report (Report Builder and SSRS)
Add a Background Image (Report Builder and SSRS)
Image Properties Dialog Box, General (Report Builder and SSRS)
Embed an image in a paginated report (Report
Builder)
6/30/2021 • 2 minutes to read • Edit Online

APPLIES TO: ✔
️ Report Builder ✔
️ Power BI Report Builder ✔
️ Report Designer in SQL Server Data Tools
A paginated report can include an embedded image. Embedding an image ensures that the image is always
available to a report, but can affect the size of the report definition, the file that defines the report. The images
embedded in a report are listed in the Report Data pane.
You might want to embed an image in the report definition before adding the image to the design surface. For
more information, see Add a Background Image (Report Builder).

To embed an image in a report


1. In report design view, on the Inser t tab, click Image .
2. On the design surface, click and then drag a box to the desired size of the image.
3. In the General page of the Image Proper ties dialog box, type a name in the Name text box or accept
the default.
4. (Optional) In the ToolTip text box, type the text that you want to appear when the user hovers over the
image in the rendered report.
5. In Select the image source , select Embedded .
6. Click the Impor t button next to the Use this image text box
7. In Files of type , select the image file type, navigate to the file, and then click Open .
8. In the Image Proper ties dialog box, click OK .
The image is displayed in the box you drew on the design surface, and the file is displayed under the
Images folder in the Report Data pane.

NOTE
The MIME type (for example, bmp) is derived automatically when the image is imported. To change the MIME
type, see the next procedure.

(optional) To change the MIME type of an imported image


1. Open the report in Design view.
2. Select the image on the design surface. The Proper ties pane displays the image properties.

NOTE
If the Properties pane is not visible, on the View tab, click Proper ties .

3. Click in the text box next to the MIMEType property and select a new MIME type from the drop-down
list.

See Also
Images (Report Builder and SSRS)
Add a Data-Bound Image (Report Builder and SSRS)
Image Properties Dialog Box, General (Report Builder and SSRS)
Add a background image to a paginated report
(Report Builder)
6/30/2021 • 2 minutes to read • Edit Online

APPLIES TO: ✔
️ Report Builder ✔
️ Power BI Report Builder ✔
️ Report Designer in SQL Server Data Tools
You can add a background image to a paginated report item such as a rectangle, text box, list, matrix, table, and
some parts of a chart, or a report section such as the page header, page footer, or report body. You can define a
background image for any selected item on the report design surface that displays BackgroundImage in the
Properties pane. Like other images, the background image can be a URL to an image on the report server, an
image from a dataset field, or an image embedded in the report definition. To use an image embedded in the
report, you must first add the image to the report definition before you can add the image to the design surface.

To embed an image in the report definition


1. In the Report Data pane, right-click the Images node, and then click Add Image .

NOTE
If the Report Data pane is not visible, on the View tab, click Repor t Data .

2. Navigate to the image you want to embed in your report definition, and then click OK .

To add a background image


1. In report design view, select the report item to which you want to add a background image.
2. If the Properties pane is not visible, on the View tab, select Proper ties .
3. In the Properties pane, expand BackgroundImage , and then do the following:
For an embedded image:
Set Source to Embedded .
Set Value to the name of an image that is embedded in the report.
For an external image:
Set Source to External .
Set Value to a valid path to an image. This can be on a report server in native mode or SharePoint
integrated mode, or it can be on any other Web site. For more information, see Add an External
Image (Report Builder and SSRS).
For an image is that is contained in a field in the database to which the report item is connected:
Set Source to Database .
Set Value to the name of a field in the report dataset. For more information, see Add a Data-
Bound Image (Report Builder and SSRS).
For MIMEType , or file format, select the appropriate MIME type for the image-for example, .bmp.
NOTE
MIMEType applies only if the Source property is set to Database . If the Source property is set to
External or Embedded , the value of MIMEType is ignored.

For BackgroundRepeat , select an expression, Default , Repeat , RepeatX , or RepeatY , or Clip .


For background images in a chart, BackgroundRepeat can be set to Default , Repeat , Fit , and
Clip , but not RepeatX or RepeatY .

See Also
Images (Report Builder and SSRS)
Image Properties Dialog Box, General (Report Builder and SSRS)
Add a data-bound image to a paginated report
(Report Builder)
6/30/2021 • 2 minutes to read • Edit Online

APPLIES TO: ✔
️ Report Builder ✔
️ Power BI Report Builder ✔
️ Report Designer in SQL Server Data Tools
A paginated report can include a reference to an image that is stored in a database. Such an image is known as a
data-bound image. The pictures that appear alongside product names in a product list are examples of data-
bound images.
Adding a data-bound image to a page header or page footer requires additional steps. For more information,
see Page Headers and Footers (Report Builder and SSRS).

To add a data-bound image


1. In report design view, create a table with a data source connection and a dataset with a field that contains
binary image data. For more information, see Tables (Report Builder and SSRS).
2. Insert a column in your table. For more information, see Insert or Delete a Column (Report Builder and
SSRS).
3. On the Inser t menu, click Image , and then click in the data row of the new column.
4. On the General page of the Image Proper ties dialog box, type a name in the Name text box or accept
the default.
5. (Optional) In the Tooltip text box, type text to display when the user hovers over the image in the report
rendered for HTML.
6. In Select the image source , select Database .
7. In Use this Field , select the field that contains images in your report.
8. In Use this MIME type , select the MIME type, or file format, of the image-for example, bmp.
9. Click OK .
An image placeholder appears on the report design surface.

See Also
Images (Report Builder and SSRS)
Embed an Image in a Report (Report Builder and SSRS)
Add an External Image (Report Builder and SSRS)
Image Properties Dialog Box, General (Report Builder and SSRS)
Formatting Report Items (Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

Formatting the items in your report makes the report look more attractive and enhances its readability. You can
format the text boxes and individual items within text boxes, the images, the expressions, and the data while in
report design mode.

A. Text box with a double-line border and a variety of formatting styles, including a link.
B. Text box with a dashed border and raw HTML and rendered HTML.
C. Text box in with a text label and a placeholder.
You can change formatting options by selecting the item that you want to format and then opening the item's
Properties dialog box. For example, if you want to format the contents of an entire text box or a selected word
within the text box, right-click the item and select Text Box Proper ties . Then, you can apply the formatting
styles that you want.
To quickly get started, see Tutorial: Format Text (Report Builder).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

In This Section
Formatting Text and Placeholders (Report Builder and SSRS)
Describes how to format text and customize format options for different blocks of text within a text box.
Importing HTML into a Report (Report Builder and SSRS)
Describes how to insert and use HTML in a report.
Formatting Numbers and Dates (Report Builder and SSRS)
Describes how to use standard and custom formatting strings that are supported by Reporting Services.
Formatting Lines, Colors, and Images (Report Builder and SSRS)
Describes how to format lines, gridlines, colors, and images within report items and data regions.
Set the Locale for a Report or Text Box (Reporting Services)
Describes how to change the setting for data display formats that differ by language and region, such as date,
currency, and number values.

See Also
Formatting a Chart (Report Builder and SSRS)
Formatting Text and Placeholders (Report Builder
and SSRS)
11/2/2020 • 4 minutes to read • Edit Online

A text box can be a report item or an individual cell within a data region that contains text, a calculated field, a
pointer to a field in a database, or a combination of all three items. You can mix fonts and colors, add bold and
italic styles, and use paragraph styles such as alignment and hanging indents. You can format an entire text box
or you can format specific text, numbers, expressions, or fields within the text box.
Font, size, color, and effects all contribute to the readability of a report. Font, font style, font size, and underline
effects can be applied to text within a text box or data region. By default, the report font that is used is Arial, 10
points, and black. By using the Text Box and Text Proper ties dialog boxes, you can specify how the text
appears when the report is rendered.

In this illustration, the text box itself has a border, and all the text is in the same text box, but the text has a variety
of formatting.
To quickly get started, see Tutorial: Format Text (Report Builder).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Creating Placeholder Text in a Text Box


When a simple or complex expression is defined inside a text box, the resulting UI representation of this
expression is known as a placeholder. You can define colors, fonts, actions, and other behavior on any number of
placeholders or sections of text within a single text box.
The value of a placeholder is always a simple or complex expression. You can add a placeholder to a text box by
creating an expression using one of the following methods:
Drag a field from the Repor t Data pane and drop it into the text box. If you drag the expression
anywhere else on the report body, a new text box will be created that contains the placeholder. The value
of this placeholder will be the field expression that corresponds to the field that was dropped.
Right-click anywhere in the text box and select Inser t Placeholder . In the Placeholder Proper ties
dialog box, you can specify an expression as the value of your placeholder. For more information, see
Placeholder Properties Dialog Box, General (Report Builder and SSRS).
Type any simple or complex expression into the text box. For example, if you type Name: [Name] into
the text box, the [Name] text will be displayed as a placeholder that represents the expression
=Fields!Name.Value .
Type an expression in an empty text box by starting with an equal sign (=). When you change the focus
off the text box, the resulting expression is converted into a placeholder that you can edit. If the text box is
not empty, or the equal sign is inserted anywhere but as the first character in the text box, the equal sign
is treated as a string literal and a placeholder is not created. For more information about defining simple
and complex expressions, see Expression Uses in Reports (Report Builder and SSRS).

Formatting Placeholders and Static Text in a Text Box


You can format placeholders using the Placeholder Proper ties dialog box. You can format only the entire
placeholder, not sections of the placeholder. If you want to see the underlying expression, you can pause your
pointer on the placeholder. You can change the underlying expression by double-clicking the placeholder or
right-clicking the placeholder and selecting Placeholder Proper ties . You can also specify a UI label using the
Label property in General of the Placeholder Proper ties dialog box. This will be the text that is shown at
design-time for the placeholder.

In this illustration, a text box in a list contains both a label with bold formatting and a placeholder with no
formatting.
Unlike placeholder text, you can align individual text in a text box separately, use multiple paragraphs within a
single text box, and define other behavior for any subset of text
You can define colors, fonts, actions, and other behavior on any subset of text within a single text box to create a
mail merge or template for text in your report. You can also use multiple paragraphs inside a single text box. For
example, if you have two separate paragraphs of text, you can separate the paragraphs by pressing ENTER in the
text box. You can also set an alignment value for any individual string of text. You can also define an action for
individual text in a text box. This can be useful if you want to add a hyperlink for a string of text that is contained
inside a text box.

NOTE
Actions defined on the text box have a higher priority than actions defined for individual text in a text box.

For more information about mixed formatting, see Format Text in a Text Box (Report Builder and SSRS).

Aligning Horizontal Text using General


In Alignment on the Text Box Proper ties dialog box, you can specify how the text should be aligned
horizontally. If you do not specify a value for alignment, the default value of the alignment is Default . This
means that the text is aligned based on the field type of your placeholder value. If you specify an expression that
evaluates to a non-string value, i.e., not a number, the text is aligned to the right. If your expression evaluates to a
string value, such as a number, the text is aligned to the left.

See Also
Expressions (Report Builder and SSRS)
Formatting Axis Labels on a Chart (Report Builder and SSRS)
Formatting Scales on a Gauge (Report Builder and SSRS)
Tables, Matrices, and Lists (Report Builder and SSRS)
Placeholder Properties Dialog Box, General (Report Builder and SSRS)
Exporting to Microsoft Excel (Report Builder and SSRS)
Text Boxes (Report Builder and SSRS)
Format Text in a Text Box (Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

You can format any part of the text within a text box independently, and mix placeholder text and static text in
one text box. This ability to mix formats and add placeholder text enables you to create mail merges or
templates for text in your report. Any expression can be defined and formatted separately using a placeholder.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To combine multiple formats in a text box


1. On the Inser t tab, click Text Box . Click the design surface, and then drag to create a box that is the size
you want.
2. Inside the text box, select the text you want to format.
3. Right-click the selected text, and click Text Proper ties .
4. Set formatting options. For example, on the General tab:
Tooltip Type text or an expression that evaluates to a ToolTip. The ToolTip appears when the user
pauses the pointer over the item in a report
Markup type Select an option to indicate how the selected text will be rendered:
Plain Text Display the selected text as simple text. HTML will be treated as literal text.
HTML Display the selected text as HTML. If the expression value of the placeholder contains valid
HTML tags, these tags will be rendered as HTML. For more information, see Importing HTML into a
Report (Report Builder and SSRS).
5. Click OK .
6. Repeat steps 2 through 5 for the remaining text you want to format.
To format text and placeholders differently in the same text box
1. On the Inser t tab, click List . Click the design surface, and then drag to create a box that is the size you
want. The Dataset Proper ties dialog box opens. You can use a shared dataset or a dataset embedded in
your report. For more information, click Dataset Properties Dialog Box, Query (Report Builder) or Dataset
Properties Dialog Box, Query.
2. On the Inser t tab, click Text Box . Click in the list, and then drag to create a box that is the size you want.
3. Type a label in the text box - for example, My Field :.
4. Drag a field from your dataset into the text box. A placeholder is created for your field.
5. For basic formatting, select the placeholder text and then click one of the formatting options in the Font
group on the Home tab. For example, click the Bold button.
For more formatting options, right-click the placeholder text, and then click Placeholder Proper ties .
6. Click OK . In report design view, the text box should contain "My Field : [FieldName]", where FieldName is
the name of your field.
7. Click Run .
The list repeats one time for every value in the field, and the FieldName placeholder is replaced each time by the
value of that field in the dataset.

See Also
Text Boxes (Report Builder and SSRS)
Formatting Text and Placeholders (Report Builder and SSRS)
Expression Uses in Reports (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Add HTML into a Report (Report Builder and SSRS)
Tables, Matrices, and Lists (Report Builder and SSRS)
Formatting Numbers and Dates (Report Builder and SSRS)
Placeholder Properties Dialog Box, General (Report Builder and SSRS)
Importing HTML into a Report (Report Builder and
SSRS)
2/7/2020 • 2 minutes to read • Edit Online

You can use a text box to insert HTML-formatted text that you have retrieved from a field in your dataset into a
report. The text can come from any simple or complex expression that evaluates to correctly formatted HTML.
Formatted text can be rendered to all supported output formats, including PDF.

This illustration shows text with HTML formatting in report design view, and the same text as it is rendered when
the report is run.

NOTE
When you import text that contains HTML markup, the data must always be parsed by the text box first. Because only a
subset of HTML tags is supported, the HTML that is shown in the rendered report may differ from your original HTML.

To quickly get started, see Tutorial: Format Text (Report Builder).

Supported HTML Tags


The following is a complete list of tags that will render as HTML when defined as placeholder text:
Hyperlinks: <A HREF>
Fonts: <FONT>
Header, style and block elements: <H{n}>, <DIV>, <SPAN>,<P>, <DIV>, <LI>, <HN>
Text format: <B>, <I>, <U>, <S>
List handling: <OL>, <UL>, <LI>
Any other HTML markup tags will be ignored during report processing. If the HTML represented by the
expression in the placeholder text is not well formed, the placeholder is rendered as plain text. All HTML tags are
case-insensitive.
If the text in your text box contains only one block of text, any HTML in the placeholder that defines block
elements will render correctly. However, if the text box has multiple blocks of text, the HTML tags are ignored
and the structure of the text is defined by the blocks of text.
If more than one tag is defined for text, and Reporting Services detects a conflict between the HTML and existing
report constraints, only the innermost HTML tag will be treated as HTML.
For more information, see Add HTML into a Report (Report Builder and SSRS).

Limitations of Cascading Style Sheet Attributes


When using cascading style sheet (CSS) attributes, only a basic set of tags are defined. The following is a list of
attributes that are supported:
text-align, text-indent
font-family
font-size
Only valid RDL size values, in absolute CSS length units are supported. Supported units are: in, cm,
mm, pt, pc.
Relative CSS length units are ignored and not supported. Unsupported units include em, ex,
px,%,rem.
color
padding, padding-bottom, padding-top, padding-right, padding-left
font-weight
Here are some considerations for using CSS:
Malformed CSS values are ignored in the same way as malformed HTML.
When both attribute and CSS style attributes exist in the same tag, the CSS property has a higher
precedence. For example, if your text is <p style="text-align: right" align="left"> , only the text-align
attribute will be applied and the text will be right-aligned.
For attributes and CSS styles, if a property is specified more than once, only the last instance of the
property is applied. For example, if your text is <p align="left" align="right"> , the text will be right-
aligned.

See Also
Rendering to HTML (Report Builder and SSRS)
Add HTML into a Report (Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

Using a placeholder, you can import HTML from a field in your dataset for use in the report. By default, a
placeholder represents plain text, so you will need to change the placeholder mark-up type to HTML. For more
information, see Importing HTML into a Report (Report Builder and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To add HTML from a field in your dataset into a text box


1. On the Inser t tab, click List . Click the design surface, and then drag to create a box that is the size you
want.
The Dataset Proper ties dialog box opens. You can use a shared dataset or a dataset embedded in your
report. For more information, click Dataset Properties Dialog Box, Query (Report Builder) or Dataset
Properties Dialog Box, Query.
2. On the Inser t tab, click Text Box . Click in the list, and then drag to create a box that is the size you want.
3. Drag an HTML field from your dataset into the text box. A placeholder is created for your field.
4. Right-click the placeholder, and then click Placeholder Proper ties .
5. On the General tab, verify that the Value box contains an expression that evaluates to the field you
dropped in step 3.
6. Click HTML - Interpret HTML tags as styles . This causes the field to be evaluated as HTML.
7. Click OK .

See Also
Formatting Numbers and Dates (Report Builder and SSRS)
Formatting Lines, Colors, and Images (Report Builder and SSRS)
Placeholder Properties Dialog Box, General (Report Builder and SSRS)
Formatting Numbers and Dates (Report Builder and
SSRS)
3/5/2021 • 3 minutes to read • Edit Online

You can format numbers and dates in data regions by selecting a format from the Number page of the
corresponding data region's Proper ties dialog box.
To specify format strings within a text box report item, you need to select the item that you want to format, right-
click, select Text Box Proper ties , and then click Number . You can format individual cells in a table or matrix
data region in the same manner, because cells in a table or matrix are individual text boxes.
A chart data region commonly shows dates along the category (x) axis, and values along the value (y) axis. To
specify formatting in a chart, right-click an axis and select Axis Proper ties . On the value axis, you can specify
formats only for numbers. For more information, see Formatting Axis Labels on a Chart (Report Builder and
SSRS).
To specify formatting in a Gauge data region, right-click the scale of the gauge and select Radial Scale
Proper ties or Linear Scale Proper ties .

NOTE
If some formatting options you want to use are grayed out, it means that those formatting options are not compatible
the field's data type, which is set in the data source. For example, if the field contains number values but the field's data
type is String, you cannot apply numerical data formatting options such as currency or decimals.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Considerations for Formatting Numbers and Dates


Before you format numbers and dates in your report, consider the following:
By default, numbers are formatted to reflect the cultural settings on the client computer. Use formatting
strings to specify how numbers are displayed so that formatting is consistent regardless of where the
person who is viewing the report is located.
The formats provided on the Number page are a subset of the .NET Framework standard numeric
format strings. To format a number or date using a custom format that is not shown in the dialog box,
you can use any .NET Framework format strings for numbers or dates. For more information about
custom format strings, see the Formatting Types topic on MSDN.
If a custom format string has been specified, it has a higher priority over default settings that are culture-
specific. For example, suppose you set a custom format string of "#,###" to show the number 1234 as
1,234. This may have different meaning to users in the United States than it does to users in Europe.
Before you specify a custom format, consider how the format you choose will affect users of different
cultures who may view the report.
If you specify an invalid format string, the formatted text is interpreted as a literal string which overrides
the formatting.
If you are formatting a mix of numbers and characters in the same text box, consider using a placeholder
to format the number separately from the rest of the text. For more information, see Formatting Text and
Placeholders (Report Builder and SSRS). If an invalid format string is specified for the Format property on
the text box, the format string is ignored. If an invalid format string is specified for the Format property
on the chart or gauge, the format string that you specified is interpreted as a string and formatting is not
applied.
If you select Currency under Categor y and you check Show values in , you can select Thousands ,
Millions , or Billions to display numbers using financial formats. For example, if the field value is
1,789,905,394 and you select Billions and specify 2 decimal places, the value displayed in the report is
1.78.

See Also
Formatting Text and Placeholders (Report Builder and SSRS)
Formatting Lines, Colors, and Images (Report Builder and SSRS)
Formatting a Chart (Report Builder and SSRS)
Format Axis Labels as Dates or Currencies (Report Builder and SSRS)
Formatting Scales on a Gauge (Report Builder and SSRS)
Formatting Lines, Colors, and Images (Report
Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

Reporting Services gives you the ability to format lines, colors, data regions, images, and other report items.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Borders, Lines and Gridlines


Borders, lines, and gridlines can visually tie items together on the page and help your report readers easily read
the contents of the report. Using the predefined border styles, you can quickly add a border around a text box, a
group of text boxes, or an image. In addition, you can change the style, width, and color for the borders, lines,
and gridlines. Borders are added around the entire item selected or around a border along an edge of the item,
for example, a border along the bottom of a text box.
To format borders and gridlines in a text box, report layout, or around an image, use the Border tab of the
report item's Proper ties dialog box. For example, if you want to add a border around an image, right-click the
image and then in the Image Proper ties dialog box, click Border .
In addition to the standard border frames, additional border frames can be applied to charts. For more
information, see Add a Border Frame to a Chart (Report Builder and SSRS).
You can also add a border to the report itself. For more information, see Add a Border to a Report (Report
Builder and SSRS).

Applying Background Colors


A solid color can be added to the background of the entire report, a text box within the report, or to a cell or
group of cells within a data region. By default, the background color is white; however, you can select a color
from the Fill tab of the report item's Proper ties dialog box. For example, if you want to change the background
color of a text box, right-click the text box and select Text Box Proper ties . Click Fill and then select the color
you want. In this dialog box, you can select a background color for the selected item or you can add an image
that appears in the background.
When you use the chart, you can also specify gradients and pattern styles for background colors. For more
information, see Formatting a Chart (Report Builder and SSRS).

Using Images as Formatting


Fields that contain images can be added to a data region. If you use an image field, the images appear in the
report with the report is run.
You can also add images such as logos to the background of your report or to a rectangle, text box, table, matrix,
or some parts of a chart, or to the body and page sections of a report. For more information, see Images (Report
Builder and SSRS).
See Also
Formatting Text and Placeholders (Report Builder and SSRS)
Formatting Numbers and Dates (Report Builder and SSRS)
Format Text in a Text Box (Report Builder and SSRS)
Fill Dialog Box (Report Builder and SSRS)
Set the Locale for a Report or Text Box (Reporting
Services)
11/2/2020 • 2 minutes to read • Edit Online

The Language property on a report or a text box contains the locale setting, which determines the default
formats for displaying report data that differ by language and region, for example, date, currency, or number
values. The Language property on a text box overrides the Language property on the report. If no value is
specified for Language , Reporting Services uses the locale of the operating system on the report server for
published reports or of the report authoring computer for report preview.
For HTML reports, you can override the default Language value and use the language specified by the HTTP
header of the browser client by using the built-in field User!Language in an expression for the Language
property of a report or a text box.
You can also specify the Language property for a report in a URL. For more information, see Set the Language
for Report Parameters in a URL.
To set the locale for a report
1. In Design view, click outside the report design surface to select the report.
2. In the Properties pane, for the Language property, type or select the language that you want to use for
the report.
To set the locale for a text box
1. In Design view, select the text box to which you want to apply the locale settings.
2. In the Properties pane, do the following:
For the Calendar property, type or select the calendar that you want to use for dates.
For the Direction property, type or select the direction in which the text is written.
For the Language property, type or select the language that you want to use for the text box. This
value overrides the Language property for the Report.
For the NumeralLanguage property, type or select the format to use for numbers in the text box.
For the NumeralVariant property, type or select the variant of the format to use for numbers in
the text box.
For the UnicodeBiDi property, select the level of bidirectional embedding to use in the text box.

See Also
Expression Uses in Reports (Report Builder and SSRS)
Solution Design Considerations for Multi-Lingual or Global Deployments (Reporting Services)
Report Parameters (Report Builder and Report
Designer)
3/5/2021 • 16 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server 2016 Reporting Services and later ✔
️ SharePoint
APPLIES TO: ✔
️ SQL Server 2016 Reporting Services and later
This topic describes the common uses for Reporting Services report parameters, the properties you can set, and
much more. Report parameters enable you to control report data, connect related reports together, and vary
report presentation. You can use report parameters in paginated reports you create in Report Builder and
Report Designer, and also in mobile reports you create in SQL Server Mobile Report Publisher. Read more about
Report Parameters Concepts.
To try adding a parameter to a report yourself, see Tutorial: Add a Parameter to Your Report (Report Builder).

Common Uses for Parameters


Here are some of the most common ways to use parameters.
Control Paginated and Mobile Repor t Data
Filter paginated report data at the data source by writing dataset queries that contain variables.
Filter data from a shared dataset. When you add a shared dataset to a paginated report, you cannot
change the query. In the report, you can add a dataset filter that includes a reference to a report
parameter that you create.
Filter data from a shared dataset in a SQL Server mobile report. See Create mobile reports with SQL
Server Mobile Report Publisher for more information.
Enable users to specify values to customize the data in a paginated report. For example, provide two
parameters for the start date and end date for sales data.
Connect Related Repor ts
Use parameters to relate main reports to drillthrough reports, to subreports, and to linked reports. When
you design a set of reports, you can design each report to answer certain questions. Each report can
provide a different view or a different level of detail for related information. To provide a set of
interrelated reports, create parameters for the related data on target reports.
For more information, see Drillthrough Reports (Report Builder and SSRS), Subreports (Report Builder
and SSRS), and Create a Linked Report.
Customize sets of parameters for multiple users. Create two linked reports based on a sales report on the
report server. One linked report uses predefined parameter values for sales persons and the second
linked report uses predefined parameter values for sales managers. Both reports use the same report
definition.
Var y Repor t Presentation
Send commands to a report server through a URL request, to customize the rendering of a report. For
more information, see URL Access (SSRS) and Pass a Report Parameter Within a URL.
Enable users to specify values to help customize the appearance of a report. For example, provide a
Boolean parameter to indicate whether to expand or collapse all nested row groups in a table.
Enable users to customize report data and appearance by including parameters in an expression.
For more information, see Parameters Collection References (Report Builder and SSRS).

Viewing a Report with Parameters


When you view a report that has parameters, the report viewer toolbar displays each parameter so you can
interactively specify values. The following illustration shows the parameter area for a report with parameters
@ReportMonth, @ReportYear, @EmployeeID, @ShowAll, @ExpandTableRows, @CategoryQuota, and
@SalesDate.

1. Parameters pane The report viewer toolbar displays a prompt and default value for each parameter.
You can customize the layout of parameters in the parameters pane. For more information, see
Customize the Parameters Pane in a Report (Report Builder).
2. @SalesDate parameter The parameter @SalesDate is data type DateTime . The prompt Select the Date
appears next to the text box. To modify the date, type a new date in the text box or use the calendar
control.
3. @ShowAll parameter The parameter @ShowAll is data type Boolean . Use the radio buttons to specify
True or False .
4. Show or Hide Parameter Area handle On the report viewer toolbar, click this arrow to show or hide
the parameters pane.
5. @Categor yQuota parameter The parameter @CategoryQuota is data type Float , so it takes a numeric
value. @CategoryQuota is set to allow multiple values.
6. View Repor t After you enter parameter values, click View Repor t to run the report. If all parameters
have default values, the report runs automatically on first view.

Creating Parameters
You can create report parameters in a few different ways.

NOTE
Not all data sources support parameters.

Dataset quer y or stored procedure with parameters


Add a dataset query that contains variables or a dataset stored procedure that contains input parameters. A
dataset parameter is created for each variable or input parameter, and a report parameter is created for each
dataset parameter.
This image from Report Builder shows:
1. The report parameters in the Report Data pane.
2. The dataset with the parameters.
3. The Parameters pane.
4. The parameters listed in the Dataset Properties dialog box.
The dataset can be embedded or shared. When you add a shared dataset to a report, dataset parameters that
are marked internal cannot be overridden in the report. You can override dataset parameters that are not
marked internal.
For more information, see Dataset Query in this topic.
Create a parameter manually
Create a parameter manually from the Report Data pane. You can configure report parameters so that a user
can interactively enter values to help customize the contents or appearance of a report. You can also configure
report parameters so that a user cannot change preconfigured values.

NOTE
Because parameters are managed independently on the server, republishing a main report with new parameter settings
does not overwrite the existing parameters settings on the report.

Repor t par t with a parameter


Add a report part that contains references to a parameter or to a shared dataset that contains variables.
Report parts are stored on the report server and available for others to use in their reports. Report parts that
are parameters cannot be managed from the report server. You can search for parameters in the Report Part
Gallery and after you add them, configure them in your report. For more information, see Report Parts (Report
Builder and SSRS).
NOTE
Parameters can be published as a separate report part for data regions that have dependent datasets with parameters.
Although parameters are listed as a report part, you cannot add a report part parameter directly to a report. Instead, add
the report part, and any necessary report parameters are automatically generated from dataset queries that are
contained or referenced by the report part. For more information about report parts, see Report Parts (Report Builder
and SSRS) and Report Parts in Report Designer (SSRS).

Parameter Values
The following are options for selecting parameter values in the report.
Select a single parameter value from a drop-down list.
Select multiple parameter values from a drop-down list.
Select a value from a drop-down list for one parameter, which determines the values that are available in
the drop-down list for another parameter. These are cascading parameters. Cascading parameters
enables you to successively filter parameter values from thousands of values to a manageable number.
For more information, see Add Cascading Parameters to a Report (Report Builder and SSRS).
Run the report without having to first select a parameter value because a default value has been created
for the parameter.

Report Parameter Properties


You can change the report parameter properties by using the Report Properties dialog box. The following table
summarizes the properties that you can set for each parameter:

P RO P ERT Y DESC RIP T IO N

Name Type a case-sensitive name for the parameter. The name


must begin with a letter and can have letters, numbers, an
underscore (_). The name cannot have spaces. For
automatically generated parameters, the name matches the
parameter in the dataset query. By default, manually created
parameters are similar to ReportParameter1.

Prompt The text that appears next to the parameter on the report
viewer toolbar.
P RO P ERT Y DESC RIP T IO N

Data type A report parameter must be one of the following data types:

Boolean . The user selects True or False from a radio button.

DateTime . The user selects a date from a calendar control.

Integer . The user types values in a text box.

Float . The user types values in a text box.

Text . The user types values in a text box.

When available values are defined for a parameter, the user


chooses values from a drop-down list, even when the data
type is DateTime .

For more information about report data types, see RDL Data
Types.

Allow blank value Select this option if the value of the parameter can be an
empty string or a blank.

If you specify valid values for a parameter, and you want a


blank value to be one of the valid values, you must include it
as one of the values that you specify. Selecting this option
does not automatically include a blank for available values.

Allow null value Select this option if the value of the parameter can be a null.

If you specify valid values for a parameter, and you want null
to be one of the valid values, you must include null as one of
the values that you specify. Selecting this option does not
automatically include a null for available values.

Allow multiple values Provide available values to create a drop-down list that your
users can choose from. This is a good way to ensure that
only valid values are submitted in the dataset query.

Select this option if the value for the parameter can be


multiple values that are displayed in a drop-down list. Null
values are not allowed. When this option is selected, check
boxes are added to the list of available values in a parameter
drop-down list. The top of the list includes a check box for
Select All. Users can check the values that they want.

If the data that provides values changes rapidly, the list the
user sees might not be the most current.

Visible Select this option to display the report parameter at the top
of the report when it is run. This option allows users to
select parameter values at run time.

Hidden Select this option to hide the report parameter in the


published report. The report parameter values can still be
set on a report URL, in a subscription definition, or on the
report server.
P RO P ERT Y DESC RIP T IO N

Internal Select this option to hide the report parameter. In the


published report, the report parameter can only be viewed
in the report definition.

Available values If you have specified available values for a parameter, the
valid values always appear as a drop-down list. For example,
if you provide available values for a DateTime parameter, a
drop-down list for dates appears in the parameter pane
instead of a calendar control.

To ensure that a list of values is consistent among a report


and subreports, you can set an option on the data source to
use a single transaction for all queries in the datasets that
are associated with a data source.

Security Note In any report that includes a parameter of


data type Text , be sure to use an available values list (also
known as a valid values list) and ensure that any user
running the report has only the permissions necessary to
view the data in the report. For more information, see
Security (Report Builder).

Default values Set default values from a query or from a static list.

When each parameter has a default value, the report runs


automatically on first view.

Advanced Set the report definition attribute UsedInQuer y , a value


that indicates whether this parameter directly or indirectly
affects the data in a report.

Automatically determine when to refresh


Choose this option when you want the report processor to
determine a setting for this value. The value is True if the
report processor detects a dataset query with a direct or
indirect reference to this parameter, or if the report has
subreports.

Always refresh
Choose this option when the report parameter is used
directly or indirectly in a dataset query or parameter
expression. This option sets UsedInQuer y to True.

Never refresh
Choose this option when the report parameter is not used
directly or indirectly in a dataset query or parameter
expression. This option sets UsedInQuer y to False.

Caution Use Never Refresh with caution. On the report


server, UsedInQuer y is used to help control cache options
for report data and for rendered reports, and parameter
options for snapshot reports. If you set Never Refresh
incorrectly, you could cause incorrect report data or reports
to be cached, or cause a snapshot report to have
inconsistent data. For more information, see Report
Definition Language (SSRS).

Dataset Query
To filter data in the dataset query, you can include a restriction clause that limits the retrieved data by specifying
values to include or exclude from the result set.
Use the query designer for the data source to help build a parameterized query.
For Transact-SQL queries, different data sources support different syntax for parameters. Support ranges
from parameters that are identified in the query by position or by name. For more information, see topics
for specific external data source types in Report Datasets (SSRS). In the relational query designer, you
must select the parameter option for a filter to create a parameterized query. For more information, see
Relational Query Designer User Interface (Report Builder).
For queries that are based on a multidimensional data source such as Microsoft SQL Server Analysis
Services, SAP NetWeaver BI, or Hyperion Essbase, you can specify whether to create a parameter based
on a filter that you specify in the query designer. For more information, see the query designer topic in
Query Design Tools (SSRS) that corresponds to the data extension.

Parameter Management for a Published Report


When you design a report, report parameters are saved in the report definition. When you publish a report,
report parameters are saved and managed separately from the report definition.
For a published report, you can use the following:
Repor t parameter proper ties. Change report parameter values directly on the report server
independently from the report definition.
Cached repor ts. To create a cache plan for a report, each parameter must have a default value. For
more information, see Caching Reports (SSRS).
Cached shared datasets. To create a cache plan for a shared dataset, each parameter must have a
default value. For more information, see Caching Reports (SSRS).
Linked repor ts. You can create linked reports with preset parameter values to filter data for different
audiences. For more information, see Create a Linked Report.
Repor t subscriptions. You can specify parameter values to filter data and deliver reports through
subscriptions. For more information, see Subscriptions and Delivery (Reporting Services).
URL access. You can specify parameter values in a URL to a report. You can also run reports and specify
parameter values using URL access. For more information, see URL Access (SSRS).
Parameter properties for a published report are preserved if you republish the report definition. If the report
definition is republished as the same report, and parameter names and data types remain the same, your
property settings are retained. If you add or delete parameters in the report definition, or change the data type
or name of an existing parameter, you may need to change the parameter properties in the published report.
Not all parameters can be modified in all cases. If a report parameter gets a default value from a dataset query,
that value cannot be modified for a published report and cannot be modified on the report server. The value
that is used at run time is determined when the query runs, or in the case of expression-based parameters,
when the expression is evaluated.
Report execution options can affect how parameters are processed. A report that runs as a snapshot cannot use
parameters that are derived from a query unless the query includes default values for the parameters.

Parameters for a Subscription


You can define a subscription for an on demand or for a snapshot and specify parameter values to use during
subscription processing.
On-demand repor t. For an on-demand report, you can specify a different parameter value than the
published value for each parameter listed for the report. For example, suppose you have a Call Service
report that uses a Time Period parameter to return customer service requests for the current day, week,
or month. If the default parameter value for the report is set to today , your subscription can use a
different parameter value (such as week or month ) to produce a report that contains weekly or monthly
figures.
Snapshot. For a snapshot, your subscription must use the parameter values defined for the snapshot.
Your subscription cannot override a parameter value that is defined for a snapshot. For example, suppose
you are subscribing to a Western regional sales report that runs as a report snapshot, and the snapshot
specifies Western as a regional parameter value. In this case, if you create a subscription to this report,
you must use the parameter value Western in your subscription. To provide a visual indication that the
parameter is ignored, the parameter fields on the subscription page are set to read-only fields.
Report execution options can affect how parameters are processed. Parameterized reports that run as
report snapshots use the parameter values defined for the report snapshot. Parameter values are defined
in the parameter properties page of the report. A report that runs as a snapshot cannot use parameters
that are derived from a query unless the query includes default values for the parameters.
If a parameter value changes in the report snapshot after the subscription is defined, the report server
deactivates the subscription. Deactivating the subscription indicates that the report has been modified. To
activate the subscription, open and then save the subscription.

NOTE
Data-driven subscriptions can use parameter values that are obtained from a subscriber data source. For more
information, see Use an External Data Source for Subscriber Data (Data-Driven Subscription).

For more information, see Subscriptions and Delivery (Reporting Services).

Parameters and Securing Data


Use caution when distributing parameterized reports that contain confidential or sensitive information. A user
can easily replace a report parameter with a different value, resulting in information disclosure that you did not
intend.
A secure alternative to using parameters for employee or personal data is to select data based on expressions
that include the UserID field from the Users collection. The Users collection provides a way to get the identity of
the user running the report, and use that identity to retrieve user-specific data.
IMPORTANT
In any report that includes a parameter of type String , be sure to use an available values list (also known as a valid values
list) and ensure that any user running the report has only the permissions necessary to view the data in the report. When
you define a parameter of type String , the user is presented with a text box that can take any value. An available values
list limits the values that can be entered. If the report parameter is tied to a dataset parameter and you do not use an
available values list, it is possible for a report user to type SQL syntax into the text box, potentially opening the report and
your server to a SQL injection attack. If the user has sufficient permissions to execute the new SQL statement, it may
produce unwanted results on the server.
If a report parameter is not tied to a dataset parameter and the parameter values are included in the report, it is possible
for a report user to type expression syntax or a URL into the parameter value, and render the report to Excel or HTML. If
another user then views the report and clicks the rendered parameter contents, the user may inadvertently execute the
malicious script or link.
To mitigate the risk of inadvertently running malicious scripts, open rendered reports only from trusted sources. For more
information about securing reports, see Secure Reports and Resources.

Related Sections
Tutorial: Add a Parameter to Your Report (Report Builder)
Report Parameters Concepts
Report Samples (Report Builder and SSRS)
Expression Uses in Reports (Report Builder and SSRS)
Expressions (Report Builder and SSRS)
Filter, Group, and Sort Data (Report Builder and SSRS)
Security (Report Builder)
Interactive Sort, Document Maps, and Links (Report Builder and SSRS)
Drillthrough, Drilldown, Subreports, and Nested Data Regions (Report Builder and SSRS)
Report Parameters Concepts (Report Builder and
SSRS)
11/2/2020 • 2 minutes to read • Edit Online

You can add parameters to a report to link related reports, to control the report appearance, to filter report data,
or to narrow the scope of a report to specific users or locations.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Report parameters are created in the following ways:


Automatically, when you define dataset query that contains query variables. For each query variable, a
corresponding dataset query parameter and report parameter with the same names are created. A query
parameter can be a reference to a query variable or to an input parameter for a stored procedure.
Automatically, when you add a reference to a shared dataset that contains query parameters.
Manually, when you create report parameters in the Report Data pane. Parameters are one of the built-in
collections that you can include in an expression in a report. Because expressions are used to define
values throughout a report definition, you can use parameters to control report appearance or to pass
values to related subreports or reports that also use parameters.
For more information, see Report Parameters (Report Builder and Report Designer).
Parameters are frequently used to filter report data both before and after the data is returned to the report. For
more information, see Filter, Group, and Sort Data (Report Builder and SSRS).
When you design a report, report parameters are saved in the report definition. When you publish a report,
report parameters are saved and managed separately from the report definition. After you save the report to
the report server, you can do the following:
Change report parameter values directly on the report server independently from the report definition.
Create multiple linked reports in which each linked report is a link to the report definition with a separate
set of parameter values that can be managed independently on the report server.
If you plan to create report snapshots, histories, or subscriptions to a published report, you must understand
how report parameters affect the design requirements for the report.

See Also
Reporting Services Concepts (SSRS) Report Embedded Datasets and Shared Datasets (Report Builder and SSRS)
Tutorial: Add a Parameter to Your Report (Report Builder)
Add, Change, or Delete a Report Parameter
(Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

A report parameter provides a way to choose report data, connect related reports together, and vary the report
presentation. You can provide a default value and a list of available values, and the user can change the selection.
After you publish a report, you can change the default values, the available values, and other properties for a
report parameter on the report server. You can provide multiple sets of default parameter values by creating
linked reports. For more information, see Report Parameters (Report Builder and Report Designer).
This article is about adding report parameters to a paginated report in Report Builder or Report Designer in SQL
Server Data Tools (SSDT). You can also add report parameters to mobile reports in SQL Server Mobile Report
Publisher. See Create mobile reports with SQL Server Mobile Report Publisher for more information.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To add or edit a report parameter


1. In Report Builder or Report Designer in SQL Server Data Tools (SSDT), in the Repor t Data pane, right-
click the Parameters node and click Add Parameter . The Repor t Parameter Proper ties dialog box
opens.
2. In Name , type the name of the parameter or accept the default name.
3. In Prompt , type the text that appears next to the parameter text box when the user runs the report.
4. In Data type , select the data type for the parameter value.
5. If the parameter can contain a blank value, select Allow blank value .
6. If the parameter can contain a null value, select Allow null value .
7. To allow a user to select more than one value for the parameter, select Allow multiple values .
8. Set the visibility option.
To show the parameter on the toolbar at the top of the report, select Visible .
To hide the parameter so that it does not display on the toolbar, select Hidden .
To hide the parameter and protect it from being modified on the report server after the report is
published, select Internal . The report parameter can then only be viewed in the report definition.
For this option, you must set a default value or allow the parameter to accept a null value.
9. Click OK .
To delete a report parameter
1. In the Repor t Data pane, expand the Parameters node.
2. Right-click the report parameter and click Delete .
See Also
Add, Change, or Delete Available Values for a Report Parameter (Report Builder and SSRS)
Add, Change, or Delete Default Values for a Report Parameter (Report Builder and SSRS)
Change the Order of a Report Parameter (Report Builder and SSRS)
Report Parameters (Report Builder and Report Designer)
Add Cascading Parameters to a Report (Report Builder and SSRS)
Tutorial: Add a Parameter to Your Report (Report Builder)
Add Dataset Filters, Data Region Filters, and Group Filters (Report Builder and SSRS)
Parameters Collection References (Report Builder and SSRS)
Add a multi-value parameter to a Report
Add, Change, or Delete Available Values for a
Report Parameter
11/2/2020 • 3 minutes to read • Edit Online

After you create a report parameter, you can specify a list of available values to display to the user. An available
values list limits the choices a user can make to only valid values for the parameter.
Available values appear in a drop-down list next to the report parameter on the toolbar when the report runs.
Report parameters can represent one value or multiple values. For multiple values, the top of list begins with a
Select All feature so the user can select or clear all values with a single click.
You can provide a static list of values or a list from a report dataset. You can optionally provide a friendly name
for values by specifying a label field. For example, for a parameter based on a ProductID field, you can display
the ProductName field in the parameter label. When the report runs, the user can choose from the product
names, but the actual chosen value is the corresponding ProductID .

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

After you publish a report, you can override the available values that you define in the report in the report
authoring tool, by setting parameter property values on the report server. For more information, see Report
Parameters (Report Builder and Report Designer).
To add or change the available values for a report parameter
1. In the Report Data pane, expand the Parameters node. Right-click the parameter and click Parameter
Proper ties . The Repor t Parameter Proper ties dialog box opens.

NOTE
If the Report Data pane is not visible, click View and then click Repor t Data .

2. Click Available Values . Select an available values option:


Click Specify values to manually provide a list of values, and optionally, friendly names (the
labels) for the values.
Click Add and then enter the value in the Value text box, and optionally, the label in the Label text
box. If you do not provide a label, the value is used. You can write an expression for a value. The
data type must match the data type of the parameter. Field names cannot be used in an expression
for a parameter. For examples, see Commonly Used Filters (Report Builder and SSRS).
Repeat this step for as many values as you want to provide. The order of items you see in this list
determines the order that the user sees them in the drop-down list. To change the order of an item
in the list, click a Value or Label text box to select the item, and then use the up and down arrow
buttons to move the item higher or lower in the list.
Click Get values from a quer y to provide the name of an existing dataset that retrieves the
values, and optionally, the friendly names for this parameter.
IMPORTANT
If the same dataset contains the corresponding query parameter for the report parameter, the report will
display an error message when you try to run it. You resolve this error by using a different dataset to
retrieve the values.

In Dataset , choose the name of the dataset.


In Value field , choose the name of the field that provides parameter values.
In Label field , choose the name of the field that provides the friendly names for the parameter. If
there is no separate field for friendly names, choose the same field as you chose for the Value
field.
3. Click OK .
When you preview the report, you see a drop-down list of available values for the parameter.
To remove the available values for a report parameter
1. In the Report Data pane, expand the Parameters node. Right-click the parameter and click Parameter
Proper ties . The Repor t Parameters dialog box opens.
2. Click Available Values .
3. In Select from one of the following options , click None .
4. Click OK .
When you preview the report, you the drop-down list of available values for the parameter no longer
appears.

See Also
Change the Order of a Report Parameter (Report Builder and SSRS)
Add, Change, or Delete a Report Parameter (Report Builder and SSRS)
Add Cascading Parameters to a Report (Report Builder and SSRS)
Add, Change, or Delete Default Values for a Report Parameter (Report Builder and SSRS)
Parameters Collection References (Report Builder and SSRS)
Tutorial: Add a Parameter to Your Report (Report Builder)
Expressions (Report Builder and SSRS)
Add, Change, or Delete Default Values for a Report
Parameter
5/20/2020 • 2 minutes to read • Edit Online

After you create a report parameter, you can provide a list of default values. If all parameters have a valid default
value, the report runs automatically when you first view or preview it.
Report parameters can represent one value or multiple values. For single values, you can provide a literal or
expression. For multiple values, you can provide a static list or a list from a report dataset.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

After you publish a report, you can override the default values that you define in the report in the report
authoring tool, by setting parameter property values on the report server. You can also provide multiple sets of
default parameter values by creating linked reports. For more information, see Report Parameters (Report
Builder and Report Designer)
To add or change the default values for a report parameter
1. In the Report Data pane, expand the Parameters node. Right-click the parameter and click Edit . The
Repor t Parameter Proper ties dialog box opens.

NOTE
If the Report Data pane is not visible, click View and then click Repor t Data .

2. Click Default Values .


3. Select a default option:
To manually provide a value or list of values, click Specify values . Click Add and then enter the
value in the Value text box. You can write an expression for a value. The data type must match the
data type of the parameter. Field names cannot be used in an expression for a parameter.
For multivalue parameters, repeat this step for as many values as you want to provide. The order
of items you see in this list determines the order that the user sees them in the drop-down list. To
change the order of an item in the list, click the Value text box to select the item, and then use the
up and down arrow buttons to move the item higher or lower in the list.
To provide the name of an existing dataset that retrieves the values, click Get values from a
quer y . In Dataset , choose the name of the dataset.
In Value field , choose the name of the field that provides parameter values.
4. Click OK .
To remove the default values for a report parameter
1. In the Report Data pane, expand the Parameters node. Right-click the parameter and click Edit . The
Repor t Parameter Proper ties dialog box opens.
2. Click Default Values .
3. In Select from one of the following options , click No default value .
4. Click OK .

See Also
Report Parameters (Report Builder and Report Designer)
Add Cascading Parameters to a Report (Report Builder and SSRS)
Tutorial: Add a Parameter to Your Report (Report Builder)
Add Dataset Filters, Data Region Filters, and Group Filters (Report Builder and SSRS)
Parameters Collection References (Report Builder and SSRS)
Change the Order of a Report Parameter (Report Builder and SSRS)
Add, Change, or Delete a Report Parameter (Report Builder and SSRS)
Expressions (Report Builder and SSRS)
Change the Order of a Report Parameter (Report
Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

Change the order of report parameters when you have a dependent parameter that is listed before the
parameter it is dependent on. Parameter order is important when you have cascading parameters, or when you
want to show users the default value for one parameter before they choose values for other parameters. A
dependent report parameter contains a reference, in either its default values query or valid values query, to a
query parameter that points to a report parameter that is after it in the parameter list in the Repor t Data pane.
The order that you see parameters display on the report viewer toolbar when you run the report, is determined
by the order of the parameters in the Repor t Data pane and the location of the parameters in the custom
parameters pane. For more information, see Customize the Parameters Pane in a Report (Report Builder)

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To change the order of report parameters


You can change the order of report parameters by doing either of the following:
Click a parameter in the Repor t Data pane, and use the up and down arrow buttons to move the
parameter higher or lower in the list, as shown in the following image. When you change the order of the
parameter in the Repor t Data pane, the location of the parameter in the parameters pane is changed.

In the parameters pane, drag the parameter to a new column or row in the pane. When you change the
location of the parameter in the pane, the parameter order changes in the Repor t Data pane. For more
information about moving parameters in the pane, see Customize the Parameters Pane in a Report
(Report Builder).

See Also
Report Parameters (Report Builder and Report Designer)
Add Cascading Parameters to a Report (Report Builder and SSRS)
Tutorial: Add a Parameter to Your Report (Report Builder)
Add Dataset Filters, Data Region Filters, and Group Filters (Report Builder and SSRS)
Parameters Collection References (Report Builder and SSRS)
Add Cascading Parameters to a Report (Report
Builder and SSRS)
3/5/2021 • 6 minutes to read • Edit Online

Cascading parameters provide a way of managing large amounts of report data. You can define a set of related
parameters so that the list of values for one parameter depends on the value chosen in another parameter. For
example, the first parameter is independent and might present a list of product categories. When the user
selects a category, the second parameter is dependent on the value of the first parameter. Its values are updated
with a list of subcategories within the chosen category. When the user views the report, the values for both the
category and subcategory parameters are used to filter report data.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To create cascading parameters, you define the dataset query first and include a query parameter for each
cascading parameter that you need. You must also create a separate dataset for each cascading parameter to
provide available values. For more information, see Add, Change, or Delete Available Values for a Report
Parameter (Report Builder and SSRS).
Order is important for cascading parameters because the dataset query for a parameter later in the list includes
a reference to each parameter that is earlier in the list. At run time, the order of the parameters in the Report
Data pane determines the order in which the parameter queries appear in the report, and therefore, the order in
which a user chooses each successive parameter value.
For information about creating cascading parameters with multiple values and including the Select All feature,
see How to have a Select All Multivalue Cascading Parameter.

To create the main dataset with a query that includes multiple related
parameters
1. In the Report Data pane, right-click a data source, and then click Add Dataset .
2. In Name , type the name of the dataset.
3. In Data source , choose the name of the data source or click New to create one.
4. In Quer y type , choose the type of query for the selected data source. In this topic, query type Text is
assumed.
5. In Quer y , type the query to use to retrieve data for this report. The query must include the following
parts:
a. A list of data source fields. For example, in a Transact-SQL statement, the SELECT statement
specifies a list of database column names from a given table or view.
b. One query parameter for each cascading parameter. A query parameter limits the data retrieved
from the data source by specifying certain values to include or exclude from the query. Typically,
query parameters occur in a restriction clause in the query. For example, in a Transact-SQL SELECT
statement, query parameters occur in the WHERE clause.
6. Click Run (! ). After you include query parameters and then run the query, report parameters that
correspond to the query parameters are automatically created.

NOTE
The order of query parameters the first time you run a query determines the order that they are created in the
report. To change the order, see Change the Order of a Report Parameter (Report Builder and SSRS)

7. Click OK .
Next, you will create a dataset that provides the values for the independent parameter.

To create a dataset to provide values for an independent parameter


1. In the Report Data pane, right-click a data source, and then click Add Dataset .
2. In Name , type the name of the dataset.
3. In Data source , verify the name is the name of the data source you chose in step 1.
4. In Quer y type , choose the type of query for the selected data source. In this topic, query type Text is
assumed.
5. In Quer y , type the query to use to retrieve values for this parameter. Queries for independent
parameters typically do not contain query parameters. For example, to create a query for a parameter
that provides all category values, you might use a Transact-SQL statement similar to the following:

SELECT DISTINCT <column name> FROM <table>

The SELECT DISTINCT command removes duplicate values from the result set so that you get each
unique value from the specified column in the specified table.
Click Run (! ). The result set shows the values that are available for this first parameter.
6. Click OK .
Next, you will set the properties of the first parameter to use this dataset to populate its available values at run-
time.

To set available values for a report parameter


1. In the Report Data pane, in the Parameters folder, right-click the first parameter, and then click Parameter
Proper ties .
2. In Name , verify that the name of the parameter is correct.
3. Click Available Values .
4. Click Get values from a quer y . Three fields appear.
5. In Dataset , from the drop-down list, click the name of the dataset you created in the previous procedure.
6. In Value field, click the name of the field that provides the parameter value.
7. In Label field, click the name of the field that provides the parameter label.
8. Click OK .
Next, you will create a dataset that provides the values for a dependent parameter.
To create a dataset to provide values for a dependent parameter
1. In the Report Data pane, right-click a data source, and then click Add Dataset .
2. In Name , type the name of the dataset.
3. In Data source , verify the name is the name of the data source you chose in step 1.
4. In Quer y type , choose the type of query for the selected data source. In this topic, query type Text is
assumed.
5. In Quer y , type the query to use to retrieve values for this parameter. Queries for dependent parameters
typically include query parameters for each parameter that this parameter is dependent on. For example,
to create a query for a parameter that provides all subcategory (dependent parameter) values for a
category (independent parameter), you might use a Transact-SQL statement similar to the following:

SELECT DISTINCT Subcategory FROM <table>


WHERE (Category = @Category)

In the WHERE clause, Category is the name of a field from <table> and @Category is a query parameter.
This statement produces a list of subcategories for the category specified in @Category. At run time, this
value will be filled in with the value that the user chooses for the report parameter that has the same
name.
6. Click OK .
Next, you will set the properties of the second parameter to use this dataset to populate its available values at
run time.

To set available values for the second parameter


1. In the Report Data pane, in the Parameters folder, right-click the first parameter, and then click Parameter
Proper ties .
2. In Name , verify that the name of the parameter is correct.
3. Click Available Values .
4. Click Get values from a quer y .
5. In Dataset , from the drop-down list, click the name of the dataset you created in the previous procedure.
6. In Value field, click the name of the field that provides the parameter value.
7. In Label field, click the name of the field that provides the parameter label.
8. Click OK .

To test the cascading parameters


1. Click Run .
2. From the drop-down list for the first, independent parameter, choose a value.
The report processor runs the dataset query for the next parameter and passes it the value you chose for
the first parameter. The drop-down list for the second parameter is populated with the available values
based on the first parameter value.
3. From the drop-down list for the second, dependent parameter, choose a value.
The report does not run automatically after you choose the last parameter so that you can change your
choice.
4. Click View Repor t . The report updates the display based on the parameters you have chosen.

See Also
Add, Change, or Delete a Report Parameter (Report Builder and SSRS)
Report Parameters (Report Builder and Report Designer)
Tutorial: Add a Parameter to Your Report (Report Builder)
Report Builder Tutorials
Add Dataset Filters, Data Region Filters, and Group Filters (Report Builder and SSRS)
Report Embedded Datasets and Shared Datasets (Report Builder and SSRS)
Add a multi-value parameter to a Report
11/2/2020 • 2 minutes to read • Edit Online

You can add a parameter to a report that allows the user to select more than one value for the parameter.
You can pass multiple parameter values to the report within the report URL. For a URL example includes a multi-
value parameter, see Pass a Report Parameter Within a URL.
For information on how to pass multiple parameter values to a stored procedure, see Working With Multi-Select
Parameters for SSRS Reports on mssqltips.com.

To add a multi-value parameter


1. In Report Builder, open the report that you want to add the multi-value parameter to.
2. Right-click the report dataset, and then click Dataset Proper ties
3. Add a variable to the dataset query by either editing the query text in the Quer y box, or by adding a filter
by using the query designer. For more information, see Build a Query in the Relational Query Designer
(Report Builder and SSRS).

WHERE
Production.ProductInventory.ProductID IN (@ProductID)

IMPORTANT
The query text must not include the DECLARE statement for the query variable.
The text for the query variable must include the IN operator, as shown in the example above.
Be sure to include the parentheses around the variable as shown above. Otherwise, the report fails to render
and the "must declare the scalar variable" error is displayed.

A dataset parameter for an embedded dataset or a shared dataset is created automatically for the query
variable. A report parameter is created automatically for the dataset parameter.
4. In the Repor t Data pane, expand the Parameters node, right-click the report parameter that was
automatically created for the dataset parameter, and then click Parameter Proper ties .
5. In the General tab, select Allow multiple values to allow a user to select more than one value for the
parameter.
6. (Optionally) In the Available values tab, specify a list of available values to display to the user.
An available values list limits the choices a user can make to only valid values for the parameter. For
multiple values, the top of list begins with a Select All feature so the user can select or clear all values
with a single click. If you choose to get the available values for the report parameter from a dataset
query, be sure to select a dataset that does not contain the query variable that is associated with the same
report parameter.
For more information, see Add, Change, or Delete Available Values for a Report Parameter (Report
Builder and SSRS).
See Also
Add Cascading Parameters to a Report (Report Builder and SSRS)
Add, Change, or Delete a Report Parameter (Report Builder and SSRS)
Set Parameters on a Published Report - SharePoint
Integrated Mode
11/2/2020 • 4 minutes to read • Edit Online

A parameterized report is a report that accepts input values that are used to filter data when you run the report.
Parameters are defined when the report is created. Depending on how a report parameter is defined in the
report definition, it can accept a single value, multiple values, or dynamic values, which change in response to a
previous selection (for example, when you select product category, your next selection might be a specific
product from that category). A parameter can have a default value, which can be used to run a filtered version of
the report automatically or possibly be replaced with a different value.
These properties can be set in the report definition, or after the report is published. Although you can modify
some parameter properties in a published report to change the value and display properties, you cannot change
a parameter name or the data type. The parameter name and data type can only be changed by the report
author in the report definition.
To run a parameterized report, you typically must know which values to type, although a report might include
drop-down lists of valid values from which to choose.
To set parameter properties on a published report, you must have Edit Items permission for the report. You can
modify some or all of the parameter properties on a report that you run from a SharePoint site. You cannot
personalize a report by saving a combination of parameter values that you want to use repeatedly. Any default
values that you specify are used by all users who open the report.
If the report is embedded in a Report Viewer Web part that is configured to always show that report, set the
properties on the Report Viewer Web Part. For more information, see Add the Report Viewer Web Part to a Web
Page (Reporting Services in SharePoint Integrated Mode).
To run a parameterized report
1. Open the library that contains the report.
2. Click the report name. You must know in advance which reports have parameters. There is no visual
identifier on the report to indicate that it is parameterized.
3. When the report opens, specify the parameters you want to use. The Parameters area might be visible,
collapsed, or hidden depending on how properties are set on the Report Viewer Web Part.
a. If the Parameters area is visible, choose a value for each parameter.
b. If there is a thin strip of color that runs down the length of the report that has an arrow in the
middle of it, the Parameters area is collapsed. You can click the arrow to expand it.
c. If the Parameters area is hidden, you cannot specify a value.
4. Click Apply at the bottom of the Parameters area to run the report.
It is possible to specify a combination of values that do not give you the results you expect. The report
might need to be modified by the report author if you are not getting the information you require.
5. Click OK .
To set parameter properties
1. Open the library or folder that contains the report.
2. Point to the report and click the down arrow.
3. Click Manage Parameters . If the report contains parameters, each parameter will be listed on the page.
The list shows the parameter name, data type, data value that is used by default, and whether it is visible
in the parameter area when you open the report.
4. Click a parameter in the list to modify its settings.
5. In Default Value, enter a value for the parameter. The value will not be validated, so be sure that you are
providing a value that works for the report.
a. Choose Use value expression specified in repor t definition if you want to use the default
value that was defined when the report was created. If the report definition does not provide a
default value, this option will be unavailable.
b. Choose Override the repor t default value if you want to specify a replacement for the report
definition default value. Optionally, for report parameters that accept null values, you can select
the Null check box to prevent filtering based on that parameter.
c. Choose Parameter does not have a default value if you want each user to specify a value
before the report is processed. If you select this option, you should set display settings that prompt
the user to specify a value.
Note that if all parameter values have a default value, the report will automatically run with those values
when the user opens the report. However, if the parameter area is displayed, users can override the
default value and re-run the report.
6. Set display options to determine whether the parameter is visible.
a. Choose Prompt User to show the parameter on the page. You can specify prompt text that
appears within a field to provide a brief statement about the format or type of data that the user
must provide.
b. Choose Hidden if you are using a default value and you do not want the parameter to be visible in
the Parameters area.
c. Choose Internal if you are using a default value and you do not want the parameter to be visible
in the Parameters area or on subscription pages.
7. Click Apply .

See Also
SharePoint Site and List Permission Reference for Report Server Items
Customize the Parameters Pane in a Report (Report
Builder)
11/2/2020 • 2 minutes to read • Edit Online

When creating paginated reports with parameters in Report Builder, you can customize the Parameters pane. In
report design view, you can drag a parameter to a specific column and row in the Parameters pane. You can add
and remove columns to change the layout of the pane.
When you drag a parameter to a new column and row in the pane, the parameter order changes in the Repor t
Data pane. When you change the order of the parameter in the Repor t Data pane, the location of the
parameter in the pane is changed. For more information about why parameter order is important, see Change
the Order of a Report Parameter (Report Builder and SSRS).

To customize the parameters pane


1. On the View tab, select the Parameters checkbox to display the parameters pane.

The pane appears at the top of the design surface.


2. To add a parameter to the pane, do one of the following.
Right click an empty cell in the parameters pane, and then click Add Parameter .

Right click Parameters in the Repor t Data pane, and then click Add Parameter .
3. To move a parameter to a new location in the parameters pane, drag the parameter to a different cell in
the pane.
When you change the location of the parameter in the pane, the order of the parameter in the
Parameters list in the Repor t Data pane is automatically changed. For more information about the
impact of the parameter order, see Change the Order of a Report Parameter (Report Builder and SSRS)
4. To access the properties for a parameter, do one of the following.
Right click the parameter in the parameters pane, and then click Parameter Proper ties .

Right click the parameter in the Repor t Data pane, and then click Parameter Proper ties .
5. To add new columns and rows to the pane, or delete existing rows and columns, right click anywhere in
the parameters pane and then click a command on the menu that displays.

IMPORTANT
When you delete a column or row that contains parameters, the parameters are deleted from the report.

6. To delete a parameter from the pane and from the report, do one of the following.
Right click the parameter in the parameters pane, and then click Delete .
Right click parameter in the Repor t Data pane, and then click Delete .

Hidden/Internal parameters during runtime


If you have a hidden/internal parameter, the logic of whether it will be rendered as empty space during runtime
is as follows:
If any row or column contains only hidden/internal parameters or empty cells, then the entire row or column
won't be rendered during runtime
Otherwise, the hidden/internal parameter or empty cell will be rendered as empty space
For example, ReportParameter1 is hidden while the rest of the parameters are visible:

This will result as an empty space during runtime because there are visible parameters in first column or first
row:

Using the same example, if you also set ReportParameter3 as hidden:

Then the first column is not rendered during runtime because the entire column is considered empty:

Default layout
For reports that were authored before SQL Server Reporting Services 2016, a default parameter layout grid of 2
columns and N rows will be used during runtime. To change the default layout, open the report in Microsoft
Report Builder and save the report. After saving the report, the customized parameter layout information will be
saved to the .rdl file.

See also
Report Parameters (Report Builder and Report Designer)
Filter, Group, and Sort Data (Report Builder and
SSRS)
11/2/2020 • 13 minutes to read • Edit Online

In a report, expressions are used to help control, organize, and sort report data. By default, as you create
datasets and design the report layout, properties of report items are set automatically to expressions based on
the dataset fields, parameters, and other items that appear in the Report Data pane. You can also add an
interactive sort button to a table or matrix cell to enable a user to interactively change the row sort order for
groups or rows within groups.
Filter expressions A filter expression tests data for inclusion or exclusion based on a comparison that
you specify. Filters are applied to data in a report after the data is retrieved from a data connection. You
can add any combination of filters to the following items: a shared dataset definition on the report server;
a shared dataset instance or embedded dataset in a report; a data region such as a table or a chart; or a
data region group, such as a row group in a table or a category group in a chart.
Group expressions A group expression organizes data based on a dataset field or other value. Group
expressions are created automatically as you build the report layout. The report processor evaluates
group expressions after filters are applied to the data, and as report data and data regions are combined.
You can customize a group expression after it is created.
Sor t expressions A sort expression controls the order in which data appears in a data region. Sort
expressions are created automatically as you build the report layout. By default, a sort expression for a
group is set to the same value as the group expression. You can customize a sort expression after it is
created.
Interactive sor t To enable a user to sort or reverse the sort order of a column, you can add an
interactive sort button to a column header or group header cell in a table or matrix.
To help your users customize filter, group, or sort expressions, you can change an expression to add a reference
to a report parameter. For more information, see Report Parameters (Report Builder and Report Designer).
For more information and examples, see the following topics:
Group Expression Examples (Report Builder and SSRS)
Filter Equation Examples (Report Builder and SSRS)
Report Builder Tutorials
Reporting Services Tutorials (SSRS)
Report Samples (Report Builder and SSRS)

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Filtering Data in the Report


Filters are parts of a report that help control report data after it is retrieved from the data connection. Use filters
when you cannot change a dataset query to filter data before it is retrieved from an external data source.
When it is possible, build dataset queries that return only the data that you need to display in the report. When
you reduce the amount of the data that must be retrieved and processed, you are helping to improve report
performance. For more information, see Report Embedded Datasets and Shared Datasets (Report Builder and
SSRS).
After the data is retrieved from the external data source, you can add filters to datasets, data regions, and data
region groups, including detail groups. Filters are applied at run time first on the dataset, and then on the data
region, and then on the group, in top-down order for group hierarchies. In a table, matrix, or list, filters for row
groups, column groups, and adjacent groups are applied independently. In a chart, filters for category groups
and series groups are applied independently. For more information, see Add Dataset Filters, Data Region Filters,
and Group Filters (Report Builder and SSRS).
For each filter, you specify a filter equation. A filter equation includes a dataset field or expression that specifies
the data to filter, an operator, and a value to compare. Only those data values that match the filter condition are
included when the item is processed.
To enable your users to help control the data in a report, you can include parameters in filter expressions. For
more information, see Parameters Collection References (Report Builder and SSRS).
To customize a view for each user, you can include a reference to the built-in field UserID in a filter. For more
information, see Built-in Globals and Users References (Report Builder and SSRS).

Grouping Data in the Report


Groups organize data in a report for display or for calculating aggregate values. Understanding how to define
groups and use group features helps you to design reports that are more concise.
Group expressions are created automatically when you do the following:
Arrange dataset fields in a Table, Matrix, Chart wizard or match fields in the Map wizard.
In a table, matrix, or list, add a field to the Row Groups or Column Groups area in the Grouping pane.
In a chart, add a field to the Category Groups or Series Groups area in the Chart data pane.
In a map, specify a field to match map elements with analytical data in the Layer Data context menu item.
A group is a part of the report definition. Each group has a name. By default, the group name is the dataset field
that it is based on.
In a table or matrix data region, you can create multiple row groups and column groups. You can display your
data in a visual hierarchy by organizing nested groups, adjacent groups, and recursive hierarchy groups (such as
an organizational chart).
The group name identifies an expression scope. You can specify the name of a group as a scope in which to
calculate aggregates, to organize data hierarchically and toggle the display of child nodes from parent nodes in
a drilldown report, to display different views of the same data on multiple data regions, and to visualize
summary data in a table, matrix, chart, gauge, or map. For more information, see Expression Scope for Totals,
Aggregates, and Built-in Collections (Report Builder and SSRS).
To group on several dataset fields, add each field to the set of group expressions. You can also write your own
group expressions in Microsoft Visual Basic. For example, you can group by a range of values, or by using a
report parameter to enable your user to select how to group data in a data region. For more information, see
Group Expression Examples (Report Builder and SSRS).
For report presentation, you can add page breaks before and after each group, or each instance of a group, to
reduce the amount of data on each page and help you manage report rendering performance. For more
information, see Add a Page Break (Report Builder and SSRS).
Creating data region groups is one way to organize data in a report. There are several other ways to organize
data, each with its own advantages. For more information, see Drillthrough, Drilldown, Subreports, and Nested
Data Regions (Report Builder and SSRS).
Defining Group Variables
When you define a group, you can create a group variable to use in expressions that are scoped to the group
and accessed from nested groups. A group variable is calculated once per group instance and can be accessed
from expressions in child groups. For example, for data that is grouped by region and subregion, you can
calculate a tax for each region and use that tax in calculations from the subregion group.
For more information, see Report and Group Variables Collections References (Report Builder and SSRS) and
Expression Scope for Totals, Aggregates, and Built-in Collections (Report Builder and SSRS).
Groups and Scope in Data Regions
To provide multiple views of data from the same dataset, you can specify the same group expressions for eac
data region. For example, you can display categorized data in a table to show all detail data and in a pie chart to
show aggregates and to help visualize each category in relation to the entire dataset. For more information, see
Linking Multiple Data Regions to the Same Dataset (Report Builder and SSRS).
When you nest a data region in a cell in a table, matrix, or list, you are automatically scoping the data to the
innermost group memberships of the cell. For example, assume that you add a chart to a cell that is in both a
row group and a column group. The data available to that chart is scoped to the innermost row group instance
and innermost column group instance at run time. For more information, see Expression Scope for Totals,
Aggregates, and Built-in Collections (Report Builder and SSRS).

Sorting Data in the Report


To control the sort order of data in your report, you can sort data in a dataset query, or define a sort expression
for a data region or group. You can also add interactive sort buttons to tables and matrices to enable a user to
change the sort order for rows.
All three types of sorts can be combined in the same report. By default, sort order is determined by the order in
which data is returned by the dataset query. Sort expressions are applied in the data region and data region
group. Interactive sorts are applied after sort expressions.
For expressions that contain aggregate functions, most results are not affected by sort order. Return values for
the following aggregate functions are affected by sort order:: First, Last, and Previous. For more information, see
Aggregate Functions Reference (Report Builder and SSRS).
Sorting Data in a Dataset Query
Include sort order in the dataset query to pre-sort data before it is retrieved for a report. By sorting data in the
query, the sorting work is done by the data source instead of by the report processor.
For a Microsoft SQL Server data source type, you can add an ORDER BY clause to the dataset query. For
example, the following Transact-SQL query sorts the columns Sales and Region by Sales in descending order
from the table SalesOrders: SELECT Sales, Region FROM SalesOrders ORDER BY Sales DESC .

NOTE
Not all data sources support the ability to specify sort order in the query.

Sorting Data with Sort Expressions


To sort data in the report after it is retrieved from the data source, you can set sort expressions on a Tablix data
region or a group, including the details group. The following list describes the effect of setting sort expressions
on different items:
Tablix data region. Set sort expressions on a table, matrix, or list data region to control the sort order of
data in the data region, after dataset filters and data region filters are applied at run time.
Tablix data region group. Set sort expressions for each group, including the details group, to control
the sort order of group instances. For example, for the details group, you control the order of the detail
rows. For a child group, you control the order of group instances for the child group within the parent
group. By default, when you create a group, the sort expression is set to the group expression and to
ascending order.
If you have only one details group, you can define a sort expression in the query, on the data region, or
on the details group to the same effect.
Char t data region. Set a sort expression for the category and series groups to control the sort order for
data points. By default, the order of data points is also the order of the colors in the chart legend. For
more information, see Formatting Series Colors on a Chart (Report Builder and SSRS).
Map repor t item. You do not typically need to sort data for a map data region because the map groups
data to display on map elements.
Gauge data region. You do not typically need to sort data for a gauge data region because the gauge
displays a single value relative to a range. If you do need sort data in a gauge, you must first define a
group, and then set a sort expression for the group.
Sorting by a Different Value
You might want to sort the rows in a data region by a value other than the field value. For example, suppose that
the field Size contains text values that correspond to small, medium, large, and extra large. By default, the sort
expression for a row group based on Size is also [Size]. To have more control over the way that data is sorted,
you can add a field to the dataset query that defines the sort order that you want.
Alternatively, you can define a dataset that includes only the sizes and a value that specifies the order that you
want. You can change the sort expression to use the Lookup function for the sort order value.
For example, assume that the following Transact-SQL query defines a dataset named Sizes. The query uses a
CASE statement to define a sort order value SizeSortOrder for each value of Size:

SELECT Size,
CASE Size
WHEN 'S' THEN 1
WHEN 'M' THEN 2
WHEN 'L' THEN 3
WHEN 'XL' THEN 4
ELSE 0
END as SizeSortOrder
FROM Production.Product

In a table that has a row group based on [Size] , you can change the group sort expression to use a Lookup
function to find the numeric field that corresponds to the size value. The expression would be similar to this:

=Lookup(Fields!Size.Value, Fields!Size.Value, Fields!SizeSortOrder.Value, "Sizes")

For more information, see Sort Data in a Data Region (Report Builder and SSRS) and Lookup Function (Report
Builder and SSRS).
Adding Interactive Sorting for the User
To enable a user to change the sort order of report data in a table or matrix, you can add interactive sort buttons
to column headers or group headers. Users can click the button to toggle the sort order. Interactive sort is
supported in rendering formats that allow user interaction, such as HTML.
You add interactive sort buttons to a text box in a tablix data region cell. By default, every cell contains a text box.
In the text box properties, you specify which part of a table or matrix data region to sort (the parent group
values, the child group values, or the detail rows), what to sort by, and whether to apply the sort expression to
other report items that have a peer relationship. For example, if a table and a chart that provide views on the
same dataset are contained in a rectangle, they are peer data regions. When a user toggles the sort order in the
table, the sort order for the chart also toggles. For more information, see Interactive Sort (Report Builder and
SSRS).

How-To Topics
Keep Headers Visible When Scrolling Through a Report (Report Builder and SSRS)
Display Headers and Footers with a Group (Report Builder and SSRS)
Add Interactive Sort to a Table or Matrix (Report Builder and SSRS)
Set a No Data Message for a Data Region (Report Builder and SSRS)
Create a Recursive Hierarchy Group (Report Builder and SSRS)
Add or Delete a Group in a Data Region (Report Builder and SSRS)
Display Headers and Footers with a Group (Report Builder and SSRS)
Add or Delete a Group in a Chart (Report Builder and SSRS)
Add a Total to a Group or Tablix Data Region (Report Builder and SSRS)

In This Section
Group Expression Examples (Report Builder and SSRS)
Filter Equation Examples (Report Builder and SSRS)
Add Dataset Filters, Data Region Filters, and Group Filters (Report Builder and SSRS)

Related Sections
Understanding Groups (Report Builder and SSRS)
Creating Recursive Hierarchy Groups (Report Builder and SSRS)
Expression Scope for Totals, Aggregates, and Built-in Collections (Report Builder and SSRS)
Report and Group Variables Collections References (Report Builder and SSRS)
Displaying a Series with Multiple Data Ranges on a Chart (Report Builder and SSRS)
Linking Multiple Data Regions to the Same Dataset (Report Builder and SSRS)

See Also
Expressions (Report Builder and SSRS)
Tables, Matrices, and Lists (Report Builder and SSRS)
Charts (Report Builder and SSRS)
Maps (Report Builder and SSRS)
Sparklines and Data Bars (Report Builder and SSRS)
Gauges (Report Builder and SSRS)
Indicators (Report Builder and SSRS)
Group Expression Examples (Report Builder and
SSRS)
11/2/2020 • 2 minutes to read • Edit Online

In a data region, you can group data by a single field, or create more complex expressions that identify the data
on which to group. Complex expressions include references to multiple fields or parameters, conditional
statements, or custom code. When you define a group for a data region, you add these expressions to the
Group properties. For more information, see Add or Delete a Group in a Data Region (Report Builder and
SSRS).
To merge two or more groups that are based on simple field expressions, add each field to the group
expressions list in the group definition.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Examples of Group Expressions


The following table provides examples of group expressions that you can use to define a group.

DESC RIP T IO N EXP RESSIO N

Group by the Region field. =Fields!Region.Value

Group by last name and first name. =Fields!LastName.Value

=Fields!FirstName.Value

Group by the first letter of the last name. =Fields!LastName.Value.Substring(0,1)

Group by parameter, based on user selection. =Fields(Parameters!GroupBy.Value).Value

In this example, the parameter GroupBy must be based on


an available values list that provides a valid choice to group
on.

Group by three separate age ranges: =IIF(First(Fields!Age.Value)<21,"Under 21",


(IIF(First(Fields!Age.Value)>=21 AND
First(Fields!Age.Value)<=50,"Between 21 and
"Under 21", "Between 21 and 50", and "Over 50". 50","Over 50")))
DESC RIP T IO N EXP RESSIO N

Group by many age ranges. This example shows custom =Code.GetRangeValueByAge(Fields!Age.Value)


code, written in Visual Basic .NET, that returns a string for
the following ranges: Custom code:
25 or Under Function GetRangeValueByAge(ByVal age As Integer)
As String
26 to 50
Select Case age
51 to 75
Case 0 To 25
Over 75
GetRangeValueByByAge = "25 or Under"

Case 26 To 50

GetRangeValueByByAge = "26 to 50"

Case 51 to 75

GetRangeValueByByAge = "51 to 75"

Case Else

GetRangeValueByByAge = "Over 75"

End Select

Return GetRangeValueByByAge

End Function

See Also
Filter, Group, and Sort Data (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Custom Code and Assembly References in Expressions in Report Designer (SSRS)
Filter Equation Examples (Report Builder and SSRS)
5/20/2020 • 2 minutes to read • Edit Online

To create a filter, you must specify one or more filter equations. A filter equation includes an expression, a data
type, an operator, and a value. This topic provides examples of commonly used filters.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Filter Examples
The following table shows examples of filter equations that use different data types and different operators. The
scope for the comparison is determined by report item for which a filter is defined. For example, for a filter
defined on a dataset, TOP % 10 is the top 10 percent of values in the dataset; for a filter defined on a group,
TOP % 10 is the top 10 percent of values in the group.

SIM P L E EXP RESSIO N DATA T Y P E O P ERATO R VA L UE DESC RIP T IO N

[SUM(Quantity)] Integer > 7 Includes data values


that are greater than
7.

[SUM(Quantity)] Integer TOP N 10 Includes the top 10


data values.

[SUM(Quantity)] Integer TOP % 20 Includes the top 20%


of data values.

[Sales] Text > =CDec(100) Includes all values of


type System.Decimal
(SQL "money" data
types) greater than
$100.

[OrderDate] DateTime > 2008-01-01 Includes all dates


from January 1, 2008
to the present date.

[OrderDate] DateTime BETWEEN 2008-01-01 Includes dates from


January 1, 2008 up
2008-02-01 to and including
February 1, 2008.

[Territory] Text LIKE *east All territory names


that end in "east".
SIM P L E EXP RESSIO N DATA T Y P E O P ERATO R VA L UE DESC RIP T IO N

[Territory] Text LIKE %o%th* All territory names


that include North
and South at the
beginning of the
name.

Text
=LEFT(Fields!Subcat.Value,1) IN B, C, T All subcategory
values that begin
with the letters B, C,
or T.

See Also
Report Parameters (Report Builder and Report Designer)
Add Dataset Filters, Data Region Filters, and Group Filters (Report Builder and SSRS)
Data Types in Expressions (Report Builder and SSRS)
Expression Uses in Reports (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Add Dataset Filters, Data Region Filters, and Group
Filters
11/2/2020 • 6 minutes to read • Edit Online

In a report, a filter is a part of a dataset, a data region, or a data region group that you create to limit the data
that is used in the report. Filters are a way to help you control report data if you cannot change the dataset
query, for example, if you are using a shared dataset.
Filters help you control which data is displayed and processed in a report. You can specify filters for a dataset, a
data region, or a group, in any combination.
For more information, see Add a Filter to a Dataset (Report Builder and SSRS) and Filter Equation Examples
(Report Builder and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Choosing When to Set a Filter


Specify filters for report items when you cannot filter data at the source. For example, use report filters when the
data source does not support query parameters, or you must run stored procedures and cannot modify the
query, or a parameterized report snapshot displays customized data for different users.
You can filter report data before or after it is retrieved for a report dataset. To filter data before it is retrieved,
change the query for each dataset. When you filter data in the query, you filter data at the data source, which
reduces the amount data that must be retrieved and processed in a report. To filter data after it is retrieved,
create filter expressions in the report. You can set filter expressions for a dataset, a data region, or a group,
including detail groups. You can also include parameters in filter expressions, providing a way to filter data for
specific values or for specific users, for example, filtering on a value that identifies the user viewing the report.

Choosing Where to Set a Filter


Determine where you want to set a filter by the effect you want to achieve in your report. At run time, the report
processor applies filters in the following order: on the dataset, and then on the data region, and then on groups
from the top down in each group hierarchy. On a table, matrix, and list, filters for row groups, column groups,
and adjacent groups are applied independently. On a chart, filters for category groups and series groups are
applied independently. When the report processor applies the filter, all filter equations are applied in the order
they are defined on the Filter page of the Proper ties dialog box for each report item, which is the equivalent of
combining them with Boolean AND operations.
The following list compares the effect of setting filters on different report items:
On the dataset Set a filter on the dataset when you want one or more data regions that are bound to a
single dataset to be filtered in the same way. For example, set the filter on the dataset that is bound to
both a table that displays sales data and a chart that displays the same data.
On the data region Set a filter on the data region when you want one or more data regions that are
bound to a single dataset to provide a different view of the dataset. For example, set the filter on one
Table data region to display the top ten stores for sales and a different Table data region to display the
bottom ten stores for sales in the same report.
On the row or column groups in a Tablix data region Set a filter on a group when you want to
include or exclude certain values for a group expression to control which group values appear in the
table, matrix, or list.
On the details group in a Tablix data region Set a filter on the details group when you have multiple
detail groups for a data region and want each detail group to display a different set of data from the
dataset.
On the series or categor y groups in a Char t data region Set a filter on a series or category group
when you want to include or exclude certain values for a group expression to control which values
appear in the chart.
Back to Top

Understanding a Filter Equation


At run time, the report processor converts the value to the specified data type, and then uses the specified
operator to compare the expression and value. The following list describes each part of the filter equation:
Expression Defines what you are filtering on. Typically, this is a dataset field.
Data Type Specifies the data type to use when the filter equation is evaluated at run time by the report
processor. The data type you select must be one of the data types supported by the report definition
schema.
Operator Defines how to compare the two parts of the filter equation.
Value Defines the expression to use in the comparison.
The following sections describe each part of the filter equation.
Expression
When the filter equation is evaluated by the report processor at run time, the data types for the expression and
the value must be the same. The data type of the field you select for Expression is determined by the data
processing extension or data provider that is used to retrieve data from the data source. The data type of the
expression that you enter for Value is determined by Reporting Services defaults. The choices for data type are
determined by the data types supported for a report definition. Values from the database might be converted by
the data provider to a CLR type.
Data Type
For the report processor to compare two values, the data types must be the same. The following table lists the
mapping between CLR data types and report definition data types. Data that you retrieve from a data source
might be converted to a data type that is different by the time it is report data.

REP O RT DEF IN IT IO N SC H EM A DATA T Y P E C L R T Y P E( S)

Boolean Boolean

DateTime DateTime , DateTimeOffset

Integer Int16 , Int32 , UInt16 , Byte , SByte

Float Single , Double , Decimal


REP O RT DEF IN IT IO N SC H EM A DATA T Y P E C L R T Y P E( S)

Text String , Char , GUID , Timespan

In cases where you must specify a data type, you can specify your own conversion in the Value part of the
expression.
Operator
The following table lists the operators that you can use in a filter equation, and what the report processor uses
to evaluate the filter equation.

O P ERATO R A C T IO N

Equal, Like, NotEqual, GreaterThan, Compares the expression to one value.


GreaterThanOrEqual, LessThan, LessThanOrEqual

TopN, BottomN Compares the expression to one Integer value.

TopPercent, BottomPercent Compares the expression to one Integer or Float value.

Between Tests whether the expression is between two values,


inclusive.

In Tests whether the expression is contained in a set of values.

Value
The Value expression specifies the final part of the filter equation. The report processor converts the evaluated
expression to the data type that you specified, and then evaluates the entire filter equation to determine if the
data specified in Expression passes through the filter.
To convert to a data type that is not a standard CLR data type, you must modify the expression to explicitly
convert to a data type. You can use the conversion functions listed in the Expression dialog box under
Common Functions , Conversion . For example, for a field ListPrice that represents data that is stored as a
money data type on a SQL Server data source, the data processing extension returns the field value as a
Decimal data type. To set a filter to use only values greater than $50000.00 in the report currency, convert the
value to Decimal by using the expression =CDec(50000.00) .
This value can also include a parameter reference to allow a user to interactively select a value on which to filter.
Back to Top

See Also
Expression Uses in Reports (Report Builder and SSRS)
Report Parameters (Report Builder and Report Designer)
Add a Filter (Report Builder and SSRS)
5/20/2020 • 5 minutes to read • Edit Online

Add a filter to a dataset, data region, or group when you want to include or exclude specific values for
calculations or display. Filters are applied at run time first on the dataset, and then on the data region, and then
on the group, in top-down order for group hierarchies. In a table, matrix, or list, filters for row groups, column
groups, and adjacent groups are applied independently. In a chart, filters for category groups and series groups
are applied independently.
To add a filter, you must specify one or more filter equations. A filter equation consists of an expression that
identifies the data that you want to filter, an operator, and the value to compare to. The data types of the filtered
data and the value must match. Filtering on aggregate values for a dataset or data region is not supported.
To filter data points in a chart, you can set a filter on a category group or a series group. By default, the chart
uses the built-in function Sum to aggregate values that belong to the same group into an individual data point
in the series. If you change the aggregate function of a series, you must change the aggregate function in the
filter expression.
For more information about filtering embedded and shared datasets, see Add a Filter to a Dataset (Report
Builder and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To set a filter on a data region


1. Open a report in Design view.
2. Select the data region on the design surface, and then right-click <data region>Proper ties . For a gauge,
select Gauge Panel Proper ties . The <data region>Proper ties dialog box opens.

NOTE
On a Tablix data region, right-click the corner cell or a row or column handle, and then click Tablix Proper ties .

3. Click Filters . This displays the current list of filter equations. By default, the list is empty.
4. Click Add . A new blank filter equation appears.
5. In Expression , type or select the expression for the field to filter. To edit the expression, click the
expression (fx) button.
6. From the drop-down box, select the data type that matches the type of data in the expression you created
in step 5.
7. In the Operator box, select the operator that you want the filter to use to compare the values in the
Expression box and the Value box. The operator you choose determines the number of values that are
used from the next step.
8. In the Value box, type the expression or value against which you want the filter to evaluate the value in
Expression .
For examples of filter equations, see Filter Equation Examples (Report Builder and SSRS).
9. Click OK .
To set a filter on a Tablix row or column group
1. Open a report in Design view.
2. Right-click the table, matrix, or list data region on the design surface to select it. The Grouping pane
displays the groups for the selected item.
3. In the Grouping pane, right-click the group, and then click Edit Group . The Tablix Group dialog box
opens.
4. Click Filters . This displays the current list of filter equations. By default, the list is empty.
5. Click Add . A new blank filter equation appears.
6. In Expression , type or select the expression for the field to filter. To edit the expression, click the
expression (fx) button.
7. From the drop-down box, select the data type that matches the type of data in the expression you created
in step 5.
8. In the Operator box, select the operator that you want the filter to use to compare the values in the
Expression box and the Value box. The operator you choose determines the number of values that are
used from the next step.
9. In the Value box, type the expression or value against which you want the filter to evaluate the value in
Expression .
For examples of filter equations, see Filter Equation Examples (Report Builder and SSRS).
10. Click OK .
To set a filter on a Chart category group
1. Open a report in Design view.
2. On the design surface, click the chart twice to bring up data, series and category field drop zones.
3. Right-click on a field contained in the category field drop zone and select Categor y Group Proper ties .
4. Click Filters . This displays the current list of filter equations. By default, the list is empty.
5. Click Add . A new blank filter equation appears.
6. In Expression , type or select the expression for the field to filter. To edit the expression, click the
expression (fx) button.
7. From the drop-down box, select the data type that matches the type of data in the expression you created
in step 5.
8. In the Operator box, select the operator that you want the filter to use to compare the values in the
Expression box and the Value box. The operator you choose determines the number of values that are
used from the next step.
9. In the Value box, type the expression or value against which you want the filter to evaluate the value in
Expression .
For examples of filter equations, see Filter Equation Examples (Report Builder and SSRS).
10. Click OK .
To set a filter on a Chart series group
1. Open a report in Design view.
2. On the design surface, click the chart twice to bring up data, series and category field drop zones.
3. Right-click on a field contained in the series field drop zone and select Series Group Proper ties .
4. Click Filters . This displays the current list of filter equations. By default, the list is empty.
5. Click Add . A new blank filter equation appears.
6. In Expression , type or select the expression for the field to filter. To edit the expression, click the
expression (fx) button.
7. From the drop-down box, select the data type that matches the type of data in the expression you created
in step 5.
8. In the Operator box, select the operator that you want the filter to use to compare the values in the
Expression box and the Value box. The operator you choose determines the number of values that are
used from the next step.
9. In the Value box, type the expression or value against which you want the filter to evaluate the value in
Expression .
For examples of filter equations, see Filter Equation Examples (Report Builder and SSRS).
10. Click OK .

See Also
Add Dataset Filters, Data Region Filters, and Group Filters (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Gauges (Report Builder and SSRS)
Tables, Matrices, and Lists (Report Builder and SSRS)
Charts (Report Builder and SSRS)
Sort Data in a Data Region (Report Builder and
SSRS)
11/2/2020 • 4 minutes to read • Edit Online

To change the sort order of data in a data region when a report first runs, you must set the sort expression on
the data region or group. By default, the sort expression for a group is automatically set to the same value as the
group expression.
In a tablix data region, set the sort expression for the data region or for each group, including the details
group. If you have only one details group in a tablix data region, you can define a sort expression in the
query, on the data region, or on the details group and they all have the same effect.
In a chart data region, set the sort expression for the Category and Series groups to control the sort
order for each group. The order for colors in a chart legend is determined by the sort expression for the
data points in the Category group.
In a gauge data region, you do not typically need to sort data because the gauge displays a single value
relative to a range. If you do need sort data in a gauge, you must first define a group, and then set the
sort expression for the group.
For more information, see Filter, Group, and Sort Data (Report Builder and SSRS).
For a tablix data region, you can also add an interactive sort button to the top of a column header to provide the
user with the ability to change the sort order of groups or detail rows. For more information, see Interactive Sort
(Report Builder and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To sort data in a Tablix data region


1. On the design surface, right-click a row handle, and then click Tablix Proper ties .
2. Click Sor ting .
3. For each sort expression, follow these steps:
a. Click Add .
b. Type or select an expression by which to sort the data.
c. From the Order column drop-down list, choose the sort direction for each expression. A-Z sorts
the expression in ascending order. Z-A sorts the expression in descending order.
4. Click OK .
To sort values in a group, including the details group, for a Tablix
1. On the design surface, click in the tablix data region to select it. The Grouping pane displays the row
groups and column groups for the Tablix data region.
2. In the Row Groups pane, right-click the group name, and then click Edit Group .
3. In the Tablix Group dialog box, click Sor t .
4. For each sort expression, follow these steps:
a. Click Add .
b. Type or select an expression by which to sort the data.
c. From the Order column drop-down list, choose the sort direction for each expression. A-Z sorts
the expression in ascending order. Z-A sorts the expression in descending order.
5. Click OK .
To sort x-axis labels in alphabetical order on a chart
1. Right-click a field in the Category Field drop-zone and click Categor y GroupProper ties .
2. In the Categor y Group Proper ties dialog box, click Sor ting .
3. For each sort expression, follow these steps:
a. Click Add .
b. Select the expression that matches your grouping field. You can verify the expression for the
grouping field by clicking Grouping .
c. From the Order column drop-down list, choose the sort direction for each expression. A-Z sorts
the expression in ascending alphabetical order. Z-A sorts the expression in descending
alphabetical order.
4. Click OK .
To sort the data points in ascending or descending order on a chart
1. Right-click a field in the Category Field drop zone and click Categor y GroupProper ties .
2. In the Categor y Group Proper ties dialog box, click Sor ting .
3. For each sort expression, follow these steps:
a. Click Add .
b. Select the expression that matches your data field. In most cases, this is an aggregated value, such
as =Sum(Fields!Quantity.Value) .
c. From the Order column drop-down list, choose the sort direction for each expression. A-Z sorts
the expression in ascending order. Z-A sorts the expression in descending order.
4. Click OK .
To sort data in ascending or descending order for display on a gauge
1. Right-click the gauge and click Add Data Group .
2. In the Gauge Panel GroupProper ties dialog box, click General if necessary.
3. In Group expressions , click Add .
4. In Group on , type or select an expression by which to group the data.
5. Repeat steps 3 and 4 until you have added all the group expressions you want to use.
6. Click Sor ting .
7. For each sort expression, follow these steps:
a. Click Add .
b. Select the expression that matches your grouping field. You can verify the expression for the
grouping field by clicking Grouping .
c. From the Order column drop-down list, choose the sort direction for each expression. A-Z sorts
the expression in ascending order. Z-A sorts the expression in descending order.
8. Click OK .
For more information about how data is grouped in a gauge, see Gauges (Report Builder and SSRS).

See Also
Charts (Report Builder and SSRS)
Formatting Axis Labels on a Chart (Report Builder and SSRS)
Specify Consistent Colors across Multiple Shape Charts (Report Builder and SSRS)
Commonly Used Filters (Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

To create a filter, you must specify one or more filter equations. A filter equation includes an expression, a data
type, an operator, and a value. This topic provides examples of commonly used filters.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Filter Examples
The following table shows examples of filter equations that use different data types and different operators. The
scope for the comparison is determined by report item for which a filter is defined. For example, for a filter
defined on a dataset, TOP % 10 is the top 10 percent of values in the dataset; for a filter defined on a group,
TOP % 10 is the top 10 percent of values in the group.

SIM P L E EXP RESSIO N DATA T Y P E O P ERATO R VA L UE DESC RIP T IO N

[SUM(Quantity)] Integer > 7 Includes data values


that are greater than
7.

[SUM(Quantity)] Integer TOP N 10 Includes the top 10


data values.

[SUM(Quantity)] Integer TOP % 20 Includes the top 20%


of data values.

[Sales] Text > =CDec(100) Includes all values of


type System.Decimal
(SQL "money" data
types) greater than
$100.

[OrderDate] DateTime > 2088-01-01 Includes all dates


from January 1, 2008
to the present date.

[OrderDate] DateTime BETWEEN 2008-01-01 Includes dates from


January 1, 2008 up
2008-02-01 to and including
February 1, 2008.

[Territory] Text LIKE *east All territory names


that end in "east".
SIM P L E EXP RESSIO N DATA T Y P E O P ERATO R VA L UE DESC RIP T IO N

[Territory] Text LIKE %o%th* All territory names


that include North
and South at the
beginning of the
name.

Text
=LEFT(Fields!Subcat.Value,1) IN B, C, T All subcategory
values that begin
with the letters B, C,
or T.

Examples with Report Parameters


The following table provides examples of filter expression that includes a single-value or multivalue parameter
reference.

PA RA M ET ER T Y P E ( F ILT ER) EXP RESSIO N O P ERATO R VA L UE DATA T Y P E

Single value [EmployeeID] = [@EmployeeID] Integer

Multivalue [EmployeeID] IN [@EmployeeID] Integer

See Also
Report Parameters (Report Builder and Report Designer)
Add Dataset Filters, Data Region Filters, and Group Filters (Report Builder and SSRS)
Expression Uses in Reports (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Data Types in Expressions (Report Builder and SSRS)
Grouping Pane (Report Builder)
11/2/2020 • 5 minutes to read • Edit Online

The Grouping pane displays the row groups and column groups for the currently selected tablix data region. The
Grouping pane is not available for the Chart or Gauge data regions. The Grouping pane contains a Row Groups
pane and a Column Groups pane. The Grouping pane has two modes: default and Advanced. Default mode
displays a hierarchical view of the dynamic members for row and column groups. Advanced mode displays both
dynamic and static members for row and column groups. A group is a named set of data from a report dataset
that is displayed on a data region. Groups are organized into hierarchies that include static and dynamic
members. For more information, see Understanding Groups (Report Builder and SSRS).

NOTE
If you do not see the Grouping pane, on the View tab, in the Show/Hid e group, click Grouping .

Cells in the row and column group areas can be static or dynamic members of a tablix row or column group.
Static members repeat once per group and typically contain labels or totals. Dynamic members repeat once per
group instance and typically contain the unique values of the group expression. As you select tablix cells in the
row group area or column group area, the corresponding group member is selected in the Row Groups or
Column Groups pane. Conversely, if you select groups in the Grouping pane, the corresponding cell associated
with the group member is selected on the design surface. For more information about tablix row and column
group areas, see Tablix Data Region Areas (Report Builder and SSRS).
The Grouping pane supports the following modes:
Default. Use the default mode to add, edit, or delete groups. You can add parent, child, and detail groups
by dragging fields from the Report Data pane and inserting them in the group hierarchy. To add an
adjacent group, you must use the Add Group shortcut. For more information, see Add or Delete a Group
in a Data Region (Report Builder and SSRS).
Advanced . Use the Advanced mode to view all members of row and column groups, and to set
properties on static members. When you create groups or add totals, the properties that control how the
tablix data region renders rows and columns on each report page are set automatically. To manually
adjust these properties, you must set them on the tablix member. For more information, see Controlling
the Tablix Data Region Display on a Report Page (Report Builder and SSRS).

Default Mode
In default mode, the Row Groups pane and the Column Groups pane display a hierarchical view for all parent
groups, child groups, and adjacent groups. A child group appears indented under its parent group. An adjacent
group appears at the same indent level as its sibling groups. The following figure shows a tablix data region with
nested row groups and nested and adjacent column groups.

The Grouping pane displays the corresponding row and column groups. In the following figure, the group based
on subcategory has been selected in the Row Groups pane, and the [Subcat] grouping cell is selected in the
tablix data region:

In the Row Groups pane, the group based on subcategory is a child of the group based on category. In the
Column Groups pane, the country/region group is a child of the geography group. The year group and the
country/region groups are adjacent groups.
For more information, see Tablix Data Region Cells, Rows, and Columns (Report Builder) and SSRS.

Advanced Mode
In Advanced mode, the Row Groups pane and the Column Groups pane display a hierarchical view for all
groups, including both static and dynamic members. When you select a member, the Properties pane displays
properties for the currently selected tablix member.

NOTE
To toggle Advanced mode , right-click the down arrow at the side of the Column Groups pane, and then click Advanced
Mode .

In most cases, properties that control the display of static and dynamic group rows and group columns are set
automatically when you create a group or add totals. To edit the default values, you must select the group
member in the Row or Column Groups pane, and change the property values in the Properties window. The
following properties are available:
FixedData . Boolean. For outer row and column headers. Freeze the row group area when scrolling
vertically or the column group area when scrolling horizontally in a renderer such as HTML.
HideIfNoRows . Boolean. For static members only. If set, Hidden and ToggleItem are ignored. Hide this
member if the tablix data region contains no rows of data.
KeepTogether . Boolean. Indicates that the entire tablix member and any nested members should be kept
together on one page, if possible.
KeepWithGroup . Boolean. For static row members only. Where possible, keep this row with the
previous or following sibling dynamic member, if it is not hidden. To keep a row header with its
associated group, set KeepWithGroup to After .
RepeatOnNewPage . Boolean. For static row members only and where KeepWithGroup is not None.
Where possible, repeat this static row on every page that has at least one instance of the dynamic
member specified by KeepWithGroup. To keep a row header with its associated group, set
RepeatOnNewPage to True .
Hidden . Boolean. Indicates whether the row or column should be initially hidden.
ToggleItem. String. The name of the text box to which to add the toggle image. The text box must be in
the same group scope or a containing scope.
For more information, see Controlling the Tablix Data Region Display on a Report Page (Report Builder and
SSRS), Display Headers and Footers with a Group (Report Builder and SSRS), and Display Row and Column
Headers on Multiple Pages (Report Builder and SSRS).
Not every static member has a header that corresponds to a cell on the design surface. In the Grouping pane,
the following convention indicates whether a static member has no header:
Static Indicates a static member with a header cell.
(Static) Indicates a static member with no header cell, known as a hidden static.

See Also
Filter, Group, and Sort Data (Report Builder and SSRS)
Tables, Matrices, and Lists (Report Builder and SSRS)
Drillthrough, Drilldown, Subreports, and Nested
Data Regions
5/20/2020 • 5 minutes to read • Edit Online

You can organize data in a variety of ways to show the relationship of the general to the detailed. You can put all
the data in the report, but set it to be hidden until a user clicks to reveal details; this is a drilldown action. You can
display the data in a data region, such as a table or chart, which is nested inside another data region, such as a
table or matrix. You can display the data in a subreport that is completely contained within a main report. Or,
you can put the detail data in drillthrough reports, separate reports that are displayed when a user clicks a link.

A. Drillthrough report
B. Subreport
C. Nested data regions
D. Drilldown action
All of these have commonalities, but they serve different purposes and have different features. Two of them,
drillthrough reports and subreports, are actually separate reports. Nesting is a means of putting one data region
inside another data region. Drilldown is an action you can apply to any report item to hide and show other
report items. They all are ways that you can organize and display data to help your users understand your
report better.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Summary of Characteristics
This table summarizes these different traits. Details are in separate sections later in this topic. Drilldown isn't
included in these comparisons because you can apply its showing and hiding action to any report item.

T RA IT SUB REP O RT DRIL LT H RO UGH N EST ED

Uses dataset of main report Same or different Same or different Same

Retrieves data Data retrieved at the same Data retrieved one Data retrieved all at the
time as main report drillthrough report at a same time as main report
time

Is processed and rendered With the main report When link is clicked With the main report.

Performs Slower (but retrieves all Faster (but does not Faster (and retrieves all data
data with main report) retrieve all data with main with main report)
report)

Uses parameters Yes Yes No

Can be reused As report, or subreport or As report, or subreport or Cannot be reused.


drillthrough report in other drillthrough report in other
reports reports

Is located External to main report, External to main report, Internal to main report
same or different report same report server
server

Is displayed In the main report In a different report In the main report

Details of Characteristics
Datasets They Use
Subreports and drillthrough reports can use the same dataset at the main report, or they can use a different
one. Nested data regions use the same dataset.
Retrieving Data
Subreports and nested data regions retrieve data at the same time as the main report. Drillthrough reports do
not. Each drillthrough report retrieves data when a user clicks each link. This is significant if the data for the
main report and the subordinate report must be retrieved at the same time.
Processing and Rendering
A subreport is processed as part of the main report. For example, if a subreport that displays order detail
information is added to a table cell in the detail row, the subreport is processed once per row of the table and
rendered as part of the main report. A drillthrough report is only processed and rendered when the user clicks
the drillthrough link in the summary main report.
Performance
When deciding which to use, consider using a data region instead a subreport, particularly if the subreport is
not used by multiple reports. Because the report server processes each instance of a subreport as a separate
report, performance can be impacted. Data regions provide much of the same functionality and flexibility as
subreports, but with better performance. Drillthrough reports have better performance than subreports, too,
because they don't retrieve all the data at the same time as the main report.
Use of Parameters
Drillthrough reports and subreports typically have report parameters that specify which report data to display.
For example, when you click a sales order number in a main report, a drillthrough report opens, which accepts
the sales order number as a parameter, and then displays all the data for that sales order. When you create the
link in the main report, you specify values to pass as parameters to the drillthrough report.
To create a drillthrough report or subreport, you must design the target drillthrough report or subreport first
and then create a drillthrough action or add the reference to the main report.
Reusability
Subreports and drillthrough reports are separate reports. Thus, they can be used in a number of reports, or
displayed as standalone reports. Nested data regions are not reusable. You cannot save them as report parts
because they are nested in a data region. You can save the data region that contains them as a report part, but
not the nested data region.
Location
Subreports and drillthrough reports are both separate reports, so they're stored external to the main report.
Subreports can be on the same or a different report server, but drillthrough reports must be on the same report
server. Nested data regions are part of the main report.
Display
Subreports and nested data regions are displayed in the main report. Drillthrough reports are displayed on their
own.

In This Section
Drillthrough Reports (Report Builder and SSRS)
Explains reports that open when a user clicks a link in a main report.
Subreports (Report Builder and SSRS)
Explains these reports that are displayed inside the body of a main report.
Nested Data Regions (Report Builder and SSRS)
Explains nesting one data region inside another, such as a chart nested inside a matrix.
Drilldown Action (Report Builder and SSRS)
Explains using the drilldown action to hide and show report items.
Specifying Paths to External Items (Report Builder and SSRS)
Explains how to refer to items that are external to the report definition file.

See Also
Report Parameters (Report Builder and Report Designer)
Drillthrough Reports (Report Builder and SSRS)
11/2/2020 • 3 minutes to read • Edit Online

A drillthrough report is a report that a user opens by clicking a link within another report. Drillthrough reports
commonly contain details about an item that is contained in an original summary report. For example, in this
illustration, the sales summary report lists sales orders and totals. When a user clicks an order number in the
summary list, another report opens that contains details about the order.

The data in the drillthrough report is not retrieved until the user clicks the link in the main report that opens the
drillthrough report. If the data for the main report and the drillthrough report must be retrieved at the same
time, consider using a subreport. For more information, see Subreports (Report Builder and SSRS).

NOTE
When you are working in Report Builder, you must be connected to a report server to view the drillthrough report that
opens when you click the drillthrough link in the main report.

To get started quickly with drillthrough reports, see Tutorial: Creating Drillthrough and Main Reports (Report
Builder).

Parameters in Drillthrough Reports


A drillthrough report typically contains parameters that are passed to it by the summary report. In the sales
summary report example, the summary report includes the field [OrderNumber] in a text box in a table cell. The
drillthrough report contains a parameter that takes the order number as a value. When you set the drillthrough
report link on the text box for [OrderNumber], you also set the parameter for the target report to
[OrderNumber]. When the user clicks the order number in the summary report, the target detail report opens
and displays the information for that order number. To view instructions about customizing drillthrough reports
based on parameter values, see Report Parameters (Report Builder and Report Designer) and the InScope
Function (Report Builder and SSRS).

Designing the Drillthrough Report


To create a drillthrough report, you must design the drillthrough report first, before you create the drillthrough
action in the main report.
A drillthrough report can be any report. Typically, the drillthrough report accepts one or more parameters to
specify the data to show, based on the link from the main report. For example, if the link from the main report
was defined for a sales order, then the sales order number is passed to the drillthrough report.

Creating a Drillthrough Action in the Main Report


You can add drillthrough links to text boxes (including text in the cells of a table or matrix), images, charts,
gauges, and any other report item that has an Action property page. For more information, see Add a
Drillthrough Action on a Report (Report Builder and SSRS).
You can create the drillthrough action in the main report as a report action or a URL action. For a report action,
the drillthrough report must exist on the same report server as the main report. For a URL action, the report
must exist at the fully qualified URL location. The way that you specify a report might differ for a report server
or a SharePoint site that is integrated with a report server. If the report server is configured in SharePoint
integrated mode, only URL actions are supported.
For more information, see Add a Drillthrough Action on a Report (Report Builder and SSRS) and Specifying
Paths to External Items (Report Builder and SSRS).

Viewing a Drillthrough Report


To view a summary report with drillthrough links after it is published, you must ensure that the drillthrough
reports reside on the same report server as the summary report. In all cases, the user must have permissions
on the drillthrough report to view it.

See Also
Drillthrough, Drilldown, Subreports, and Nested Data Regions (Report Builder and SSRS)
Add a Drillthrough Action on a Report (Report
Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

The report that opens when you click the link in the main report is known as a drillthrough report. This
drillthrough link enables a drillthrough action.
Drillthrough reports must be published to the same report server as the main report, but they can be in
different folders. You can add a drillthrough link to any item that has an Action property, such as a text box, an
image, or data points on a chart.
To add a drillthrough link to a report, you must first create the drillthrough report that the main report will link
to. A drillthrough report commonly contains details about an item that is contained in the original summary
report, and often contains parameters that filter the drillthrough report based on parameters passed to it from
the main report. For more information on creating the drillthrough report, see Drillthrough Reports (Report
Builder and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To add a drillthrough action


1. In Design view, right-click the text box, image, or chart to which you want to add a link and then click
Proper ties .
2. In the item's Proper ties dialog box, click Action .
3. Select Go to repor t . Additional sections appear in the dialog box for this option.
4. In Specify a repor t , click Browse to locate the report that you want to jump to, or type the name of the
report. Alternatively, click the expression (fx ) button to create an expression for the report name.
The format of the path to the drillthrough report differs for native and SharePoint integrated mode. If you
browse to the report, a path of the correct format is provided. For more information, see Specifying Paths
to External Items (Report Builder and SSRS).
If you have to specify parameters for the drillthrough report, follow the next step.
5. In Use these parameters to run the repor t , click Add . A new row is added to the parameter grid.
In the Name text box, click the drop-down list or type the name of the report parameter in the
drillthrough report.

NOTE
The names in the parameter list must match the expected parameters in the target report exactly. For
example, parameter names must match by case. If the names do not match, or if an expected parameter is
not listed, the drillthrough report fails.

In Value , type or select the value to pass to the parameter in the drillthrough report.
NOTE
Values can contain an expression that evaluates to a value to pass to the report parameter. The
expressions in the value list include the field list for the current report.

For information on how to hide parameters in reports, see Add, Change, or Delete a Report Parameter
(Report Builder and SSRS).
6. (Optional) For text boxes, it is helpful to indicate to the user that the text is a link by changing the color
and effect of the text on the Home tab of the Ribbon.
7. To test the link, run the report and click the report item that you set this link on.

See Also
Action Properties Dialog Box (Report Builder and SSRS)
Formatting Data Points on a Chart (Report Builder and SSRS)
Show ToolTips on a Series (Report Builder and SSRS)
Subreports (Report Builder and SSRS)
11/2/2020 • 3 minutes to read • Edit Online

A subreport is a report item that displays another report inside the body of a main report. Conceptually, a
subreport in a report is similar to a frame in a Web page. It is used to embed a report within a report. Any
report can be used as a subreport. The report that is displayed as the subreport is stored on a report server,
usually in the same folder as the parent report. You can design the parent report to pass parameters to the
subreport. A subreport can be repeated within data regions, using a parameter to filter data in each instance of
the subreport.

NOTE
If you use a subreport in a tablix data region, the subreport and its parameters will be processed for every row. If there
are many rows, consider whether a drillthrough report is more appropriate.

In this illustration, the contact information displayed in the main Sales Order report actually comes from a
Contacts subreport.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Comparing Subreports and Nested Data Regions


If you're thinking of using subreports to display separate groups of data, consider using data regions, such as
tables, matrices, and charts, instead. Reports with data regions only may perform better than reports that
include subreports.
Use data regions to nest groups of data from the same data source within a single data region. Use subreports
to nest groups of data from different data sources within a single data region, reuse a subreport in multiple
parent reports, or display a standalone report inside of another report. For example, you can create a "briefing
book" by placing multiple subreports inside the body of another report.
Data regions provide much of the same functionality and flexibility as subreports, but with better performance.
Because the report server processes each instance of a subreport as a separate report, performance can be
impacted. For more information, see Nested Data Regions (Report Builder and SSRS).

Using Parameters in Subreports


To pass parameters from the parent report to the subreport, define a report parameter in the report that you
use as the subreport. When you place the subreport in the parent report, you can select the report parameter
and a value to pass from the parent report to the report parameter in the subreport.

NOTE
The parameter that you select from the subreport is a report parameter, not a query parameter.

You can place a subreport in the main body of the report, or in a data region. If you place a subreport in a data
region, the subreport will repeat with each instance of the group or row in the data region. To pass a value from
the group or row to the subreport, in the subreport value property, use a field expression for the field containing
the value you want to pass to the subreport parameter.
For more information about working with subreports, see Add a Subreport and Parameters (Report Builder and
SSRS).

Specifying Subreport Names and Locations


You can design a main report to specify a subreport in a different folder on the same report server.
The syntax you use to specify the subreport depends on whether the report server is in native mode or
SharePoint integrated mode. For more information, see Specifying Paths to External Items (Report Builder and
SSRS).
In Report Builder, to preview a subreport in a main report, both reports must be located in the same report
server, or you must specify a full path to the subreport.

See Also
Drillthrough, Drilldown, Subreports, and Nested Data Regions (Report Builder and SSRS)
Add a Subreport and Parameters (Report Builder
and SSRS)
11/2/2020 • 3 minutes to read • Edit Online

Add subreports to a report when you want to create a main report that is a container for multiple related
reports. A subreport is a reference to another report. To relate the reports through data values (for example, to
have multiple reports show data for the same customer), you must design a parameterized report (for example,
a report that shows the details for a specific customer) as the subreport. When you add a subreport to the main
report, you can specify parameters to pass to the subreport.
You can also add subreports to dynamic rows or columns in a table or matrix. When the main report is
processed, the subreport is processed for each row. In this case, consider whether you can achieve the desired
effect by using data regions or nested data regions.
To add a subreport to a report, you must first create the report that will act as the subreport. For more
information on creating the subreport, see Subreports (Report Builder and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To add a subreport
1. On the Inser t tab, click Subrepor t .
2. On the design surface, click a location on the report and then drag a box to the desired size of the
subreport. Alternatively, click the design surface to create a subreport of default size.
3. Right-click the subreport, and then click Subrepor t Proper ties .
4. In the Subrepor t Proper ties dialog box, type a name in the Name text box or accept the default. The
name must be unique within the report. By default, a general name such as Subreport1 or Subreport2 is
assigned.
5. In the Use this repor t as a subrepor t box, click Browse , or type the name of the report. Clicking
Browse is preferred because the path to the subreport will be specified automatically. You can specify the
report in the several ways. For more information, see Specifying Paths to External Items (Report Builder
and SSRS).
6. (Optional) Click Yes for Omit border on page break to prevent a border from being rendered in the
middle of the subreport if the subreport spans more than one page.
7. Click OK .
To specify parameters to pass to a subreport
1. In Design view, right-click the subreport and then click Subrepor t Proper ties .
2. In the Subrepor t Proper ties dialog box, click Parameters .
3. Click Add . A new row is added to the parameter grid.
4. In the Name text box, type the name of a parameter in the subreport or choose it from the list box. This
name must match a report parameter, not a query parameter, in the subreport.
5. In the Value list box, type or select a value to pass to the subreport. This value can be static text or an
expression that references a field or other object in the main report.

NOTE
In Report Builder, if a parameter is missing from the Parameters list and the subreport has a default value
defined, the subreport will be processed correctly.
In Report Designer, all parameters that are required by the subreport must be included in the Parameters list. If
a required parameter is missing, the subreport is not displayed correctly in the main report.

6. Repeat steps 3-5 to specify a name and value for each subreport parameter.
7. To delete a subreport parameter, click the parameter in the parameter grid, and then click Delete .
8. To change the order of a subreport parameter, click the parameter, and then click the up button or the
down button.
Changing the order of a subreport parameter does not affect the processing of the subreport.

See Also
Subreports (Report Builder and SSRS)
Rendering Behaviors (Report Builder and SSRS)
Drilldown Action (Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

By providing plus and minus icons on a text box, you can enable users to hide and display items interactively.
This is called a drilldown action. For a table or matrix, you can show or hide static rows and columns, or rows
and columns that are associated with groups.

In this illustration, the user clicks the plus signs (+) in the report to show detail data.
For example, you can initially hide all the rows except the outer group summary row for a table with row
groups. For each inner group (including the details group), add an expand/collapse icon to the grouping cell of
the containing group. When the report is rendered, the user can click the text box to expand and collapse the
detail data. For more information, see Tables (Report Builder and SSRS).
To allow users to expand or collapse an item, you set the visibility properties for that item.

NOTE
When you create a report with a drilldown action, the visibility information must be set on the group, column, or row that
you want to hide, not just a single text box in the row or column. In addition, the text box that you use for the toggle
must be in a containing scope that controls the item that you want to show or hide.
For example, to hide a row associated with a nested group, the text box must be in a row associated with the parent
group or higher in the containment hierarchy.
For information on setting visibility information on the group, column or row, see Add an Expand or Collapse Action to an
Item (Report Builder and SSRS)

For more information about hiding report items, see Hide an Item (Report Builder and SSRS).
NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Comparing Drilldown and Drillthrough Reports


In a drilldown report, a user clicks a plus or minus button to expand or collapse a section of a report to show
detail data in place. In a drillthrough report, the user clicks a link for a summary value, and this opens a separate,
related report to show detail data. The detail data is only retrieved when the detail report runs. Drillthrough
reports typically require fewer resources than drilldown reports. For more information, see Drillthrough,
Drilldown, Subreports, and Nested Data Regions (Report Builder and SSRS).

Rendering Extension Support for Hidden Report Items


The show-and-hide toggle on report items is supported only by rendering extensions that support user
interactivity, such as the HTML rendering extension that is used when you run a report in Report Builder and in
the web portal, for example. Other rendering extensions display hidden items. The following list describes
support for report items with conditional visibility:
In HTML, if items are hidden, they are not visible in the HTML source.
The XML rendering extension displays all report items, regardless of whether they are hidden.
The Excel rendering extension displays and expands hidden rows and columns for a table, matrix, or list.
All rows and columns are visible.
For more information, see Rendering Behaviors (Report Builder and SSRS).

See Also
Drillthrough, Drilldown, Subreports, and Nested Data Regions (Report Builder and SSRS)
Interactive Sort, Document Maps, and Links (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Add an Expand or Collapse Action to an Item
(Report Builder & SSRS)
11/2/2020 • 4 minutes to read • Edit Online

You can enable a user to interactively expand or collapse items in a paginated report, or expand or collapse rows
and columns associated with a group for a table or matrix. To allow users to expand or collapse an item, you set
the visibility properties for that item. Setting visibility works in an HTML report viewer, and is sometimes called a
drilldown action.
In report design view, you specify the name of the text box where you want to display the expand and collapse
toggle icons. In the rendered report, the text box displays a plus (+) or minus (-) sign in addition to its contents.
When the user clicks the toggle, the report display is refreshed to show or hide the report item, based on the
current visibility settings for items in the report.
Typically, the expand and collapse action is used to initially display only summary data and to enable the user to
click the plus sign to show detail data. For example, you can initially hide a table that displays values for a chart,
or hide child groups for a table with nested row or column groups, as in a drilldown report.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To add expand and collapse action to a group


1. In report design view, click the table or matrix to select it. The Grouping pane displays the row and
column groups.

If the Grouping pane does not appear, click the View menu and then click Grouping .
2. Right-click anywhere in the title bar of the Grouping pane, and then click Advanced . The Grouping pane
mode toggles to show the underlying display structure for rows and columns on the design surface.

3. In the appropriate group pane, click the name of the row group or column group for which you want to
hide the associated rows or columns. The group is selected and the Properties pane shows the Tablix
Member properties.

NOTE
If you do not see the Properties pane, click View on the Ribbon and then click Proper ties .

4. In Hidden , choose one of the following options to set the visibility of this report item the first time you
run a report:
Select False to display the report item.
Select True to hide the report item.
Select <Expression> to open the Expression dialog box to create an expression that is evaluated
at run time to determine the visibility.
5. In ToggleItem , from the drop-down box, select the name of a text box to which to add the toggle image.
In the following image, the Color row group is configured enable users to expand and collapse associated
rows.

NOTE
The text box with the toggle image cannot be the row or column group for which you want to hide the associated
rows or columns. It must either be in the same group as the item that is being hidden or in an ancestor group.
For example, to toggle visibility of rows associated with a child group, select a text box in a row associated with the
parent group.

6. To test the toggle, run the report and click the text box with the toggle image. The report display refreshes
to show row groups and column groups with their toggled visibility.

To add expand and collapse action to a report item


1. In report design view, right-click the report item to show or hide, and then click <report item>
Proper ties . The <report item> Proper ties dialog box for the report item opens.
2. Click Visibility .
3. In When the repor t is initially run , choose one of the following options to set the visibility of this
report item the first time you run a report:
Select Show to display the report item.
Select Hide to hide the report item.
Select Show or hide based on an expression to use an expression evaluated at run time to
determine the visibility. Click (fx ) to open the Expression dialog box to create an expression.

NOTE
When you specify an expression for visibility, you are setting the Hidden property of the report item. The
expression evaluates to a Boolean value of True to hide the item and False to show the item.

4. In Display can be toggled by this repor t item , from the drop-down box, type or select the name of a
text box in the report in which to display a toggle image; for example, Textbox1.
In the following image, the table is configured to enable users to expand and collapse it. The display of
the table is toggled by the Products Table text box.
NOTE
The text box that you choose must be in the current or containing scope for this report item (up to and including
the report body). For example, to toggle visibility of a chart, select a text box that is in the same containing scope
as the chart; for example, the report body or a rectangle. The text box must be in the same container hierarchy or
higher.

5. To test the toggle, run the report and click the text box with the toggle image. The report display refreshes
to show report items with their toggled visibility.

See Also
Drilldown Action (Report Builder and SSRS)
Hide an Item (Report Builder and SSRS)
Nested Data Regions (Report Builder and SSRS)
11/2/2020 • 6 minutes to read • Edit Online

You can nest one data region, such as a chart, inside another data region, such as a matrix, typically to display
data summaries in a concise manner or to provide a visual display as well as a table or matrix display.
For example, for a matrix (also called a tablix) that contains sales orders grouped by Store on rows and by
Quarter on columns, you can add a table or chart to the corner cell to summarize the sales for all stores, or add
a chart to a matrix column header to show the sales contribution of the data in the column as a percentage of all
sales.

In this illustration, the pie chart in the corner cell and the sparkline charts in the rows are nested data regions.
By definition, nested data regions are based on the same report dataset. You cannot nest data regions that are
based on different datasets. To display data from different datasets, consider using drillthrough reports or
subreports. For more information, see Drillthrough, Drilldown, Subreports, and Nested Data Regions (Report
Builder and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Understanding Scope for a Nested Data Region


The scope for data in a nested data region is automatically defined by its placement in the parent data region.
For example, the scope for data for a chart nested in a tablix corner cell is the data from the dataset bound to the
tablix data region after the filters are applied for the dataset, the tablix data region, and the chart data region.
The scope for a tablix nested in a tablix cell is the same as the scope for the corner cell, but additionally scoped
to the row and column group memberships of the cell in which it is nested, with the corresponding group filters
applied. For more information about scope, see Expression Scope for Totals, Aggregates, and Built-in Collections
(Report Builder and SSRS).
The following list describes the scope for cells in the following tablix areas:
Tablix corner The scope is the data in the data region linked to the tablix data region, after the filter and
sort expressions for the dataset and the outer tablix are applied.
Tablix column group The data in the innermost column group, after the filter and sort expressions for
the dataset, the outer tablix, and the column groups are applied.
Tablix row group The data in the innermost row group, after the filter and sort expressions for the
dataset, the outer tablix, and the row groups are applied.
Tablix body The data in the innermost group represented by the intersection of row groups and column
groups, after the filter and sort expressions for the dataset, the outer tablix, and the row and column
groups are applied.
For more information, see Tablix Data Region Areas (Report Builder and SSRS).

Nesting a Chart, Sparkline, or Data Bar in a Tablix


When you add a chart (including a sparkline or data bar) to a tablix column group header or group footer row,
or to a tablix body cell, the data passed to the chart is scoped to the subset of data for that cell. By default, when
you add a chart to a tablix cell, the chart dimensions expand to fill the cell.

NOTE
To have more control over the size of a chart in a tablix cell, add the chart to a rectangle first, and then add the rectangle
to the tablix cell.

By default, the chart legend colors are determined by the color of the data points in the chart series. To control
colors so that nested chart data regions all use the same color for the same category of data, you must use
custom colors and set sort expressions on the data. For more information, see Specify Consistent Colors across
Multiple Shape Charts (Report Builder and SSRS) and Sort Data in a Data Region (Report Builder and SSRS).

Nesting a Gauge or an Indicator in a Tablix


You can nest a gauge or an indicator inside of a table, matrix, or list in order to show a key performance
indicator (KPI). When you place a gauge or indicator inside of a table, it will be rendered for each row in the
tablix. For more information about adding indicators to a tablix, see Indicators (Report Builder and SSRS).
Adding a gauge to a tablix
There are two ways to add a gauge to a tablix data region:
Click inside the tablix cell and insert a gauge. The Select Gauge Type dialog box appears. Once you
have selected a gauge type, the Gauge data region is placed inside of the selected tablix cell. You will likely
need to resize the tablix in order to format the gauge.
Click outside the table and insert a gauge. The Select Gauge Type dialog box appears. After you select a
gauge type, the Gauge data region is placed in the top-left corner of the report. After you add data and
format this gauge, drag and drop it inside of the tablix cell.
Like the chart, the dataset passed to the gauge is scoped to the subset of data for that cell. When a gauge is
placed inside of a tablix cell, the gauge will always aggregate only one row of data.
When data in your tablix contains grouping, the Gauge data region that is nested inside the tablix does not
automatically inherit this group. You must add a matching group expression to the gauge in order to show the
same information that is shown on the tablix. For example, if data in your tablix is grouped by Product, you must
add a Product group expression to the gauge to show the same data. For more information, see Gauges (Report
Builder and SSRS) and Add or Delete a Group in a Data Region (Report Builder and SSRS).
You must set the minimum and maximum values that will be displayed on the gauge scale. To specify the
maximum value of the gauge, you can use an expression, such as =Max!MyField.Value . However, because this
expression will be evaluated within the scope of the data in the cell only, the maximum of each gauge will not be
the same for all rows in the tablix. This may make comparisons between gauges in the tablix more difficult to
understand. Alternatively, you can specify a static value for the maximum. All rows inside of the tablix will show
a gauge with this maximum value. For more information, see Set a Minimum or Maximum on a Gauge (Report
Builder and SSRS).
If the data becomes too large on the gauge, consider using a scale multiplier to reduce the amount of digits
displayed. To specify a multiplier, you can right-click on the scale and select Scale Proper ties . When the Scale
Proper ties dialog box opens, specify a value for Multiplier .

Nesting a Table or Matrix and a Chart in a List


To nest multiple data regions in a List add a rectangle first, and then add the data regions to the rectangle.
You can define a group for a List data region, and then add a tablix and a chart to provide different views of the
same data. To achieve this effect, you must define identical group and sort expressions for the embedded tablix
and chart. By definition, the tablix and chart use data from the dataset of the parent list data region.

NOTE
By default, when you add a List data region to the design surface, the list includes a detail row. You can change this
default by adding a group row and removing the detail row. For more information, see Exploring the Flexibility of a Tablix
Data Region (Report Builder and SSRS).

For more information, see Understanding Groups (Report Builder and SSRS) and Add, Move, or Delete a Table,
Matrix, or List (Report Builder and SSRS).

See Also
Filter, Group, and Sort Data (Report Builder and SSRS)
Tables, Matrices, and Lists (Report Builder and SSRS)
Charts (Report Builder and SSRS)
Gauges (Report Builder and SSRS)
Expressions (Report Builder and SSRS)
Formatting Report Items (Report Builder and SSRS)
Tutorial: Adding a KPI to Your Report (Report Builder)
Formatting Scales on a Gauge (Report Builder and SSRS)
Specifying Paths to External Items (Report Builder
and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

You specify paths in report item properties to reference items such as drillthrough reports, subreports, and
image files that are external to the report definition file and are stored on a report server.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

NOTE
In Report Builder, paths to items must specify items on a report server. Paths to items on a file system are not supported.
You can preview a report that uses these items only if you are connected to the report server where the items are
located.

When you specify a path for an external item in a dialog box for actions, subreports, or images, you can browse
directly to the report server and select the item. Browsing to an item and selecting it directly is the
recommended way to specify a drillthrough report or subreport. That way the correct parameter names will be
available in a drop-down list when you specify report or subreport parameters. When you change an item path
to point to a different item, you must manually update the correct parameter names and values as needed.
On a report server configured in native mode, specify a drillthrough report name without the file extension .rdl.
On a report server configured in SharePoint integrated mode, you must include the file extension .rdl. The path
can be one of the following:
A relative path to the item from the main repor t. For example, ../AllSubreports/Subreport1. In this
example, the .. indicates the folder above the folder where the main report is located.

NOTE
Relative paths are not supported when the report is run inside Report Builder. To view a report that uses relative
paths to external items, save the report to the report server, and run the report from there

A full path to the item.


On a repor t ser ver : The path starts from / , the Home folder. For example,
/Reports/AllSubreports/Subreport1.
On a SharePoint site: You must specify the report name in an expression, with the full URL of
the item and the file extension .rdl. For example,
="https://server/site/library/folder/Report1.rdl" .

See Also
Add an External Image (Report Builder and SSRS)
Add a Subreport and Parameters (Report Builder and SSRS)
Add a Drillthrough Action on a Report (Report Builder and SSRS)
Expressions (Report Builder and SSRS)
11/2/2020 • 6 minutes to read • Edit Online

Expressions are widely used throughout Reporting Services paginated reports to retrieve, calculate, display,
group, sort, filter, parameterize, and format data.
Many report item properties can be set to an expression. Expressions help you control the content, design, and
interactivity of your report. Expressions are written in Microsoft Visual Basic, saved in the report definition, and
evaluated by the report processor when you run the report.
Unlike applications such as Microsoft Office Excel where you work with data directly in a worksheet, in a report,
you work with expressions that are placeholders for data. To see the actual data from the evaluated expressions,
you must preview the report. When you run the report, the report processor evaluates each expression as it
combines report data and report layout elements such as tables and charts.
As you design a report, many expressions for report items are set for you. For example, when you drag a field
from the data pane to a table cell on the report design surface, the text box value is set to a simple expression
for the field. In the following figure, the Report Data pane displays the dataset fields ID, Name, SalesTerritory,
Code, and Sales. Three fields have been added to the table: [Name], [Code], and [Sales]. The notation [Name] on
the design surface represents the underlying expression =Fields!Name.Value .

When you preview the report, the report processor combines the table data region with the actual data from the
data connection and displays a row in the table for every row in the result set.
To enter expressions manually, select an item on the design surface, and use shortcut menus and dialog boxes to
set the properties of the item. When you see the (fx) button or the value <Expression> in a drop-down list, you
know that you can set the property to an expression. For more information, see Add an Expression (Report
Builder and SSRS).
To develop complex expressions or expressions that use custom code or custom assemblies, we recommend
that you use Report Designer in SQL Server Data Tools (SSDT). For more information, see Custom Code and
Assembly References in Expressions in Report Designer (SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.
Understanding Simple and Complex Expressions
Expressions begin with an equal sign (=) and are written in Microsoft Visual Basic. Expressions can include a
combination of constants, operators, and references to built-in values (fields, collections, and functions), and to
external or custom code.
You can use expressions to specify the value of many report item properties. The most common properties are
values for text boxes and placeholder text. Typically, if a text box contains only one expression, the expression is
the value of the text box property. If a text box contains multiple expressions, each expression is the value of
placeholder text in the text box.
By default, expressions appear on the report design surface as simple or complex expressions.
Simple A simple expression contains a reference to a single item in a built-in collection, for example, a
dataset field, a parameter, or a built-in field. On the design surface, a simple expression appears in
brackets. For example, [FieldName] corresponds to the underlying expression =Fields!FieldName.Value .
Simple expressions are created for you automatically as you create the report layout and drag items from
the Report Data pane to the design surface. For more information about the symbols that represent
different built-in collections, see Understanding Prefix Symbols for Simple Expressions.
Complex A complex expression contains references to multiple built-in references, operators, and
function calls. A complex expression appears as <<Expr>> when the expression value includes more than
a simple reference. To view the expression, hover over it and use the tooltip. To edit the expression, open it
in the Expression dialog box.
The following figure shows typical simple and complex expressions for both text boxes and placeholder text.

To display sample values instead of text for expressions, apply formatting to the text box or placeholder text. The
following figure shows the report design surface toggled to show sample values:

For more information, see Formatting Text and Placeholders (Report Builder and SSRS).

Understanding Prefix Symbols in Simple Expressions


Simple expressions use symbols to indicate whether the reference is to a field, a parameter, a built-in collection,
or the ReportItems collection. The following table shows examples of display and expression text:

IT EM DISP L AY T EXT EXA M P L E EXP RESSIO N T EXT EXA M P L E

Dataset fields [Sales] =Fields!Sales.Value

[SUM(Sales)] =Sum(Fields!Sales.Value)

[FIRST(Store)] =First(Fields!Store.Value)
IT EM DISP L AY T EXT EXA M P L E EXP RESSIO N T EXT EXA M P L E

Report parameters [@Param] =Parameters!Param.Value

[@Param.Label] =Parameters!Param.Label

Built-in fields [&ReportName] =Globals!ReportName.Value

Literal characters used for display text \[Sales\] [Sales]

Writing Complex Expressions


Expressions can include references to functions, operators, constants, fields, parameters, items from built-in
collections, and to embedded custom code or custom assemblies.

NOTE
To develop complex expressions or expressions that use custom code or custom assemblies, we recommend that you use
Report Designer in SQL ServerSQL Server Data Tools (SSDT). For more information, see Custom Code and Assembly
References in Expressions in Report Designer (SSRS).

The following table lists the kinds of references you can include in an expression:

REF EREN C ES DESC RIP T IO N EXA M P L E

Constants Describes the constants you can access ="Blue"


interactively for properties that require
constant values, such as font colors.

Operators Describes the operators you can use to ="The report ran at: " &
combine references in an expression. Globals!ExecutionTime & "."
For example, the & operator is used
for concatenating strings.

Built-in Collections Describes the built-in collections that =Fields!Sales.Value


you can include in an expression, such
as Fields , Parameters , and =Parameters!Store.Value
Variables .
=Variables!MyCalculation.Value

Built-in Report and Aggregate Describes the built-in functions, such =Previous(Sum(Fields!Sales.Value))
Functions as Sum or Previous , that you can
access from an expression.

Custom Code and Assembly Describes how you can access the =Sum(Fields!Sales.Value)
References in Expressions in Report built-in CLR classes Math and Convert,
Designer (SSRS) other CLR classes, Visual Basic run- =CDate(Fields!SalesDate.Value)
time library functions, or methods
from an external assembly. =DateAdd("d",3,Fields!BirthDate.Value)

Describes how you can access custom =Code.ToUSD(Fields!StandardCost.Value)


code that is embedded in your report,
or that you compile and install as a
custom assembly on both the report
client and the report server.
Validating Expressions
When you create an expression for a specific report item property, the references that you can include in an
expression depend on the values that the report item property can accept and the scope in which the property is
evaluated. For example:
By default, the expression [Sum] calculates the sum of data that is in scope at the time the expression is
evaluated. For a table cell, the scope depends on row and column group memberships. For more
information, see Expression Scope for Totals, Aggregates, and Built-in Collections (Report Builder and
SSRS).
For the value for a Font property, the value must evaluate to the name of a font.
Expression syntax is validated at design time. Expression scope validation occurs when you publish the
report. For validation that depends on the actual data, errors can only be detected at run-time. Some of
these expressions produce #Error as an error message in the rendered report. To help determine the
issues for this kind of error, you must use Report Designer in SQL Server Data Tools (SSDT). Report
Designer provides an Output window that provides more information about these errors.
For more information, see Expression Reference (Report Builder and SSRS).

In This Section
Add an Expression (Report Builder and SSRS)
Expression Uses in Reports (Report Builder and SSRS)
Expression Scope for Totals, Aggregates, and Built-in Collections (Report Builder and SSRS)
Expression Reference (Report Builder and SSRS)

See Also
For more information and examples, see the following topics:
Expression Uses in Reports (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Filter Equation Examples (Report Builder and SSRS)
Group Expression Examples (Report Builder and SSRS)
Tutorial: Introducing Expressions
Report Samples (Report Builder and SSRS)
Add an Expression (Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

Expressions are used throughout a report for defining report item properties, filters, groups, sort order,
connection strings, and parameter values. Expressions begin with an equal sign (=) and are written in Microsoft
Visual Basic. They are evaluated at run time by the report processor, which combines the evaluation result with
report layout elements.
Expressions can be simple or complex. Simple expression refer to a single item in a built-in collection. Complex
expressions can contain constants, operators, global collection items, and function calls. For more information,
see Expressions (Report Builder and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To add an expression to a text box


In Design view, click the text box on the design surface to which you want to add an expression.
For a simple expression, type the display text for the expression in the text box. For example, for
the dataset field Sales, type [Sales] .
For a complex expression, right-click the text box, and select Expression . The Expression dialog
box opens. Type or interactively create your expression after the '=' in the expression pane, and
then click OK.
The expression appears on the design surface as <<Expr>> .

See Also
Formatting Text and Placeholders (Report Builder and SSRS)
Text Boxes (Report Builder and SSRS)
Expression Uses in Reports (Report Builder and SSRS)
Filter Equation Examples (Report Builder and SSRS)
Group Expression Examples (Report Builder and SSRS)
Expression Dialog Box (Report Builder)
Expression Examples (Report Builder and SSRS)
Add Code to a Report (SSRS)
Expression Examples (Report Builder and SSRS)
3/5/2021 • 20 minutes to read • Edit Online

Expressions are used frequently in Reporting Services paginated reports to control content and report
appearance. Expressions are written in Microsoft Visual Basic, and can use built-in functions, custom code, report
and group variables, and user-defined variables. Expressions begin with an equal sign (=). For more information
about the expression editor and the types of references that you can include, see Expression Uses in Reports
(Report Builder and SSRS), and Add an Expression (Report Builder and SSRS).

IMPORTANT
When RDL Sandboxing is enabled, only certain types and members can be used in expression text at report publish time.
For more information, see Enable and Disable RDL Sandboxing.

This topic provides examples of expressions that can be used for common tasks in a report.
Visual Basic Functions Examples for date, string, conversion and conditional Visual Basic functions.
Report Functions Examples for aggregates and other built-in report functions.
Appearance of Report Data Examples for changing the appearance of a report.
Properties Examples for setting report item properties to control format or visibility.
Parameters Examples for using parameters in an expression.
Custom Code Examples of embedded custom code.
For expression examples for specific uses, see the following topics:
Group Expression Examples (Report Builder and SSRS)
Filter Equation Examples (Report Builder and SSRS)
Commonly Used Filters (Report Builder and SSRS)
Report and Group Variables Collections References (Report Builder and SSRS)
For more information about simple and complex expressions, where you can use expressions, and the types of
references that you can include in an expression, see topics under Expressions (Report Builder and SSRS). For
more information about the context in which expressions are evaluated for calculating aggregates, see
Expression Scope for Totals, Aggregates, and Built-in Collections (Report Builder and SSRS).
To learn how to write expressions that use many of the functions and operators also used by expression
examples in this topic, but in the context of writing a report, see Tutorial: Introducing Expressions.

Functions
Many expressions in a report contain functions. You can format data, apply logic, and access report metadata
using these functions. You can write expressions that use functions from the Microsoft Visual Basic run-time
library, and from the Convert and Math namespaces. You can add references to functions from other assemblies
or custom code. You can also use classes from the Microsoft .NET Framework, including
System.Text.RegularExpressions.

Visual Basic Functions


You can use Visual Basic functions to manipulate the data that is displayed in text boxes or that is used for
parameters, properties, or other areas of the report. This section provides examples demonstrating some of
these functions. For more information, see Visual Basic Runtime Library Members on MSDN.
The .NET Framework provides many custom format options, for example, for specific date formats. For more
information, see Formatting Types on MSDN.
Math Functions
The Round function is useful to round numbers to the nearest integer. The following expression rounds a
1.3 to 1:

= Round(1.3)

You can also write an expression to round a value to a multiple that you specify, similar to the MRound
function in Excel. Multiply the value by a factor that creates an integer, round the number, and then divide
by the same factor. For example, to round 1.3 to the nearest multiple of .2 (1.4), use the following
expression:

= Round(1.3*5)/5
Date Functions
The Today function provides the current date. This expression can be used in a text box to display the
date on the report, or in a parameter to filter data based on the current date.

=Today()

Use the DateInter val function to pull out a specific part of a date. Here are some valid DateInter val
parameters:
DateInterval.Second
DateInterval.Minute
DateInterval.Hour
DateInterval.Weekday
DateInterval.Day
DateInterval.DayOfYear
DateInterval.WeekOfYear
DateInterval.Month
DateInterval.Quarter
DateInterval.Year
For example, this expression will show the number of the week in the current year for today's date:

=DatePart(DateInterval.WeekOfYear, today())

The DateAdd function is useful for supplying a range of dates based on a single parameter. The following
expression provides a date that is six months after the date from a parameter named StartDate.

=DateAdd(DateInterval.Month, 6, Parameters!StartDate.Value)

The Year function displays the year for a particular date. You can use this to group dates together or to
display the year as a label for a set of dates. This expression provides the year for a given group of sales
order dates. The Month function and other functions can also be used to manipulate dates. For more
information, see the Visual Basic documentation.

=Year(Fields!OrderDate.Value)

You can combine functions in an expression to customize the format. The following expression changes
the format of a date in the form month-day-year to month-week-week number. For example, 12/23/2009
to December Week 3:

=Format(Fields!MyDate.Value, "MMMM") & " Week " &


(Int(DateDiff("d", DateSerial(Year(Fields!MyDate.Value),
Month(Fields!MyDate.Value),1), Fields!FullDateAlternateKey.Value)/7)+1).ToString

When used as a calculated field in a dataset, you can use this expression on a chart to aggregate values
by week within each month.
The following expression formats the SellStartDate value as MMM-YY. SellStartDate field is a datetime
data type.

=FORMAT(Fields!SellStartDate.Value, "MMM-yy")

The following expression formats the SellStartDate value as dd/MM/yyyy. The SellStartDate field is a
datetime data type.

=FORMAT(Fields!SellStartDate.Value, "dd/MM/yyyy")

The CDate function converts the value to a date. The Now function returns a date value containing the
current date and time according to your system. DateDiff returns a Long value specifying the number of
time intervals between two Date values.
The following example displays the start date of the current year

=DateAdd(DateInterval.Year,DateDiff(DateInterval.Year,CDate("01/01/1900"),Now()),CDate("01/01/1900"))

The following example displays the start date for the previous month based on the current month.

=DateAdd(DateInterval.Month,DateDiff(DateInterval.Month,CDate("01/01/1900"),Now())-
1,CDate("01/01/1900"))

The following expression generates the interval years between SellStartDate and LastReceiptDate. These
fields are in two different datasets, DataSet1 and DataSet2. The First Function (Report Builder and SSRS),
which is an aggregate function, returns the first value of SellStartDate in DataSet1 and the first value of
LastReceiptDate in DataSet2.

=DATEDIFF("yyyy", First(Fields!SellStartDate.Value, "DataSet1"), First(Fields!LastReceiptDate.Value,


"DataSet2"))

The DatePar t function returns an Integer value containing the specified component of a given Date
value.The following expression returns the year for the first value of the SellStartDate in DataSet1. The
dataset scope is specified because there are multiple datasets in the report.

=Datepart("yyyy", First(Fields!SellStartDate.Value, "DataSet1"))

The DateSerial function returns a Date value representing a specified year, month, and day, with the time
information set to midnight. The following example displays the ending date for the prior month, based
on the current month.

=DateSerial(Year(Now()), Month(Now()), "1").AddDays(-1)

The following expressions display various dates based on a date parameter value selected by the user.

EXA M P L E DESC RIP T IO N EXA M P L E

Yesterday =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value),Day(Parameters!To
1)

Two Days Ago =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value),Day(Parameters!To


2)

One Month Ago =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value)-


1,Day(Parameters!TodaysDate.Value))

Two Months Ago =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value)-


2,Day(Parameters!TodaysDate.Value))

One Year Ago =DateSerial(Year(Parameters!TodaysDate.Value)-


1,Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value))

Two Years Ago =DateSerial(Year(Parameters!TodaysDate.Value)-


2,Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value))

String Functions
Combine more than one field by using concatenation operators and Visual Basic constants. The following
expression returns two fields, each on a separate line in the same text box:

=Fields!FirstName.Value & vbCrLf & Fields!LastName.Value

Format dates and numbers in a string with the Format function. The following expression displays values
of the StartDate and EndDate parameters in long date format:

=Format(Parameters!StartDate.Value, "D") & " through " & Format(Parameters!EndDate.Value, "D")

If the text box contains only a date or number, you should use the Format property of the text box to
apply formatting instead of the Format function within the text box.
The Right , Len , and InStr functions are useful for returning a substring, for example, trimming
DOMAIN\username to just the user name. The following expression returns the part of the string to the
right of a backslash (\) character from a parameter named User:

=Right(Parameters!User.Value, Len(Parameters!User.Value) - InStr(Parameters!User.Value, "\"))

The following expression results in the same value as the previous one, using members of the .NET
Framework String class instead of Visual Basic functions:

=Parameters!User.Value.Substring(Parameters!User.Value.IndexOf("\")+1, Parameters!User.Value.Length-
Parameters!User.Value.IndexOf("\")-1)

Display the selected values from a multivalue parameter. The following example uses the Join function to
concatenate the selected values of the parameter MySelection into a single string that can be set as an
expression for the value of a text box in a report item:

= Join(Parameters!MySelection.Value)
The following example does the same as the above example, as well as displays a text string prior to the
list of selected values.

="Report for " & JOIN(Parameters!MySelection.Value, " & ")

The Regex functions from the .NET Framework System.Text.RegularExpressions are useful for changing
the format of existing strings, for example, formatting a telephone number. The following expression uses
the Replace function to change the format of a ten-digit telephone number in a field from
"nnn-nnn-nnnn" to "(nnn) nnn-nnnn":

=System.Text.RegularExpressions.Regex.Replace(Fields!Phone.Value, "(\d{3})[ -.]*(\d{3})[ -.]*


(\d{4})", "($1) $2-$3")

NOTE
Verify that the value for Fields!Phone.Value has no extra spaces and is of type String.

Lookup
By specifying a key field, you can use the Lookup function to retrieve a value from a dataset for a one-to-
one relationship, for example, a key-value pair. The following expression displays the product name from
a dataset ("Product"), given the product identifier to match on:

=Lookup(Fields!PID.Value, Fields!ProductID.Value, Fields!ProductName.Value, "Product")

LookupSet
By specifying a key field, you can use the LookupSet function to retrieve a set of values from a dataset
for a one-to-many relationship. For example, a person can have multiple telephone numbers. In the
following example, assume the dataset PhoneList contains a person identifier and a telephone number in
each row. LookupSet returns an array of values. The following expression combines the return values
into a single string and displays the list of telephone numbers for the person specified by ContactID:

=Join(LookupSet(Fields!ContactID.Value, Fields!PersonID.Value, Fields!PhoneNumber.Value,


"PhoneList"),",")

Conversion Functions
You can use Visual Basic functions to convert a field from the one data type to a different data type. Conversion
functions can be used to convert the default data type for a field to the data type needed for calculations or to
combine text.
The following expression converts the constant 500 to type Decimal in order to compare it to a Transact-
SQL money data type in the Value field for a filter expression.

=CDec(500)

The following expression displays the number of values selected for the multivalue parameter
MySelection.

=CStr(Parameters!MySelection.Count)

Decision Functions
The Iif function returns one of two values depending on whether the expression is true or not. The
following expression uses the Iif function to return a Boolean value of True if the value of LineTotal
exceeds 100. Otherwise it returns False :

=IIF(Fields!LineTotal.Value > 100, True, False)

Use multiple IIF functions (also known as "nested IIFs") to return one of three values depending on the
value of PctComplete . The following expression can be placed in the fill color of a text box to change the
background color depending on the value in the text box.

=IIF(Fields!PctComplete.Value >= 10, "Green", IIF(Fields!PctComplete.Value >= 1, "Blue", "Red"))

Values greater than or equal to 10 display with a green background, between 1 and 9 display with a blue
background, and less than 1 display with a red background.
A different way to get the same functionality uses the Switch function. The Switch function is useful
when you have three or more conditions to test. The Switch function returns the value associated with
the first expression in a series that evaluates to true:
=Switch(Fields!PctComplete.Value >= 10, "Green", Fields!PctComplete.Value >= 1, "Blue",
Fields!PctComplete.Value = 1, "Yellow", Fields!PctComplete.Value <= 0, "Red")

Values greater than or equal to 10 display with a green background, between 1 and 9 display with a blue
background, equal to 1 display with a yellow background, and 0 or less display with a red background.
Test the value of the ImportantDate field and return "Red" if it is more than a week old, and "Blue"
otherwise. This expression can be used to control the Color property of a text box in a report item:

=IIF(DateDiff("d",Fields!ImportantDate.Value, Now())>7,"Red","Blue")

Test the value of the PhoneNumber field and return "No Value" if it is null (Nothing in Visual Basic);
otherwise return the phone number value. This expression can be used to control the value of a text box
in a report item.

=IIF(Fields!PhoneNumber.Value Is Nothing,"No Value",Fields!PhoneNumber.Value)

Test the value of the Department field and return either a subreport name or a null (Nothing in Visual
Basic). This expression can be used for conditional drillthrough subreports.

=IIF(Fields!Department.Value = "Development", "EmployeeReport", Nothing)

Test if a field value is null. This expression can be used to control the Hidden property of an image report
item. In the following example, the image specified by the field [LargePhoto] is displayed only if the value
of the field is not null.

=IIF(IsNothing(Fields!LargePhoto.Value),True,False)

The MonthName function returns a string value containing the name of the specified month. The
following example displays NA in the Month field when the field contains the value of 0.

IIF(Fields!Month.Value=0,"NA",MonthName(IIF(Fields!Month.Value=0,1,Fields!Month.Value)))

Report Functions
In an expression, you can add a reference to additional report functions that manipulate data in a report. This
section provides examples for two of these functions. For more information about report functions and
examples, see Aggregate Functions Reference (Report Builder and SSRS).
Sum
The Sum function can total the values in a group or data region. This function can be useful in the header
or footer of a group. The following expression displays the sum of data in the Order group or data region:

=Sum(Fields!LineTotal.Value, "Order")

You can also use the Sum function for conditional aggregate calculations. For example, if a dataset has a
field that is named State with possible values Not Started, Started, Finished, the following expression,
when placed in a group header, calculates the aggregate sum for only the value Finished:

=Sum(IIF(Fields!State.Value = "Finished", 1, 0))

RowNumber
The RowNumber function, when used in a text box within a data region, displays the row number for
each instance of the text box in which the expression appears. This function can be useful to number rows
in a table. It can also be useful for more complex tasks, such as providing page breaks based on number
of rows. For more information, see Page Breaks in this topic.
The scope you specify for RowNumber controls when renumbering begins. The Nothing keyword
indicates that the function will start counting at the first row in the outermost data region. To start
counting within nested data regions, use the name of the data region. To start counting within a group,
use the name of the group.

=RowNumber(Nothing)

Appearance of Report Data


You can use expressions to manipulate how data appears on a report. For example, you can display the values of
two fields in a single text box, display information about the report, or affect how page breaks are inserted in the
report.
Page Headers and Footers
When designing a report, you may want to display the name of the report and page number in the report footer.
To do this, you can use the following expressions:
The following expression provides the name of the report and the time it was run. It can be placed in a
text box in the report footer or in the body of the report. The time is formatted with the .NET Framework
formatting string for short date:

=Globals.ReportName & ", dated " & Format(Globals.ExecutionTime, "d")

The following expression, placed in a text box in the footer of a report, provides page number and total
pages in the report:

=Globals.PageNumber & " of " & Globals.TotalPages

The following examples describe how to display the first and last values from a page in the page header, similar
to what you might find in a directory listing. The example assumes a data region that contains a text box named
LastName .

The following expression, placed in a text box on the left side of the page header, provides the first value
of the LastName text box on the page:

=First(ReportItems("LastName").Value)

The following expression, placed in a text box on the right side of the page header, provides the last value
of the LastName text box on the page:

=Last(ReportItems("LastName").Value)

The following example describes how to display a page total. The example assumes a data region that contains a
text box named Cost .
The following expression, placed in the page header or footer, provides the sum of the values in the Cost
text box for the page:

=Sum(ReportItems("Cost").Value)

NOTE
You can refer to only one report item per expression in a page header or footer. Also, you can refer to the text box name,
but not the actual data expression within the text box, in page header and footer expressions.

Page Breaks
In some reports, you may want to place a page break at the end of a specified number of rows instead of, or in
addition to, on groups or report items. To do this, create a group that contains the groups or detail records you
want, add a page break to the group, and then add a group expression to group by a specified number of rows.
The following expression, when placed in the group expression, assigns a number to each set of 25 rows.
When a page break is defined for the group, this expression results in a page break every 25 rows.

=Ceiling(RowNumber(Nothing)/25)

To allow the user to set a value for the number of rows per page, create a parameter named RowsPerPage
and base the group expression on the parameter, as shown in the following expression:

=Ceiling(RowNumber(Nothing)/Parameters!RowsPerPage.Value)

For more information about setting page breaks for a group, see Add a Page Break (Report Builder and
SSRS).

Properties
Expressions are not only used to display data in text boxes. They can also be used to change how properties are
applied to report items. You can change style information for a report item, or change its visibility.
Formatting
The following expression, when used in the Color property of a text box, changes the color of the text
depending on the value of the Profit field:

=Iif(Fields!Profit.Value < 0, "Red", "Black")


You can also use the Visual Basic object variable Me . This variable is another way of referring to the value
of a text box.
=Iif(Me.Value < 0, "Red", "Black")

The following expression, when used in the BackgroundColor property of a report item in a data region,
alternates the background color of each row between pale green and white:

=Iif(RowNumber(Nothing) Mod 2, "PaleGreen", "White")

If you are using an expression for a specified scope, you may have to indicate the dataset for the
aggregate function:

=Iif(RowNumber("Employees") Mod 2, "PaleGreen", "White")

NOTE
Available colors come from the .NET Framework KnownColor enumeration.

Chart Colors
To specify colors for a Shape chart, you can use custom code to control the order that colors are mapped to data
point values. This helps you use consistent colors for multiple charts that have the same category groups. For
more information, see Specify Consistent Colors across Multiple Shape Charts (Report Builder and SSRS).
Visibility
You can show and hide items in a report using the visibility properties for the report item. In a data region such
as a table, you can initially hide detail rows based on the value in an expression.
The following expression, when used for initial visibility of detail rows in a group, shows the detail rows
for all sales exceeding 90 percent in the PctQuota field:

=Iif(Fields!PctQuota.Value>.9, False, True)

The following expression, when set in the Hidden property of a table, shows the table only if it has more
than 12 rows:

=IIF(CountRows()>12,false,true)

The following expression, when set in the Hidden property of a column, shows the column only if the
field exists in the report dataset after the data is retrieved from the data source:

=IIF(Fields!Column_1.IsMissing, true, false)

URLs
You can customize URLs by using report data and also conditionally control whether URLs are added as an
action for a text box.
The following expression, when used as an action on a text box, generates a customized URL that
specifies the dataset field EmployeeID as a URL parameter.

="https://adventure-works/MyInfo?ID=" & Fields!EmployeeID.Value

For more information, see Add a Hyperlink to a URL (Report Builder and SSRS).
The following expression conditionally controls whether to add a URL in a text box. This expression
depends on a parameter named IncludeURLs that allows a user to decide whether to include active URLs
in a report. This expression is set as an action on a text box. By setting the parameter to False and then
viewing the report, you can export the report Microsoft Excel without hyperlinks.

=IIF(Parameters!IncludeURLs.Value,"https://adventure-works.com/productcatalog",Nothing)

Report Data
Expressions can be used to manipulate the data that is used in the report. You can refer to parameters and other
report information. You can even change the query that is used to retrieve data for the report.
Parameters
You can use expressions in a parameter to vary the default value for the parameter. For example, you can use a
parameter to filter data to a particular user based on the user ID that is used to run the report.
The following expression, when used as the default value for a parameter, collects the user ID of the
person running the report:
=User!UserID

To refer to a parameter in a query parameter, filter expression, text box, or other area of the report, use
the Parameters global collection. This example assumes that the parameter is named Department:

=Parameters!Department.Value

Parameters can be created in a report but set to hidden. When the report runs on the report server, the
parameter does not appear in the toolbar and the report reader cannot change the default value. You can
use a hidden parameter set to a default value as custom constant. You can use this value in any
expression, including a field expression. The following expression identifies the field specified by the
default parameter value for the parameter named ParameterField:

=Fields(Parameters!ParameterField.Value).Value

Custom Code
You can use custom code in a report. Custom code is either embedded in a report or stored in a custom
assembly which is used in the report. For more information about custom code, see Custom Code and Assembly
References in Expressions in Report Designer (SSRS).
Using Group Variables for Custom Aggregation
You can initialize the value for a group variable that is local to a particular group scope and then include a
reference to that variable in expressions. One of the ways that you can use a group variable with custom code is
to implement a custom aggregate. For more information, see Using Group Variables in Reporting Services 2008
for Custom Aggregation.
For more information about variables, see Report and Group Variables Collections References (Report Builder
and SSRS).

Suppressing Null or Zero Values at Run Time


Some values in an expression can evaluate to null or undefined at report processing time. This can create run-
time errors that result in #Error displaying in the text box instead of the evaluated expression. The IIF function
is particularly sensitive to this behavior because, unlike an If-Then-Else statement, each part of the IIF statement
is evaluated (including function calls) before being passed to the routine that tests for true or false . The
statement =IIF(Fields!Sales.Value is NOTHING, 0, Fields!Sales.Value) generates #Error in the rendered report
if Fields!Sales.Value is NOTHING.
To avoid this condition, use one of the following strategies:
Set the numerator to 0 and the denominator to 1 if the value for field B is 0 or undefined; otherwise, set
the numerator to the value for field A and the denominator to the value for field B.

=IIF(Field!B.Value=0, 0, Field!A.Value / IIF(Field!B.Value =0, 1, Field!B.Value))

Use a custom code function to return the value for the expression. The following example returns the
percentage difference between a current value and a previous value. This can be used to calculate the
difference between any two successive values and it handles the edge case of the first comparison (when
there is no previous value) and cases whether either the previous value or the current value is null
(Nothing in Visual Basic).

Public Function GetDeltaPercentage(ByVal PreviousValue, ByVal CurrentValue) As Object


If IsNothing(PreviousValue) OR IsNothing(CurrentValue) Then
Return Nothing
Else if PreviousValue = 0 OR CurrentValue = 0 Then
Return Nothing
Else
Return (CurrentValue - PreviousValue) / CurrentValue
End If
End Function

The following expression shows how to call this custom code from a text box, for the
"ColumnGroupByYear" container (group or data region).

=Code.GetDeltaPercentage(Previous(Sum(Fields!Sales.Value),"ColumnGroupByYear"),
Sum(Fields!Sales.Value))

This helps to avoid run-time exceptions. You can now use an expression like
=IIF(Me.Value < 0, "red", "black") in the Color property of the text box to conditionally the display text
based on whether the values are greater than or less than 0.

See Also
Filter Equation Examples (Report Builder and SSRS)
Group Expression Examples (Report Builder and SSRS)
Expression Uses in Reports (Report Builder and SSRS)
Expressions (Report Builder and SSRS)
Commonly Used Filters (Report Builder and SSRS)
Expression Uses in Reports (Report Builder and
SSRS)
11/2/2020 • 6 minutes to read • Edit Online

In Reporting Services paginated reports, expressions are used throughout the report definition to specify or
calculate values for parameters, queries, filters, report item properties, group and sort definitions, text box
properties, bookmarks, document maps, dynamic page header and footer content, images, and dynamic data
source definitions. This topic provides examples of the many places you can use expressions to vary the content
or appearance of a report. This list is not comprehensive. You can set an expression for any property in a dialog
box that displays the expression (fx ) button or in a drop-down list that displays <Expression...> .
Expressions can be simple or complex. Simple expressions contain a reference to a single dataset field,
parameter, or built-in field. Complex expressions can contain multiple built-in references, operators, and function
calls. For example, a complex expression might include the Sum function applied to the Sales field.
Expressions are written in Microsoft Visual Basic. An expression begins with an equal sign (=) followed by a
combination of references to built-in collections such as dataset fields and parameters, constants, functions, and
operators.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Using Simple Expressions


Simple expressions appear on the design surface and in dialog boxes in brackets, for example, a dataset field
appears as [ProductID] . Simple expressions are created for you automatically when you drag a field from a
dataset onto a text box. A placeholder is created and the expression defines the underlying value. You can also
type expressions directly into a data region cell or text box, both on the design surface or in a dialog box, (for
example, [ProductID] ).
The following table lists examples of the ways you can use simple expressions. The table describes the
functionality, the property to set, the dialog box you typically use to set it, and the value for the property. You can
type the simple expression directly on the design surface, in a dialog box, or in the Properties pane, or you can
edit it in the Expression dialog box, just as you would with any expression.

P RO P ERT Y, C O N T EXT, A N D DIA LO G


F UN C T IO N A L IT Y BOX P RO P ERT Y VA L UE

Specify a dataset field to display in a Value property for a placeholder inside [Sales]
text box. a text box. Use Placeholder
Proper ties Dialog Box, General.

Aggregate values for a group. Value property for a placeholder inside [Sum(Sales)]
a row associated with a tablix group.
Use Textbox Proper ties Dialog
Box.

Include a page number. Value property for a placeholder inside [&PageNumber]


a text box that is placed in a page
header. Use Textbox Proper ties
Dialog Box, General.

Display a selected parameter value. Value property for a placeholder inside [@SalesThreshold]
a text box on the design surface. Use
Textbox Proper ties Dialog Box,
General.

Specify a group definition for a data Group expression on the tablix group. [Category]
region. Use Tablix Group Proper ties
Dialog Box, General.

Exclude a specific field value from a Filter equation on the tablix. Use For data type, select Integer .
table. Tablix Proper ties Dialog Box,
Filters . [Quantity]

>

100
P RO P ERT Y, C O N T EXT, A N D DIA LO G
F UN C T IO N A L IT Y BOX P RO P ERT Y VA L UE

Include only a specific value for a Filter equation on the tablix group. Use [Category]
group filter. Tablix Group Proper ties Dialog
Box, Filters . =

Clothing

Exclude specific values for more than Filter equation for a group in a tablix. =[Color]
one field from a dataset. Use Tablix Proper ties Dialog Box,
Filters . <>

Red

=[Color]

<>

Blue

Specify sort order based on an existing Sort expression on the tablix. Use [SizeSortOrder]
field in a table. Tablix Proper ties Dialog Box,
Sor ting .

Link a query parameter to a report Parameters collection on the dataset. [@Category]


parameter. Use Dataset Proper ties Dialog
Box, Parameters . [@Category]

Pass a parameter from a main report Parameters collection on the [@Category]


to a subreport. subreport. Use Subrepor t
Proper ties Dialog Box, [@Category]
Parameters .

Using Complex Expressions


Complex expressions can contain multiple built-in references, operators, and function calls, and appear on the
design surface as <<Expr>> . To see or change the expression text, you must open the Expression dialog box or
type directly in the Properties pane. The following table lists typical ways you can use a complex expression to
display or organize data or change report appearance, including the property to set, the dialog box you typically
use to set it, and the value for the property. You can type an expression directly into a dialog box, on the design
surface, or in the Properties pane.

P RO P ERT Y, C O N T EXT, A N D DIA LO G


F UN C T IO N A L IT Y BOX P RO P ERT Y VA L UE

Calculate aggregate values for a Value property for a placeholder inside =First(Fields!Sales.Value,"DataSet1")
dataset. of a text box. Use Placeholder
Proper ties Dialog Box, General.

Concatenate text and expressions in Value for a placeholder inside of a text ="This report began processing
the same text box. box that is placed in a page header or at " & Globals!ExecutionTime
page footer. Use Placeholder
Proper ties Dialog Box, General.

Calculate an aggregate value for a Value for a placeholder inside of a text =Max(Fields!Total.Value,"DataSet2")
dataset in a different scope. box that is placed in a tablix group.
Use Placeholder Proper ties Dialog
Box, General.

Format data in a text box depending Color for a placeholder inside of a text =IIF(Fields!TotalDue.Value <
on value. box in the details row for a tablix. Use 10000,"Red","Black")
Text Box Proper ties Dialog Box,
Font .

Calculate a value once to refer to Value for a report variable. Use =Variables!MyCalculation.Value
throughout the report. Repor t Proper ties Dialog Box,
Variables .

Include specific values for more than Filter equation for a group in a tablix. For data type, select Boolean .
one field from a dataset. Use Tablix Proper ties Dialog Box,
Filters . =IIF(InStr(Fields!Subcat.Value,"Shorts")=0
AND (Fields!Size.Value="M" OR
Fields!Size.Value="S"),TRUE, FALSE)

TRUE
P RO P ERT Y, C O N T EXT, A N D DIA LO G
F UN C T IO N A L IT Y BOX P RO P ERT Y VA L UE

Hide a text box on the design surface, Hiddenproperty on a text box. Use =Not Parameters! Show<boolean
that can be toggled by the user using Text Box Proper ties Dialog Box, parameter> .Value
a Boolean parameter named Show. Visibility .

Specify dynamic page header or footer Value for a placeholder inside of a text ="Page " & Globals!PageNumber &
content. box that is placed in the page header " of " & Globals!TotalPages
or footer.

Specify a data source dynamically by Connection string on the Data source. ="Data Source=" &
using a parameter. Use Data Source Proper ties Parameters!ServerName.Value &
";initial
Dialog Box, General. catalog=AdventureWorks2012"

Identify all the values for a multivalue Value for a placeholder inside of a text =Join(Parameters!MyMultivalueParameter.Value,",
parameter chosen by the user. box. Use Tablix Proper ties Dialog ")
Box, Filters .

Specify page breaks for every 20 rows Group expression for a group in a =Ceiling(RowNumber(Nothing)/20)
in a tablix with no other groups. tablix. Use Group Proper ties Dialog
Box, Page Breaks . Select the option
Between each instance of a
group .

Specify conditional visibility based on a Hidden property for a tablix. Use =Not Parameters!< boolean
parameter. Tablix Proper ties Dialog Box, parameter >.Value
Visibility .

Specify a date formatted for a specific Value for a placeholder inside of a text =Fields!OrderDate.Value.ToString(System.Globalization.CultureInfo.CreateSpecif
culture. box in a data region. Use Textbox DE"))
Proper ties Dialog Box, General.

Concatenate a string and a number Value for a placeholder inside of a text ="Growth Percent: " &
formatted as a percentage to two box in a data region. Use Textbox Format(Fields!Growth.Value,"p2")
decimal places. Proper ties Dialog Box, General.

See Also
Expressions (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Report Parameters (Report Builder and Report Designer)
Filter Equation Examples (Report Builder and SSRS)
Filter, Group, and Sort Data (Report Builder and SSRS)
Page Headers and Footers (Report Builder and SSRS)
Formatting Text and Placeholders (Report Builder and SSRS)
Hide an Item (Report Builder and SSRS)
Expression Scope for Totals, Aggregates, and Built-in
Collections
11/2/2020 • 12 minutes to read • Edit Online

When you write expressions, you will find that the term scope is used in multiple contexts. Scope can specify the
data to use for evaluating an expression, the set of text boxes on a rendered page, the set of report items that
can be shown or hidden based on a toggle. You will see the term scope in topics that relate to expression
evaluation, aggregate function syntax, conditional visibility, and also in error messages related to these areas.
Use the following descriptions to help differentiate which meaning of scope applies:
Data scope Data scope is a hierarchy of scopes that the report processor uses as it combines report data
and report layout, and builds out data regions such as tables and charts on which to display the data.
Understanding data scope helps you to get the results that you want when you do the following:
Write expressions that use aggregate functions Specify which data to aggregate. The
location of the expression in the report influences which data is in scope for aggregate
calculations.
Add sparklines to a table or matrix Specify a minimum and maximum range for chart axes to
align nested instances in a table or matrix.
Add indicators to a table or matrix Specify a minimum and maximum scale for the gauge to
align nested instances in a table or matrix.
Write sor t expressions Specify a containing scope that you can use to synchronize sort order
among multiple related report items.
Cell scope Cell scope is the set of row and column groups in a tablix data region to which a cell belongs.
By default, each tablix cell contains a text box. The value of the text box is the expression. The location of
the cell indirectly determines which data scopes you can specify for aggregate calculations in the
expression.
Repor t item scope Report item scope refers to the collection of items on a rendered report page. The
report processor combines data and report layout elements to produce a compiled report definition.
During this process, data regions such as tables and matrices expand as needed to display all of the
report data. The compiled report is then processed by a report renderer. The report renderer determines
which report items appear on each page. On a report server, each page is rendered as you view it. When
you export a report, all pages are rendered. Understanding report item scope helps you get the results
that you want when you do the following:
Add toggle items Specify a text box to add the toggle that controls the visibility of a report item.
You can only add a toggle to text boxes that are in the scope of the report item that you want to
toggle.
Write expressions in page headers and footers Specify values in expressions in text boxes or
other report items that appear on the rendered page.
Understanding scopes helps you to successfully write expressions that give you the results that you want.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Understanding Data Scope and Data Hierarchy


Data scope specifies a set of report data. Data scope has a natural hierarchy with an inherent containment
relationship. Scopes higher on the hierarchy contain scopes that are lower on the hierarchy. The following list of
data scopes describes the hierarchy in order from most data to least data:
Datasets, after dataset filters are applied Specifies the report dataset linked to the data region or to
a report item in the report body. The data used for aggregation is from the report dataset after dataset
filter expressions are applied. For shared datasets, this means both the filters in the shared dataset
definition and the filters in the shared dataset instance in the report.
Data regions Specifies data from the data region after data region filter and sort expressions are
applied. Group filters are not used when calculating aggregates for data regions.
Data region groups, after group filters are applied Specifies the data after the group expressions
and group filters are applied for the parent group and child groups. For a table, this is the row and
column groups. For a chart, this is the series and category groups. For the purposes of identifying scope
containment, every parent group contains its child groups.
Nested data regions Specifies the data for the nested data region in the context of the cell to which it
has been added, and after the nested data region filter and sort expressions have been applied.
Row and column groups for the nested data regions Specifies the data after the nested data region
group expressions and group filters have been applied.
Understanding containing and contained scopes is important when you write expressions that include
aggregate functions.

Cell Scope and Expressions


When you specify a scope, you are indicating to the report processor which data to use for an aggregate
calculation. Depending on the expression and the location of the expression, valid scopes might be a containing
scopes, also known as parent scopes, or a contained scopes, also known as child or nested scopes. In general,
you cannot specify an individual group instance in an aggregate calculation. You can specify an aggregate across
all group instances.
As the report processor combines data from a report dataset with the tablix data region, it evaluates group
expressions and creates the rows and columns that are needed to represent the group instances. The value of
expressions in a text box in each tablix cell is evaluated in the context of the cell scope. Depending on the tablix
structure, a cell can belong to multiple row groups and column groups. For aggregate functions, you can specify
which scope to use by using one of the following scopes:
Default scope The data that is in scope for calculations when the report processor evaluates an
expression. The default scope is the innermost set of groups to which the cell or data point belongs. For a
tablix data region, the set can include row and column groups. For a chart data region, the set can include
category and series groups.
Named scope The name of a dataset, a data region, or a data region group that is in scope for the
expression. For aggregate calculations, you can specify a containing scope. You cannot specify a named
scope for both a row group and a column group in a single expression. You cannot specify a contained
scope unless the expression is for an aggregate of an aggregate.
The following expression generates the interval years between SellStartDate and LastReceiptDate. These
fields are in two different datasets, DataSet1 and DataSet2. The First Function (Report Builder and SSRS),
which is an aggregate function, returns the first value of SellStartDate in DataSet1 and the first value of
LastReceiptDate in DataSet2.

=DATEDIFF("yyyy", First(Fields!SellStartDate.Value, "DataSet1"), First(Fields!LastReceiptDate.Value,


"DataSet2"))

Domain scope Also called synchronization scope. A type of data scope that applies to expression
evaluation for nested data regions. Domain scope is used to specify aggregates across all instances of a
group so that nested instances can be aligned and easily compared. For example, you can align the range
and height for sparklines embedded in a table so that the values line up.
In some locations of a report, you must specify a scope. For example, for a text box on the design surface, you
must specify the name of the dataset to use: =Max(Fields!Sales.Value,"Dataset1") . In other locations, there is an
implicit default scope. For example, if you do not specify an aggregate for a text box in a group scope, the default
aggregate First is used.
Each aggregate function topic lists the scopes that are valid for its use. For more information, see Aggregate
Functions Reference (Report Builder and SSRS).

Example Aggregate Expressions for a Table Data Region


To write expressions that specify non-default scopes takes some practice. To help you understand different
scopes, use the following figure and table. The figure labels each cell in a sales information table that displays
quantity of items sold by year and quarter and also by sales territory. Note the visual cues on the row handles
and column handles that display row and column group structure, indicating nested groups. The table has the
following structure:
A table header that contains the corner cell and three rows that include the column group headers.
Two nested row groups based on category named Cat and subcategory named SubCat.
Two nested column groups based on year named Year and quarter named Qtr.
One static totals column labeled Totals.
One adjacent column group based on sales territory named Territory.
The column header for the territory group has been split into two cells for display purposes. The first cell
displays the territory name and totals, and the second cell has placeholder text that calculated the percentage
contribution for each territory to all sales.
Assume the dataset is named DataSet1 and the table is named Tablix1. The following table lists the cell label, the
default scope, and examples. The values for placeholder text are shown by in expression syntax.

T EXT O R P L A C EH O L DER
C EL L DEFA ULT SC O P E P L A C EH O L DER L A B EL S VA L UES

C01 Tablix1 [Sum(Qty)] Aggregates and Scope

=Sum(Fields!Qty.Value)

C02 Outer column group "Year" [Year] =Fields!Year.Value

([YearQty]) =Sum(Fields!Qty.Value)

C03 Tablix1 [Sum(Qty)] Totals

=Sum(Fields!Qty.Value)

C04 Peer column group ([Total]) Territory


"Territory"
=Sum(Fields!Qty.Value)

C05 Inner group "Qtr" [Qtr] Q

([QtrQty]) =Fields!Qtr.Value

=Sum(Fields!Qty.Value)

C06 Peer column group [Territory] =Fields!Territory.Value


"Territory"
([Tty]) =Sum(Fields!Qty.Value)

[Pct] =FormatPercent(Sum(Fields!Qty.Value,"Territory")/Sum(Fields!Qty.Value,"
& " of " & Sum(Fields!Qty.Value,"Tablix1")

C07 Outer row group "Cat" [Cat] =Fields!Cat.Value

[Sum(Qty)] =Sum(Fields!Qty.Value)

C08 Same as C07

C09 Outer row group "Cat" and [Sum(Qty)] =Sum(Fields!Qty.Value)


inner column group "Qtr"

C10 Same as C07 <<Expr>> =Sum(Fields!Qty.Value) & ": " &


FormatPercent(Sum(Fields!Qty.Value)/Sum(Fields!Qty.Value,"Tablix1"),0)
& " of " & Sum(Fields!Qty.Value,"Tablix1")

C11 Outer row group "Cat" and <<Expr>> =Sum(Fields!Qty.Value) & ": " &
column group "Territory" FormatPercent(Sum(Fields!Qty.Value)/Sum(Fields!Qty.Value,"Territory"),0
& " of " & Sum(Fields!Qty.Value,"Territory")

C12 Inner row group "Subcat" [Subcat] =Fields!SubCat.Value

[Sum(Qty)] =Sum(Fields!Qty.Value)

C13 Inner row group "Subcat" [Sum(Qty)] =Sum(Fields!Qty.Value)


and inner column group
"Qtr"

C14 Inner row group "Subcat" <<Expr>> =Sum(Fields!Qty.Value) & ": " &
FormatPercent(Sum(Fields!Qty.Value)/Sum(Fields!Qty.Value,"Cat"),0)
& " of " & Sum(Fields!Qty.Value,"Cat")

C15 Inner row group "Subcat" <<Expr>> =Sum(Fields!Qty.Value) & ": " &
and column group FormatPercent(Code.CalcPercentage(Sum(Fields!Qty.Value),Sum(Fields!Qty.
& " of " & Sum(Fields!Qty.Value,"Cat")
"Territory"

For more information about interpreting visual cues on tablix data regions, see Tablix Data Region Cells, Rows,
and Columns (Report Builder) and SSRS. For more information about the tablix data region, see Tablix Data
Region Cells, Rows, and Columns (Report Builder) and SSRS. For more information about expressions and
aggregates, see Expression Uses in Reports (Report Builder and SSRS) and Aggregate Functions Reference
(Report Builder and SSRS).

Synchronizing Scales for Sparklines


To compare values across time on the horizontal axis for a sparkline chart that is nested in a table or matrix, you
can synchronize the category group values. This is called aligning axes. By selecting the option to align axes, the
report automatically sets minimum and maximum values for an axis, and provides placeholders for aggregate
values that do not exist in every category. This causes the values in the sparkline to line up across every
category and enables you to compare values for each row of aggregated data. By selecting this option, you are
changing the scope of the expression evaluation to the domain scope. Setting the domain scope for a nested
chart also indirectly controls the color assignment for each category in the legend.
For example, in a sparkline that shows weekly trends, suppose that one city had sales data for 3 months and
another city had sales data for 12 months. Without synchronized scales, the sparkline for first city would only
have 3 bars and they would be much wider and occupy the same space as the 12 month set of bars for the
second city.
For more information, see Align the Data in a Chart in a Table or Matrix (Report Builder and SSRS).

Synchronizing Ranges for Indicators


To specify the data values to use for a set of indicators, you must specify a scope. Depending on the layout of the
data region that contains the indicator, you specify a scope or a containing scope. For example, in a group
header row associated with category sales, a set of arrows (up, down, sideways) can indicate sales values
relative to a threshold. The containing scope is the name of the table or matrix that contains the indicators.
For more information, see Set Synchronization Scope (Report Builder and SSRS).

Specifying Scopes from the Page Header or Page Footer


To display data that is different on each page of a report, you add expressions to a report item that must be on
the rendered page. Because a report is split into pages while it is rendered, only during rendering can it be
determined which items exist on a page. For example, a cell in a detail row has a text box that has many
instances on a page.
For this purpose, there is a global collection called ReportItems. This is the set of text boxes on the current page.
For more information, see Page Headers and Footers (Report Builder and SSRS) and ReportItems Collection
References (Report Builder and SSRS).

Specifying a Toggle Item for Drilldown and Conditional Visibility


Toggles are plus or minus sign images that are added to a text box and that a user can click to show or hide
other report items. On the Visibility page for most report item properties, you can specify which report item to
add the toggle to. The toggle item must be in a higher containment scope than the item to show or hide.
In a tablix data region, to create a drilldown effect where you click a text box to expand the table to show more
data, you must set the Visibility property on the group, and select as the toggle a text box in a group header
that is associated with a containing group.
For more information, see Add an Expand or Collapse Action to an Item (Report Builder and SSRS).

Specifying a Sort Expression to Synchronize Sort Order


When you add an interactive sort button to a table column, you can synchronize sorting for multiple items that
have a common containing scope. For example, you can add a sort button to a column header in a matrix, and
specify the containing scope as the name of the dataset that is bound to the matrix. When a user clicks the sort
button, not only are the matrix rows sorted, but also the chart series groups of charts that are bound to the
same dataset are sorted. In this way, all data regions that depend on that dataset can be synchronized to show
the same sort order.
For more information, see Filter, Group, and Sort Data (Report Builder and SSRS).

Suppressing Null or Zero Values in a Cell


For many reports, calculations that are scoped to groups can create many cells that have zero (0) or null values.
To reduce clutter in your report, add an expression to return blanks if the aggregate value is 0. For more
information, see "Examples that Suppress Null or Zero Values" in Expression Examples (Report Builder and
SSRS).

See Also
Expression Examples (Report Builder and SSRS)
Group Expression Examples (Report Builder and SSRS)
Creating Recursive Hierarchy Groups (Report Builder and SSRS)
Tables, Matrices, and Lists (Report Builder and SSRS)
Formatting Text and Placeholders (Report Builder and SSRS)
Custom Code and Assembly References in
Expressions in Report Designer (SSRS)
3/5/2021 • 9 minutes to read • Edit Online

You can add references to custom code embedded in a report or to custom assemblies that you build and save
to your computer and deploy to the report server. Use embedded code for custom constants, complex functions
or functions that are used multiple times in a single report. Use custom code assemblies to maintain code in a
single place and share it for use by multiple reports. Custom code can include new custom constants, variables,
functions, or subroutines. You can include read-only references to built-in collections such as the Parameters
collection. However, you cannot pass sets of report data values to custom functions; specifically, custom
aggregates are not supported.

IMPORTANT
For time-sensitive calculations that are evaluated once at run-time and that you want to remain the same value
throughout report processing, consider whether to use a report variable or group variable. For more information, see
Report and Group Variables Collections References (Report Builder and SSRS).

Report Designer is the preferred authoring environment to use to add custom code to a report. Report Builder
supports processing reports that have valid expressions, or that include references to custom assemblies on a
report server. Report Builder does not provide a way to add a reference to a custom assembly.

NOTE
Be aware that during an upgrade of a report server, reports that depend on custom assemblies might require additional
steps to complete the upgrade.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Working with Custom Code in Report Builder


In Report Builder, you can open a report from a report server that includes references to custom assemblies. For
example, you can edit reports that are created and deployed by using Report Designer in SQL Server Data Tools
(SSDT). The custom assemblies must be deployed to the report server.
You cannot do the following:
1. Add references or class member instances to a report.
2. Preview a report with references to custom assemblies in local mode.

Including References to Commonly Used Functions


Use the Expression dialog box to view a categorized list of common functions built-in to Reporting Services.
When you expand Common Functions and click a category, the Item pane displays the list of functions that
you include in an expression. The common functions include classes from the .NET Framework Math and
Convert namespaces and Visual Basic run-time library functions. For convenience, you can view the most
commonly used functions in the Expression dialog box, where they are listed by category: Text, Date and Time,
Math, Inspection, Program Flow, Aggregate, Financial, Conversion, and Miscellaneous. Less commonly used
functions do not appear in the list but can still be used in an expression.
To use a built-in function, double-click the function name in the Item pane. A description of the function appears
in the Description pane and an example of the function call appears in the Example pane. In the code pane, when
you type the function name followed by a left parenthesis ( , the IntelliSense help displays each valid syntax for
the function call. For example, to calculate the maximum value for a field named Quantity in a table, add the
simple expression =Max( to the Code pane, and then use the smart tags to view all possible valid syntaxes for
the function call. To complete this example, type =Max(Fields!Quantity.Value) .
For more information about each function, see Math, Convert, and Visual Basic Runtime Library Members on
MSDN.

Including References to Less Commonly Used Functions


To include a reference to other less commonly used CLR namespaces, you must use a fully qualified reference,
for example, StringBuilder. IntelliSense is not supported in the code pane of the Expression dialog box for these
less commonly used functions.
For more information, see Visual Basic Runtime Library Members on MSDN.

Including References to External Assemblies


To include a reference to a class in an external assembly, you must identify the assembly for the report
processor. Use the References page of the Repor t Proper ties dialog box to specify the fully qualified name of
the assembly to add to the report. In your expression, you must use the fully qualified name for the class in the
assembly. Classes in an external assembly do not appear in the Expression dialog box; you must provide the
correct name for the class. A fully qualified name includes the namespace, the class name, and the member
name.

Including Embedded Code


To add embedded code to a report, use the Code tab of the Repor t Proper ties dialog box. The code block you
create can contain multiple methods. Methods in embedded code must be written in Microsoft Visual Basic and
must be instance-based. The report processor automatically adds references for the System.Convert and
System.Math namespaces. Use the References page of the Repor t Proper ties dialog box to add additional
assembly references. For more information, see Add an Assembly Reference to a Report (SSRS).
Methods in embedded code are available through a globally defined Code member. You access these by
referring to the Code member and the method name. The following example calls the method ToUSD , which
converts the value in the StandardCost field to a dollar value:

=Code.ToUSD(Fields!StandardCost.Value)

To reference built-in collections in your custom code, include a reference to the built-in Repor t object:

=Report.Parameters!Param1.Value

The following examples show how to define some custom constants and variables.
Public Const MyNote = "Authored by Bob"
Public Const NCopies As Int32 = 2
Public Dim MyVersion As String = "123.456"
Public Dim MyDoubleVersion As Double = 123.456

Although custom constants do not appear in the Constants category in the Expression dialog box (which only
displays built-in constants), you can add references to them from any expression, as shown in the following
examples. In an expression, a custom constant is treated as a Variant .

=Code.MyNote
=Code.NCopies
=Code.MyVersion
=Code.MyDoubleVersion

The following example includes both the code reference and the code implementation of the function
FixSpelling , which substitutes the text "Bicycle" for all occurrences of the text "Bike" in the SubCategory field.
=Code.FixSpelling(Fields!SubCategory.Value)

The following code, when embedded in a report definition code block, shows an implementation of the
FixSpelling method. This example shows you how to use a fully qualified reference to the Microsoft .NET
Framework StringBuilder class.

Public Function FixSpelling(ByVal s As String) As String


Dim strBuilder As New System.Text.StringBuilder(s)
If s.Contains("Bike") Then
strBuilder.Replace("Bike", "Bicycle")
Return strBuilder.ToString()
Else : Return s
End If
End Function

For more information about built-in object collections and initialization, see Built-in Globals and Users
References (Report Builder and SSRS) and Initializing Custom Assembly Objects.

Including References to Parameters from Code


You can reference the global parameters collection via custom code in a Code block of the report definition or in
a custom assembly that you provide. The parameters collection is read-only and has no public iterators. You
cannot use a Visual Basic For Each construct to step through the collection. You need to know the name of the
parameter defined in the report definition before you can reference it in your code. You can, however, iterate
through all the values of a multi value parameter.
The following table includes examples of referencing the built-in collection Parameters from custom code:
**Passing an entire global parameter collection to custom code.**This function returns the value of a specific
report parameter MyParameter.
Reference in Expression =Code.DisplayAParameterValue(Parameters)

Custom Code definition

Public Function DisplayAParameterValue(ByVal parameters as Parameters) as Object


Return parameters("MyParameter").Value
End Function
Passing an individual parameter to custom code.
Reference in Expression =Code.ShowParametersValues(Parameters!DayOfTheWeek)

This example returns the value of the parameter passed in. If the parameter is a multivalue parameter, the return
string is a concatenation of all the values.
Custom Code definition

Public Function ShowParameterValues(ByVal parameter as Parameter)


as String
Dim s as String
If parameter.IsMultiValue then
s = "Multivalue: "
For i as integer = 0 to parameter.Count-1
s = s + CStr(parameter.Value(i)) + " "
Next
Else
s = "Single value: " + CStr(parameter.Value)
End If
Return s
End Function

Including References to Code from Custom Assemblies


To use custom assemblies in a report, you must first create the assembly, make it available to Report Designer,
add a reference to the assembly in the report, and then use an expression in the report to refer to the methods
contained in that assembly. When the report is deployed to the report server, you must also deploy the custom
assembly to the report server.
For information about creating a custom assembly and making it available to Reporting Services, see Using
Custom Assemblies with Reports.
To refer to custom code in an expression, you must call the member of a class within the assembly. How you do
this depends on whether the method is static or instance-based. Static methods within a custom assembly are
available globally within the report. You can access static methods in expressions by specifying the namespace,
class, and method name. The following example calls the method ToGBP , which converts the value of the
StandardCost value from dollar to pounds sterling:

=CurrencyConversion.DollarCurrencyConversion.ToGBP(Fields!StandardCost.Value)

Instance-based methods are available through a globally defined Code member. You access these by referring
to the Code member, followed by the instance and method name. The following example calls the instance
method ToEUR , which converts the value of StandardCost from dollar to euro:

=Code.m_myDollarCoversion.ToEUR(Fields!StandardCost.Value)

NOTE
In Report Designer, a custom assembly is loaded once and is not unloaded until you close Visual Studio. If you preview a
report, make changes to a custom assembly used in the report, and then preview the report again, the changes will not
appear in the second preview. To reload the assembly, close and reopen Visual Studio and then preview the report.

For more information about accessing your code, see Accessing Custom Assemblies Through Expressions.
Passing Built-in Collections into Custom Assemblies
If you want to pass built-in collections, such as the Globals or Parameters collection, into a custom assembly for
processing, you must add an assembly reference in your code project to the assembly that defines the built-in
collections and access the correct namespace. Depending on whether you are developing the custom assembly
for a report that is run on a report server (server report) or a report that is run locally in a .NET application
(local report), the assembly you need to reference is different. See below for details.
Namespace: Microsoft.ReportingServices.ReportProcessing.ReportObjectModel
Assembly (local repor t): Microsoft.ReportingServices.ProcessingObjectModel.dll
Assembly (ser ver repor t): Microsoft.ReportViewer.ProcessingObjectModel.dll
Since the content of the Fields and ReportItems collections can change dynamically at runtime, you should not
hold onto them across calls into the custom assembly (for example, in a member variable). The same
recommendation applies generally to all built-in collections.

See Also
Add Code to a Report (SSRS)
Using Custom Assemblies with Reports
Add an Assembly Reference to a Report (SSRS)
Reporting Services Tutorials (SSRS)
Expression Examples (Report Builder and SSRS)
Report Samples (Report Builder and SSRS)
Add an Assembly Reference to a Report (SSRS)
11/2/2020 • 2 minutes to read • Edit Online

When you embed custom code that contains references to Microsoft .NET Framework classes that are not in
Math or Convert, you must provide an assembly reference to the report so that the report processor can resolve
the names. For more information, see Add Code to a Report (SSRS).
To add an assembly reference to a report
1. In Design view, right-click the design surface outside the border of the report and click Repor t
Proper ties .
2. Click References .
3. In Add or remove assemblies , click Add and then click the ellipsis button to browse to the assembly.
4. In Add or remove classes , click Add and then type name of the class and provide an instance name to
use within the report.

NOTE
Specify a class and instance name only for instance-based members. Do not specify static members in the Classes
list. For more information, see Custom Code and Assembly References in Expressions in Report Designer (SSRS).

5. Click OK .

See Also
Using Custom Assemblies with Reports
Report Properties Dialog Box, References
Add Code to a Report (SSRS)
11/2/2020 • 2 minutes to read • Edit Online

In any expression, you can call your own custom code. You can provide code in the following two ways:
Embed code written in Visual Basic directly in your report. If your code refers to a Microsoft .NET
Framework that is not Math or Convert, you must add the reference to the report. For more information,
see Add an Assembly Reference to a Report (SSRS). For more information about other references you can
make from your code, see Custom Code and Assembly References in Expressions in Report Designer
(SSRS).
Provide a custom code assembly by using the .NET Framework. If you provide a custom assembly, you
must install it on both the computer where you author the report and the report server where you view
the report. For more information, see Using Custom Assemblies with Reports.
To add embedded code to a report
1. In Design view, right-click the design surface outside the border of the report and click Repor t
Proper ties .
2. Click Code .
3. In Custom code , type the code. Errors in the code produce warnings when the report runs. The
following example creates a custom function named ChangeWord that replaces the word " Bike " with "
Bicycle ".

Public Function ChangeWord(ByVal s As String) As String


Dim strBuilder As New System.Text.StringBuilder(s)
If s.Contains("Bike") Then
strBuilder.Replace("Bike", "Bicycle")
Return strBuilder.ToString()
Else : Return s
End If
End Function

4. The following example shows how to pass a dataset field named Category to this function in an
expression:

=Code.ChangeWord(Fields!Category.Value)

If you add this expression to a table cell that displays category values, whenever the word "Bike" is in the
dataset field for that row, the table cell value displays the word "Bicycle" instead.

See Also
Report Properties Dialog Box, Code
Expression Examples (Report Builder and SSRS)
Parameters Collection References (Report Builder and SSRS)
Expression Reference (Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

Report expressions support a variety of references to built-in functions and built-in collections. Expressions must
have valid Visual Basic syntax before a report can be published or processed.
To develop complex expressions or expressions that use custom code or custom assemblies, we recommend
that you use Report Designer in SQL Server Data Tools (SSDT). For more information, see Custom Code and
Assembly References in Expressions in Report Designer (SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Use the topics in this section to help write simple expressions in a report.

In This Section
Data Types in Expressions (Report Builder and SSRS)
Constants in Expressions (Report Builder and SSRS)
Operators in Expressions (Report Builder and SSRS)
Built-in Collections in Expressions (Report Builder and SSRS)
Built-in Globals and Users References (Report Builder and SSRS)
Parameters Collection References (Report Builder and SSRS)
Dataset Fields Collection References (Report Builder and SSRS)
DataSources and DataSets Collection References (Report Builder and SSRS)
Report and Group Variables Collections References (Report Builder and SSRS)
ReportItems Collection References (Report Builder and SSRS)

See Also
Expressions (Report Builder and SSRS)
Report Builder Functions - Aggregate Functions
Reference
11/2/2020 • 8 minutes to read • Edit Online

To include aggregated values in your report, you can use built-in aggregate functions in expressions. The default
aggregate function for numeric fields is SUM. You can edit the expression and use a different built-in aggregate
function or specify a different scope. Scope identifies which set of data to use for the calculation.
As the report processor combines report data and the report layout, the expressions for each report item are
evaluated. As you view each page of the report, you see the results for each expression in the rendered report
items.
The following table lists categories of built-in functions that you can include in an expression:
Built-in Aggregate Functions
Restrictions on Built-in Fields, Collections, and Aggregate Functions
Restrictions on Nested Aggregates
Calculating Running Values
Retrieving Row Counts
Looking Up Values from Another Dataset
Retrieving Sort-Dependent Values
Retrieving Server Aggregates
Retrieving Recursive Level
Testing for Scope
To determine the valid scopes for a function, see the individual function reference topic. For more information
and for examples, see Expression Scope for Totals, Aggregates, and Built-in Collections (Report Builder and
SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Built-in Aggregate Functions


The following built-in functions calculate summary values for a set of non-null numeric data in the default scope
or the named scope.

F UN C T IO N DESC RIP T IO N

Avg Returns the average of all non-null numeric values specified


by the expression, evaluated in the given scope.
F UN C T IO N DESC RIP T IO N

Count Returns a count of non-null values specified by the


expression, evaluated in the context of the given scope.

CountDistinct Returns a count of all distinct non-null values specified by


the expression, evaluated in the context of the given scope.

Max Returns the maximum value of all non-null numeric values


specified by the expression, in the context of the given
scope. You can use this for specifying a chart axis maximum
value to control the scale.

Min Returns the minimum value of all non-null numeric values


specified by the expression, in the context of the given
scope. You can use this for specifying a chart axis minimum
value to control the scale.

StDev Returns the standard deviation of all non-null numeric values


specified by the expression, evaluated in the given scope.

StDevP Returns the population standard deviation of all non-null


numeric values specified by the expression, evaluated in the
context of the given scope.

Sum Returns the sum of all the non-null numeric values specified
by the expression, evaluated in the given scope.

Union Returns the union of all the non-null spatial data values of
type SqlGeometr y or SqlGeography that are specified by
the expression, evaluated in the given scope.

Var Returns the variance of all non-null numeric values specified


by the expression, evaluated in the given scope.

VarP Returns the population variance of all non-null numeric


values specified by the expression, evaluated in the context
of the given scope.

Back to Top

Restrictions on Built-in Fields, Collections, and Aggregate Functions


The following table summarizes restrictions in report locations on where you can add expressions that contain
references to global built-in collections.

PA GEN UM B
ER DATA SO UR
CE
LO C AT IO N PA RA M ET E REP O RT IT E TOTA L PA GE REN DERF O
IN REP O RT F IEL DS RS MS S DATA SET VA RIA B L ES RM AT

Page Yes Yes At most Yes Yes Yes Yes


Header one

Page Note 1
Footer
PA GEN UM B
ER DATA SO UR
CE
LO C AT IO N PA RA M ET E REP O RT IT E TOTA L PA GE REN DERF O
IN REP O RT F IEL DS RS MS S DATA SET VA RIA B L ES RM AT

Body Yes Yes Only items No Yes Yes Yes


in the
Note 2 currnet
scope or a
containing
scope

Note 3

Report No Only No No No No No
Parameter parameters
earlier in
the list

Note 4

Field Yes Yes No No No No No

Query No Yes No No No No No
Parameter

Group Yes Yes No No Yes No No


Expression

Sort Yes Yes No No Yes Yes No


Expression
Note 5

Filter Yes Yes No No Yes Yes No


Expression
Note 6

Code No Yes No No No No No

Note 7

Report.Lan No Yes No No No No No
guage

Variables Yes Yes No No Yes Current or No


containing
scope

Aggregates Yes Yes Only in Only in Yes No No


page report item
header/pag aggregates
e footer

Lookup Yes Yes Yes No Yes No No


functions

Note 1. ReportItems must exist in the rendered report page, or their value is Null. If the visibility of a
report item depends on an expression that evaluates to False, the report item does not exist on the page.
Note 2. If a field reference is used in a group scope, and the field reference is not included in the group
expression, then the value for the field is undefined, unless there is only one value in the scope. To specify
a value, use First or Last and the group scope.
Note 3. Expressions that include a reference to ReportItems can specify values for other ReportItems in
the same group scope or in a containing group scope.
Note 4. Property values for earlier parameters might be null.
Note 5. In Member sorts only. Cannot use in data region sort expressions.
Note 6. In Member filters only. Cannot use in data region or dataset filter expressions.
Note 7. The Parameters collection is not initialized until after the Code block is processed, so methods
cannot be used to control parameters on initialization.
Note 8. Data type for all aggregates except Count and CountDistinct must be the same data type, or null,
for all values.

Back to Top

Restrictions on Nested Aggregates


The following table summarizes restrictions on which aggregates functions can specify other aggregate
functions as nested aggregates.

SUM A N D
OT H ER REP O RT IT A GGREGA
F IRST P RESO RT EM LO O K UP TE
RUN N IN G RO W N UM F UN C T IO A GGREGA F UN C T IO F UN C T IO
C O N T EXT VA L UE B ER L A ST P REVIO US NS T ES NS N

Running No No No No Yes No Yes No


Value

First No No No No Yes No No No

Last

Previous Yes Yes Yes No Yes No Yes No

Sum and No No No No Yes No Yes No


other
Presort
functions

ReportIte No No No No No No No No
m
aggregat
es

Lookup Yes Yes Yes Yes Yes Yes No No


functions
Note 1 Note 1 Note 1 Note 1 Note 1

Aggregat No No No No No No No No
e
Function

Note 1. Aggregate functions are only allowed inside the Source expression of a Lookup function if the
Lookup function is not contained in an aggregate. Aggregate functions are not allowed inside the Destination
or Result expressions of a Lookup function.

Back to Top

Calculating Running Values


The following built-in functions calculate running values for a set of data. RowNumber is like RunningValue in
that it returns the running value of a count that increments for each row within the containing scope. The scope
parameter for these functions must specify a containing scope, which controls when the count restarts.

F UN C T IO N DESC RIP T IO N

RowNumber Returns a running count of the number of rows for the


specified scope. The RowNumber function restarts counting
at 1, not 0.

RunningValue Returns a running aggregate of all non-null numeric values


specified by the expression, evaluated for the given scope.

Back to Top

Retrieving Row Counts


The following built-in function calculates the number of rows in the given scope. Use this function to count all
rows, including rows with null values.

F UN C T IO N DESC RIP T IO N

CountRows Returns the number of rows in the specified scope, including


rows with null values.

Back to Top

Looking Up Values from Another Dataset


The following lookup functions retrieve values from a specified dataset.

F UN C T IO N DESC RIP T IO N

Lookup Function Returns a value from a dataset for a specified expression.

LookupSet Function Returns a set of values from a dataset for a specified


expression.

Multilookup Function Returns the set of first-match values for a set of names from
a dataset that contains name/value pairs.

Back to Top

Retrieving Sort-Dependent Values


The following built-in functions return the first, last, or previous value within a given scope. These functions
depend on the sort order of the data values. Use these functions, for example, to find the first and last values on
a page to create a dictionary-style page header. Use Previous to compare a value in one row to the previous
row's value within a specific scope, for example, to find percentage year over year values in a table.

F UN C T IO N DESC RIP T IO N

First Returns the first value in the given scope of the specified
expression.

Last Returns the last value in the given scope of the specified
expression.

Previous Returns the value or the specified aggregate value for the
previous instance of an item within the specified scope.

Back to Top

Retrieving Server Aggregates


The following built-in function retrieves custom aggregates from the data provider. For example, using an
Analysis Services data source type, you can retrieve aggregates calculated on the data source server for use in a
group header.

F UN C T IO N DESC RIP T IO N

Aggregate Returns a custom aggregate of the specified expression, as


defined by the data provider.

Back to Top

Testing for Scope


The following built-in function tests the current context of a report item to see if it is a member of a specific
scope.

F UN C T IO N DESC RIP T IO N

InScope Indicates whether the current instance of an item is within


the specified scope.

Back to Top

Retrieving Recursive Level


The following built-in function retrieves the current level when a recursive hierarchy is processed. Use the result
of this function with the Padding property in a text box to control the indent level of a visual hierarchy for a
recursive group. For more information, see Creating Recursive Hierarchy Groups (Report Builder and SSRS).

F UN C T IO N DESC RIP T IO N

Level Returns the current level of depth in a recursive hierarchy.

Back to Top

See Also
Expression Uses in Reports (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Expression Scope for Totals, Aggregates, and Built-in Collections (Report Builder and SSRS)
Report Builder Functions - Aggregate Function
11/2/2020 • 3 minutes to read • Edit Online

Returns a custom aggregate of the specified expression, as defined by the data provider.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Syntax
Aggregate(expression, scope)

Parameters
expression
The expression on which to perform the aggregation. The expression must be a simple field reference.
scope
(String ) The name of a dataset, group, or data region that contains the report items to which to apply the
aggregate function. Scope must be a string constant andcannot be an expression. If scope is not specified, the
current scope is used.

Return Type
Return type is determined by the data provider. Returns Nothing if the data provider does not support this
function or data is not available.

Remarks
The Aggregate function provides a way to use aggregates that are calculated on the external data source.
Support for this feature is determined by the data extension. For example, the SQL Server Analysis Services data
processing extension retrieves flattened rowsets from an MDX query. Some rows in the result set can contain
aggregate values calculated on the data source server. These are known as server aggregates. To view server
aggregates in the graphical query designer for Analysis Services, you can use the Show Aggregate button on
the toolbar. For more information, see Analysis Services MDX Query Designer User Interface (Report Builder).
When you display the combination of aggregate and detail dataset values on detail rows of a Tablix data region,
server aggregates would not typically be included because they are not detail data. However, you may want to
display all values retrieved for the dataset and customize the way aggregate data is calculated and displayed.
Reporting Services detects the use of the Aggregate function in expressions in your report in order to
determine whether to display server aggregates on detail rows. If you include Aggregate in an expression in a
data region, server aggregates can only appear on group total or grand total rows, not on detail rows. If you
want to display server aggregates on detail rows, do not use the Aggregate function.
You can change this default behavior by changing the value of the Interpret subtotals as details option on
the Dataset Proper ties dialog box. When this option is set to True , all data, including server aggregates,
appears as detail data. When set to False , server aggregates appear as totals. The setting for this property
affects all data regions that are linked to this dataset.

NOTE
All containing groups for the report item that references Aggregate must have simple field references for their group
expressions, for example, [FieldName] . You cannot use Aggregate in a data region that uses complex group
expressions. For the SQL ServerAnalysis Services data processing extension, your query must include MDX fields of type
LevelProper ty (not MemberProper ty ) to support aggregation using the Aggregate function.

Expression can contain calls to nested aggregate functions with the following exceptions and conditions:
Scope for nested aggregates must be the same as, or contained by, the scope of the outer aggregate. For
all distinct scopes in the expression, one scope must be in a child relationship to all other scopes.
Scope for nested aggregates cannot be the name of a dataset.
Expression must not contain First , Last , Previous , or RunningValue functions.
Expression must not contain nested aggregates that specify recursive.
For more information, see Aggregate Functions Reference (Report Builder and SSRS) and Expression Scope for
Totals, Aggregates, and Built-in Collections (Report Builder and SSRS).
For more information about recursive aggregates, see Creating Recursive Hierarchy Groups (Report Builder and
SSRS).

Comparing the Aggregate and Sum Functions


The Aggregate function differs from numeric aggregate functions like Sum in that the Aggregate function
returns a value that is calculated by the data provider or data processing extension. Numeric aggregate
functions like Sum return a value that is calculated by the report processor on a set of data from the dataset
that is determined by the scope parameter. For more information, see the aggregate functions listed in
Aggregate Functions Reference (Report Builder and SSRS).

Example
The following code example shows an expression that retrieves a server aggregate for the field LineTotal . The
expression is added to a cell in a row that belongs to the group GroupbyOrder .

=Aggregate(Fields!LineTotal.Value, "GroupbyOrder")

See Also
Expression Uses in Reports (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Data Types in Expressions (Report Builder and SSRS)
Expression Scope for Totals, Aggregates, and Built-in Collections (Report Builder and SSRS)
Report Builder Functions - Avg Function
3/5/2021 • 2 minutes to read • Edit Online

In Reporting Services paginated reports, returns the average of all non-null numeric values specified by the
expression, evaluated in the given scope.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Syntax
Avg(expression, scope, recursive)

Parameters
expression
(Float ) The expression on which to perform the aggregation.
scope
(String ) Optional. The name of a dataset, group, or data region that contains the report items to which to apply
the aggregate function. If scope is not specified, the current scope is used.
recursive
(Enumerated Type ) Optional. Simple (default) or RdlRecursive . Specifies whether to perform the
aggregation recursively.

Return Type
Returns a Decimal for decimal expressions and a Double for all other expressions.

Remarks
The set of data specified in the expression must have the same data type. To convert data that has multiple
numeric data types to the same data type, use conversion functions like CInt , CDbl or CDec . For more
information, see Type Conversion Functions.
The value of scope must be a string constant and cannot be an expression. For outer aggregates or aggregates
that do not specify other aggregates, scope must refer to the current scope or a containing scope. For
aggregates of aggregates, nested aggregates can specify a child scope.
Expression can contain calls to nested aggregate functions with the following exceptions and conditions:
Scope for nested aggregates must be the same as, or contained by, the scope of the outer aggregate. For
all distinct scopes in the expression, one scope must be in a child relationship to all other scopes.
Scope for nested aggregates cannot be the name of a dataset.
Expression must not contain First , Last , Previous , or RunningValue functions.
Expression must not contain nested aggregates that specify recursive.
For more information, see Aggregate Functions Reference (Report Builder and SSRS) and Expression Scope for
Totals, Aggregates, and Built-in Collections (Report Builder and SSRS).
For more information about recursive aggregates, see Creating Recursive Hierarchy Groups (Report Builder and
SSRS).

Example
The following two code examples provide an average of all values in the Cost field contained in a dataset
named Inventory .

=Avg(Fields!Cost.Value, "Inventory")
OR
=Avg (CDbl(Fields!Cost.Value), "Inventory")

See Also
Expression Uses in Reports (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Data Types in Expressions (Report Builder and SSRS)
Expression Scope for Totals, Aggregates, and Built-in Collections (Report Builder and SSRS)
Report Builder Functions - Count Function
11/2/2020 • 2 minutes to read • Edit Online

Returns a count of non-null values specified by the expression, evaluated in the context of the given scope.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Syntax
Count(expression, scope, recursive)

Parameters
expression
(Variant or Binar y ) The expression on which to perform the aggregation, for example,
=Fields!FieldName.Value .

scope
(String ) The name of a dataset, group, or data region that contains the report items to which to apply the
aggregate function. If scope is not specified, the current scope is used.
recursive
(Enumerated Type ) Optional. Simple (default) or RdlRecursive . Specifies whether to perform the
aggregation recursively.

Return Type
Returns an Integer .

Remarks
The value of scope must be a string constant and cannot be an expression. For outer aggregates or aggregates
that do not specify other aggregates, scope must refer to the current scope or a containing scope. For
aggregates of aggregates, nested aggregates can specify a child scope.
Expression can contain calls to nested aggregate functions with the following exceptions and conditions:
Scope for nested aggregates must be the same as, or contained by, the scope of the outer aggregate. For
all distinct scopes in the expression, one scope must be in a child relationship to all other scopes.
Scope for nested aggregates cannot be the name of a dataset.
Expression must not contain First , Last , Previous , or RunningValue functions.
Expression must not contain nested aggregates that specify recursive.
For more information, see Aggregate Functions Reference (Report Builder and SSRS) and Expression Scope for
Totals, Aggregates, and Built-in Collections (Report Builder and SSRS).
For more information about recursive aggregates, see Creating Recursive Hierarchy Groups (Report Builder and
SSRS).
Example

Description
The following code example shows an expression that calculates the number of non-null values of Size for the
default scope and for a parent group scope. The expression is added to a cell in a row that belongs to the child
group GroupbySubcategory . The parent group is GroupbyCategory . The expression displays the results for
GroupbySubcategory (the default scope) and then for GroupbyCategory (the parent group scope).

NOTE
Expressions should not contain actual carriage returns and line breaks; these are included in the example to support
documentation renderers. If you copy the following example, remove carriage returns from each line.

Code
="Count (Subcategory): " & Count(Fields!Size.Value) &
"Count (Category): " & Count(Fields!Size.Value,"GroupbyCategory")

See Also
Expression Uses in Reports (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Data Types in Expressions (Report Builder and SSRS)
Expression Scope for Totals, Aggregates, and Built-in Collections (Report Builder and SSRS)
Report Builder Functions - CountDistinct Function
5/20/2020 • 2 minutes to read • Edit Online

Returns a count of all distinct non-null values specified by the expression, evaluated in the context of the given
scope.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Syntax
CountDistinct(expression, scope, recursive)

Parameters
expression
(Variant ) The expression on which to perform the aggregation.
scope
(String ) Optional. The name of a dataset, group, or data region that contains the report items to which to apply
the aggregate function. If scope is not specified, the current scope is used.
recursive
(Enumerated Type ) Optional. Simple (default) or RdlRecursive . Specifies whether to perform the
aggregation recursively.

Return Type
Returns an Integer .

Remarks
The value of scope must be a string constant and cannot be an expression. For outer aggregates or aggregates
that do not specify other aggregates, scope must refer to the current scope or a containing scope. For
aggregates of aggregates, nested aggregates can specify a child scope.
Expression can contain calls to nested aggregate functions with the following exceptions and conditions:
Scope for nested aggregates must be the same as, or contained by, the scope of the outer aggregate. For
all distinct scopes in the expression, one scope must be in a child relationship to all other scopes.
Scope for nested aggregates cannot be the name of a dataset.
Expression must not contain First , Last , Previous , or RunningValue functions.
Expression must not contain nested aggregates that specify recursive.
For more information, see Aggregate Functions Reference (Report Builder and SSRS) and Expression Scope for
Totals, Aggregates, and Built-in Collections (Report Builder and SSRS).
For more information about recursive aggregates, see Creating Recursive Hierarchy Groups (Report Builder and
SSRS).

Example
The following code example shows an expression that calculates the number of unique non-null values of Size
for the default scope and for a parent group scope. The expression is added to a cell in a row that belongs to the
child group GroupbySubcategory . The parent group is GroupbyCategory . The expression displays the results for
GroupbySubcategory (the default scope) and then for GroupbyCategory (the parent group scope).

NOTE
Expressions should not contain actual carriage returns and line breaks; these are included in the example code to support
documentation renderers. If you copy the following example, remove carriage returns from each line.

="Distinct count (Subcategory): " & CountDistinct(Fields!Size.Value) &


"Distinct count (Category): " & CountDistinct(Fields!Size.Value,"GroupbyCategory")

See Also
Expression Uses in Reports (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Data Types in Expressions (Report Builder and SSRS)
Expression Scope for Totals, Aggregates, and Built-in Collections (Report Builder and SSRS)
Report Builder Functions - CountRows Function
11/2/2020 • 2 minutes to read • Edit Online

Returns the number of rows in the specified scope, including rows with null values.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Syntax
CountRows(scope, recursive)

Parameters
scope
(String ) The name of a dataset, data region, or group that contains the report items to count.
recursive
(Enumerated Type ) Optional. Simple (default) or RdlRecursive . Specifies whether to perform the
aggregation recursively.

Return Type
Returns an Integer .

Remarks
CountRows counts all rows in the specified scope, including rows that have null values.
The value of scope cannot be an expression and must refer to the current scope or a containing scope.
For more information, see Aggregate Functions Reference (Report Builder and SSRS) and Expression Scope for
Totals, Aggregates, and Built-in Collections (Report Builder and SSRS).
For more information about recursive aggregates, see Creating Recursive Hierarchy Groups (Report Builder and
SSRS).

Example
The following code example shows an expression that calculates the number of rows in a row group named
GroupbyCategory (based on the expression [Category] ).

="Number of rows: " & CountRows("GroupbyCategory")

See Also
Expression Uses in Reports (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Data Types in Expressions (Report Builder and SSRS)
Expression Scope for Totals, Aggregates, and Built-in Collections (Report Builder and SSRS)
Report Builder Functions - First Function
11/2/2020 • 2 minutes to read • Edit Online

Returns the first value in the given scope of the specified expression.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Syntax
First(expression, scope)

Parameters
expression
(Variant or Binar y ) The expression on which to perform the aggregation, for example,
=Fields!FieldName.Value .

scope
(String ) Optional. The name of a dataset, group, or data region that contains the report items to which to apply
the aggregate function. If scope is not specified, the current scope is used.

Return Type
Determined by the type of expression.

Remarks
The First function returns the first value in a set of data after all sorting and filtering have been applied at the
specified scope.
The First function cannot be used in group filter expressions with anything except the current (default) scope.
You can also use First in a page header to return the first value from the Repor tItems collection for a page in
order to produce dictionary-style headings that display the first and last entries on a page.
The value of scope must be a string constant and cannot be an expression. For outer aggregates or aggregates
that do not specify other aggregates, scope must refer to the current scope or a containing scope. For
aggregates of aggregates, nested aggregates can specify a child scope.
Expression can contain calls to nested aggregate functions with the following exceptions and conditions:
Scope for nested aggregates must be the same as, or contained by, the scope of the outer aggregate. For
all distinct scopes in the expression, one scope must be in a child relationship to all other scopes.
Scope for nested aggregates cannot be the name of a dataset.
Expression must not contain First , Last , Previous , or RunningValue functions.
Expression must not contain nested aggregates that specify recursive.
For more information, see Aggregate Functions Reference (Report Builder and SSRS) and Expression Scope for
Totals, Aggregates, and Built-in Collections (Report Builder and SSRS).
For more information about recursive aggregates, see Creating Recursive Hierarchy Groups (Report Builder and
SSRS).

Example
The following code example returns the first product number in the Category group of a data region:

=First(Fields!ProductNumber.Value, "Category")

See Also
Expression Uses in Reports (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Data Types in Expressions (Report Builder and SSRS)
Expression Scope for Totals, Aggregates, and Built-in Collections (Report Builder and SSRS)
Report Builder Functions - InScope Function
11/2/2020 • 2 minutes to read • Edit Online

Indicates whether the current instance of an item is in the specified scope.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Syntax
InScope(scope)

Parameters
scope
(String ) The name of a dataset, data region, or group that specifies a scope.

Return Type
Returns a Boolean .

Remarks
The InScope function tests the scope of the current instance of a report item for membership in the scope
specified by the scopeparameter.
Scope cannot be an expression.
A typical use for the InScope function is in data regions that have dynamic scoping. For example, InScope can
be used in a drillthrough link in a data region cells to provide a different report name and different sets of
parameters depending on which cell is clicked. An example of this is as follows:
The following expression, used as the report name in a drillthrough link, opens the ProductDetail report
if the clicked cell is in the Month group, and the ProductSummary report if it is not.

=Iif(InScope("Month"), "ProductDetail", "ProductSummary")

The following expression, used in the Omit property of a drillthrough report parameter, will pass the
parameter to the target report only if the clicked cell is in the Product group.

=Not(InScope("Product"))

For more information, see Aggregate Functions Reference (Report Builder and SSRS) and Expression Scope for
Totals, Aggregates, and Built-in Collections (Report Builder and SSRS).

Example
The following code example indicates whether the current instance of the item is in the Product dataset, data
region, or group scope.

=InScope("Product")

See Also
Expression Uses in Reports (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Data Types in Expressions (Report Builder and SSRS)
Expression Scope for Totals, Aggregates, and Built-in Collections (Report Builder and SSRS)
Report Builder Functions - Last Function
11/2/2020 • 2 minutes to read • Edit Online

Returns the last value in the given scope of the specified expression.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Syntax
Last(expression, scope)

Parameters
expression
(Variant or Binar y ) The expression on which to perform the aggregation, for example,
=Fields!Fieldname.Value .

scope
(String ) (Optional) The name of a dataset, data region, or group that contains the report items to which to apply
the function. If scope is not specified, the current scope is used.

Return Type
Determined by the type of expression.

Remarks
The Last function returns the final value in a set of data after all sorting and filtering have been applied at the
specified scope.
The Last function cannot be used in group filter expressions with anything except the current (default) scope.
You can also use Last in a page header to return the last value from the Repor tItems collection for a page in
order to produce dictionary-style headings that display the first and last entries on a page.
The value of scope must be a string constant and cannot be an expression. For outer aggregates or aggregates
that do not specify other aggregates, scope must refer to the current scope or a containing scope. For
aggregates of aggregates, nested aggregates can specify a child scope.
Expression can contain calls to nested aggregate functions with the following exceptions and conditions:
Scope for nested aggregates must be the same as, or contained by, the scope of the outer aggregate. For
all distinct scopes in the expression, one scope must be in a child relationship to all other scopes.
Scope for nested aggregates cannot be the name of a dataset.
Expression must not contain First , Last , Previous , or RunningValue functions.
Expression must not contain nested aggregates that specify recursive.
For more information, see Aggregate Functions Reference (Report Builder and SSRS) and Expression Scope for
Totals, Aggregates, and Built-in Collections (Report Builder and SSRS).
For more information about recursive aggregates, see Creating Recursive Hierarchy Groups (Report Builder and
SSRS).

Example
The following code example returns the last product number in the Category group of a data region.

=Last(Fields!ProductNumber.Value, "Category")

See Also
Expression Uses in Reports (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Data Types in Expressions (Report Builder and SSRS)
Expression Scope for Totals, Aggregates, and Built-in Collections (Report Builder and SSRS)
Report Builder Functions - Level Function
11/2/2020 • 2 minutes to read • Edit Online

Returns the current level of depth in a recursive hierarchy.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Syntax
Level(scope)

Parameters
scope
(String ) (Optional). The name of a dataset, group, or data region that contains the report items to which to
apply the aggregate function. If scope is not specified, the current scope is used.

Return Type
Returns an Integer . If scope specifies a dataset or data region, or specifies a nonrecursive grouping (that is, a
grouping with no Parent element), Level returns 0. If scope is omitted, it returns the level of the current scope.

Remarks
The value returned by the Level function is zero based; that is, the first level in a hierarchy is 0.
The Level function can be used to provide indentation in a recursive hierarchy, such as an employee list.
For more information about recursive hierarchies, see Creating Recursive Hierarchy Groups (Report Builder and
SSRS).

Example
The following code example provides the level of row in the Employees group:

=Level("Employees")

See Also
Expression Uses in Reports (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Data Types in Expressions (Report Builder and SSRS)
Expression Scope for Totals, Aggregates, and Built-in Collections (Report Builder and SSRS)
Report Builder Functions - Lookup Function
11/2/2020 • 2 minutes to read • Edit Online

Returns the first matching value for the specified name from a dataset that contains name/value pairs.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Syntax
Lookup(source_expression, destination_expression, result_expression, dataset)

Parameters
source_expression
(Variant ) An expression that is evaluated in the current scope and that specifies the name or key to look up. For
example, =Fields!ProdID.Value .
destination_expression
(Variant ) An expression that is evaluated for each row in a dataset and that specifies the name or key to match
on. For example, =Fields!ProductID.Value .
result_expression
(Variant ) An expression that is evaluated for the row in the dataset where source_expression =
destination_expression, and that specifies the value to retrieve. For example, =Fields!ProductName.Value .
dataset
A constant that specifies the name of a dataset in the report. For example, "Products".

Return
Returns a Variant , or Nothing if there is no match.

Remarks
Use Lookup to retrieve the value from the specified dataset for a name/value pair where there is a 1-to-1
relationship. For example, for an ID field in a table, you can use Lookup to retrieve the corresponding Name
field from a dataset that is not bound to the data region.
Lookup does the following:
Evaluates the source expression in the current scope.
Evaluates the destination expression for each row of the specified dataset after filters have been applied,
based on the collation of the specified dataset.
On the first match of source expression and destination expression, evaluates the result expression for
that row in the dataset.
Returns the result expression value.
To retrieve multiple values for a single name or key field where there is a 1-to-many relationship, use LookupSet
Function (Report Builder and SSRS). To call Lookup for a set of values, use Multilookup Function (Report Builder
and SSRS).
The following restrictions apply:
Lookup is evaluated after all filter expressions are applied.
Only one level of lookup is supported. A source, destination, or result expression cannot include a
reference to a lookup function.
Source and destination expressions must evaluate to the same data type. The return type is the same as
the data type of the evaluated result expression.
Source, destination, and result expressions cannot include references to report or group variables.
Lookup cannot be used as an expression for the following report items:
Dynamic connection strings for a data source.
Calculated fields in a dataset.
Query parameters in a dataset.
Filters in a dataset.
Report parameters.
The Report.Language property.
For more information, see Aggregate Functions Reference (Report Builder and SSRS) and Expression Scope for
Totals, Aggregates, and Built-in Collections (Report Builder and SSRS).

Example
In the following example, assume that a table is bound to a dataset that includes a field for the product identifier
ProductID. A separate dataset called "Product" contains the corresponding product identifier ID and the product
name Name.
In the following expression, Lookup compares the value of ProductID to ID in each row of the dataset called
"Product" and, when a match is found, returns the value of the Name field for that row.

=Lookup(Fields!ProductID.Value, Fields!ID.Value, Fields!Name.Value, "Product")

See Also
Expression Uses in Reports (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Data Types in Expressions (Report Builder and SSRS)
Expression Scope for Totals, Aggregates, and Built-in Collections (Report Builder and SSRS)
Report Builder Functions - LookupSet Function
3/5/2021 • 4 minutes to read • Edit Online

Returns the set of matching values for the specified name from a dataset that contains name/value pairs.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Syntax
LookupSet(source_expression, destination_expression, result_expression, dataset)

Parameters
source_expression
(Variant ) An expression that is evaluated in the current scope and that specifies the name or key to look up. For
example, =Fields!ID.Value .
destination_expression
(Variant ) An expression that is evaluated for each row in a dataset and that specifies the name or key to match
on. For example, =Fields!CustomerID.Value .
result_expression
(Variant ) An expression that is evaluated for the row in the dataset where source_expression =
destination_expression, and that specifies the value to retrieve. For example, =Fields!PhoneNumber.Value .
dataset
A constant that specifies the name of a dataset in the report. For example, "ContactInformation".

Return
Returns a VariantArray , or Nothing if there is no match.

Remarks
Use LookupSet to retrieve a set of values from the specified dataset for a name/value pair where there is a 1-
to-many relationship. For example, for a customer identifier in a table, you can use LookupSet to retrieve all the
associated phone numbers for that customer from a dataset that is not bound to the data region.
LookupSet does the following:
Evaluates the source expression in the current scope.
Evaluates the destination expression for each row of the specified dataset after filters have been applied,
based on the collation of the specified dataset.
For each match of source expression and destination expression, evaluates the result expression for that
row in the dataset.
Returns the set of result expression values.
To retrieve a single value from a dataset with name/value pairs for a specified name where there is a 1-to-1
relationship, use Lookup Function (Report Builder and SSRS). To call Lookup for a set of values, use Multilookup
Function (Report Builder and SSRS).
The following restrictions apply:
LookupSet is evaluated after all filter expressions are applied.
Only one level of lookup is supported. A source, destination, or result expression cannot include a
reference to a lookup function.
Source and destination expressions must evaluate to the same data type.
Source, destination, and result expressions cannot include references to report or group variables.
LookupSet cannot be used as an expression for the following report items:
Dynamic connection strings for a data source.
Calculated fields in a dataset.
Query parameters in a dataset.
Filters in a dataset.
Report parameters.
The Report.Language property.
For more information, see Aggregate Functions Reference (Report Builder and SSRS) and Expression Scope for
Totals, Aggregates, and Built-in Collections (Report Builder and SSRS).

Examples
In the following examples, assume the table is bound to a dataset that includes a sales territory identifier
TerritoryGroupID. A separate dataset called "Stores" contains the list of all stores in a territory and includes the
territory identifier ID and the name of the store StoreName.
A. Use LookupSet
In the following expression, LookupSet compares the value TerritoryGroupID to ID for each row in the dataset
called "Stores". For each match, the value of the StoreName field for that row is added to the result set.

=LookupSet(Fields!TerritoryGroupID.Value, Fields!ID.Value, Fields!StoreName.Value, "Stores")

B. Use Join to create a result list


Because LookupSet returns a collection of objects, you cannot display the result expression directly in a text
box. You can concatenate the value of each object in the collection as a string.
Use the Visual Basic function Join create a delimited string from a set of objects. Use a comma as a separator to
combine the objects in a single line. In some renderers, you might use a Visual Basic line feed ( vbCrLF ) as a
separator to list each value on a new line.
The following expression, when it is used as the Value property for a text box, uses Join to create a list.

=Join(LookupSet(Fields!TerritoryGroupID.Value, Fields!ID.Value, Fields!StoreName.Value, "Stores"),",")

C. Add code to generate HTML


For text boxes that only render a few times, you might choose to add custom code to generate HTML to display
values in a text box. HTML in a text box requires extra processing, so this would not be a good choice for a text
box that is rendered thousands of times.
Copy the following Visual Basic functions to a Code block in a report definition. MakeList takes the object array
that is returned in result_expression and builds an unordered list by using HTML tags. Length returns the
number of items in the object array.

Function MakeList(ByVal items As Object()) As String


If items Is Nothing Then
Return Nothing
End If

Dim builder As System.Text.StringBuilder =


New System.Text.StringBuilder()
builder.Append("<ul>")

For Each item As Object In items


builder.Append("<li>")
builder.Append(item)
Next
builder.Append("</ul>")

Return builder.ToString()
End Function

Function Length(ByVal items as Object()) as Integer


If items is Nothing Then
Return 0
End If
Return items.Length
End Function

D. Call the function


To generate the HTML, you must call the function. Paste the following expression in the Value property for the
text box and set the markup type for text to HTML. For more information, see Add HTML into a Report (Report
Builder and SSRS).

=Code.MakeList(LookupSet(Fields!TerritoryGroupID.Value, Fields!ID.Value, Fields!StoreName.Value, "Stores"))

See Also
Expression Uses in Reports (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Data Types in Expressions (Report Builder and SSRS)
Expression Scope for Totals, Aggregates, and Built-in Collections (Report Builder and SSRS)
Report Builder Functions - Max Function
3/5/2021 • 2 minutes to read • Edit Online

Returns the maximum value of all non-null numeric values specified by the expression, in the context of the
given scope.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Syntax
Max(expression, scope, recursive)

Parameters
expression
(Variant ) The expression on which to perform the aggregation.
scope
(String ) Optional. The name of a dataset, group, or data region that contains the report items to which to apply
the aggregate function. If scope is not specified, the current scope is used.
recursive
(Enumerated Type ) Optional. Simple (default) or RdlRecursive . Specifies whether to perform the
aggregation recursively.

Return Type
Determined by the type of the expression.

Remarks
The set of data specified in the expression must have the same data type. To convert data that has multiple
numeric data types to the same data type, use conversion functions like CInt , CDbl or CDec . For more
information, see Type Conversion Functions.
The value of scope must be a string constant and cannot be an expression. For outer aggregates or aggregates
that do not specify other aggregates, scope must refer to the current scope or a containing scope. For
aggregates of aggregates, nested aggregates can specify a child scope.
Expression can contain calls to nested aggregate functions with the following exceptions and conditions:
Scope for nested aggregates must be the same as, or contained by, the scope of the outer aggregate. For
all distinct scopes in the expression, one scope must be in a child relationship to all other scopes.
Scope for nested aggregates cannot be the name of a dataset.
Expression must not contain First , Last , Previous , or RunningValue functions.
Expression must not contain nested aggregates that specify recursive.
For more information, see Aggregate Functions Reference (Report Builder and SSRS) and Expression Scope for
Totals, Aggregates, and Built-in Collections (Report Builder and SSRS).
For more information about recursive aggregates, see Creating Recursive Hierarchy Groups (Report Builder and
SSRS).

Example
The following code example provides the highest total in the Year group or data region.

=Max(Fields!OrderTotal.Value, "Year")

See Also
Expression Uses in Reports (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Data Types in Expressions (Report Builder and SSRS)
Expression Scope for Totals, Aggregates, and Built-in Collections (Report Builder and SSRS)
Report Builder Functions - Min Function
3/5/2021 • 2 minutes to read • Edit Online

Returns the minimum value of all non-null numeric values specified by the expression, in the context of the
given scope.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Syntax
Min(expression, scope, recursive)

Parameters
expression
(Variant ) The expression on which to perform the aggregation.
scope
(String ) Optional. The name of a dataset, group, or data region that contains the report items to which to apply
the aggregate function. If scope is not specified, the current scope is used.
recursive
(Enumerated Type ) Optional. Simple (default) or RdlRecursive . Specifies whether to perform the
aggregation recursively.

Return Type
Determined by the type of the expression.

Remarks
The set of data specified in the expression must have the same data type. To convert data that has multiple
numeric data types to the same data type, use conversion functions like CInt , CDbl or CDec . For more
information, see Type Conversion Functions.
The value of scope must be a string constant and cannot be an expression. For outer aggregates or aggregates
that do not specify other aggregates, scope must refer to the current scope or a containing scope. For
aggregates of aggregates, nested aggregates can specify a child scope.
Expression can contain calls to nested aggregate functions with the following exceptions and conditions:
Scope for nested aggregates must be the same as, or contained by, the scope of the outer aggregate. For
all distinct scopes in the expression, one scope must be in a child relationship to all other scopes.
Scope for nested aggregates cannot be the name of a dataset.
Expression must not contain First , Last , Previous , or RunningValue functions.
Expression must not contain nested aggregates that specify recursive.
For more information, see Aggregate Functions Reference (Report Builder and SSRS) and Expression Scope for
Totals, Aggregates, and Built-in Collections (Report Builder and SSRS).
For more information about recursive aggregates, see Creating Recursive Hierarchy Groups (Report Builder and
SSRS).

Example
The following code example provides the lowest total in the current scope.

=Min(Fields!OrderTotal.Value)

See Also
Expression Uses in Reports (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Data Types in Expressions (Report Builder and SSRS)
Expression Scope for Totals, Aggregates, and Built-in Collections (Report Builder and SSRS)
Report Builder Functions - Multilookup Function
3/5/2021 • 3 minutes to read • Edit Online

Returns the set of first-match values for the specified set of names from a dataset that contains name/value
pairs.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Syntax
Multilookup(source_expression, destination_expression, result_expression, dataset)

Parameters
source_expression
(VariantArray ) An expression that is evaluated in the current scope and that specifies the set of names or keys
to look up. For example, for a multivalue parameter, =Parameters!IDs.value .
destination_expression
(Variant ) An expression that is evaluated for each row in a dataset and that specifies the name or key to match
on. For example, =Fields!ID.Value .
result_expression
(Variant ) An expression that is evaluated for the row in the dataset where source_expression =
destination_expression, and that specifies the value to retrieve. For example, =Fields!Name.Value .
dataset
A constant that specifies the name of a dataset in the report. For example, "Colors".

Return
Returns a VariantArray , or Nothing if there is no match.

Remarks
Use Multilookup to retrieve a set of values from a dataset for name-value pairs where each pair has a 1-to-1
relationship. MultiLookup is the equivalent of calling Lookup for a set of names or keys. For example, for a
multivalue parameter that is based on primary key identifiers, you can use Multilookup in an expression in a
text box in a table to retrieve associated values from a dataset that is not bound to the parameter or to the table.
Multilookup does the following:
Evaluates the source expression in the current scope and generates an array of variant objects.
For each object in the array, calls Lookup Function (Report Builder and SSRS) and adds the result to the
return array.
Returns the set of results.
To retrieve a single value from a dataset with name-value pairs for a specified name where there is a 1-to-1
relationship, use Lookup Function (Report Builder and SSRS). To retrieve multiple values from a dataset with
name-value pairs for a name where there is a 1-to-many relationship, use LookupSet Function (Report Builder
and SSRS).
The following restrictions apply:
Multilookup is evaluated after all filter expressions are applied
Only one level of look-up is supported. A source, destination, or result expression cannot include a
reference to a lookup function.
Source and destination expressions must evaluate to the same data type.
Source, destination, and result expressions cannot include references to report or group variables.
Multilookup cannot be used as an expression for the following report items:
Dynamic connection strings for a data source.
Calculated fields in a dataset.
Query parameters in a dataset.
Filters in a dataset.
Report parameters.
The Report.Language property.
For more information, see Aggregate Functions Reference (Report Builder and SSRS) and Expression Scope for
Totals, Aggregates, and Built-in Collections (Report Builder and SSRS).

Examples
A. Use MultiLookup function
Assume a dataset called "Category" contains the field CategoryList, which is a field that contains a comma-
separated list of category identifers, for example, "2, 4, 2, 1".
The dataset CategoryNames contains the category identifier and category name, as shown in the following
table.

ID NAME

1 Accessories

2 Bikes

3 Clothing

4 Components

To look up the names that correspond to the list of identifiers, use Multilookup . You must first split the list into
a string array, call Multilookup to retrieve the category names, and concatenate the results into a string.
The following expression, when placed in a text box in a data region bound to the Category dataset, displays
"Bikes, Components, Bikes, Accessories":
=Join(MultiLookup(Split(Fields!CategoryList.Value,","),
Fields!CategoryID.Value,Fields!CategoryName.Value,"Category")),
", ")

B. Use MultiLookup with multivalue parameter


Assume a dataset ProductColors contains a color identifier field ColorID and a color value field Color, as shown
in the following table.

C O LO RID C O LO R

1 Red

2 Blue

3 Green

Assume the multivalue parameter MyColors is not bound to a dataset for its available values. The default values
for the parameter are set to 2 and 3. The following expression, when placed in a text box in a table, concatenates
the multiple selected values for the parameter into a comma-separated list and displays "Blue, Green".

=Join(MultiLookup(Parameters!MyColors.Value,Fields!ColorID.Value,Fields!Color.Value,"ProductColors"),", ")

See Also
Expression Uses in Reports (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Data Types in Expressions (Report Builder and SSRS)
Expression Scope for Totals, Aggregates, and Built-in Collections (Report Builder and SSRS)
Report Builder Functions - Previous Function
11/2/2020 • 2 minutes to read • Edit Online

Returns the value or the specified aggregate value for the previous instance of an item within the specified
scope.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Syntax
Previous(expression, scope)

Parameters
expression
(Variant or Binar y ) The expression to use to identify the data and for which to retrieve the previous value, for
example, Fields!Fieldname.Value or Sum(Fields!Fieldname.Value) .
scope
(String ) Optional. The name of a group or data region, or null (Nothing in Visual Basic), that specifies the scope
from which to retrieve the previous value specified by expression.

Return Type
Returns a Variant or Binar y .

Remarks
The Previous function returns the previous value for the expression evaluated in the specified scope after all
sorting and filtering have been applied.
If expression does not contain an aggregate, the Previous function defaults to the current scope for the report
item.
In a details group, use Previous to specify the value of a field reference in the previous instance of the detail
row.

NOTE
The Previous function only supports field references in the details group. For example, in a text box in the details group,
=Previous(Fields!Quantity.Value) returns the data for the field Quantity from the previous row. In the first row,
this expression returns a null (Nothing in Visual Basic).

If expression contains an aggregate function that uses a default scope, Previous aggregates the data within the
previous instance of the scope specified in the aggregate function call.
If expression contains an aggregate function that specifies a scope other than the default, the scope parameter
for the Previous function must be a containing scope for the scope specified in the aggregate function call.
The functions Level , InScope , Aggregate and Previous cannot be used in the expressionparameter.
Specifying the recursive parameter for any aggregate function is not supported.
For more information, see Aggregate Functions Reference (Report Builder and SSRS) and Expression Scope for
Totals, Aggregates, and Built-in Collections (Report Builder and SSRS).

Examples
Description
The following code example, when placed in the default data row of a data region, provides the value for the
field LineTotal in the previous row.
Code

=Previous(Fields!LineTotal.Value)

Description
The following example shows an expression that calculates the sum of sales on a specific day of the month and
the previous value for that day of the month in a previous year. The expression is added to a cell in a row that
belongs to the child group GroupbyDay . Its parent group is GroupbyMonth , which has a parent group
GroupbyYear . The expression displays the results for GroupbyDay (the default scope) and then for GroupbyYear
(the parent of the parent group GroupbyMonth ).
For example, for a data region with a parent group named Year , its child group named Month , and its child
group named Day (3 nested levels). The expression =Previous(Sum(Fields!Sales.Value,"Day"),"Year") in a row
associated with the group Day returns the sales value for the same day and month for the previous year.
Code

=Sum(Fields!Sales.Value) & " " & Previous(Sum(Fields!Sales.Value,"GroupbyDay"),"GroupbyYear")

See Also
Expression Uses in Reports (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Data Types in Expressions (Report Builder and SSRS)
Expression Scope for Totals, Aggregates, and Built-in Collections (Report Builder and SSRS)
Report Builder Functions - RowNumber Function
11/2/2020 • 2 minutes to read • Edit Online

Returns a running count of the number of rows for the specified scope.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Syntax
RowNumber(scope)

Parameters
scope
(String ) The name of a dataset, data region, or group, or null (Nothing in Visual Basic), that specifies the
context in which to evaluate the number of rows. Nothing specifies the outermost context, usually the report
dataset.

Remarks
RowNumber returns a running value of the count of rows within the specified scope, just as RunningValue
returns the running value of an aggregate function. When you specify a scope, you specify when to reset the
row count to 1.
scope cannot be an expression. scope must be a containing scope. Typical scopes, from the outermost to the
innermost containment, are report dataset, data region, row groups or column groups.
To increment values across columns, specify a scope that is the name of a column group. To increment numbers
down rows, specify a scope that is the name of a row group.

NOTE
Including aggregates that specify both a row group and a column group in a single expression is not supported.

For more information, see Aggregate Functions Reference (Report Builder and SSRS) and Expression Scope for
Totals, Aggregates, and Built-in Collections (Report Builder and SSRS).

Code Example
The following is an expression that you can use for the BackgroundColor property of a Tablix data region
detail row to alternate the color of detail rows for each group, always beginning with White.

=IIF(RowNumber("GroupbyCategory") Mod 2, "White", "PaleGreen")


See Also
Expression Uses in Reports (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Data Types in Expressions (Report Builder and SSRS)
Expression Scope for Totals, Aggregates, and Built-in Collections (Report Builder and SSRS)
Report Builder Functions - RunningValue Function
3/5/2021 • 2 minutes to read • Edit Online

Returns a running aggregate of all non-null numeric values specified by the expression, evaluated for the given
scope.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Syntax
RunningValue(expression, function, scope)

Parameters
expression
The expression on which to perform the aggregation, for example, [Quantity] .
function
(Enum ) The name of the aggregate function to apply to the expression, for example, Sum . This function cannot
be RunningValue , RowNumber , or Aggregate .
scope
(String ) A string constant that is the name of a dataset, data region, or group, or null (Nothing in Visual Basic),
that specifies the context in which to evaluate the aggregation. Nothing specifies the outermost context, usually
the report dataset.

Return Type
Determined by the aggregate function that is specified in the function parameter.

Remarks
The value for RunningValue resets to 0 for each new instance of the scope. If a group is specified, the running
value is reset when the group expression changes. If a data region is specified, the running value is reset for
each new instance of the data region. If a dataset is specified, the running value is not reset throughout the
entire dataset.
RunningValue cannot be used in a filter or sort expression.
The set of data for which the running value is calculated must have the same data type. To convert data that has
multiple numeric data types to the same data type, use conversion functions like CInt , CDbl or CDec . For more
information, see Type Conversion Functions.
Scope cannot be an expression.
Expression can contain calls to nested aggregate functions with the following exceptions and conditions:
Scope for nested aggregates must be the same as, or contained by, the scope of the outer aggregate. For
all distinct scopes in the expression, one scope must be in a child relationship to all other scopes.
Scope for nested aggregates cannot be the name of a dataset.
Expression must not contain First , Last , Previous , or RunningValue functions.
Expression must not contain nested aggregates that specify recursive.
To calculate the running value of the number of rows, use RowNumber . For more information, see RowNumber
Function (Report Builder and SSRS).
For more information, see Aggregate Functions Reference (Report Builder and SSRS) and Expression Scope for
Totals, Aggregates, and Built-in Collections (Report Builder and SSRS).
For more information about recursive aggregates, see Creating Recursive Hierarchy Groups (Report Builder and
SSRS).

Examples
The following code example provides a running sum of the field named Cost in the outermost scope, which is
the dataset.

=RunningValue(Fields!Cost.Value, Sum, Nothing)

The following code example provides a running sum of the field named Score in the dataset named DataSet1 .

=RunningValue(Fields!Score.Value,sum,"DataSet1")

The following code example provides a running sum of the field named Traffic Charges in the outermost
scope.

=RunningValue(Fields!Traffic Charges.Value, Sum, Nothing)

See Also
Expression Uses in Reports (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Data Types in Expressions (Report Builder and SSRS)
Expression Scope for Totals, Aggregates, and Built-in Collections (Report Builder and SSRS)
Report Builder Functions - StDev Function
3/5/2021 • 2 minutes to read • Edit Online

Returns the standard deviation of all non-null numeric values specified by the expression, evaluated in the given
scope.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Syntax
StDev(expression, scope, recursive)

Parameters
expression
(Integer or Float ) The expression on which to perform the aggregation.
scope
(String ) Optional. The name of a dataset, group, or data region that contains the report items to which to apply
the aggregate function. If scope is not specified, the current scope is used.
recursive
(Enumerated Type ) Optional. Simple (default) or RdlRecursive . Specifies whether to perform the
aggregation recursively.

Return Type
Returns a Decimal for decimal expressions and a Double for all other expressions.

Remarks
The set of data specified in the expression must have the same data type. To convert data that has multiple
numeric data types to the same data type, use conversion functions like CInt , CDbl or CDec . For more
information, see Type Conversion Functions.
The value of scope must be a string constant and cannot be an expression. For outer aggregates or aggregates
that do not specify other aggregates, scope must refer to the current scope or a containing scope. For
aggregates of aggregates, nested aggregates can specify a child scope.
Expression can contain calls to nested aggregate functions with the following exceptions and conditions:
Scope for nested aggregates must be the same as, or contained by, the scope of the outer aggregate. For
all distinct scopes in the expression, one scope must be in a child relationship to all other scopes.
Scope for nested aggregates cannot be the name of a dataset.
Expression must not contain First , Last , Previous , or RunningValue functions.
Expression must not contain nested aggregates that specify recursive.
For more information, see Aggregate Functions Reference (Report Builder and SSRS) and Expression Scope for
Totals, Aggregates, and Built-in Collections (Report Builder and SSRS).
For more information about recursive aggregates, see Creating Recursive Hierarchy Groups (Report Builder and
SSRS).

Example
The following code example provides the standard deviation of line item totals in the Order group or data
region.

=StDev(Fields!LineTotal.Value, "Order")

See Also
Expression Uses in Reports (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Data Types in Expressions (Report Builder and SSRS)
Expression Scope for Totals, Aggregates, and Built-in Collections (Report Builder and SSRS)
Report Builder Functions - StDevP Function
3/5/2021 • 2 minutes to read • Edit Online

Returns the population standard deviation of all non-null numeric values specified by the expression, evaluated
in the context of the given scope.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Syntax
StDevP(expression, scope, recursive)

Parameters
expression
(Integer or Float ) The expression on which to perform the aggregation.
scope
(String ) Optional. The name of a dataset, group, or data region that contains the report items to which to apply
the aggregate function. If scope is not specified, the current scope is used.
recursive
(Enumerated Type ) Optional. Simple (default) or RdlRecursive . Specifies whether to perform the
aggregation recursively.

Return Type
Returns a Decimal for decimal expressions and a Double for all other expressions.

Remarks
The set of data specified in the expression must have the same data type. To convert data that has multiple
numeric data types to the same data type, use conversion functions like CInt , CDbl or CDec . For more
information, see Type Conversion Functions.
The value of scope must be a string constant and cannot be an expression. For outer aggregates or aggregates
that do not specify other aggregates, scope must refer to the current scope or a containing scope. For
aggregates of aggregates, nested aggregates can specify a child scope.
Expression can contain calls to nested aggregate functions with the following exceptions and conditions:
Scope for nested aggregates must be the same as, or contained by, the scope of the outer aggregate. For
all distinct scopes in the expression, one scope must be in a child relationship to all other scopes.
Scope for nested aggregates cannot be the name of a dataset.
Expression must not contain First , Last , Previous , or RunningValue functions.
Expression must not contain nested aggregates that specify recursive.
For more information, see Aggregate Functions Reference (Report Builder and SSRS) and Expression Scope for
Totals, Aggregates, and Built-in Collections (Report Builder and SSRS).
For more information about recursive aggregates, see Creating Recursive Hierarchy Groups (Report Builder and
SSRS).

Example
The following code example provides the population standard deviation of line item totals in the Order group
or data region.

=StDevP(Fields!LineTotal.Value, "Order")

See Also
Expression Uses in Reports (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Data Types in Expressions (Report Builder and SSRS)
Expression Scope for Totals, Aggregates, and Built-in Collections (Report Builder and SSRS)
Report Builder Functions - Sum Function
3/5/2021 • 2 minutes to read • Edit Online

Returns the sum of all the non-null numeric values specified by the expression, evaluated in the given scope.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Syntax
Sum(expression, scope, recursive)

Parameters
expression
(Integer or Float ) The expression on which to perform the aggregation.
scope
(String ) Optional. The name of a dataset, group, or data region that contains the report items to which to apply
the aggregate function. If scope is not specified, the current scope is used.
recursive
(Enumerated Type ) Optional. Simple (default) or RdlRecursive . Specifies whether to perform the
aggregation recursively.

Return Type
Returns a Decimal for decimal expressions and a Double for all other expressions.

Remarks
The set of data specified in the expression must have the same data type. To convert data that has multiple
numeric data types to the same data type, use conversion functions like CInt , CDbl or CDec . For more
information, see Type Conversion Functions.
The value of scope must be a string constant andcannot be an expression. For outer aggregates or aggregates
that do not specify other aggregates, scope must refer to the current scope or a containing scope. For
aggregates of aggregates, nested aggregates can specify a child scope.
Expression can contain calls to nested aggregate functions with the following exceptions and conditions:
Scope for nested aggregates must be the same as, or contained by, the scope of the outer aggregate. For
all distinct scopes in the expression, one scope must be in a child relationship to all other scopes.
Scope for nested aggregates cannot be the name of a dataset.
Expression must not contain First , Last , Previous , or RunningValue functions.
Expression must not contain nested aggregates that specify recursive.
For more information, see Aggregate Functions Reference (Report Builder and SSRS) and Expression Scope for
Totals, Aggregates, and Built-in Collections (Report Builder and SSRS).
For more information about recursive aggregates, see Creating Recursive Hierarchy Groups (Report Builder and
SSRS).

Examples
A. Sum of line item totals
The following two code examples provide a sum of line item totals in the Order group or data region.

=Sum(Fields!LineTotal.Value, "Order")
' or
=Sum(CDbl(Fields!LineTotal.Value), "Order")

B. Maximum value from all nested regions


In a matrix data region with nested row groups Category and Subcategory, and nested column groups Year and
Quarter, in a cell that belongs to the innermost row and column groups, the following expression evaluates to
the maximum value from all quarters for all subcategories.

=Max(Sum(Fields!Sales.Value))

See Also
Expression Uses in Reports (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Data Types in Expressions (Report Builder and SSRS)
Expression Scope for Totals, Aggregates, and Built-in Collections (Report Builder and SSRS)
Report Builder Functions - Union Function
5/20/2020 • 2 minutes to read • Edit Online

Returns the union of all the non-null numeric values specified by the expression, evaluated in the given scope.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Syntax
Union(expression, scope, recursive)

Parameters
expression
(SqlGeometr y or SqlGeography ) The expression on which to perform the aggregation.
scope
(String ) Optional. The name of a dataset, group, or data region that contains the report items to which to apply
the aggregate function. If scope is not specified, the current scope is used.
recursive
(Enumerated Type ) Optional. Simple (default) or RdlRecursive . Specifies whether to perform the
aggregation recursively.

Return
Returns a spatial object, either SqlGeometr y or SqlGeography , based on the expression type. For more
information about SqlGeometr y and SqlGeography spatial data types, see Spatial Data Types Overview.

Remarks
The set of data specified in the expression must have the same data type.
The value of scope must be a string constant and cannot be an expression. For outer aggregates or aggregates
that do not specify other aggregates, scope must refer to the current scope or a containing scope. Dataset
scopes are not supported. For aggregates of aggregates, nested aggregates can specify a child scope.
Expression can contain calls to nested aggregate functions with the following exceptions and conditions:
Scope for nested aggregates must be the same as, or contained by, the scope of the outer aggregate. For
all distinct scopes in the expression, one scope must be in a child relationship to all other scopes.
Scope for nested aggregates cannot be the name of a dataset.
Expression must not contain First , Last , Previous , or RunningValue functions.
Expression must not contain nested aggregates that specify recursive.
For more information, see Aggregate Functions Reference (Report Builder and SSRS) and Expression Scope for
Totals, Aggregates, and Built-in Collections (Report Builder and SSRS).
For more information about recursive aggregates, see Creating Recursive Hierarchy Groups (Report Builder and
SSRS).

Example
The following table shows examples of SqlGeometr y expressions and Union result expression, shown in WKT
(Well Known Text) format for spatial data.

F IEL D W IT H SPAT IA L DATA EXA M P L E UN IO N RESULT

[PointLocation] POINT(1 2) MULTIPOINT((1 2), (3 4))

POINT(3 4)

[PathDefinition] LINESTRING(1 2, 3 4) MULTILINESTRING((7 8, 5 6), (3 4, 1 2))

LINESTRING(5 6, 7 8)

[PolygonDefinition] POLYGON((1 2, 3 4, 5 2, 1 2)) MULTIPOLYGON(((1 2, 5 2, 3 4, 1 2)),


((-5 2, -1 2, -3 4, -5 2)))
POLYGON((-1 2, -3 4, -5 2, -1 2))

=Union(Fields!PointLocation.Value)
=Union(Fields!PathDefinition.Value)
=Union(Fields!PolygonDefinition.Value, "Group1")

See Also
Expression Uses in Reports (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Data Types in Expressions (Report Builder and SSRS)
Expression Scope for Totals, Aggregates, and Built-in Collections (Report Builder and SSRS)
Report Builder Functions - Var Function
3/5/2021 • 2 minutes to read • Edit Online

Returns the variance of all non-null numeric values specified by the expression, evaluated in the given scope.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Syntax
Var(expression, scope, recursive)

Parameters
expression
(Integer or Float ) The expression on which to perform the aggregation.
scope
(String ) Optional. A constant that is the name of a dataset, group, or data region that contains the report items
to which to apply the aggregate function. If scope is not specified, the current scope is used.
recursive
(Enumerated Type ) Optional. Simple (default) or RdlRecursive . Specifies whether to perform the
aggregation recursively.

Return Type
Returns a Decimal for decimal expressions and a Double for all other expressions.

Remarks
The set of data specified in the expression must have the same data type. To convert data that has multiple
numeric data types to the same data type, use conversion functions like CInt , CDbl or CDec . For more
information, see Type Conversion Functions.
The value of scope must be a string constant and cannot be an expression. For outer aggregates or aggregates
that do not specify other aggregates, scope must refer to the current scope or a containing scope. For
aggregates of aggregates, nested aggregates can specify a child scope.
Expression can contain calls to nested aggregate functions with the following exceptions and conditions:
Scope for nested aggregates must be the same as, or contained by, the scope of the outer aggregate. For
all distinct scopes in the expression, one scope must be in a child relationship to all other scopes.
Scope for nested aggregates cannot be the name of a dataset.
Expression must not contain First , Last , Previous , or RunningValue functions.
Expression must not contain nested aggregates that specify recursive.
For more information, see Aggregate Functions Reference (Report Builder and SSRS) and Expression Scope for
Totals, Aggregates, and Built-in Collections (Report Builder and SSRS).
For more information about recursive aggregates, see Creating Recursive Hierarchy Groups (Report Builder and
SSRS).

Example
The following code example provides the variance of line item totals in the Order group or data region:

=Var(Fields!LineTotal.Value, "Order")

See Also
Expression Uses in Reports (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Data Types in Expressions (Report Builder and SSRS)
Expression Scope for Totals, Aggregates, and Built-in Collections (Report Builder and SSRS)
Report Builder Functions - VarP Function
3/5/2021 • 2 minutes to read • Edit Online

Returns the population variance of all non-null numeric values specified by the expression, evaluated in the
context of the given scope.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Syntax
VarP(expression, scope, recursive)

Parameters
expression
(Integer or Float ) The expression on which to perform the aggregation.
scope
(String ) Optional. The name of a dataset, group, or data region that contains the report items to which to apply
the aggregate function. If scope is not specified, the current scope is used.
recursive
(Enumerated Type ) Optional. Simple (default) or RdlRecursive . Specifies whether to perform the
aggregation recursively.

Return Type
Returns a Decimal for decimal expressions and a Double for all other expressions.

Remarks
The set of data specified in the expression must have the same data type. To convert data that has multiple
numeric data types to the same data type, use conversion functions like CInt , CDbl or CDec . For more
information, see Type Conversion Functions.
The value of scope must be a string constant and cannot be an expression. For outer aggregates or aggregates
that do not specify other aggregates, scope must refer to the current scope or a containing scope. For
aggregates of aggregates, nested aggregates can specify a child scope.
Expression can contain calls to nested aggregate functions with the following exceptions and conditions:
Scope for nested aggregates must be the same as, or contained by, the scope of the outer aggregate. For
all distinct scopes in the expression, one scope must be in a child relationship to all other scopes.
Scope for nested aggregates cannot be the name of a dataset.
Expression must not contain First , Last , Previous , or RunningValue functions.
Expression must not contain nested aggregates that specify recursive.
For more information, see Aggregate Functions Reference (Report Builder and SSRS) and Expression Scope for
Totals, Aggregates, and Built-in Collections (Report Builder and SSRS).
For more information about recursive aggregates, see Creating Recursive Hierarchy Groups (Report Builder and
SSRS).

Example
The following code example provides a population variance of line item totals in the Order group or data
region.

=VarP(Fields!LineTotal.Value, "Order")

See Also
Expression Uses in Reports (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Data Types in Expressions (Report Builder and SSRS)
Expression Scope for Totals, Aggregates, and Built-in Collections (Report Builder and SSRS)
Data Types in Expressions (Report Builder and
SSRS)
3/5/2021 • 8 minutes to read • Edit Online

Data types represent different kinds of data so that it can be stored and processed efficiently. Typical data types
include text (also known as strings), numbers with and without decimal places, dates and times, and images.
Values in a report must be an Report Definition Language (RDL) data type. You can format a value according to
your preference when you display it in a report. For example, a field that represents currency is stored in the
report definition as a floating point number, but can be displayed in a variety of formats depending on the
format property you choose.
For more information about display formats, see Formatting Report Items (Report Builder and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Report Definition Language (RDL) Data Types and Common Language


Runtime (CLR) Data Types
Values that are specified in an RDL file must be an RDL data type. When the report is compiled and processed,
RDL data types are converted to CLR data types. The following table displays the conversion, which is marked
Default:

RDL T Y P E C L R T Y P ES

String Default: String

Chart, GUID, Timespan

Boolean Default: Boolean

Integer Default: Int64

Int16, Int32, Uint16, Uint64, Byte, Sbyte

DateTime Default: DateTime

DateTimeOffset

Float Default: Double

Single, Decimal

Binary Default: Byte[]

Variant Any of the above except Byte[]

VariantArray Array of Variant


RDL T Y P E C L R T Y P ES

Serializable Variant or types marked with Serializable or that implement


ISerializable.

Understanding Data Types and Writing Expressions


It is important to understand data types when you write expressions to compare or combine values, for
example, when you define group or filter expressions, or calculate aggregates. Comparisons and calculations are
valid only between items of the same data type. If the data types do not match, you must explicitly convert the
data type in the report item by using an expression.
The following list describes cases when you may need to convert data to a different data type:
Comparing the value of a report parameter of one data type to a dataset field of a different data type.
Writing filter expressions that compare values of different data types.
Writing sort expressions that combine fields of different data types.
Writing group expressions that combine fields of different data types.
Converting a value retrieved from the data source from one data type to a different data type.

Determining the Data Type of Report Data


To determine the data type of a report item, you can write an expression that returns its data type. For example,
to show the data type for the field MyField , add the following expression to a table cell:
=Fields!MyField.Value.GetType().ToString() . The result displays the CLR data type used to represent MyField ,
for example, System.String or System.DateTime .

Converting Dataset Fields to a Different Data Type


You can also convert dataset fields before you use them in a report. The following list describes ways that you
can convert an existing dataset field:
Modify the dataset query to add a new query field with the converted data. For relational or
multidimensional data sources, this uses data source resources to perform the conversion.
Create a calculated field based on an existing report dataset field by writing an expression that converts
all the data in one result set column to a new column with a different data type. For example, the
following expression converts the field Year from an integer value to a string value:
=CStr(Fields!Year.Value) . For more information, see Add, Edit, Refresh Fields in the Report Data Pane
(Report Builder and SSRS).
Check whether the data processing extension you are using includes metadata for retrieving
preformatted data. For example, a SQL Server Analysis Services MDX query includes a
FORMATTED_VALUE extended property for cube values that have already been formatted when
processing the cube. For more information, see Extended Field Properties for an Analysis Services
Database (SSRS).

Understanding Parameter Data Types


Report parameters must be one of five data types: Boolean, DateTime, Integer, Float, or Text (also known as
String). When a dataset query includes query parameters, report parameters are automatically created and
linked to the query parameters. The default data type for a report parameter is String. To change the default data
type of a report parameter, select the correct value from the Data type drop-down list on the General page of
the Repor t Parameter Proper ties dialog box.
NOTE
Report parameters that are DateTime data types do not support milliseconds. Although you can create a parameter
based on values that include milliseconds, you cannot select a value from an available values drop-down list that includes
Date or Time values that include milliseconds.

Writing Expressions that Convert Data Types or Extract Parts of Data


When you combine text and dataset fields using the concatenation operator (&), the common language runtime
(CLR) generally provides default formats. When you need to explicitly convert a dataset field or parameter to a
specific data type, you must use a CLR method or a Visual Basic runtime library function to convert the data.
The following table shows examples of converting data types.

T Y P E O F C O N VERSIO N EXA M P L E

DateTime to String =CStr(Fields!Date.Value)

String to DateTime =DateTime.Parse(Fields!DateTimeinStringFormat.Value)

String to DateTimeOffset =DateTimeOffset.Parse(Fields!DateTimeOffsetinStringFormat.Value)

Extracting the Year =Year(Fields!TimeinStringFormat.Value)

-- or --

=Year(Fields!TimeinDateTimeFormat.Value)

Boolean to Integer =CInt(Parameters!BooleanField.Value)

-1 is True and 0 is False.

Boolean to Integer =System.Convert.ToInt32(Fields!BooleanFormat.Value)

1 is True and 0 is False.

Just the DateTime part of a DateTimeOffset value =Fields!MyDatetimeOffset.Value.DateTime

Just the Offset part of a DateTimeOffset value =Fields!MyDatetimeOffset.Value.Offset

You can also use the Format function to control the display format for value. For more information, see
Functions (Visual Basic).

Advanced Examples
When you connect to a data source with a data provider that does not provide conversion support for all the
data types on the data source, the default data type for unsupported data source types is String. The following
examples provide solutions to specific data types that are returned as a string.
Concatenating a String and a CLR DateTimeOffset Data Type
For most data types, the CLR provides default conversions so that you can concatenate values that are different
data types into one string by using the & operator. For example, the following expression concatenates the text
"The date and time are: " with a dataset field StartDate, which is a DateTime value:
="The date and time are: " & Fields!StartDate.Value .
For some data types, you may need to include the ToString function. For example, the following expression
shows the same example using the CLR data type DateTimeOffset, which include the date, the time, and a time-
zone offset relative to the UTC time zone: ="The time is: " & Fields!StartDate.Value.ToString() .
Converting a String Data Type to a CLR DateTime Data Type
If a data processing extension does not support all data types defined on a data source, the data may be
retrieved as text. For example, a datetimeoffset(7) data type value may be retrieved as a String data type. In
Perth, Australia, the string value for July 1, 2008, at 6:05:07.9999999 A.M. would resemble:
2008-07-01 06:05:07.9999999 +08:00

This example shows the date (July 1, 2008), followed by the time to a 7-digit precision (6:05:07.9999999 A.M.),
followed by a UTC time zone offset in hours and minutes (plus 8 hours, 0 minutes). For the following examples,
this value has been placed in a String field called MyDateTime.Value .
You can use one of the following strategies to convert this data to one or more CLR values:
In a text box, use an expression to extract parts of the string. For example:
The following expression extracts just the hour part of the UTC time zone offset and converts it to
minutes: =CInt(Fields!MyDateTime.Value.Substring(Fields!MyDateTime.Value.Length-5,2)) * 60
The result is 480 .
The following expression converts the string to a date and time value:
=DateTime.Parse(Fields!MyDateTime.Value)

If the MyDateTime.Value string has a UTC offset, the DateTime.Parse function first adjusts for the
UTC offset (7 A.M. - [ +08:00 ] to the UTC time of 11 P.M. the night before). The DateTime.Parse
function then applies the local report server UTC offset and, if necessary, adjusts the time again for
Daylight Saving Time. For example, in Redmond, Washington, the local time offset adjusted for
Daylight Saving Time is [-07:00] , or 7 hours earlier than 11 PM. The result is the following
DateTime value: 2007-07-06 04:07:07 PM (July 6, 2007 at 4:07 P.M).
For more information about converting strings to DateTime data types, see Parsing Date and Time Strings,
Formatting Date and Time for a Specific Culture, and Choosing Between DateTime, DateTimeOffset, and
TimeZoneInfo on MSDN.
Add a new calculated field to the report dataset that uses an expression to extract parts of the string. For
more information, see Add, Edit, Refresh Fields in the Report Data Pane (Report Builder and SSRS).
Change the report dataset query to use Transact-SQL functions to extract the date and time values
independently to create separate columns. The following example shows how to use the function
DatePar t to add a column for the year and a column for the UTC time zone converted to minutes:
SELECT

MyDateTime,

DATEPART(year, MyDateTime) AS Year,

DATEPART(tz, MyDateTime) AS OffsetinMinutes

FROM MyDates

The result set has three columns. The first column is the date and time, the second column is the year, and
the third column is the UTC offset in minutes. The following row shows example data:
2008-07-01 06:05:07 2008 480

For more information about SQL Server database data types, see Data Types (Transact-SQL), and Date and Time
Data Types and Functions (Transact-SQL).
For more information about SQL Server Analysis Services data types, see Data Types in Analysis Services.

See Also
Formatting Report Items (Report Builder and SSRS)
Constants in Expressions (Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

A constant consists of literal text or predefined text. The report processor has access to predefined constants so
that when you include them in an expression, the values they represent are substituted in the expression before
it is evaluated.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Literal Text
In an expression, literal text is text that is in double quotation marks. You can also type text directly into a text box
without double quotation marks if it is not part of an expression. If the text box value does not begin with an
equal sign (=), the text is treated as literal text. The following table shows several examples of literal text in an
expression.

C O N STA N T DISP L AY T EXT EXP RESSIO N T EXT

Report run at: <<Expr>> ="Report run at: " &


Globals!ExecutionTime

Adventure Works Cycles Adventure Works Cycles Adventure Works Cycles

[Bracketed display text] \[Bracketed display text\] [Bracketed display text]

RDL Constants
You can use constants defined in Report Definition Language (RDL) in an expression. In the Expression dialog
box, constants appear when you create an expression for a report property that only accepts certain valid
values, also known as enumerated types. The following table shows two examples.

P RO P ERT Y DESC RIP T IO N VA L UES

TextAlign Valid values for aligning text in a text General, Left, Center, Right
box.

BorderStyle Valid values for a line added to a Default, None, Dotted, Dashed, Solid,
report. Double, DashDot, DashDotdot

Visual Basic Constants


You can use constants defined in the Visual Basic run-time library in an expression. For example, you can use the
constant DateInter val.Day . The following expression for the date January 10, 2008 returns the number 10:
=DatePart("d",Globals!ExecutionTime)
CLR Constants
You can use constants defined in .NET Framework common language run-time (CLR) classes in an expression.
The following table shows an example of a system-defined color.

C O N STA N T DESC RIP T IO N

MistyRose When you create an expression for a report property that is


based on background color, you can specify a color by name.
Valid names are listed in the Expression dialog box.

See Also
Expression Dialog Box
Expressions (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Data Types in Expressions (Report Builder and SSRS)
Expression Dialog Box (Report Builder)
Operators in Expressions (Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

An operator is a symbol that represents actions applied to one or more terms in an expression. The following
categories of operators are supported in an expression: arithmetic, comparison, concatenation, logical or bitwise,
and bit shift.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Arithmetic
Arithmetic operators perform mathematical operations on two numeric terms in an expression.

O P ERATO R DESC RIP T IO N

^ Raises a number to the power of another number.

* Multiplies two numbers.

/ Divides two numbers and returns a floating-point result.

|Divides two numbers and returns an integer result.

Mod Returns the integer remainder of a division. For example, 7


Mod 5 = 2 because the remainder of 7 divided by 5 is 2.

+ Adds two numbers together.

- Returns the difference between two numbers or indicates the


negative value of a numeric term.

Comparison
Comparison operators test whether two expressions are the same.

O P ERATO R DESC RIP T IO N

< Less than.

<= Less than or equal to.

> Greater than.

>= Greater than or equal to.

= Equal to.

<> Not equal to.


O P ERATO R DESC RIP T IO N

Like Determines whether a specific character string matches a


specified pattern. A pattern can include regular characters
and wildcard characters. During pattern matching, regular
characters must exactly match the characters specified in the
character string. However, wildcard characters can be
matched with arbitrary fragments of the character string.
Using wildcard characters makes the LIKE operator more
flexible than using the = and != string comparison
operators.

The following table lists characters that can be used as


wildcards:

%: Any string of zero or more characters.

_: Any single character.

[ ]: Any single character within the specified range (for


example, [a-f]) or set (for example, [aeiou]).

[^]: Any single character not within the specified range (for
example, [^a-f]) or set (for example, [^aeiou])

Is Compares two object references.

String Concatenation
String concatenation appends the second string to the first string in an expression. For other string operations,
use built-in functions.

O P ERATO R DESC RIP T IO N

& Concatenates two strings

+ Concatenates two strings

Logical and Bitwise


Logical and bitwise operators perform logical manipulations between two integer terms in an expression.

O P ERATO R DESC RIP T IO N

And Performs a logical conjunction on two Boolean expressions,


or bitwise conjunction on two numeric expressions.

Not Performs logical negation on a Boolean expression, or bitwise


negation on a numeric expression.

Or Performs a logical disjunction on two Boolean expressions, or


bitwise disjunction on two numeric values.

Xor Performs a logical exclusion operation on two Boolean


expressions, or a bitwise exclusion on two numeric
expressions.

AndAlso Performs logical conjunction on two expressions.


O P ERATO R DESC RIP T IO N

OrElse Performs logical disjunction on two expressions.

Bit Shift
Bitwise operators perform bit manipulations between two integer terms in an expression.

O P ERATO R DESC RIP T IO N

<< Performs an arithmetic left-shift on a bit pattern.

>> Performs an arithmetic right-shift on a bit pattern.

See Also
Expression Dialog Box
Expressions (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Data Types in Expressions (Report Builder and SSRS)
Expression Dialog Box (Report Builder)
Built-in Collections in Expressions (Report Builder)
11/2/2020 • 2 minutes to read • Edit Online

In an expression in a report, you can include references to the following built-in collections: ReportItems,
Parameters, Fields, DataSets, DataSources, Variables, and built-in fields for global information such as the report
name. Not all collections appear in the Expression dialog box. The DataSets and DataSources collections are
available only at run-time for published reports on a report server. The ReportItems collection is a collection of
text boxes in a report region, for example, the text boxes on a page or in a page header.
For more information, see Expressions (Report Builder and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Understanding Built-in Collections


The following table lists the built-in collections available when you write an expression. Each row includes the
case-sensitive programmatic name for the collection, whether you can use the Expression dialog box to
interactively add a reference to the collection, an example, and a description that includes when the collection
values are initialized and available for use.

C AT EGO RY IN T H E
B UILT - IN C O L L EC T IO N EXP RESSIO N DIA LO G B O X EXA M P L E DESC RIP T IO N

Globals Built-in Fields =Globals.ReportName Represents global variables


useful for reports, such as
- or - the report name or page
number. Always available.
=Globals.PageNumber
For more information, see
Built-in Globals and Users
References (Report Builder
and SSRS).

User Built-in Fields =User.UserID Represents a collection of


data about the user
- or - running the report, such as
the language setting or the
=User.Language user ID. Always available.

For more information, see


Built-in Globals and Users
References (Report Builder
and SSRS).
C AT EGO RY IN T H E
B UILT - IN C O L L EC T IO N EXP RESSIO N DIA LO G B O X EXA M P L E DESC RIP T IO N

Parameters Parameters Represents the collection of


=Parameters("ReportMonth").Value
report parameters, each of
- or - which can be single-value
or multivalue. Not available
=Parameters!ReportYear.Valueuntil processing initialization
is complete. For more
information, see Parameters
Collection References
(Report Builder and SSRS).

Fields( <Dataset> ) Fields =Fields!Sales.Value Represents the collection of


fields of the dataset that are
available to the report.
Available after data is
retrieved from a data
source into a dataset. For
more information, see
Dataset Fields Collection
References (Report Builder
and SSRS).

DataSets Not Displayed Represents the collection of


=DataSets("TopEmployees").CommandText
datasets referenced from
the body of a report
definition. Does not include
data sources used only in
page headers or page
footers. Not available in
local preview. For more
information, see
DataSources and DataSets
Collection References
(Report Builder and SSRS).

DataSources Not Displayed Represents the collection of


=DataSources("AdventureWorks2012").Type
data sources referenced
from within the body of a
report. Does not include
data sources used only in
page headers or page
footers. Not available in
local preview. For more
information, see
DataSources and DataSets
Collection References
(Report Builder and SSRS).

Variables Variables Represents the collection of


=Variables!CustomTimeStamp.Value
report variables and group
variables. For more
information, see Report and
Group Variables Collections
References (Report Builder
and SSRS).
C AT EGO RY IN T H E
B UILT - IN C O L L EC T IO N EXP RESSIO N DIA LO G B O X EXA M P L E DESC RIP T IO N

Repor tItems Not Displayed Represents the collection of


=ReportItems("Textbox1").Value
text boxes for a report item.
This collection can be used
to summarize items on the
page for including in a page
header or page footer. For
more information, see
ReportItems Collection
References (Report Builder
and SSRS).

Using Collection Syntax in an Expression


To refer to a collection from an expression, use standard Microsoft Visual Basic syntax for an item in a collection.
The following table shows examples of collection syntax.

SY N TA X EXA M P L E

Collection!ObjectName.Property =Fields!Sales.Value

Collection!ObjectName("Property") =Fields!Sales("Value")

Collection("ObjectName").Property =Fields("Sales").Value

Collection("Member") =User("Language")

Collection.Member =User.Language

See Also
Add an Expression (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Built-in Collections - Built-in Globals and Users
References (Report Builder)
11/2/2020 • 5 minutes to read • Edit Online

The Built-in fields collection, which includes both the Globals and the User collections, represent global values
provided by Reporting Services when a report is processed. The Globals collection provides values such as the
name of the report, the time when report processing began, and current page numbers for the report header or
footer. The User collection provides the user identifier and language settings. These values can be used in
expressions to filter results in a report.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Using the Globals Collection


The Globals collection contains the global variables for the report. On the design surface, these variables
appear prefixed by an & (ampersand), for example, [&ReportName] . The following table describes the members
of the Globals collection.

M EM B ER TYPE DESC RIP T IO N

ExecutionTime DateTime The date and time that the report


began to run.

PageNumber Integer The current page number relative to


page breaks that reset the page
number. At the beginning of report
processing, the initial value is set to 1.
The page number increments for each
rendered page.

To number pages within page breaks


for a rectangle, a data region, a data
region group, or a map, on the
PageBreak property, set the
ResetPageNumber property to True .
Not supported on tablix column
hierarchy groups.

PageNumber can only be used in an


expression in a page header or page
footer.

ReportFolder String The full path to the folder containing


the report. This does not include the
report server URL.

ReportName String The name of the report as it is stored


in the report server database.
M EM B ER TYPE DESC RIP T IO N

ReportServerUrl String The URL of the report server on which


the report is being run.

TotalPages Integer The total number of pages relative to


page breaks that reset PageNumber. If
no page breaks are set, this value is
the same as OverallTotalPages.

TotalPages can only be used in an


expression in a page header or page
footer.

PageName String The name of the page. At the


beginning of report processing, the
initial value is set from
InitialPageName, a report property. As
each report item is processed, this
value is replaced by the corresponding
value of PageName from a rectangle, a
data region, a data region group, or a
map. Not supported on tablix column
hierarchy groups.

PageName can only be used in an


expression in a page header or page
footer.

OverallPageNumber Integer The page number of the current page


for the entire report. This value is not
affected by ResetPageNumber.

OverallPageNumber can only be used


in an expression in a page header or
page footer.

OverallTotalPages Integer The total number pages for the entire


report. This value is not affected by
ResetPageNumber.

OverallTotalPages can only be used in


an expression in a page header or
page footer.

RenderFormat RenderFormat Information about the current


rendering request.

For more information, see


"RenderFormat" in the next section.

Members of the Globals collection return a variant. If you want to use a member of this collection in an
expression that requires a specific data type, you must first cast the variable. For example, to convert the
execution time variant into a Date format, use =CDate(Globals!ExecutionTime) . For more information, see Data
Types in Expressions (Report Builder and SSRS).
RenderFormat
The following table describes the members for RenderFormat .
M EM B ER TYPE DESC RIP T IO N

Name String The name of the renderer as registered


in the RSReportServer configuration
file.

Available during specific parts of the


report processing/rendering cycle.

IsInteractive Boolean Whether the current rendering request


uses an interactive rendering format.

DeviceInfo Read-only name/value collection Key/value pairs for deviceinfo


parameters for the current rendering
request.

String values can be specified by using


either the key or an index into the
collection.

Examples
The following examples show how to use a reference to the Globals collection in an expression:
This expression, placed in a text box in the footer of a report, provides the page number and total pages
in the report:
=Globals.PageNumber & " of " & Globals.TotalPages

This expression provides the name of the report and the time it was run. The time is formatted with the
Microsoft .NET Framework formatting string for short date:
=Globals.ReportName & ", dated " & Format(Globals.ExecutionTime, "d")

This expression, placed in the Column Visibility dialog box for a selected column, displays the column
only when the report is exported to Excel. Otherwise, the column is hidden.
EXCELOPENXML refers to the format of Excel that is included in Office 2007. EXCEL refers to the format of
Excel that is included in Office 2003.
=IIF(Globals!RenderFormat.Name = "EXCELOPENXML" OR Globals!RenderFormat.Name = "EXCEL", false, true)

Using the User Collection


The User collection contains data about the user who is running the report. You can use this collection to filter
the data that appears in a report, for example, showing only the data of the current user, or to display the UserID,
for example, in a report title. On the design surface, these variables appear prefixed by an & (ampersand), for
example, [&UserID] .
The following table describes the members of the User collection.

M EM B ER TYPE DESC RIP T IO N

Language String The language of the user running the


report. For example, en-US .
M EM B ER TYPE DESC RIP T IO N

UserID String The ID of the user running the report.


If you are using Windows
Authentication, this value is the
domain account of the current user.
The value is determined by the
Reporting Services security extension,
which can use Windows Authentication
or custom authentication.

Using Locale Settings


You can use expressions to refer to the locale settings on a client computer through the User.Language value
to determine how a report appears to the user. For example, you can create a report that uses a different query
expression based on the locale value. The query may change to retrieve localized information from a different
column depending on the language returned. You can also use an expression in the language settings of the
report or report items based on this variable.

NOTE
While you can change the language settings of a report, you must be careful about any display issues this may cause. For
example, changing the locale setting of the report can change the date format in the report, but it can also change the
currency format. Unless there is a conversion process for the currency, this may cause the incorrect currency symbol to be
displayed in the report. To avoid this, set the language information about the individual items that you want to change, or
set the item with the currency data to a specific language.

Identifying UserID for Snapshot or History Reports


In some cases, reports that include the User!UserID variable will fail to show report data that is specific to the
current user who is viewing the report.

See Also
Expressions (Report Builder and SSRS)
Expression Dialog Box (Report Builder)
Data Types in Expressions (Report Builder and SSRS)
Formatting Numbers and Dates (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Built-in Collections - Parameters Collection
References (Report Builder)
11/2/2020 • 3 minutes to read • Edit Online

Report parameters are one of the built-in collections you can reference from an expression. By including
parameters in an expression, you can customize report data and appearance based on choices a user makes.
Expressions can be used for any report item property or text box property that provides the (Fx) or
<Expression > option. Expressions are also used to control report content and appearance in other ways. For
more information, see Expression Examples (Report Builder and SSRS).
When you compare parameter values with dataset field values at run time, the data types for the two items you
are comparing must be the same. Report parameters can be one of the following types: Boolean, DateTime,
Integer, Float, or Text, which represents the underlying data type String. If necessary, you might have to convert
the data type of the parameter value to match the dataset value. For more information, see Data Types in
Expressions (Report Builder and SSRS).
In order to include a parameter reference in an expression, you must understand how to specify the correct
syntax for the parameter reference, which varies depending on whether the parameter is a single-value or
multivalue parameter.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Using a Single-Valued Parameter in an Expression


The following table shows examples of the syntax to use when you include a reference to a single-value
parameter of any data type in an expression.

EXA M P L E DESC RIP T IO N

=Parameters! <ParameterName> .IsMultiValue Returns False .

Checks if a parameter is multivalue. If True , the parameter is


multivalue and it is a collection of objects. If False , the
parameter is single-value and is a single object.

=Parameters! <ParameterName> .Count Returns the integer value 1. For a single-value parameter,
the count is always 1.

=Parameters! <ParameterName> .Label Returns the parameter label, frequently used as the display
name in a drop-down list of available values.

=Parameters! <ParameterName> .Value Returns the parameter value. If the Label property has not
been set, this value appears in the drop-down list of
available values.

=CStr(Parameters! <ParameterName> .Value) Returns the parameter value as a string.


EXA M P L E DESC RIP T IO N

=Fields(Parameters! <ParameterName> Returns the value for the field that has the same name as
.Value).Value the parameter.

For more information about using parameters in a filter, see Add Dataset Filters, Data Region Filters, and Group
Filters (Report Builder and SSRS).

Using a Multivalue Parameter in an Expression


The following table shows examples of the syntax to use when you include a reference to a multivalue
parameter of any data type in an expression.

EXA M P L E DESC RIP T IO N

=Parameters! <MultivalueParameterName> Returns True or False .


.IsMultiValue
Checks if a parameter is multivalue. If True , the parameter is
multivalue and is a collection of objects. If False , the
parameter is single-valued and is a single object.

=Parameters! <MultivalueParameterName> .Count Returns an integer value.

Refers to the number of values. For a single-value parameter,


the count is always 1. For a multivalue parameter, the count
is 0 or more.

=Parameters! <MultivalueParameterName> .Value(0) Returns the first value in a multivalue parameter.

=Parameters! <MultivalueParameterName> Returns the last value in a multivalue parameter.


.Value(Parameters! <MultivalueParameterName>
.Count-1)

=Split("Value1,Value2,Value3",",") Returns an array of values.

Create an array of values for a multivalue String parameter.


You can use any delimiter in the second parameter to Split.
This expression can be used to set defaults for a multivalue
parameter or to create a multivalue parameter to send to a
subreport or drillthrough report.

=Join(Parameters! <MultivalueParameterName> Returns a String that consists of a comma-delimited list of


.Value,", ") values in a multivalue parameter. You can use any delimiter
in the second parameter to Join.

For more information about using parameters in a filter, see Report Parameters (Report Builder and Report
Designer).

See Also
Expressions (Report Builder and SSRS)
Commonly Used Filters (Report Builder and SSRS)
Add, Change, or Delete a Report Parameter (Report Builder and SSRS)
Tutorial: Add a Parameter to Your Report (Report Builder)
Report Builder Tutorials
Built-in Collections in Expressions (Report Builder and SSRS)
Built-in Collections - Dataset Fields Collection
References (Report Builder)
5/20/2020 • 5 minutes to read • Edit Online

Each dataset in a report contains one Fields collection. The Fields collection is the set of fields specified by the
dataset query plus any additional calculated fields that you create. After you create a dataset, the field collection
appears in the Repor t Data pane.
A simple field reference in an expression displays on the design surface as a simple expression. For example,
when you drag the field Sales from the Report Data pane to a table cell on the design surface, [Sales] is
displayed. This represents the underlying expression =Fields!Sales.Value that is set on the text box Value
property. When the report runs, the report processor evaluates this expression and displays the actual data from
the data source in the text box in the table cell. For more, see Expressions (Report Builder and SSRS) and Dataset
Fields Collection (Report Builder and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Displaying the Field Collection for a Dataset


To display the individual values for a field collection, drag each field to a table detail row and run the report.
References from the detail row of a table or list data region display a value for each row in the dataset.
To display summarized values for a field, drag each numeric field to the data area of a matrix. The default
aggregate function for the total row is Sum, for example, =Sum(Fields!Sales.Value) . You can change the default
function in order to calculate different totals. For more information, see Aggregate Functions Reference (Report
Builder and SSRS).
To display summarized values for a field collection in a text box directly on the design surface (not part of a data
region), you must specify the dataset name as a scope for the aggregate function. For example, for a dataset
named SalesData , the following expression specifies the total of all values for the field Sales :
=Sum(Fields!Sales,"SalesData") .

When you use the Expression dialog box to define a simple field reference, you can select the Fields collection
in the Category pane and see the list of available fields in the Field pane. Each field has several properties,
including Value and IsMissing. The remaining properties are predefined extended field properties that may be
available to the dataset depending on the data source type.
Detecting Nulls for a Dataset Field
To detect a field value that is null (Nothing in Visual Basic), you can use the function IsNothing . When placed in
a text box in a table details row, the following expression tests the field MiddleName and substitutes the text "No
Middle Name" when the value is null, and the field value itself when the value is not null:
=IIF(IsNothing(Fields!MiddleName.Value),"No Middle Name",Fields!MiddleName.Value)

Detecting Missing Fields for Dynamic Queries at Run Time


By default, items in the Fields collection have two properties: Value and IsMissing. The IsMissing property
indicates whether a field that is defined for a dataset at design time is contained in the fields retrieved at run
time. For example, your query might call a stored procedure in which the result set varies with an input
parameter, or your query might be SELECT * FROM <table> where the table definition changed.

NOTE
IsMissing detects changes in the dataset schema between design time and run time for any type of data source. IsMissing
cannot be used to detect empty members in a multidimensional cube and is not related to the MDX query language
concepts of EMPTY and NON EMPTY .

You can test the IsMissing property in custom code to determine if a field is present in the result set. You cannot
test for its presence using an expression with a Visual Basic function call such as IIF or SWITCH , because Visual
Basic evaluates all parameters in the call to the function, which results in an error when the reference to the
missing is evaluated.
Example for Controlling the Visibility of a Dynamic Column for a Missing Field
To set an expression that controls the visibility of a column that displays a field in a dataset, you must first define
a custom code function that returns a Boolean value based on whether the field is missing. For example, the
following custom code function returns true if the field is missing and false if the field exists.

Public Function IsFieldMissing(field as Field) as Boolean


If (field.IsMissing) Then
Return True
Else
Return False
End If
End Function

To use this function to control visibility of a column, set the Hidden property of the column to the following
expression:
=Code.IsFieldMissing(Fields!FieldName)

The column is hidden when the field does not exist.


Example for Controlling the Text Box Value for a Missing Field
To substitute text that you write in place of the value of a missing field, you must write custom code that returns
text you can use in place of a field value when the field is missing. For example, the following custom code
function returns the value of the field if the field exists, and the message that you specify as the second
parameter if the field does not exist:

Public Function IsFieldMissingThenString(field as Field, strMessage as String) as String


If (field.IsMissing) Then
Return strMessage
Else
Return field.Value
End If
End Function

To use this function in a text box, add the following expression to the Value property:
=Code.IsFieldMissingThenString(Fields!FieldName,"Missing")

The text box displays either the field value or the text that you specified.
Using Extended Field Properties
Extended field properties are additional properties defined on a field by the data processing extension, which is
determined by the data source type for the dataset. Extended field properties are predefined or specific to a data
source type. For more information, see Extended Field Properties for an Analysis Services Database (SSRS).
If you specify a property that is not supported for that field, the expression evaluates to null (Nothing in Visual
Basic). If a data provider does not support extended field properties, or if the field is not found when the query is
executed, the value for the property is null (Nothing in Visual Basic) for properties of type String and Object ,
and zero (0) for properties of type Integer . A data processing extension may take advantage of predefined
properties by optimizing queries that include this syntax.

See Also
Expression Examples (Report Builder and SSRS)
Report Datasets (SSRS)
Built-in Collections - DataSources and DataSets
References (Report Builder)
11/2/2020 • 2 minutes to read • Edit Online

The DataSources collection represents all the data sources used in a report. Similarly, the DataSets collection
represents all the datasets for all the data sources in a report. Use the Repor t Data pane for a hierarchical view
of report datasets organized under the data source they reference. If you include references to these collections,
you will not see values when previewing your report. These collections are only available after the report has
been published to a report server.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

DataSources
The DataSources collection represents the data sources referenced in a published report definition. You may
choose to include this information in your report to document the source of the report data. This collection is
not available in Preview mode. The following table describes the variables within the DataSources collection.

VA RIA B L E TYPE DESC RIP T IO N

DataSourceReference String The full path of the data source


definition on the report server. For
example, you might include a list of all
the data sources a report used as part
of a report history. The following
example shows the full path for the
data source named
AdventureWorks2012:

/DataSources/AdventureWorks2012 .

Type String The type of data provider for the data


source. For example, SQL .

DataSets
The DataSets collection represents the datasets referenced in a report definition. You may choose to include the
query in the report in a text box, so a user interested in exactly which data is in the report can see the original
command text. This collection is not available in Preview mode. The following table describes the members of
the DataSets collection.

M EM B ER TYPE DESC RIP T IO N


M EM B ER TYPE DESC RIP T IO N

CommandText String For database data sources, this is the


query used to retrieve data from the
data source. If the query is an
expression, this is the evaluated
expression.

RewrittenCommandText String The data provider's expanded


CommandText value. This is typically
used for reports with query
parameters that are mapped to report
parameters. The data provider sets this
property when expanding the
command text parameter references
into the constant values selected for
the mapped report parameters.

Using Query Expressions


You can use expressions to define the query that is contained in a dataset. You can use this feature to design
reports in which the query changes based on input from the user, data in other datasets, or other variables. For
more information about queries, see Report Embedded Datasets and Shared Datasets (Report Builder and
SSRS).

See Also
Expressions (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Built-in Collections - Report and Group Variables
References (Report Builder)
5/20/2020 • 3 minutes to read • Edit Online

When you have a complex calculation that is used more than once in expressions in a report, you might want to
create a variable. You can create a report variable or a group variable. Variable names must be unique in a
report.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Report Variables
Use a report variable to hold a value for time-dependent calculations, such as currency rates or time stamps, or
for a complex calculation that is referenced multiple times. By default, a report variable is calculated once and
can be used in expressions throughout a report. Report variables are read-only by default. You can change the
default to enable a report variable as read-write. The value in a report variable is preserved throughout a
session, until the report is processed again.
To add a report variable, open the Repor tProper ties dialog box, click Variables , and provide a name and a
value. Names are case-sensitive strings that begin with a letter and have no spaces. A name can include letters,
numbers, or underscores (_).
To refer to the variable in an expression, use the global collection syntax, for example,
=Variables!CustomTimeStamp.Value . On the design surface, the value appears in a text box as <<Expr>> .
You can use report variables in the following ways:
Read-only use Set a value once to create a constant for the report session, for example, to create a time
stamp.
Because expressions in text boxes are evaluated on-demand as a user pages through a report, dynamic
values (for example, an expression that includes the Now() function, which returns the time of day) can
return different values if you page forward and backward by using the Back button. By setting a the
value of a report variable to the expression =Now() , and then adding the variable to your expression, you
ensure the same value is used throughout report processing.
Read-write use Set a value once and serialize the value within a report session. The read-write option
for variables provides a better alternative than using a static variable in the Code block in the report
definition.
When you clear the Read-Only option for a variable, the Writable property for the variable is set to true .
To update the value from an expression, use the SetValue method, for example,
=Variables!MyVariable.SetValue("123") .
NOTE
You cannot control when the report processor initializes a variable or evaluates an expression that updates a
variable. The order of execution for variable initialization is undefined.

For more information about sessions, see Previewing Reports in Report Builder.

Group Variables
Use a group variable to calculate a complex expression once in the scope of a group. A group variable is valid
only in the scope of the group and its child groups.
For example, suppose a data region displays inventory data for items that are in different tax categories and you
want to apply different tax rates for each category. You would group the data on Category and define a Tax
variable on the parent group. Then you would define a group variable for ItemTax for each tax category and
assign each of the different Category subgroups to the correct group variable. For example:
For the parent group based on [Category] , define the variable Tax with a value [Tax] . Assume the
category values are Food and Clothing.
For the child group based on , define the variable ItemsTax as
[Subcategory]
=Variables!Tax.Value * Sum(Fields!Price.Value) . Assume the subcategory values for the category Food
are Beverages and Bread. Assume the subcategory values for Clothing are Shirts and Hats.
For a text box in a row in the child group, add the expression =Variables!ItemsTax.Value .
The text box displays the total tax for Beverages and Bread using the Food tax and for Shirts and Hats
using the Clothing tax.
To add a group variable, open the Tablix Group Proper ties dialog box, click Variables , and provide a name
and a value. The group variable is calculated once per unique group value.
To refer to the variable in an expression, use the global collection syntax, for example,
=Variables!GroupDescription.Value . On the design surface, the value appears in a text box as <<Expr>> .

See Also
Filter, Group, and Sort Data (Report Builder and SSRS)
Built-in Collections in Expressions (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Built-in Collections - ReportItems Collection
References (Report Builder)
11/2/2020 • 2 minutes to read • Edit Online

The Repor tItems built-in collection is the set of text boxes from report items such as rows of a data region or
text boxes on the report design surface. The Repor tItems collection includes text boxes that are in the current
scope of a page header, page footer, or report body. This collection is determined at run time by the report
processor and the report renderer. The current scope changes as the report processor successively combines
report data and the report item layout elements as the user views pages of a report. You can use the
Repor tItems built-in collection to produce dictionary-style page headers that show the first and last items on
each page.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Using the ReportItems Value Property


Items within the Repor tItems collection have only one property: Value. The value for a Repor tItems item can
be used to display or calculate data from another field in the report. To access the value of the current text box,
you can use the Visual Basic built-in global Me.Value or simply Value. In report functions such as First and
aggregate functions, use the fully qualified syntax.
For example:
This expression, placed in a text box, displays the value of a Repor tItem text box named Textbox1 :
=ReportItems!Textbox1.Value

This expression, placed in a Repor tItem text box Color property, displays the text in black when the value
is > 0; otherwise, the value is displayed in red:
=IIF(Me.Value > 0,"Black","Red")

This expression, placed in a text box in the page header or page footer, displays the first value per page of
the rendered report, for a text box named LastName :
=First(ReportItems("LastName").Value)

Dictionary-Style Page Header Expressions


You can create a page header to display the first customer on the page and the last customer on the page.
Because a text box in the page header can only refer to the Repor tItems built-in collection once in an
expression, you need to add two text boxes to the page header: one for the first customer name (
=First(ReportItems!textboxLastName.Value ) and one for the last customer name (
=Last(ReportItems!textboxLastName.Value ).

In a page header or page footer section, only text boxes on the current page are available as a member of the
Repor tItems collection. For example, if ReportItems!textboxLastName.Value refers to a text box that only
appears on the first page for a multipage data region, you see a value for the first page, but all other pages
display #Error to show the expression could not be evaluated as written.

Scope for the ReportItems Collection


As the report is processed, each text box in the report body or in a data region is evaluated in the context of its
dataset, data region, and group associations. The scope for a reference to the Repor tItems collection is the
current scope or any point higher than the current scope.
For example, a text box in a row that is in a parent group must not contain an expression that refers to the name
of a text box in a child group row. Such an expression does not resolve to a value in the report because the child
row text box is out of scope. For more information, see Aggregate Functions Reference (Report Builder and
SSRS).

See Also
Built-in Collections in Expressions (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Pagination in Reporting Services (Report Builder and SSRS)
Filter, Group, and Sort Data (Report Builder and SSRS)
Interactive Sort, Document Maps, and Links (Report
Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

In Web-based environments, you can add a number of features that let your users interact with reports. Your
users can change the sort order of values in your report, show or hide items in the report, or click links that go
to other reports or Web pages. You can also add a table of contents or document map. Your report users can
click items in the table of contents or document map to jump to areas within a report.
Report Builder and Report Designer support three types of links with the following actions:
Bookmark links Jump to other areas within the report.
Hyperlinks Jump to URLs that specify the address of Web pages or reports on a report server by using
URL access.
Drillthrough repor t links Jump to other reports on the same report server. For more information, see
Drillthrough Reports (Report Builder and SSRS).

NOTE
Links that are bound to dataset fields can be vulnerable to tampering for malicious purposes. For more information, see
Secure Reports and Resources.

You can also let your users control report display and content by designing expressions that include parameter
references for sort, filter, and visibility. For more information, see Report Parameters (Report Builder and Report
Designer), Filter, Group, and Sort Data (Report Builder and SSRS), and Add Dataset Filters, Data Region Filters,
and Group Filters (Report Builder and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

In This Section
Interactive Sort (Report Builder and SSRS)
Explains how to add interactive sort buttons to column headers.
Create a Document Map (Report Builder and SSRS)
Explains how to add a table of contents to support navigation in a large report.
Add a Bookmark to a Report (Report Builder and SSRS)
Explains how to add bookmarks to create links within a report.
Add a Hyperlink to a URL (Report Builder and SSRS)
Explains how to add a link from your report to a URL

See Also
Drillthrough, Drilldown, Subreports, and Nested Data Regions (Report Builder and SSRS)
Interactive Sort (Report Builder and SSRS)
5/20/2020 • 3 minutes to read • Edit Online

You can add interactive sort buttons to enable a user to toggle between ascending and descending order for
rows in a table or for rows and columns in a matrix. The most common use of interactive sort is to add a sort
button to every column header. The user can then choose which column to sort by.
However, you can add an interactive sort button to any text box, not just column headers. For example, for a text
box in a row outside a row group, you can specify a sort for the parent group rows or columns, for child group
rows or columns, or for the detail rows or columns. You can also combine fields into a single group expression,
and then sort by multiple fields.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

When you add an interactive sort, you must specify the following items:
What to sor t: Rows or columns?
What to sor t by: A field that is displayed in a table column? A field that is not displayed?
What context to sor t in: For example, you can sort on rows associated with row groups; columns
associated with column groups; detail rows; child groups within a parent group; or parent and child
group together.
Which text box to add the sor t button to: In the column header or in the group row header?
Whether to synchronize the sor t for multiple data regions: You can design a report so that when
the user toggles the sort order, other data regions with the same ancestor also sort.
For step-by-step instructions, see Add Interactive Sort to a Table or Matrix (Report Builder and SSRS).
The following table summarizes the effects you can achieve by using interactive sort buttons.

W H ERE TO A DD T H E
A C T IO N W H AT TO SO RT SO RT B UT TO N W H AT TO SO RT O N SO RT SC O P E

Sort detail rows for a Details Column header Dataset field bound Data region
table with no groups to this column

Sort top-level group Groups Column header Group expression for Data region
instances for a matrix parent group

Sort detail rows for a Details Child group header Dataset field to sort Child group
child group in a table row by

Sort rows for Groups, but you Column header Aggregate of dataset Data region
multiple row groups must redefine the field to sort by
and detail rows in a group expression
table
W H ERE TO A DD T H E
A C T IO N W H AT TO SO RT SO RT B UT TO N W H AT TO SO RT O N SO RT SC O P E

Synchronize the sort Groups Typically, column Group expression Dataset


order for multiple header
data regions

The report processor applies interactive sort after all data region and group sort expressions are applied. For
more information, see Filter, Group, and Sort Data (Report Builder and SSRS).

Adding Interactive Sort for Multiple Groups


In a table with nested row groups each based on a single dataset field, you can add an interactive sort button
that sorts parent group values, child group values, or detail rows. However, you might want to provide the user
with the ability to sort the table by both the parent and child group values without having to click multiple times.
To do this, you must redesign the table to group on an expression that combines multiple fields. For example, for
a dataset with inventory counts, if the original table grouped by size and then by color, you can specify a single
group with a group expression that is a combination of size and color. For more information, see Add Interactive
Sort to a Table or Matrix (Report Builder and SSRS).

See Also
Sort Data in a Data Region (Report Builder and SSRS)
Filter, Group, and Sort Data (Report Builder and SSRS)
Add Interactive Sort to a Table or Matrix (Report Builder and SSRS)
Add Interactive Sort to a Table or Matrix (Report
Builder and SSRS)
11/2/2020 • 10 minutes to read • Edit Online

Add interactive sort buttons to enable users to change the sort order of rows and columns in tables and
matrices. This feature is supported only in rendering formats that support user interaction, such as HTML.
When you create an interactive sort button, you must specify what to sort, what to sort by, and the scope to
which to apply the sort. For example, you can sort detail rows by customer last name, subcategory group values
within a category group by sales, or category and subcategory group values combined by totals.
When you view the report, columns that support interactive sorting have arrow icons that change to indicate
the sort order. The first time you click an interactive sort button, items are sorted in ascending order. Subsequent
clicks toggle the sort order between ascending and descending order.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

In this Article
Sorting Detail Rows for a Table with No Groups
Sorting a Top Level Parent Row Group for a Table or Matrix
Sorting Child Groups or Detail Rows for a Group
Sorting Rows Based on a Complex Group Expression
Synchronizing Sort Order for Multiple Data Regions

Sorting Detail Rows for a Table with No Groups


Add an interactive sort button to a column header to enable a user to click the column header and sort the
details rows in a table by the value displayed in that column.
To add an interactive sort button to a column header to sort the table by value
1. In report design view, in a table with no groups, right-click the text box in the column header to which you
want to add an interactive sort button, and then click Text Box Proper ties .
2. Click Interactive Sor ting .
3. Select Enable interactive sor ting on this text box .
4. In Choose what to sor t , click Detail rows .
5. In Sor t by , specify a sort expression. From the drop-down list, select the field that corresponds to the
column for which you are defining a sort action (for example, for a column heading named "Title", choose
[Title] ). Specifying a sort expression is required.

6. Click OK .
7. Repeat steps 1-6 for every column to which you want to add an interactive sort button.
To verify the sort action, click Run to preview the report, and then click the interactive sort buttons.
Back to Top

Sorting a Top-Level Parent Row Group for a Table or Matrix


Add an interactive sort button to a column header to enable a user to click the column header and sort the
parent group rows in a table or matrix by the value displayed in that column. The order of child groups remains
unchanged.
To add an interactive sort button to a column header to sort groups
1. In a table or matrix in report design view, right-click the text box in the column header for the group to
which you want to add an interactive sort button, and then click Text Box Proper ties .
2. Click Interactive Sor ting .
3. Select Enable interactive sor ting on this text box .
4. In Choose what to sor t , click Groups .
5. From the drop-down list, select the name of the group that you are sorting. For groups based on simple
group expressions, the Sor t by value is populated with group expression.

NOTE
For complex group expressions, manually set the Sor t by expression to the same value as the group expression.

6. Click OK .
To verify the sort action, click Run to preview the report, and then click the interactive sort buttons.
Back to Top

Sorting Child Groups or Detail Rows for a Group


Add an interactive sort button to a group header row to enable the user to sort the values of a child group from
a parent group or to sort the detail rows for the innermost child group.
To add an interactive sort button to a text box in a group row header to sort child groups or detail rows
1. In report design view, right-click the text box in the group header row to which you want to add an
interactive sort button, and then click Text Box Proper ties .
2. Click Interactive Sor ting .
3. Select Enable interactive sor ting on this text box .
4. In Choose what to sor t , click one of the following options:
Details Click Details to sort the detail rows. From the drop-down list, select the field to sort by.
For this option, you must specify the value to sort by.
Groups Click Groups to sort the child group values. For this option, the Sor t by expression is
automatically filled in from the group expression.
5. Click OK .
To verify the sort action, click Run to preview the report, and then click the interactive sort buttons.
Back to Top

Sorting Rows Based on a Complex Group Expression


Add an interactive sort button to a column header to enable a user to click the column header and sort the
combined parent and child groups. To achieve this affect, you must change the group expression to be a
composite of both groups. For example, suppose a matrix displays inventory totals for a store for items grouped
by both color and size. To sort the rows based on the combination of color and size, instead of having a separate
group for color and a separate group for size, you can define a group based on the combination of color and
size. For more information about defining group expressions, see Group Expression Examples (Report Builder
and SSRS).
In the following procedure, terms specify tablix data region areas. For more information, see Tablix Data Region
Areas (Report Builder and SSRS).
Typically, when you sort rows based on multiple groups, you want to see totals for the sorted rows, regardless
of column groups. In this procedure, no column groups are used. You start by adding a matrix and removing the
default column group. Alternatively, you could start by adding a table and removing the details group.
To add an interactive sort button to a column header to sort multiple groups
1. In report design view, add a matrix.
2. Drag a numeric field to the data cell to link the dataset to the matrix.
Next, you will create a group with a group expression that specifies multiple fields, and a group header to
use to display the group values.
3. Verify that the matrix is selected on the design surface. The Grouping pane displays a default row and
column group.
4. In the Row Groups pane, right-click the default row group, and then click Edit Group . The Group
Proper ties dialog box opens.
5. In Name , replace the default name with a name that specifies the multiple groups that you want to group
by.
6. In Group expressions , in Group on , click the Expression (fx ) button to open the Expression dialog
box.
7. Type the expression that specifies all fields that you want to group by. For example, the following group
expression combines a field named Color and a field named Size:
=Fields!Color.Value & Fields!Size.Value .

8. Click OK .
You have now defined the group. Next, drag the fields to display to the tablix body area of the matrix. Add
the fields that you chose to group by in step 7 to the tablix body area, each in its own column.
For this scenario, the first column in the tablix row groups area is not needed. To delete the column, right-
click the column header, and then click Delete Columns . A dialog box asks whether to delete the
associated groups. Click No . The row group area is deleted and only the tablix body area remains.
Next, you will remove the default column group.
9. In the Column Groups pane, right-click the default column group, and then click Delete Group . A dialog
box asks whether to delete the group and related rows and columns or the group only. Click Delete
group only . The column group is deleted, and the column group area is deleted. Only the tablix body
area remains.
Next, you will add an interactive sort button to the text box that spans the matrix.
10. Click in the text box in the first row and then click Text Box Proper ties .
11. Click Interactive Sor ting .
12. Select Enable interactive sor ting on this text box .
13. In Choose what to sor t , click Groups .
14. From the drop-down list, select the name of the group you created in step 5. The group expression is
automatically copied to the Sor t by text box.
15. Click OK .
You have added the sort button to the text box.
16. (Optional) You can suppress duplicate values in the columns that display group values. On the report
design surface, click the text box that displays the value for which you want to hide repeating values. In
the Properties pane, scroll to HideDuplicates , and from the drop-down list, select the name of the
dataset that is linked to this matrix.
To verify the sort action, click Run to preview the report, and then click the interactive sort button. The matrix
sorts by the combined values of the group expression, although each individual value displays in its own
column.
Back to Top

Synchronizing Sort Order for Multiple Data Regions


Add an interactive sort button that enables a user to click one sort button and sort multiple data regions. When
you create an interactive sort button, you can specify whether to synchronize the sort for multiple data regions
based on the same report dataset. For example, a report might include a matrix and a chart that graphically
displays the data. When a user changes the sort order of the rows in the matrix, the chart automatically displays
the same sort order.
To synchronize the sort order, you must use identical sort expressions for the data regions or groups to sort, and
define the scope for the sort to be a mutual ancestor of both data regions. The mutual ancestor can be either the
dataset to which both data regions are linked or a containing data region within which both data regions appear.
For example, assume a report has both a matrix and a chart that display data from the same dataset and that are
contained in a list. To synchronize the sort action, you must specify the interactive sort on a column in the matrix
and set the scope to the list. When the user sorts the matrix, the chart is also sorted.
To synchronize sort order with a chart for an interactive sort button on a matrix data region
1. In report design view, add a matrix to the report.
2. Add a numeric dataset field to the matrix data cell, for example, a field representing quantity or sales.
3. Define a row group. By default, the sort order for the group is set to the same expression as the group
expression.
4. Add a chart to the report, for example, a pie chart.
5. Drag the field you chose in step 2 to the Value area of the Char t Data pane.
6. Drag the field you chose to group by to the Categor y Groups area.
The group expression for the matrix row group and the chart category group must be identical.
7. Right-click the category group, and then click Categor y Group Proper ties .
8. Click Sor ting .
9. Click Add . A new sort row is added to the sorting options grid.
10. In Sort by, from the drop-down list, choose the same field that you chose in step 6 to group by.
11. Click OK .
12. In the matrix, right-click the text box in the column header to which you want to add an interactive sort
button, and then click Text Box Proper ties .
13. Click Interactive Sor ting .
14. Select Enable interactive sor ting on this text box .
15. In Choose what to sor t , click Groups .
16. From the drop-down list under Groups , select the name of the group that you are sorting. The group
expression for this group is automatically set for the Sor t by value.
17. Select Also apply this sor t to other groups and data regions within . In the text box, type the name
of the dataset, for example, "SalesData".
18. Click OK .
To verify the sort action, click Run to preview the report, and then click the interactive sort button. The matrix
sorts by the combined values of the group expression, although each individual value displays in its own
column.
Back to Top

See Also
Filter, Group, and Sort Data (Report Builder and SSRS)
Interactive Sort (Report Builder and SSRS)
Sort Data in a Data Region (Report Builder and SSRS)
Exploring the Flexibility of a Tablix Data Region (Report Builder and SSRS)
Add a Hyperlink to a URL (Report Builder and
SSRS)
11/2/2020 • 3 minutes to read • Edit Online

Learn how to add hyperlink actions to text boxes, images, charts, and gauges in Reporting Services paginated
reports. Links can go to other reports, to bookmarks in a report, or to static or dynamic URLs.
You can add a hyperlink action to any item that has an Action property, for example, a text box, an image, or a
calculated series in a chart. When the user clicks that report item, the action that you define takes place.
You can add a hyperlink that will open a browser with a URL that you specify. The hyperlink can be
a static URL or an expression that evaluates to a URL. If you have a field in a database that contains URLs,
the expression can contain that field, resulting in a dynamic list of hyperlinks in the report. Make sure
your report readers have access to the URL that you provide.
You can also specify URLs to create drillthroughs to reports on any report server that you and your
users have permission to view using URL requests to the report server. For example, you can specify a
report and hide the document map for the user when they first view the report. For more information,
see URL Access (SSRS) and Specifying Paths to External Items (Report Builder and SSRS).
And you can add a bookmark to a specific place in the same report.
Try adding hyperlinks with sample data in Tutorial: Format Text (Report Builder).

NOTE
Links that are bound to dataset fields can be vulnerable to tampering for malicious purposes. For more information, see
Secure Reports and Resources.

To add a hyperlink and...


1. In report design view, right-click the text box, image, or chart to which you want to add a link and then
click Proper ties .
2. In the Properties dialog box, click the Action tab. Read on for information about your options.

... add drillthrough to another report


1. On the Action tab, select Go to repor t .
2. Specify the target report and parameters you want to use. The parameter names must match the
parameters defined for the target report.
3. Use the Add and Delete buttons to add and remove parameters, and the up and down arrows to order
the list of parameters.
4. Type or select a Value to pass for the named parameter in the drillthrough report. Click the Expression
(fx) button to edit the expression.
5. Select Omit to prevent the parameter from running. By default, this check box is cleared and not active.
To select the check box, click the Expression (fx) button and either type True or create an expression. The
check box is selected when you click OK in the Expression dialog box.
See Add a Drillthrough Action on a Report for more information.
6. Click OK .

... add a bookmark


You can link to bookmarks to a location in the current report. To link to a bookmark, you must first set the
Bookmark property of a report item. To set the Bookmark property, select a report item, and in the Properties
pane, type a value or expression for the bookmark ID; for example, SalesChart or 5TopSales.
1. On the Action tab, select Go to bookmark .
2. Type or select the bookmark ID for the report to jump to. Click the Expression (fx) button to change the
expression.
The bookmark ID can be either a static ID or an expression that evaluates to a bookmark ID. The
expression can include a field that contains a bookmark ID.
See Add a Bookmark to a Report for more information.
3. Click OK .

... add a hyperlink


1. On the Action tab, select Go to URL . An additional section appears in the dialog box for this option.
2. In Select URL , type or select a URL or an expression that evaluates to a URL, or click the drop-down
arrow and click the name of a field that contains a URL.
For an item published to a report server configured for native mode, use a full or relative path. For
example, https://<servername>/images/image1.jpg .
For an item published to a report server configured in SharePoint integrated mode, use a fully qualified
URL. For example, https://<SharePointservername>/<site>/Documents/images/image1.jpg .
3. Click OK .

After you add a hyperlink


1. (Optional) The text is not automatically formatted as a link. For text, it is helpful to change the color and
effect of the text to indicate that the text is a link. For example, change the color to blue and the effect to
underline in the Font section in the Home tab of the Ribbon.
2. To test the link, click Run to preview the report, and then click the report item that you set this link on.

See Also
Interactive Sort, Document Maps, and Links (Report Builder and SSRS)
Create a Document Map (Report Builder and SSRS)
Add a Bookmark to a Report (Report Builder and
SSRS)
11/2/2020 • 2 minutes to read • Edit Online

Add bookmarks and bookmark links to a report when you want to provide a customized table of contents or to
provide customized internal navigation links in the report. Typically, you add bookmarks to locations in the
report to which you want to direct users, such as to each table or chart or to the unique group values displayed
in a table or matrix. You can create your own strings to use as bookmarks, or, for groups, you can set the
bookmark to the group expression.
After you create bookmarks, you can add report items that the user can click to go to each bookmark. These
items are typically text boxes or images.
For example, if your report displays a table grouped by color, you would add a bookmark based on the group
expression to the group header. Then you would add a table with a single text box at the beginning of the report
that displayed the color values, and set the bookmark link on that text box. When you click the color, the report
jumps to the page that displays the group header row for that color.
You can add a bookmark to any report item and add a bookmark link to any item that has an Action property,
for example, a text box, an image, or a calculated series in a chart. For more information, see the Action
Properties Dialog Box (Report Builder and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To add a bookmark
1. In report design view, select the text box, image, chart, or other report item to which you want to add a
bookmark. The properties for the selected item appear in the Properties pane.
2. In the text box next to Bookmark , type a string that is the label for this bookmark. For example, you
could type BikePhoto as the bookmark for an image in your report. Alternatively, click the Expression
(fx ) button to open the Expression dialog box to specify an expression that evaluates to a label. For a
group, the expression you type should be the group expression.

NOTE
The bookmark can be any string, but it must be unique in the report. If the bookmark is not unique, a link to the
bookmark finds the first matching bookmark.

To add a bookmark link


1. In Design view, right-click the text box, image, chart, to which you want to add a link and then click
Proper ties .
2. In The Proper ties dialog box for that report item, click Action .
3. Select Go to bookmark . An additional section appears in the dialog box for this option.
4. In the Select bookmark box, type or select a bookmark or an expression that evaluates to a bookmark.
Using the previous example, type BikePhoto to create a link to the image in your report.
5. Click OK .
6. (Optional) The text is not automatically formatted like a link. For text, it is helpful to change the color and
effect of the text to indicate that the text is a link. For example, change the color to blue and the effect to
underline in the Font section in the Home tab of the Ribbon.
7. To test the link, click Run to preview the report, and then click the report item that you set this link on..

See Also
Interactive Sort, Document Maps, and Links (Report Builder and SSRS)
Expressions (Report Builder and SSRS)
Filter, Group, and Sort Data (Report Builder and SSRS)
Create a Document Map (Report Builder and SSRS)
3/5/2021 • 4 minutes to read • Edit Online

A document map provides a set of navigational links to report items in a rendered report. When you view a
report that includes a document map, a separate side pane appears next to the report. A user can click links in
the document map to jump to the report page that displays that item. Report sections and groups are arranged
in a hierarchy of links. Clicking items in the document map refreshes the report and displays the area of the
report that corresponds to the item in the document map.
To add links to the document map, you set the DocumentMapLabel property of the report item to text that
you create or to an expression that evaluates to the text that you want display in the document map. You can
also add the unique values for a table or matrix group to the document map. For example, for a group based on
color, each unique color is a link to the report page that displays the group instance for that color.
You can also create a URL to a report that overrides the display of the document map, so that you can run the
report without displaying the document map, and then click the Show/Hide Document Map button on the
report viewer toolbar to toggle the display.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Document Maps and Rendering Extensions


The document map is intended for use in the HTML rendering extension-for example, in Preview and the Report
Viewer. Other rendering extensions have different ways of articulating a document map:
PDF renders a document map as the Bookmarks pane.
Excel renders a document map as a named worksheet that includes a hierarchy of links. Report sections
are rendered in separate worksheets that are included with the document map in the same workbook.
Word includes a document map as the table of contents.
Atom, TIFF, XML, and CSV ignore document maps.
For more information, see Interactive Functionality for Different Report Rendering Extensions (Report Builder
and SSRS).

To add a report item to a document map


1. In Design view, select the report item such as a table, matrix, or gauge that you want to add to the
document map. The report item properties appear in the Properties pane.

NOTE
To select a tablix data region, click in any cell to display the row and column handles, and then click the corner
handle.

2. In the Properties pane, type the text that you want to appear in the document map in the
DocumentMapLabel property, or enter an expression that evaluates to a label. For example, type Sales
Char t .

NOTE
If you do not see the Properties pane, on the View tab, in the Show/Hide group, select Proper ties .

3. Repeat steps 1 and 2 for every report item that you want to appear in the document map.
4. Click Run . The report runs and the document map displays the labels you created. Click any link to jump
to the report page with that item.

To add unique group values to a document map


1. In Design view, select the table, matrix, or list that contains the group that you want to display in the
document map. The Grouping pane displays the row and column groups.
2. In the Row Groups pane, right-click the group, and then click Edit Group . The General page of the
Tablix Group Proper ties dialog box opens.
3. Click Advanced .
4. In the Document map list box, type or select an expression that matches the group expression.
5. Click OK .
6. Repeat steps 1-4 for every group that you want to appear in the document map.
7. Click Run . The report runs and the document map displays the group values. Click any link to jump to the
report page with that item.

To hide the document map when you view a report


1. In the web portal, browse to the report that has the document map.
For example, for the AdventureWorks2012 sample reports, the following URL specifies the report
named Product Catalog.

https://localhost/Reports/Pages/Report.aspx?
ItemPath=%2fAdventureWorks2012+Sample+Reports%2fProduct+Catalog

2. Copy the report path on the server. In the example, the report path is
%2fAdventureWorks2012+Sample+Reports%2fProduct+Catalog .

3. Create a new URL with the following three components:


The report viewer on the report server: https://localhost/ReportServer/Pages/ReportViewer.aspx?

The name of the report you copied in step 1, for example:


%2fAdventureWorks2012+Sample+Reports%2fProduct+Catalog

The device information parameters that specify hiding the document map:
&rs%3aCommand=Render&rc%3aFormat=HTML4.0&rc%3aDocMap=False

The following URL consists of these three components appended in the order they are listed.
https://localhost/ReportServer/Pages/ReportViewer.aspx?
%2fAdventureWorks2012+Sample+Reports%2fProduct+Catalog
&rs%3aCommand=Render&rc%3aFormat=HTML4.0&rc%3aDocMap=False

To use this URL, copy it and remove all line breaks.


4. Paste the URL in the web portal, and then press ENTER. The report runs, and the document map is
hidden.

NOTE
For more information about downloading sample reports, see Report Builder and Report Designer sample reports.
For more information, see URL Access.

More questions? Try asking the Reporting Services forum


Page Layout and Rendering (Report Builder and
SSRS)
11/2/2020 • 7 minutes to read • Edit Online

Read about Reporting Services rendering extensions for paginated reports so you're sure your report looks the
way you want, including page layout, page breaks, and paper size.
When you view reports in a Reporting Services report server or the preview pane of Report Builder or Report
Designer, the report is first rendered by the HTML renderer. You can then export the report to different formats
such as Excel or comma-delimited (CSV) files. The exported report can then be used for further analysis in Excel
or as a data source for applications that can import and use CSV files.
Reporting Services includes a set of renderers for exporting reports to different formats. Each renderer applies
rules when rendering reports. When you export a report to a different file format, especially for renderers such
as the Adobe Acrobat (PDF) renderer that uses pagination based on the physical page size, you might need to
change the layout of your report to have the exported report look and print correctly after the rendering rules
are applied.
Getting the best results for exported reports is often an iterative process; you author and preview the report in
Report Builder or Report Designer, export the report to the preferred format, review the exported report, and
then make changes to the report.

Report Items
Report items are layout elements that are associated with different types of report data.
Table, Matrix, List, Chart, and Gauge are data region report items that each link to a report dataset. When the
report is processed, the data region expands across and down the report page to display data.
Other report items link to and display a single item.
An Image report item links to a picture.
A Text Box report item contains either simple text like a title or an expression that can include references to
built-in fields, report parameters, or dataset fields.
The Line and Rectangle report items provide simple graphical elements on the report page. The Rectangle
can also be a container for other report items.
A report can also contain subreports.

Page Layout
With Reporting Services, you can place report items anywhere on the design surface. You can interactively
position, expand, and contract the initial shape of the report item using snap lines and resizing handles. You can
place data regions with different sets of data, or even the same data in different formats, side-by-side. When you
place a report item on the design surface, it has a default size and shape and an initial relationship to all other
report items.
You can place report items inside other report items to create more complex report designs. For example, charts
or images in table cells, tables in table cells, and multiple images in a rectangle. In addition to providing the
organization and look you want in the report, placing report items in containers such as rectangles help control
the way the report items are displayed on the report page.
A report can span multiple pages, with a page header and page footer that are repeated on each page. A report
can contain graphical elements such as images and lines, and it can have multiple fonts, colors, and styles, which
can be based on expressions.

Report Sections
A report consists of three main sections: an optional page header, an optional page footer, and a report body.
The report header and footer are not separate sections of the report, but rather comprise the report items that
are placed at the top and bottom of the report body. The page header and page footer repeat the same content
at the top and bottom of each page of the report. You can place images, text boxes, and lines in headers and
footers. You can place all types of report items in the report body.
You can set properties on report items to initially hide or show them on the page. You can set visibility
properties on rows or columns or groups for data regions and provide toggle buttons to allow the user to
interactively show or hide report data. You can set visibility or initial visibility by using expressions, including
expressions based on report parameters.
When a report is processed, report data is combined with the report layout elements and the combined data is
sent to a report renderer. The renderer follows predefined rules for report item expansion and determines how
much data fits on each page. To design an easy-to-read report that is optimized for the renderer that you plan to
use, you should understand the rules used to control pagination in Reporting Services. For more information,
see Pagination in Reporting Services (Report Builder and SSRS).

Renderers
Reporting Services includes a set of renderers, also referred to as rendering extensions, that you can use to
export reports to different formats. There are three types of renderers:
Data renderers Data renderers strip all formatting and layout information from the report and display
only the data. The resulting file can be used to import the raw report data into another file type, such as
Excel, or another database, an XML data message, or a custom application. The available data renders are
CSV and XML.

NOTE
Although it does not provide direct export to a different format, Atom rendering generates data files from reports.

Soft page-break renderers Soft page-break renderers maintain the report layout and formatting. The
resulting file is optimized for screen-based viewing and delivery, such as on a Web page. The available
soft page-break renderers are Microsoft Excel, Microsoft Word, Web archive (MHTML), and HTML.
Hard page-break renderers Hard page-break renderers maintain the report layout and formatting.
The resulting file is optimized for a consistent printing experience, or for viewing the report online in a
book format. The available hard page-break renderers are TIFF and PDF.
When you preview a report in Report Builder or Report Designer or run a report on a Reporting Services report
server, the report is always first rendered in HTML. After you run the report, you can export it to different file
formats. For more information, see Export Reports (Report Builder and SSRS).

Rendering Behaviors
Depending on the renderer you select, certain rules are applied when rendering the report. How report items fit
together on a page is determined by the combination of these factors:
Rendering rules.
The width and height of report items.
The size of the report body.
The width and height of the page.
Renderer-specific support for paging.
For example, reports rendered to HTML and MHTML formats are optimized for a computer screen-based
experience where pages can be various lengths.
For more information, see Rendering Behaviors (Report Builder and SSRS).

Pagination
Pagination refers to the number of pages within a report and how report items are arranged on these pages.
Pagination in Reporting Services varies depending on the rendering extension you use to view and deliver the
report and the page break and keep-together options you configure the report to use.
To successfully design an easy-to-read report for your users that is optimized for the renderer that you plan to
use to deliver your report, you need to understand the rules used to control pagination in Reporting Services.
Reports exported by using the data and soft page rendering extensions are typically not affected by
pagination. When you use a data rendering extension the report is rendered as tabular rowset in an XML or CSV
format. To ensure the exported report data is usable you should understand the rules applied to rendered a
flattened tabular rowset from a report.
When you use a soft page rendering extension such as the HTML rendering extension, you might want to know
how the report looks printed and also how well it renders using a hard page renderer such as PDF. During the
creation or updating of a report you can preview and export it in Report Builder and Report Designer.
Hard page renderers have the most impact on report layout and physical page size. To learn more, see
Pagination in Reporting Services (Report Builder and SSRS).

How-To Topics
This section lists procedures that show you, step by step, how to work with pagination in reports.
Add a Page Break (Report Builder and SSRS)
Display Row and Column Headers on Multiple Pages (Report Builder and SSRS)
Add or Remove a Page Header or Footer (Report Builder and SSRS)
Keep Headers Visible When Scrolling Through a Report (Report Builder and SSRS)
Display Page Numbers or Other Report Properties (Report Builder and SSRS)
Hide a Page Header or Footer on the First or Last Page (Report Builder and SSRS)

In This Section
The following topics provide additional information about page layout and rendering.
Page Headers and Footers (Report Builder and SSRS)
Provides information about using headers and footers in reports and how to control pagination using them.
Controlling Page Breaks, Headings, Columns, and Rows (Report Builder and SSRS)
Provides information about using page breaks.

See Also
Interactive Functionality for Different Report Rendering Extensions (Report Builder and SSRS)
Export Reports (Report Builder and SSRS)
Rendering Behaviors (Report Builder and SSRS)
11/2/2020 • 7 minutes to read • Edit Online

Depending on the renderer you select, certain rules are applied to the report body and its contents when
rendering a report. How report items fit together on a page is determined by the combination of these factors:
Rendering rules.
The width and height of report items.
The size of the report body.
The width and height of the page.
Renderer-specific support for paging.
This topic discusses the general rules that are applied by Reporting Services. For more information, see
Rendering Report Items (Report Builder and SSRS), Rendering Data Regions (Report Builder and SSRS), and
Rendering Data (Report Builder and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

General Behaviors for HTML, MHTML, Word, and Excel (Soft Page-
Break Renderers)
Reports exported using HTML and MHTML formats are optimized for a computer screen-based experience
where pages can be various lengths. Page breaks are inserted vertically only at approximate locations within the
report body. These approximate locations are determined by the interactive height setting in the Properties
pane. For example, suppose the interactive height is set to 5 inches. When the report is rendered, the page
height is approximately 5 inches in length. Word and Excel paginate based on logical page breaks and ignore the
interactive height setting.

NOTE
To determine how a report will appear in a soft page-break renderer, use Report Preview. The report appears as it would
in a HTML, MHTML, Word, or Excel format.

When exporting a report to HTML, MHTML, Word, or Excel, the following general rules are followed:
Logical page breaks, the page breaks that you explicitly insert, are applied to report items. For example, if
you insert a page break between each group, they are applied when the report is rendered.
An approximate layout is created using the page height and the number of times that the report item
appears. For example, if a text box is .5 inches in height and repeats five times in the report, 2.5 inches are
reserved.
Multiple soft page breaks are inserted based on the interactive height setting. To suppress in HTML and
the ReportViewer controls, and control pagination only with explicit page breaks, set the interactive
height value to 0 or an extremely large number.
NOTE
The interactive width setting is not used in the soft page break renderers.

Report pages can grow to accommodate widows, orphans and report items that need to be kept together.
This means that the report can extend beyond the screen width and can be viewed by using slider bars.
Pagination is applied to reports vertically only.
Page margins are not applied.

General Behaviors for PDF, Image, and Print (Hard Page-Break


Renderers)
Reports exported using PDF and Image are optimized for a book-like or printed experience where pages are a
consistent size. Page breaks are inserted vertically and horizontally at specific locations within the report body.
These specific locations are determined by the page width and page height settings.

NOTE
To determine how a report will appear in a hard page-break renderer, use Print Preview. The report appears as it would in
a PDF or Image format.

Pages are numbered sequentially from left to right, then top to bottom.
Logical page breaks, the page breaks that you explicitly insert, are applied to report items. These page
breaks can cause report items to push other items to the next page.
If a physical page break occurs through report items that must be kept together, the items that must be
kept together are moved to the next page.
Because of page size constraints, it may not be possible to keep all the items together or to repeat items.
If that occurs, the renderer might ignore certain rules for repeating with another item in order to allow
the report item to fit on the page.
If an item cannot be kept together, for example a text box that grows too large to fit within the vertical
usable page area, then the item will be clipped at the physical page boundary and will continue on the
next page.
Pagination is applied to reports vertically and horizontally.

NOTE
The interactive width setting is not used in the hard page break renderers.

Minimum Spacing Between Report Items


Report items grow within the report body to accommodate their contents. For example, a matrix data region
typically expands across and down the page when the report is rendered, and the height of a text box adjusts
depending on the data returned from an expression.
Renderers maintain the minimum space between report items that you define in the report layout. When you
place a report item adjacent to another on the report layout, the distance between the report items becomes the
minimum distance that must be maintained as the report grows horizontally or vertically. For example, if you
add a matrix data region to a report and then add a rectangle .25 inches to the right of the matrix, that space is
maintained as the matrix grows. Each item moves to the right to maintain the minimum distance from items
that end to the left of it.

Page Headers and Footers


Page headers and footers appear at the top and bottom of each rendered page. You can format the page header
and footer so that there is a border color, border style, and border width. You can also add a background color or
background image. These formatting options are all rendered, depending on the format that you choose.
The following rules apply to page headers and footers when rendered in the HTML or MHTML rendering format:

NOTE
For information about how Excel renders headers and footers, see Exporting to Microsoft Excel (Report Builder and SSRS).
For information about how Word renders headers and footers, see Exporting to Microsoft Word (Report Builder and
SSRS).

When present, the header and footer is rendered at the top and bottom of every page within the usable
page area.
On pages where the header or footer is hidden, the height of the header or footer is still reserved within
the usable page area, even though the header or footer is not rendered.
If the contents of the header or footer grows beyond the boundaries of the header or footer, the header
or footer increases in size to accommodate the contents.
The following rules apply to page headers and footers when rendered in the PDF or Image rendering format:
The header or footer is rendered at the top and bottom of every page within the usable page area.
On pages where the header or footer is hidden, the height of the header or footer is still reserved within
the usable page area, even though the header or footer is not rendered.
The header and footer do not grow or shrink. They are rendered on every page at the height specified
when you created the header or footer.
Regardless of the number of columns within the report, there is only one header and footer per page.
If the contents of the header or footer grow beyond the boundaries of the header or footer, the contents
are clipped.
Headers and footers that are defined in the original RDL file are not rendered when the report is
rendered as a subreport.

Logical Page Breaks


Logical page breaks are page breaks that you insert before or after report items or groups. Page breaks help to
determine how the content is fitted to a report page for optimal viewing when rendering or exporting the
report.
The following rules apply when rendering logical page breaks:
Logical page breaks are ignored for report items that are constantly hidden and for report items where
the visibility is controlled by clicking another report item.
Logical page breaks are applied on conditionally visible items if they are currently visible at the time the
report is rendered.
Space is preserved between the report item with the logical page break and its peer report items.
Logical page breaks that are inserted before a report item push the report item down to the next page.
The report item is rendered at the top of the next page.
Logical page breaks defined on items in table or matrix cells are not kept. This does not apply to items in
lists.

See Also
Interactive Functionality for Different Report Rendering Extensions (Report Builder and SSRS)
Rendering to HTML (Report Builder and SSRS)
Page Layout and Rendering (Report Builder and SSRS)
Rendering Data Regions (Report Builder and SSRS)
11/2/2020 • 3 minutes to read • Edit Online

In addition to the general rendering behaviors that apply to all report items, data regions have additional
pagination and rendering behaviors that they follow. Data region-specific rendering rules include how a data
region grows, how special cells such as the corner cell or header cells are rendered, and how a data region for
right-to-left reading is rendered. This topic discusses how the various parts of a data region are rendered.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Tablix Data Regions


The tablix data region, which enables you to create tables, matrices, and lists, is rendered as a grid comprised of
columns and rows. The intersection of a row and a column is a cell. When rendered, this cell can contain data or
other report items, such as images, rectangles, text boxes, or subreports. A tablix data region can grow vertically
and/or horizontally. In addition, the corner cell, the data region header cells, and the data region body cells may
grow based on their contents. If the data region spans multiple pages, report items that are set to repeat with
the data region are rendered on every page on which the data region is displayed. For more information, see
Tables, Matrices, and Lists (Report Builder and SSRS).
Right to Left
A tablix data region set to display from right to left is rendered with its structure as a mirror image of the data
region if it were rendered left to right. The corner of the data region appears in the upper right corner. If dynamic
columns exist in the report, they expand to the left. Right-to-left settings do not affect the order of the data in the
data region; your columns are simply ordered differently.
Tablix Headers
Tablix headers are rendered as a row header or a column header depending on where the header cell appears in
the row group hierarchy or the column group hierarchy. If a logical page break exists within the cell contents of
a header, it is ignored. Logical page breaks on column groups are ignored.
Logical page breaks on groups do not cause outer group headers to break. For example, suppose your report
has an outer group of country and an inner group of country region. If there is a logical page break between
instances of the country region group, the outer group, the country, will appear on both pages of the report.
Repeated Tablix Headers
When the RepeatWith property is set in the Proper ties pane, items that do not change within the data region,
such as column headers, repeat on each page where that part of the data region is rendered. For example, if a
row of data appears on the next page and the Repeat With property is set, the column headers appear on the
rendered page as well.
Tablix Corner
The upper left corner is called the tablix corner. The Tablix corner can contain other report items within it but, if
logical page breaks are inserted in the corner, they are ignored when the Tablix data region is rendered.
Tablix Body
The Tablix body is made up of Tablix cells. The Tablix body is rendered based on pagination rules and the
rendering behaviors of report items. For more information, see Rendering Report Items (Report Builder and
SSRS).

Chart, Gauge, and Map Data Regions


Chart, Gauge, and Map data regions behave like images when they are rendered and displayed in the report
body. Values within the data region can have associated actions, such as linking to another report or going to a
bookmark, and these actions can be rendered as well, if the renderer supports it.

See Also
Pagination in Reporting Services (Report Builder and SSRS)
Rendering Behaviors (Report Builder and SSRS)
Interactive Functionality for Different Report Rendering Extensions (Report Builder and SSRS)
Rendering Report Items (Report Builder and SSRS)
Tables, Matrices, and Lists (Report Builder and SSRS)
Charts (Report Builder and SSRS)
Gauges (Report Builder and SSRS)
Rendering Report Items (Report Builder and SSRS)
11/2/2020 • 5 minutes to read • Edit Online

The number, size, and location of report items affect how the renderers paginate the report body. Below is a
description of how various report items are rendered.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Overlapping Report Items


Overlapping report items are not supported in HTML, MHTML, Word, Excel, in Preview, or the Report Viewer. If
overlapping items exist, they are moved. The following rules are applied to overlapping report items:
If the vertical overlap of report items is greater, one of the overlapping items is moved to the right. The
left-most item remains where it is positioned.
If the horizontal overlap of report items is greater, one of the overlapping items is moved down. The top-
most item remains where it is positioned.
If the vertical and horizontal overlap is equal, one of the overlapping items is moved to the right. The left-
most item remains where it is positioned.
If an item must be moved to correct overlapping, adjacent report items move down and/or to the right to
maintain a minimum amount of spacing between the item and the report items that end above it and/or
to the left of it. For example, suppose two report items overlap vertically and a third report item is 2
inches to the right of them. When the overlapping report item is moved to the right, the third report item
moves to the right as well in order to maintain the 2 inches between itself and the report item to its left.
Overlapping report items are supported in hard page-break formats, including print.

Visibility and Report Items


Report items can be hidden or displayed by default, or hidden or displayed conditionally using expressions.
Optionally, the visibility can be switched by clicking another report item.
The following visibility rules apply when rendering report items:
If a report item and its contents are always hidden (it is not hidden based on an expression or its visibility
cannot be switched by clicking another report item), then other report items to the right or below it do
not move to fill the empty space. For example, if a rectangle and the image contained within it are hidden,
the report item that starts to the right of the rectangle does not move to the left to fill what appears to be
empty space. The space occupied by the rectangle is preserved.
If a report item and its contents are hidden conditionally (it is hidden based on an expression or its
visibility is switched by clicking another report item), then report items to the right or below it move to
the left to fill in the space when the item is hidden.
If the visibility of a report item and its contents can be switched by clicking another report item, then
pagination changes to accommodate the report item and its contents only when it is initially displayed.
Keeping Report Items Together on a Single Page
Many report items within a report can be kept together on a single page implicitly or explicitly by setting the
keep with group or keep together properties. Report items are always rendered on the same page if the report
item does not have any logical page breaks and is smaller in size than the usable page area. If a report item does
not fit completely on the page on which it would usually start, a hard page break is inserted before the report
item, forcing it to the next page. For soft page-break renderers, the page grows to accommodate the report item.
When the report item is always hidden, the rules for keeping items together are ignored.
The following items are always kept together:
Images.
Lines.
Charts, gauges, and maps.
A single row in a data region that appears separately on another page, by selecting the keep with group
option. This will implicitly keep together the single row with at least one instance of the group so that the
row is not orphaned. You can set this option on a data region or a group.
Header area of a data region.
Header area of a data region and the first row of data.
Report items that can be toggled in a tablix data region.
Priority Order
Due to page size limitations, conflicts can arise between the rules for keeping report items together. When
conflicts occur, the following priority order is used to keep items together when rendering:
Lines, charts, and images.
Widow and orphan control.
Repeated column headers and row headers.
Headers take precedence over footers. Inner repeated groups have priority over outer groups. Items
where the RepeatWith property is set that are closer to the target data region have priority over items
that are farther away from the data region.
Small report items, such as text boxes or rectangles, with an explicit KeepTogether property set to true .
Large report items, such as subreports or a non-innermost tablix member, with an explicit KeepTogether
property set to true .
Tablix data regions with an explicit KeepTogether property set to true .
Subreports
A subreport renders as a rectangle that contains another report that is defined in a separate report .rdl file. The
subreport file must be published to a report server before it can be accessed by the parent report.
The following rules apply when rendering subreports:
Subreports can grow to the size of the body defined in the .rdl file that defines the subreport. For
example, if the RDL for the subreport states that the subreport body is 5 inches wide, then the subreport
will be 5 inches wide within the parent report.
Subreports inherit column settings from the parent report. Column settings that are defined in the
original RDL are always ignored.
Only the body of the subreport is rendered. Header and footer sections that are defined in the
subreport's .rdl file are not rendered when the subreport is rendered in the parent report.
Subreports have an explicit KeepTogether property. When it is set to true , all the items in the subreport
are kept together on one page when possible.
If a subreport cannot run, it is displayed in the report as a text box with an error message. The style
properties applied to the subreport are applied to the text box instead.
If the subreport is split by a page break, the Omit border on page break setting controls whether or
not the borders on the subreport are closed or open.
For more information about subreports, see Subreports (Report Builder and SSRS).

See Also
Pagination in Reporting Services (Report Builder and SSRS)
Rendering Behaviors (Report Builder and SSRS)
Interactive Functionality for Different Report Rendering Extensions (Report Builder and SSRS)
Tables, Matrices, and Lists (Report Builder and SSRS)
Rendering Data (Report Builder and SSRS)
3/5/2021 • 2 minutes to read • Edit Online

When using layout renderers, such as HTML, MHTML, Word, Excel, PDF or Image, the data and its organization
remains unchanged. When exporting using a data renderer format, such as Comma-Separated Value (CSV) or
XML, no visual layout elements are rendered. CSV and XML apply certain rules to the report body and its
contents when rendering the report. These rules determine how the data is rendered in these formats.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

You can use data renderers to:


Import to a database. CSV is a common format that is easily importable by many database applications
including SQL Server and Microsoft Access.
Import to Excel. Use the CSV renderer to export your data to Excel without the visual layout. After your
data is in Excel, you can take advantage of standard Excel tools such as charts, formulas, and pivot tables.
XSLT transformations. An XSLT can be applied to the output of the XML renderer. This server-side
transformation is a powerful technique to transform your data to virtually any format.
Data exchange/EDI. An external process can request a CSV or XML rendering of a report and consume
that data.
Data renderer formats are controlled by a different set of properties than layout renderers. The following is a list
of properties set in the Proper ties pane that apply only to data renderers:
The DataElementOutput property controls whether or not a specific item is present in the data when
exported.
The DataElementName property controls the name of the data element. In CSV, this controls the name of
the CSV column header. In XML, this becomes the name of the XML element or attribute for the item.
The DataElementStyle property controls, in XML, whether or not the report item is rendered as an
element or an attribute.
The CSV export option saves report data as comma-delimited plain text files, without any formatting. By default,
the file uses a comma (,) to delimit fields and rows but this setting is configurable using the Device Information
Settings. The resulting file can be opened in a spreadsheet program like Office SharePoint Server or used as an
import format for other programs. The .csv file opens in a text editor such as Notepad. If accessed as a URL, the
.csv file returns a MIME type of text/csv . The files are MIME version 1.0. For more information about rendering
your report in the CSV file type, see Exporting to a CSV File (Report Builder and SSRS).
The XML file with report data export option saves a report as an XML file. The XML schema for the report is
specific to the report. The report layout information is not saved by the XML export option. The XML generated
using this option can be imported into a database, used as an XML data message, or sent to a custom
application. For more information about rendering your report in the XML file type, see Exporting to XML
(Report Builder and SSRS).
See Also
Pagination in Reporting Services (Report Builder and SSRS)
Rendering Behaviors (Report Builder and SSRS)
Interactive Functionality for Different Report Rendering Extensions (Report Builder and SSRS)
Rendering Report Items (Report Builder and SSRS)
Tables, Matrices, and Lists (Report Builder and SSRS)
Reporting Services Device Information Settings
Pagination in reports (Report Builder and SSRS)
11/2/2020 • 8 minutes to read • Edit Online

Pagination refers to the number of pages within a paginated report and how report items are arranged on these
pages. Pagination in Reporting Services varies depending on the rendering extension you use to view and
deliver the report. When you run a report on the report server, the report uses the HTML renderer. HTML
follows a specific set of pagination rules. If you export the same report to PDF, for example, the PDF renderer is
used and a different set of rules are applied; therefore, the report paginates differently. To successfully design an
easy-to-read report for your users that is optimized for the renderer that you plan to use to deliver your report,
you need to understand the rules used to control pagination in Reporting Services.
This topic discusses the impact of the physical page size and the report layout on how hard page break
renderers render the report. You can set properties to modify the physical page size and margins, and divide the
report into columns, by using the Repor t Proper ties pane, the Proper ties pane, or the Page Setup dialog
box. You access the Repor t Proper ties pane by clicking the blue area outside the report body. You access the
Page Setup dialog box by clicking Run on the Home tab, and then clicking Page Setup on the Run tab.

NOTE
If you have designed a report to be one page wide, but it renders across multiple pages, check that the width of the
report body, including margins, is not larger than the physical page size width. To prevent empty pages from being added
to your report, you can reduce the container size by dragging the container corner to the left.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

The Report Body


The report body is a rectangular container displayed as white space on the design surface. It can grow or shrink
to accommodate the report items contained within it. The report body does not reflect the physical page size
and, in fact, the report body can grow beyond the boundaries of the physical page size to span multiple report
pages. Some renderers, such as Microsoft Excel, Word, HTML and MHTML, render reports that grow or shrink
depending on the contents of the page. Reports rendered in these formats are optimized for screen-based
viewing, such as in a Web browser. These renderers add vertical page breaks when required.
You can format the report body so that there is a border color, border style and border width. You can also add a
background color and background image.

The Physical Page


The physical page size is the paper size. The paper size that you specify for the report controls how the report is
rendered. Reports rendered in hard page break formats insert page breaks horizontally and vertically based on
the physical page size to provide an optimized reading experience when printed or viewed in a hard page break
file format. Reports rendered in soft page break formats insert page breaks horizontally based on the physical
size to provide an optimized reading experience when viewed in a Web browser.
By default, the page size is 8.5 x 11 inches but you can change this size by using the Repor t Proper ties pane,
Page Setup dialog box or by changing the PageHeight and PageWidth properties in the Proper ties pane. The
page size does not grow or shrink to accommodate the contents of the report body. If you want the report to
appear on a single page, all the content within the report body must fit on the physical page. If it does not fit and
you use the hard page break format, then the report will require additional pages. If the report body grows past
the right edge of the physical page, then a page break is inserted horizontally. If the report body grows past the
bottom edge of the physical page, then a page break is inserted vertically.
If you want to override the physical page size that is defined in the report, you can specify the physical page size
using the Device Information settings for the specific renderer that you are using to export the report. For more
information, see Reporting Services Device Information Settings.
Margins
Margins are drawn from the edge of the physical page dimensions inward to the specified margin setting. If a
report item extends into the margin area, it is clipped so that the overlapping area is not rendered. If you specify
margin sizes that cause the horizontal or vertical width of the page to equal zero, the margin settings default to
zero. Margins are specified using the Repor t Proper ties pane, Page Setup dialog box or by changing the
TopMargin, BottomMargin, LeftMargin and RightMargin properties in the Proper ties pane. If you want to
override the margin size that is defined in the report, you can specify the margin size using the Device
Information settings for the specific renderer that you are using to export the report.
The area of the physical page that remains after space is allocated for margins, column spacing, and the page
header and footer, is called the usable page area. Margins are only applied when you render and print reports in
hard page break renderer formats. The following image indicates the margin and usable page area of a physical
page.

Newsletter-Style Columns
Your report can be divided into columns, such as columns in a newspaper, that are treated as logical pages
rendered on the same physical page. They are arranged from left to right, top to bottom, and are separated by
white space between each column. If the report is divided into more than one column, each physical page is
divided vertically into columns, each of which is considered a logical page. For example, suppose you have two
columns on a physical page. The content of your report fills the first column and then the second column. If the
report does not fit entirely within the first two columns, the report fills the first column and then the second
column on the next page. Columns continue to be filled, from left to right, top to bottom until all report items
are rendered. If you specify column sizes that cause the horizontal width or vertical width to equal zero, the
column spacing defaults to zero.
Columns are specified using the Repor t Proper ties pane, Page Setup dialog box or by changing the
TopMargin, BottomMargin, LeftMargin and RightMargin properties in the Proper ties pane. If you want to use a
margin size that is not defined, you can specify the margin size using the Device Information settings for the
specific renderer that you are using to export the report. Columns are only applied when you render and print
reports in PDF or Image formats. The following image indicates the usable page area of a page containing
columns.

Page Breaks and Page Names


A report might be more readable and its data easier to audit and export when the report has page names.
Reporting Services provides properties for reports and tablix data regions (table, matrix, and list), groups, and
rectangles in the report to control pagination, reset page numbers, and provide new report page names on page
breaks. These features can enhance reports regardless of the format in which reports are rendered, but are
especially useful when exporting reports to Excel workbooks.
The InitialPageName property provides the initial page name of the report. If your report does not include page
names for page breaks, then the initial page name is used for all the new pages created by page breaks. It is not
required to use an initial page name.
A rendered report can provide a new page name for the new page that a page break causes. To provide the page
name, you set the PageName property of a table, matrix, list, group, or rectangle. It is not required that you
specify page names on breaks. If you do not, the value of InitialPageName is used instead. If InitialPageName is
also blank, the new page has no name.
Tablix data regions (table, matrix, and list), groups, and rectangles support page breaks.
The page break includes the following properties:
BreakLocation provides the location of the break for the page break enabled report element: at the start,
end, or start and end. On groups, BreakLocation can be located between groups.
Disabled indicates whether a page break is applied to the report element. If this property evaluates to
True, the page break is ignored. This property is used to dynamically disable page breaks based on
expressions when the report is run.
ResetPageNumberindicates whether the page number should be reset to 1 when a page break occurs. If
this property evaluates to True, the page number is reset.
You can set the BreakLocation property in the Tablix Proper ties , Rectangle Proper ties , or Group
Proper ties dialog boxes, but you must set the Disabled, ResetPageNumber, and PageName properties in the
Report Builder Properties pane. If the properties in the Properties pane are organized by category, you will find
the properties in the PageBreak category. For groups, the PageBreak category is inside the Group category.
You can use constants and simple or complex expressions to set the value of the Disabled and
ResetPageNumber properties. However, you cannot use expression with the BreakLocation property. For more
information about writing and using expressions, see Expressions (Report Builder and SSRS).
In your report you can write expressions that reference the current page names or page numbers by using the
Globals collection. For more information, see Built-in Globals and Users References (Report Builder and SSRS).
Naming Excel Worksheet Tabs
These properties are useful when you export reports to Excel workbooks. Use the InitialPage property to specify
a default name for the worksheet tab name when you export the report, and use page breaks and the
PageName property to provide different names for each worksheet. Each new report page, defined by a page
break, is exported to a different worksheet named by the value of the PageName property. If PageName is
blank, but the report has an initial page name, then all worksheets in the Excel workbook use the same name,
the initial page name.
For more information about how these properties work when reports are exported to Excel, see Exporting to
Microsoft Excel (Report Builder and SSRS).

See Also
Page Layout and Rendering (Report Builder and SSRS)
Page Headers and Footers (Report Builder and
SSRS)
11/2/2020 • 8 minutes to read • Edit Online

A report can contain a header and footer that run along the top and bottom of each page, respectively. Headers
and footers can contain static text, images, lines, rectangles, borders, background color, background images, and
expressions. Expressions include dataset field references for reports with exactly one dataset and aggregate
function calls that include the dataset as a scope.

NOTE
Each rendering extension processes pages differently. For more information about report pagination and rendering
extensions, see Pagination in Reporting Services (Report Builder and SSRS).

By default, reports have page footers, but not page headers. For more information about how to add or remove
them, see Add or Remove a Page Header or Footer (Report Builder and SSRS).
Headers and footers commonly contain page numbers, report titles, and other report properties. For more
information about how to add these items to your report header or footer, see Display Page Numbers or Other
Report Properties (Report Builder and SSRS).
After you create a page header or footer, it is displayed on each report page. For more information about how to
suppress page headers and footers on the first and last pages, see Hide a Page Header or Footer on the First or
Last Page (Report Builder and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Report Headers and Footers


Page headers and footers are not the same as report headers and footers. Reports do not have a special report
header or report footer area. A report header consists of the report items that are placed at the top of the report
body on the report design surface. They appear only once as the first content in the report. A report footer
consists of report items that are placed at the bottom of the report body. They appear only once as the last
content in the report.

Displaying Variable Data in a Page Header or Footer


Page headers and footers can contain static content, but they are more commonly used to display varying
content like page numbers or information about the contents of a page. To display variable data that is different
on each page, you must use an expression.
If there is only one dataset defined in the report, you can add simple expressions such as [FieldName] to a page
header or footer. Drag the field from the Report Data pane dataset field collection or the Built-in Fields collection
to the page header or page footer. A text box with the appropriate expression is automatically added for you.
To calculate sums or other aggregates for values on the page, you can use aggregate expressions that specify
ReportItems or the name of a dataset. The ReportItems collection is the collection of text boxes on each page
after report rendering occurs. The dataset name must exist in the report definition. The following table displays
which items are supported in each type of aggregate expression:

DATA SET A GGREGAT ES ( SC O P E M UST


SUP P O RT ED IN EXP RESSIO N REP O RT IT EM S A GGREGAT ES B E N A M E O F DATA SET )

Text boxes in body of report Yes No

&PageNumber Yes No

&TotalPages Yes No

Aggregate function Yes. For example, Yes. For example,

=First(ReportItems!TXT_LastName.Value) =Max(Quantity.Value,"DataSet1")

Fields collection for items on the page Indirectly. For example, Yes. For example,

=Sum(ReportItems!Textbox1.Value) =Sum(Fields!Quantity.Value,"DataSet1")

Data-bound image Indirectly. For example, Yes. For example,


=ReportItems!TXT_Photo.Value
=First(Fields!Photo.Value,"DataSet1")

The following sections in this topic show ready-to-use expressions that get variable data commonly used in
headers and footers. There is also a section on how the Excel rendering extension processes headers and footers.
For more information about expressions, see Expressions (Report Builder and SSRS).
Adding Calculated Page Totals to a Header or Footer
For some reports, it is useful to include a calculated value in the header or footer of each report; for example, a
per-page sum total if the page includes numeric values. Because you cannot reference the fields directly, the
expression that you put in the header or footer must reference the name of the report item (for example, a text
box) rather than the data field:
=Sum(ReportItems!Textbox1.Value)

If the text box is in a table or list that contains repeated rows of data, the value that appears in the header or
footer at run time is a sum of all values of all TextBox1 instance data in the table or list for the current page.
When calculating page totals, you can expect to see differences in the totals when you use different rendering
extensions to view the report. Paginated output is calculated differently for each rendering extension. The same
page that you view in HTML might show different totals when viewed in PDF if the amount of data on the PDF
page is different. For more information, see Rendering Behaviors (Report Builder and SSRS).
For Reports with Multiple Datasets
For reports with more than one dataset, you cannot add fields or data-bound images directly to a header or
footer. However, you can write an expression that indirectly references a field or data-bound image that you
want to use in a header or footer.
To put variable data in a header or footer:
Add a text box to the header or footer.
In the text box, write an expression that produces the variable data that you want to appear.
In the expression, include references to report items on the page; for example, you can reference a text
box that contains data from a particular field. Do not include a direct reference to fields in a dataset. For
example, you cannot use the expression [LastName] . You can use the following expression to display the
contents of the first instance of a text box named TXT_LastName :
=First(ReportItems!TXT_LastName.Value)

You cannot use aggregate functions on fields in the page header or footer. You can only use an aggregate
function on report items in the report body. For common expressions in page headers and footers, see
Expression Examples (Report Builder and SSRS).
Adding a Data-Bound Image to a Header or Footer
You can use image data stored in a database in a header or footer. However, you cannot reference database
fields from the Image report item directly. Instead, you must add a text box in the body of the report and then
set the text box to the data field that contains the image (note that the value must be base64 encoded). You can
hide the text box in the body of the report to avoid showing the base64-encoded image. Then, you can reference
the value of the hidden text box from the Image report item in the page header or footer.
For example, suppose you have a report that consists of product information pages. In the header of each page,
you want to display a photograph of the product. To print a stored image in the report header, define a hidden
text box named TXT_Photo in the body of the report that retrieves the image from the database and use an
expression to give it a value:
=Convert.ToBase64String(Fields!Photo.Value)

In the header, add an Image report item which uses the TXT_Photo text box, decoded to show the image:
=Convert.FromBase64String(ReportItems!TXT_Photo.Value)

Using Headers and Footers to Position Text


You can use headers and footers to position text on a page. For example, suppose you are creating a report that
you want to mail out to customers. You can use a header or footer to position the customer address so that it
appears in an envelope window when folded.
If you are only using the text box to populate a header or footer, you can hide the text box in the report body.
Placement of the text box in the report body can have an effect on whether the value appears on the header or
footer of the first or last page of a report. For example, if you have tables, matrices, or lists that cause the report
to span multiple pages, the hidden text box value appears on the last page. If you want it to appear on the first
page, place the hidden text box at the top of the report body.

Designing Reports with Page Headers and Footers for Specific


Renderers
When a report is processed, data and layout information are combined. When you view a report, the combined
information is passed to a renderer that determines how much report data fits on each report page.
If you view a report on the report server using a browser, the HTML renderer controls the content on the report
pages that you see. If you plan to deliver reports in a different format than you use for viewing, or if you plan to
print reports in a specific format, you may want to optimize the report layout for the renderer you plan to use
for the final report format. For more information about report pagination, see Pagination in Reporting Services
(Report Builder and SSRS).
Working with Page Headers and Footers in Excel
When defining page headers and footers for reports that target the Excel rendering extension, follow these
guidelines to achieve best results:
Use page footers to display page numbers.
Use page headers to display images, titles, or other text. Do not put page numbers in the header.
In Excel, page footers have a limited layout. If you define a report that includes complex report items in the page
footer, the page footer won't process as you expect when the report is viewed in Excel.
The Excel rendering extension can accommodate images and absolute positioning of simple or complex report
items in the page header. A side effect of supporting a richer page header layout is reduced support for
calculating page numbers in the header. In the Excel rendering extension, default settings cause page numbers to
be calculated based on the number of worksheets. Depending on how you define the report, this might produce
erroneous page numbers. For example, suppose you have a report that renders as a single large worksheet that
prints on four pages. If you include page number information in the header, each printed page will show "Page 1
of 1" in the header.
A more accurate page count is based on logical pages that correlate to the dimensions of a printed page. In
Excel, the page footer uses logical page numbers automatically. To put the logical page count in the page header,
you must configure the device information settings to use simple headers. Be aware that when you use simple
headers, you remove the capability of handling complex report layout in the header region.
For more information, see Exporting to Microsoft Excel (Report Builder and SSRS).

See Also
Embed an Image in a Report (Report Builder and SSRS)
Rectangles and Lines (Report Builder and SSRS)
Controlling Page Breaks, Headings, Columns, and
Rows (Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

A page break divides a report into separate pages for viewing and printing. Page breaks determine how the
content is fitted to a report page for optimal viewing when you preview a report or export it to a different file
format.
Adding page breaks also improves the performance of large reports when they are processed. A rendered page
is displayed while the rest of the pages are rendered in the background. This allows you to begin viewing the
initial pages of the report while waiting for additional pages to become available.
Page breaks can be added to report items such as a table, matrix, list, chart, gauge, or image. You can also add
page breaks to groups in a table, matrix, or list. Page breaks can be added before, after, and between groups.
Page breaks between groups are not added to the report by default.
For more information, see Display Row and Column Headers on Multiple Pages (Report Builder and SSRS) and
Keep Headers Visible When Scrolling Through a Report (Report Builder and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

See Also
Tables, Matrices, and Lists (Report Builder and SSRS)
Controlling the Tablix Data Region Display on a Report Page (Report Builder and SSRS)
Grouping Pane (Report Builder)
Display Headers and Footers with a Group (Report Builder and SSRS)
Add a Page Break (Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

You can add a page break to rectangles, data regions, or groups within data regions to control the amount of
information on each page. Adding page breaks can improve the performance of published reports because only
the items on each page have to be processed as you view the report. When the whole report is a single page, all
items must be processed before you can view the report.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To add a page break to a data region


1. On the design surface, right-click the corner handle of the data region and then click Tablix Proper ties .
2. On the General tab, under Page break options , select one of the following options:
Add a page break before . Select this option when you want to add a page break before the
table.
Add a page break after . Select this option when you want to add a page break after the table.
Fit table on one page if possible . Select this option when you want the data to stay on one
page.
To add a page break to a rectangle
1. On the design surface, right-click the rectangle where you want to add a page break, and then click
Rectangle Proper ties .
2. On the General tab, under Page break options , select one of the following options:
Add a page break before . Select this option when you want to add a page break before the
rectangle.
Add a page break after . Select this option when you want to add a page break after the
rectangle.
Omit border on page break . Select this option when you do not want a border on the page
break.
Keep contents together on a single page, if possible . Select this option when you want
contents inside the rectangle to stay on one page.
To add a page break to a row group in a table, matrix, or list
1. In the Grouping pane, right-click a row group, and then click Group Proper ties .

NOTE
Page breaks are ignored on column groups.

2. On the Page Breaks tab, select Between each instance of a group to add a page break between each
instance of a group in the table.
3. Optionally, select Also at the star t of a group or Also at the end of a group to specify that a page
break be added when a group starts or ends in the table.

See Also
Pagination in Reporting Services (Report Builder and SSRS)
Rendering Behaviors (Report Builder and SSRS)
Page Headers and Footers (Report Builder and SSRS)
Display Row and Column Headers on Multiple
Pages (Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

You can control whether to repeat row and column headers on every page of a Reporting Services paginated
report for a tablix data region (a table, matrix, or list) that spans multiple pages.
How you control the rows and columns depends on whether the tablix data region has group headers. When
you click in a tablix data region that has group headers, a dotted line shows the tablix areas, as shown in the
following figure:

Row and column group headers are created automatically when you add groups by using the New Table or
Matrix wizard or the New Chart wizard, by adding fields to the Grouping pane, or by using context menus. If the
tablix data region has only a tablix body area and no group headers, the rows and columns are tablix members.
For static members, you can display the top adjacent rows or the side adjacent columns on multiple pages.

To display row headers on multiple pages


1. Right-click the row, column, or corner handle of a tablix data region, and then click Tablix Proper ties .
2. In Row Headers , select Repeat header rows on each page .
3. Click OK .

To display column headers on multiple pages


1. Right-click the row, column, or corner handle of a tablix data region, and then click Tablix Proper ties .
2. In Column Headers , select Repeat header columns on each page .
3. Click OK .

To display a static row or column on multiple pages


1. On the design surface, click the row or column handle of the tablix data region to select it. The Grouping
pane displays the row and column groups.
2. On the right side of the Grouping pane, click the down arrow, and then click Advanced Mode . The Row
Groups pane displays the hierarchical static and dynamic members for the row groups hierarchy and the
Column groups pane shows a similar display for the column groups hierarchy.
3. Click the static member that corresponds to the static member (row or column) that you want to remain
visible while scrolling. The Properties pane displays the Tablix Member properties.
If you don't see the Properties pane, click the View tab at the top of the Report Builder window and then
click Proper ties .
4. In the Properties pane, set RepeatOnNewPage to True.
5. Set KeepWithGroup to After.
6. Repeat this for as many adjacent members as you want to repeat.
7. Preview the report.
As you view each page of the report that the tablix data region spans, the static tablix members repeat on each
page.

See Also
Finding, Viewing, and Managing Reports (Report Builder and SSRS )
Export Reports (Report Builder and SSRS)
Controlling Page Breaks, Headings, Columns, and Rows (Report Builder and SSRS)
Display Headers and Footers with a Group (Report Builder and SSRS)
Keep Headers Visible When Scrolling Through a Report (Report Builder and SSRS)
Add or Remove a Page Header or Footer (Report
Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

You can add static text, images, lines, rectangles, and borders to page headers or footers. You can place
expressions and data-bound images in a textbox if you want variable or computed data in a header or footer.

NOTE
Each rendering extension processes page headers and footers differently. For more information, see Page Headers and
Footers (Report Builder and SSRS) and Pagination in Reporting Services (Report Builder and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To add a page header or footer


1. Open a report.
2. On the design surface, right-click the report, point to Inser t , and then click Header or Footer .

NOTE
The Header and Footer options appear only when a header or footer is not already part of the report.

To configure a page header or footer


1. On the design surface, right-click the page header or footer.
2. Point to Inser t , and then click one of the following items to add it to the header or footer area:
Textbox
Line
Rectangle
Image
3. Right-click the page header, and then click Header Proper ties to add borders, background images, or
colors, or to adjust the width of the header. Then click OK .
4. Right-click the page footer, and then click Footer Proper ties to add borders, background images, or
colors, or to adjust the width of the footer. Then click OK .
To remove a page header or footer
1. Open a report.
2. On the design surface, right-click the page header or footer, and then click Delete .
NOTE
When you remove a page header or footer, you delete it from the report. Any items that you previously added to the
page header or footer will not reappear if you subsequently add the header or footer again.

See Also
Page Headers and Footers (Report Builder and SSRS)
Keep Headers Visible When Scrolling Through a
Report (Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

To prevent row and column labels from scrolling out of view after rendering a report, you can freeze the row or
column headings.
How you control the rows and columns depends on whether you have a table or a matrix. If you have a table,
you configure static members (row and column headings) to remain visible. If you have a matrix, you configure
row and column group headers to remain visible.
If you export the report to Excel, the header will not be frozen automatically. You can freeze the pane in Excel. For
more information see the Page Headers and Footers section of Exporting to Microsoft Excel (Report Builder
and SSRS).

NOTE
Even if a table has row and column groups, you cannot keep those group headers visible while scrolling

The following image shows a table.

The following image shows a matrix.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.
To keep matrix group headers visible while scrolling
1. Right-click the row, column, or corner handle of a tablix data region, and then click Tablix Proper ties .
2. On the General tab, under Row Headers or Column Headers , select Header should remain visible
while scrolling .
3. Click OK .
To keep a static tablix member (row or column) visible while scrolling
1. On the design surface, click anywhere in the table to display static members, as well as groups, in the
grouping pane.

The Row Groups pane displays the hierarchical static and dynamic members for the row groups
hierarchy, and the Column groups pane shows a similar display for the column groups hierarchy.
2. On the right side of the grouping pane, click the down arrow, and then click Advanced Mode .
3. Click the static member (row or column) that you want to remain visible while scrolling. The Properties
pane displays the Tablix Member properties.

4. In the Properties pane, set FixedData to True .


5. Repeat this for as many adjacent members as you want to keep visible while scrolling.
6. Preview the report.
As you page down or across the report, the static tablix members remain in view.
See Also
Tablix Data Region (Report Builder and SSRS)
Finding, Viewing, and Managing Reports (Report Builder and SSRS )
Export Reports (Report Builder and SSRS)
Display Headers and Footers with a Group (Report Builder and SSRS)
Display Row and Column Headers on Multiple Pages (Report Builder and SSRS)
Grouping Pane (Report Builder)
Display Page Numbers or Other Report Properties
(Report Builder and SSRS)
5/20/2020 • 2 minutes to read • Edit Online

It's easy to add page numbers, a report title, file name, and other report properties to the page headers or
footers of your report. These properties are stored as fields in the Built-in Fields folder in the Report Data pane:
Execution time
Page number
Report folder
Report name
Report server URL
Total pages
User ID
Language
For a page number, you may want to add the word "Page" before the number. You may also want to show the
total number of pages.

NOTE
Adding the total number of pages to the footer may slow performance when you run or preview your report.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To add a page number or other report properties


1. In the Report Data pane, expand the Built-in Fields folder.

NOTE
If you don't see the Report Data pane, on the View tab, check Repor t Data .

2. Drag the Page Number field from the Report Data pane to the report header or footer.

NOTE
The page footer is added to the report automatically. To add a page header, on the Inser t tab, click Header , and
then click Add Header .
A text box that contains the simple expression [&PageNumber] is added.
To add the word "Page" before the page number
1. Right-click the text box that contains [&PageNumber] and click Expressions .
The Set Expression for : Value text box contains the expression =Globals!PageNumber.
2. Place the cursor after the = sign and type "Page " & .
The expression is now ="Page "&Globals!PageNumber
3. Click OK .
To add total number of pages after the page number
1. Right click the text box with the expression and click Expressions .
2. Type &" of "& at the end of the expression.
3. In the Category pane, expand Built-in Fields and double-click TotalPages .
The expression is now ="Page "&Globals!PageNumber &" of "&Globals!TotalPages
4. Click OK .

See Also
Page Headers and Footers (Report Builder and SSRS)
Format Text in a Text Box (Report Builder and SSRS)
Hide a Page Header or Footer on the First or Last
Page (Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

A report can contain a page header and page footer that run along the top and bottom of each page,
respectively. After you a add a header or footer, you can selectively hide it on the first and last pages of a report.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To hide a page header on the first or last page


1. Open a report in Design view.
2. Right-click the page header, and then click Header Proper ties . The Repor t Header Proper ties dialog
box opens.
3. Verify that Display header for this repor t is not selected.
4. In the Print options section, clear the check box for each option to hide the display on the first or last
page of the report.
5. Click OK .
To hide a page footer on the first or last page
1. Open a report in Design view.
2. Right-click the page footer, and then click Footer Proper ties . The Repor t Footer Proper ties dialog
box opens.
3. Verify that Display footer for this repor t is not selected.
4. In the Print options section, clear the check box for each option to hide the display on the first or last
page of the report.
5. Click OK .

See Also
Page Headers and Footers (Report Builder and SSRS)
Pagination in Reporting Services (Report Builder and SSRS)
Add or Remove a Page Header or Footer (Report Builder and SSRS)
Reporting Services Reports (SSRS)
3/18/2020 • 9 minutes to read • Edit Online

SQL Server Reporting Services paginated reports are XML-based report definitions that include report data and
report layout elements. On a client file system, report definitions have the file extension .rdl. After you publish a
paginated report, it is a report item stored on the report server or SharePoint site. Paginated reports are one
part of the server-based reporting platform provided by Reporting Services. You can also Create mobile reports
with SQL Server Mobile Report Publisher.
If you are new to Reporting Services, be sure to review the information in Reporting Services Concepts (SSRS).

Benefits of Reporting Services paginated reports


You can use Reporting Services report solutions to:
Use one set of data sources that provide a single version of the facts. Base reports on those data sources
to provide a unified view of data to help make business decisions.
Visualize your data in multiple, interconnected ways by using data regions. Display data organized in
tables, matrices or cross-tabs, expand/collapse groups, charts, gauges, indicators or KPIs, and maps, with
the ability to nest charts in tables.
View reports for your own use or publish reports to a report server or SharePoint site to share with your
team or organization.
Define a report once and display it in a variety of ways. You can export the report to multiple file formats,
or deliver the report to subscribers as e-mail or to a shared file. You can create multiple linked reports
that apply separate parameter sets to the same report definition.
Use report parts, shared data sources, shared queries, and subreports to define data visualizations for re-
use.
Manage report data sources separately from the report definition. For example, you can change from a
test data source to a production data source without changing the report.
Design reports in a free-form layout. Report layout is not restricted to bands of information. You can
organize data display on the page in a way that promotes understanding, insight, and action.
Enable drillthrough actions, expand/collapse toggles, sort buttons, Tooltips, and report parameters to
enable report reader interactions with the report. Use report parameters combined with expressions that
you write to enable report readers to control how data is filtered, grouped, and sorted.
Define expressions that provide you with the ability to customize how report data is filtered, grouped,
and sorted.
Stages of report processing
When you create a report, you define a report definition file (.rdl) in XML format. This file contains all the
information that is needed to combine report data and report layout by the report processor. When you view a
report, the report progresses through the following stages:
Compile. Evaluate expressions in the report definition and store the compiled intermediate format
internally on the report server.
Process. Run dataset queries, and combine intermediate format with data and layout.
Render. Send processed report to a rendering extension to determine how much information fits on
each page and create the paged report.
Expor t (optional). Export the report to a different file format.
For more information, see Stages of reports in Reporting Services Concepts (SSRS).

Create paginated reports


To create a paginated report:
Determine the purpose of repor t. Identify the purpose of the report for the audience that uses it. A
well-designed report provides information to report readers that leads to insight and action. Design
decisions made during this step influence your choice of report parameters, report layout design, and
report viewing experience. For more information, see Planning a Report (Report Builder) and Report
Design Tips (Report Builder and SSRS).
Choose the type of quer y. Determine whether to use a generalized, shared dataset query or a dataset
query specific to your set of reports. A shared dataset with a generalized query is easy to maintain for
use by multiple reports, but each report designer must filter the data as needed for their specific set of
reports. For more information, see Report Data (SSRS).
Plan for views of related data. Plan the viewing experience for your report readers. Summary reports
with the ability to drill down into detail data is a useful approach to handling large amounts of data. For
more information, see Drillthrough, Drilldown, Subreports, and Nested Data Regions (Report Builder and
SSRS).
Configure permissions. Plan the strategy for granting the right level of permissions. A common
strategy is to create a folder structure on the report server and grant access to reports and report related
items-based roles and folder security. For more information, see Secure Reports.
Choose an authoring environment. Authoring tools vary support for features. For more information,
see Reporting Services Tools.
For each report:
Identify sources of data. Define report data sources, one for each source of data. For more
information, see Create data connection strings - Report Builder & SSRS.
Choose which data to use from each source. For each data source, define report datasets.
Each dataset includes a query to specify which data to use. If you have report parameters, define a
dataset to populate the available values list for each parameter. For more information, see Report
Datasets (SSRS) and Report Parameters (Report Builder and Report Designer).
Choose a data visualization. For each dataset, choose which data region to use for displaying
the data. Choose from list of tables, charts, gauges, and maps. For more information, see the
following articles:
Tables, Matrices, and Lists (Report Builder and SSRS)
Charts (Report Builder and SSRS)
Sparklines and Data Bars (Report Builder and SSRS)
Indicators (Report Builder and SSRS)
Maps (Report Builder and SSRS)
Gauges (Report Builder and SSRS)
Customize the data and layout. Design the report layout. A report definition has a report body,
data sources, datasets, data regions, text boxes, lines, and images. Rectangles are used as
containers for layout as well as visual elements. Customize each data region by writing
expressions to control filter, group, sort, format, and display the data. Add report names, locations,
and other identifying information that helps to manage dozens or hundreds of reports. Add visual
elements and containers to organize the layout elements on the page. For more information, see
the following articles:
Filter, Group, and Sort Data (Report Builder and SSRS)
Report Parameters (Report Builder and Report Designer)
Expressions (Report Builder and SSRS)
Formatting Report Items (Report Builder and SSRS)
Images, Text Boxes, Rectangles, and Lines (Report Builder and SSRS)
Page Layout and Rendering (Report Builder and SSRS)
Configure interactivity features. Add interactivity features for your report readers. For
example, add sort buttons or toggle items for viewing the queries. For more information, see
Interactive Sort, Document Maps, and Links (Report Builder and SSRS).
Review and iterate on design. Preview the report. Publish a preliminary version to get
feedback from your report readers. Iterate on the design.
Review repor ting solution. Verify that the set of reports interacts correctly.
Consider which components can be re-used. Determine if any of the data sources or dataset
queries can be shared for re-use. If so, on the report server or SharePoint site, create shared data sources
and shared datasets. Determine if the data regions are suitable for re-use as report parts. For more
information, see Report Parts in Report Designer (SSRS).

Preview reports
Each report authoring tool supports previewing a report. For more information, see the Preview section of
Design Reports with Report Designer (SSRS), and Previewing Reports in Report Builder.

Save or publish reports


Each authoring tool supports saving a report locally or publishing the report to a report server or SharePoint
site. For more information, see the Save and Deploy section of Design Reports with Report Designer (SSRS), and
Saving Reports (Report Builder).

View reports
In addition to previewing a report saved locally or published to a report server, you can provide a variety of
viewing experiences for your report readers. To view a report:
Browser. Use the Report Server Web Service or SharePoint site to view published reports. On a
SharePoint site, you can also configure a Web part to view published reports. For more information, see
the following articles:
Browser Support for Reporting Services and Power View
The web portal of a report server (SSRS Native Mode)
URL Access (SSRS)
Deliver y. Configure a subscription to deliver reports to report readers in e-mail or to a shared file folder.
For more information, see Subscriptions and Delivery (Reporting Services).
Expor t. From the report viewer toolbar, a report reader can export a report to a different file format.
Export file formats can be configured by the report server administrator. For more information, see
Export Reports (Report Builder and SSRS)
Print. A report reader can print a report or pages of a report depending on the way in which it is viewed.
For more information, see Print Reports (Report Builder and SSRS).
Web or Windows Form application. Use Visual Studio to develop an application that facilitates
reporting via SSRS. For more information, see [Integrating Reporting Services into Applications.

Manage reports
To manage a published report:
Data sources. Shared and embedded data sources are managed independently from the report
definition.
Datasets. Shared datasets are managed independently from the report definition.
Parameters. Parameters are managed independently from the report definition. After parameters are
changed on the report server, report authoring clients cannot publish over the changes made on the
server.
Resources. Images and spatial data in ESRI shapefiles are resources that can be published and managed
independently from the report definition.
Repor t cache. By scheduling large reports to run during off-peak hours, you can reduce processing
impact on the report server during core business hours.
Snapshots. Use report snapshots when you want to provide consistent results for multiple users who
must work with identical sets of data. With volatile data, an on-demand report can produce different
results from one minute to the next. A report snapshot, by contrast, allows you to make valid
comparisons against other reports or analytical tools that contain data from the same point in time.
Repor t histor y. By creating a series of report snapshots, you can build a history of a report that shows
how data changes over time.
For more information about performance, see Performance, Snapshots, Caching (Reporting Services).

Secure reports
To secure a report:
As the report server administrator, identify the authorization and authentication system that is used for your
Reporting Services installation. By default, Reporting Services uses Windows authentication, integrated security,
and role assignment to help control access to published reports. For more information, see Roles and
Permissions (Reporting Services) and Reporting Services Security and Protection.

Create notifications based on report data


You can create data alerts for published reports on a SharePoint site. Data alerts are based on data feeds from
data regions in the report. By default, data regions are named automatically. Report authors can make it easier
to create data alerts in their reports by naming data regions based on their business purpose. When you create
a data alert, you are notified in email when data meets the conditions that you specify. For more information,
see Generating Data Feeds from Reports (Report Builder and SSRS), Create a Data Alert in Data Alert Designer
and Reporting Services Data Alerts.

Upgrade reports
Reporting Services supports multiple versions of report definitions, report servers, and SharePoint sites. To
upgrade a report:
Upgrade a report server installation. Compiled reports stored on the report server are upgraded
automatically on first use. The report definition (.rdl) is not changed. For more information, see Upgrade
and Migrate Reporting Services.
Open a report in a report authoring environment. The report definition is upgraded in most
circumstances. For more information, see Upgrade Reports and Deployment and Version Support in SQL
Server Data Tools (SSRS).

Troubleshoot reports
To troubleshoot a report:
Determine where the issue is occurring. Review the information in Stages of a Report.
Determine where you can find more information. For example, for report design that includes
expressions, the Report Designer tool provides more information about expression evaluation issues than
the Report Builder tool. For report processing errors, the log files contain detailed information.

See also
Reporting Services Tools
Extensions (SSRS)
Comparing native and SharePoint Reporting Services report servers
Publishing Data Sources and Reports
3/18/2020 • 2 minutes to read • Edit Online

Before publishing your report, you should preview the report to see how it will look when it is run. You can
continue to refine the design until you are satisfied with the results.
After you design and test your report, you may want to share it with other individuals. To share your report, you
need to publish, or deploy, it to a report server or SharePoint site. After it has been published, individuals who
have permissions to the report server or the SharePoint site can run your report. In addition, a person with
administrator permissions on the report server can create subscriptions to your report so that the report can be
updated and sent to users on a regular schedule.
If you used a shared data source to create your report, you need to publish it to the same location as the report.
Like reports, shared data sources can be managed separately on the report server.

In This Section
Previewing Reports
Describes how to preview a report before you publish it.
Publishing Reports to a Report Server
Describes how to publish a report to a report server.
URL Examples for Published Report Items on a Report Server in SharePoint Mode (SSRS)
Describes how to publish a report to a SharePoint site.

See Also
Create data connection strings - Report Builder & SSRS
Report Datasets (SSRS)
Page Layout and Rendering (Report Builder and SSRS)
Report Datasets (SSRS)
Finding, Viewing, and Managing Reports (Report Builder and SSRS )
Export Reports (Report Builder and SSRS)
Print Reports (Report Builder and SSRS)
Preview Reports in SQL Server Reporting Services
(SSRS)
11/2/2020 • 2 minutes to read • Edit Online

When you design a Reporting Services report, you may want to view it before publishing it to a production
environment. You can do this in several ways: by switching to Preview mode in Report Designer, by using the
preview window in Report Designer, and by publishing the report to a report server in a test environment.

NOTE
When you preview a report, the data for the report is cached to a file on the local computer. When you preview the same
report again using the same query, parameters, and credentials, Report Designer retrieves the cached copy rather than
rerunning the query. The data file is saved as <reportname>.rdl.data in the same directory as the report definition file.
The file is not deleted when you close Report Designer.

Preview Mode
You can preview a report in Report Designer by clicking . This runs the report locally,
using the same report processing and rendering functionality that is provided with the report server. The report
that is displayed is an interactive image; you can select parameters, click links, view the document map, and
expand and collapse hidden areas of the report. You can also export the report to any of the installed rendering
formats.

Standalone Preview
Another way to preview a report is to run the report project in a debug configuration, for example, to debug
custom assemblies that you write. The report is opened in your default browser. There are three ways to run a
project:
By clicking Star t Debugging on the Debug menu.

By clicking the Star t button on the Visual Studio standard toolbar .


By pressing F5 .
If you use a project configuration that builds the report but does not deploy it, the report that is specified in the
Star tItem property of the current configuration opens in a separate preview window. The preview window
displays the report in the same way and has the same functionality as Preview mode.

NOTE
Before debugging a report, you must set a start item. For example, if you run debug mode and the browser opens the
main report server page and not your report in preview mode. To set a start item, in Solution Explorer, right-click the
report project, click Proper ties , and then in Star tItem , select the name of the report to display.

If you wish to preview a particular report that is not the start item for the project, select a configuration that
builds the report but does not deploy it (for example, the DebugLocal configuration), right-click the report, and
then click Run . You must choose a configuration that does not deploy the report; otherwise, the report will be
published to the report server instead of displayed locally in a preview window.

Publish to a Test Server


You can also test reports by publishing them to a test server, browse to the report and preview. Publishing a
report to a test server is the same as publishing to a production server. For information about publishing a
report, see Publishing Reports to a Report Server.

Next steps
Print Reports (Report Builder and SSRS)
Print a Report (Report Builder and SSRS)
Publish Reports
Using Custom Assemblies with Reports
Publishing Reports to a Report Server
3/18/2020 • 3 minutes to read • Edit Online

After you have designed and tested a report or set of reports, you can use the deployment features in SQL
Server Data Tools (SSDT) to publish the reports to a report server. You can publish individual reports or a Report
Server project which can include multiple reports and data sources. Publishing a Report Server project is the
easiest way to publish multiple reports. SQL Server Data Tools (SSDT) uses the term deploy, instead of the term
publish. The two terms are interchangeable.
SQL Server Data Tools (SSDT) provides project configurations for managing report publication. The
configuration specifies the location of the report server, the version of SQL Server Reporting Services installed
on the report server, whether the data sources published to the report server are overwritten and so forth. For
example, the "Debug" configuration can publish to a different server than the "release" configuration. In addition
to using the configurations that SQL Server Data Tools (SSDT) provides, you can create additional
configurations.

Requirements to Publish
Permission is determined through role-based security that is defined by your report server administrator.
Publishing operations are typically granted through the Publisher role .

Project Configurations
Your reporting environment might have multiple report servers and different versions of Reporting Services
installed. You can create multiple configurations and then use a different one depending the deployment
scenario. Project configurations include properties for building reports, such as the folder in which to
temporarily store the built reports, and how to handle build issues. The configurations also have properties that
you use to specify the location and version of the report server, the folders on the report server.
By default, SQL Server Data Tools (SSDT) provides three project configurations: DebugLocal , Debug , and
Release . The default configuration is DebugLocal. You typically use the DebugLocal configuration to view
reports in a local preview window, the Debug configuration to publish reports to a test server, and the Release
configuration to publish reports to a production server. The solution configurations drop-down list on the
Standard toolbar shows the active configuration. To use a different configuration, select it from the list.
For more information, see the following
Project Property Pages Dialog Box
Deployment and Version Support in SQL Server Data Tools
Set Deployment Properties for Reporting Services projects in SSDT

To publish all reports in a project


On the Build menu, click Deploy <repor t project name> . Alternatively, in Solution Explorer, right-click the
report project and then click Deploy . You can view the status of the publishing process in the Output window.
When you deploy a Report Server project, the shared data sources in the report project are also deployed. All
reports are deployed using the same project configuration: to the same report server, the same folder on the
server, and so on. To publish reports to different servers, either publish them one by one or include only reports
you want to in the Report Server project. A solution can include multiple Report Server projects, and using
multiple project might make it easier to manage the deployment of reports because you can use a different
configuration to deploy different projects.

To publish a single report


In Solution Explorer, right-click the report and then click Deploy . You can view the status of the publishing
process in the Output window.
When you publish a report, you must also deploy the shared data sources that the report uses.
If you do not want to publish all reports in a project, you can chose to publish only a single report. To do this,
select a configuration that deploys the report (for example, the Release configuration), right-click the report, and
then click Deploy .
If a report uses a shared data source, you need to also deploy the shared data source or the deployed report will
not run. Right-click the shared data source and then click Deploy .
The target server URL of the report server must be specified and you might want to change the default folders
to which reports and shared data sources deploy.

See Also
Project Property Pages Dialog Box
Report Server Content Management (SSRS Native Mode)
Upgrade Reports
Publish a Report to a SharePoint Library
3/18/2020 • 2 minutes to read • Edit Online

To publish a report to a SharePoint site configured for SharePoint integration, you must set the project
properties in Report Designer. In the project properties, all references to servers, reports, and shared data
sources must be fully qualified URLs. In the report definition, all references to subreports, drillthrough reports,
and resources such as Web-based images, must be fully qualified URLS.
You must have Member or Owner permission on the SharePoint site to set the properties on the project. For
more information, see URL Examples for Published Report Items on a Report Server in SharePoint Mode (SSRS).
To publish a report to a SharePoint site
1. In SQL Server Data Tools (SSDT), open an existing or new Report Server project.
2. From the Project menu, click Proper ties . The <project>Proper ty Pages dialog box opens.
3. In the Configuration list, select the name of a solution build configuration to use to build and publish
your report. The current configuration is listed as Active (<configuration>).
4. If you want to publish the shared data sources in your project and overwrite previously published shared
data sources, set Over writeDataSources to True .
5. (Optional) For TargetDataSourceFolder , type a URL to a SharePoint library or library folder (for
example, https://TestServer/TestSite/Documents/DataSources ).
If you do not specify a value, the TargetRepor tFolder value is used.
6. For TargetRepor tFolder , type a URL to a library or library folder (for example,
https://TestServer/TestSite/Documents/Reports ).

7. For TargetSer verURL , type a URL to a SharePoint top-level site or subsite. If you do not specify a site,
the default top-level site is used (for example, https://servername , https://servername/site , or
https://servername/site/subsite ).

8. Click OK .
9. In Solution Explorer, right-click the report you want to publish, and click Deploy . The report is published
to the location specified in TargetRepor tFolder . Deployment errors appear in the Output window.

See Also
Project Property Pages Dialog Box
Set Deployment Properties (Reporting Services)
Publishing Reports to a Report Server
URL Examples for Published Report Items on a Report Server in SharePoint Mode (SSRS)
Use an Office Data Connection (.odc) with Reports (Reporting Services in SharePoint Integrated Mode)
Publish a Shared Data Source to a SharePoint
Library
11/2/2020 • 2 minutes to read • Edit Online

To publish a shared data source to a report server that is running in SharePoint integrated mode, you must set
the report project properties in Report Designer. In the project properties, all references to servers, reports, and
shared data sources must be fully qualified URLs.
You must have Member or Owner permission on the SharePoint site. For more information, see URL Examples
for Published Report Items on a Report Server in SharePoint Mode (SSRS).
To publish a shared data source to a SharePoint site
1. In SQL Server Data Tools (SSDT), open your existing or new Report Server project.
2. On the Project menu, click Proper ties . The <project>Proper ty Pages dialog box opens.
3. Choose the Configuration you use to publish to a SharePoint site.
4. If you want to publish the shared data sources in your project and overwrite previously published shared
data sources, set Over writeDataSources to True .
5. (Optional) For TargetDataSourceFolder , type a URL to a SharePoint library or library folder. For
example, https://TestServer/TestSite/Documents/DataSources .
If you do not specify a value, the TargetRepor tFolder value is used.
6. For TargetRepor tFolder , type a URL to a library or library folder. For example,
https://TestServer/TestSite/Documents/Reports .

7. For TargetSer verURL , type a URL to a SharePoint top-level site or subsite. If you do not specify a site,
the default top-level site is used. For example, https://servername , https://servername/site , or
https://servername/site/subsite .

8. Click OK .
9. In Solution Explorer, right-click the shared data source you want to publish, and click Deploy . The data
source is published to the location specified in TargetDataSourceFolder . Deployment errors appear in
the Output window.

NOTE
After you publish a shared data source to a SharePoint site, the file name extension is changed to .rsds. You can
edit and manage a shared data source directly on the SharePoint site. For more information, see Create and
Manage Shared Data Sources (Reporting Services in SharePoint Integrated Mode).

See Also
Publish a Report to a SharePoint Library
URL Examples for Published Report Items on a Report Server in SharePoint Mode (SSRS)
Project Property Pages Dialog Box
Set Deployment Properties (Reporting Services)
Publishing Reports to a Report Server
Use an Office Data Connection (.odc) with Reports (Reporting Services in SharePoint Integrated Mode)
Report Definition Language (SSRS)
3/5/2021 • 4 minutes to read • Edit Online

Report Definition Language (RDL) is an XML representation of a SQL Server Reporting Services report
definition. A report definition contains data retrieval and layout information for a report. RDL is composed of
XML elements that match an XML grammar created for Reporting Services. You can add your own custom
functions for controlling report item values, styles, and formatting by accessing code assemblies within report
definition files.
RDL promotes the interoperability of commercial reporting products by defining a common schema that
enables the interchange of report definitions. Any protocol or programmatic interface that works with XML can
be used with RDL. RDL is:
An XML schema for report definitions.
An interchange format for businesses and third parties.
An extensible and open schema that supports additional namespaces and custom elements.

RDL Specifications
To download specifications for specific schema versions, see Report Definition Language Specification.

RDL XML Schema Definition


A SQL Server Reporting Services Report Definition Language (RDL) file is validated by using an XML Schema
Definition (XSD) file. The schema defines the rules for where RDL elements can occur in an .rdl file. An element
includes its data type and cardinality, that is, the number of occurrences that are allowed. An element can be
simple or complex. A simple element does not have child elements or attributes. A complex element does have
children and optionally, attributes.
For example, the schema includes the RDL element Repor tParameters , which is the complex type
Repor tParametersType . By convention, a complex type for an element is the name of the element follow by
the word Type . A Repor tParameters element can be contained by the Repor t element (a complex type), and
can contain Repor tParameter elements. A Repor tParameterType is a simple type that can only be one of the
following values: Boolean , DateTime , Integer , Float , or String . For more information about XML Schema
datatypes, see XML Schema Part 2: Datatypes Second Edition.
The RDL XSD is available in the ReportDefinition.xsd file, located in the Extras folder on the product CD-ROM. It
is also available on the report server through the following URL:
https://servername/reportserver/reportdefinition.xsd .

Creating RDL
Because of the open and extensible nature of RDL, a variety of tools and applications can be built that generate
RDL based on its XML schema.
Reporting Services provides multiple tools to build RDL files. For more information, see Reporting Services
Tools.
One of the easiest ways to generate RDL from an application is to use the Microsoft .NET Framework classes of
the System.Xml namespace and System.Linq namespace. One class in particular, the XmlTextWriter class, can
be used to write RDL. With XmlTextWriter , you can generate a complete report definition from start to finish in
any .NET Framework application. Developers can also extend RDL by adding custom report items with custom
properties. For more on the XmlTextWriter class and the System.Xml namespace, see the Microsoft .NET
Framework Developer's Guide. For more information about Language-Integrated Query (LINQ), search for
"LINQ to XML" on MSDN.
The standard file extension for report definition files is .rdl. You can also develop client report definition files,
which have the extensions .rdlc. The MIME type for both extensions is text/xml. For more information about
reports, see Reporting Services Reports (SSRS).

RDL Types
The following table lists types used in RDL elements and attributes.

TYPE DESC RIP T IO N

Binar y A property with a base-64 encoded binary value.

Boolean A property with true or false as the value of the object.


Unless specified otherwise, the value of an omitted optional
Boolean object is False .

Date A property with a fully specified date or datetime value


specified in ISO8601 date format: YYYY-MM-
DD[THH:MM[:SS[.S]]].

Enum A property with a string text value that must be one of a list
of designated values.

Float A property with a float value. A period (.) is used as the


optional decimal separator.

Integer A property with an integer (int32) value.

Language A property with a text value that contains a language and


culture code, such as "en-us" for US English. The value must
either be a specific language or a neutral language for which
a default language is defined in the Microsoft .NET
Framework.

Name A property with a string text value. Names must be unique


within the namespace of the item. If not specified, the
namespace for an item is the innermost containing object
that has a name.

NormalizedString A property with a string text value that has been normalized.

Size A size element must contain a number (with a period


character used as an optional decimal separator). The
number must be followed by a designator for a CSS length
unit such as cm, mm, in, pt, or pc. A space between the
number and the designator is optional. For more
information about size designators, see CSS Values and Units
Reference.

In RDL, the maximum value for Size is 160 in. The minimum
size is 0 in.
TYPE DESC RIP T IO N

String A property with a string text value.

UnsignedInt A property with an unsigned integer (uint32) value.

Variant A property with any simple XML type.

RDL Data Types


The DataType Enumeration defines the data type of an attribute, expression, or parameter in RDL. The following
table shows how common language runtime (CLR) data types correspond to RDL data types.

C L R T Y P E( S) C O RRESP O N DIN G DATA T Y P E

Boolean Boolean

DateTime, DateTimeOffset DateTime

Int16, Int32, UInt16, Byte, SByte Integer

Single, Double Float

String, Char, GUID, Timespan String

See Also
Find the Report Definition Schema Version (SSRS)
Using Custom Assemblies with Reports
Custom Report Items
Find the Report Definition Schema Version (SSRS)
3/18/2020 • 2 minutes to read • Edit Online

A report definition file specifies the RDL namespace for the version of the report definition schema that is used
to validate the rdl file. When you open an .rdl file in a report authoring environment such as Report Designer in
SQL Server Data Tools (SSDT), Visual Studio, or Report Builder. If the report was created for a previous
namespace, a backup file is automatically created, and the report is upgraded to the current namespace. If you
save the upgraded report definition, you have saved the converted .rdl file. This is the only way to upgrade a
report definition. The report definition itself is not upgraded on a report server. The compiled report is
upgraded on a report server. For more information, see Upgrade Reports.

How to: Identify the RDL schema version of a report


1. Open the report .rdl file in an application such as Notepad or XML Notepad, in which you can view the
XML.
The XML Report element specifies the schema namespace. For example, the following Report element
specifies the namespace for Report Designer and the namespace for the report definition.

<Report xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner"
xmlns="http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition"
xmlns:df="http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition/defaultfontfamily
" MustUnderstand="df">

The most recent report definition namespace is 2016. However, the most recent published report
definition namespace is 2010, specified by the following URL:
https://schemas.microsoft.com/sqlserver/reporting/2010/01/reportdefinition ..

How to: Identify the RDL schema version of Report Designer


1. Open a new project. The version of the project that you choose determines the version of the RDL
schema. In SQL Server, more than one schema version is supported. For more information, see
Deployment and Version Support in SQL Server Data Tools.
2. On the Project menu, click Add New Item . The Add New Item dialog box opens.
3. In the Templates pane, click Repor t .
4. In Name , type a report name or accept the default.
5. Click Add . Report Designer opens a new blank report in Design view.
6. On the View menu, click Code . The report definition is displayed as an XML file.
The XML Report element specifies the schema namespace. For example, the following Report element
specifies the namespace for Report Designer and the namespace for the report definition.

<Report xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner"
xmlns="http://schemas.microsoft.com/sqlserver/reporting/*year*/01/reportdefinition"
xmlns:df="http://schemas.microsoft.com/sqlserver/reporting/*year*/01/reportdefinition/defaultfontfami
ly" MustUnderstand="df">

The report definition namespace is specified by the following URL:


https://schemas.microsoft.com/sqlserver/reporting/*year*/01/reportdefinition

How to: Identify the RDL schema version on the Report Server
In the web portal, type the URL for the report server. For example, the following URL specifies a report
server on the local computer:
https://localhost/reportserver/reportdefinition.xsd

The .xsd file opens in the browser.


The XML schema element specifies the schema namespace. For example, the following schema element
specifies three namespaces: the targetNamespace reference that is used internally by Visual Studio, the
xsd reference for the schema itself (xsd), and the report definition reference. Year represents the year of
the schema the report is using. For example, 2010 or 2016.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.microsoft.com/sqlserver/reporting/*year*/01/reportdefinition"
targetNamespace="http://schemas.microsoft.com/sqlserver/reporting/*year*/01/reportdefinition"
elementFormDefault="qualified">

The report definition namespace is specified by the following URL:


https://schemas.microsoft.com/sqlserver/reporting/*year*/01/reportdefinition

Next steps
Upgrade Reports
Report Definition Language
More questions? Try asking the Reporting Services forum
Find Text, Numbers, or Dates in a Report
3/18/2020 • 2 minutes to read • Edit Online

You can search for content in a report by typing a word or phrase that you want to find (the maximum value of a
search term is 256 characters). Search is a navigation technique that finds a matching value in the report and
puts focus on the part of the report that contains that value.
Search is case-insensitive and begins at the page or section that is currently selected. Only content that is visible
in the report is included in the search operation. If the report contains areas that you expand or collapse, values
that are in a collapsed area are skipped during the search. You can only search for text, numbers, or dates that
are in the current report. If you are using an autogenerated clickthrough report to explore data, you cannot
search for a term that you saw on a previously generated report, nor can you use search to find a term that
might appear in a report further down the data path.
When entering a value to search on, type the value as you expect it to appear in the report. Do not pose a
question, such as "what is the average profit for this month," unless you expect every word in the sentence to be
in the report.
You can only search for one term or value at a time. You cannot use search operators (such as AND or OR), or
symbols and wildcards. You cannot perform a search on a cross-section of the data (for example, searching for
net sales for specific month for a particular product). For that kind of analysis, use Report Builder to create or
use clickthrough reports.
Database and model security settings that restrict access to report data apply to search operations. If you are
searching for a value in a clickthrough report that uses a model as a data source, and you do not have access to
part of the model, data that is represented by the part of the model will be excluded from the search.
To find data in a report
1. Open the report.
2. In the report toolbar, enter the text, number, or date that you want to find.
If the report toolbar is not visible, it has been hidden on purpose and you cannot use the functionality it
provides. Properties on the Report Viewer Web Part determine whether the toolbar is visible.
3. Click Find .
4. To search for subsequent occurrences of the same value, click Next .

See Also
Add the Report Viewer Web Part to a Web Page (Reporting Services in SharePoint Integrated Mode)
Configure Execution Properties for a Report
3/5/2021 • 2 minutes to read • Edit Online

You can set report processing options to specify when data is retrieved for a report. It is useful to schedule data
processing for a report if the external data source is refreshed at specific times (for example, a data warehouse
that is refreshed daily or weekly) and you want to avoid the overhead of retrieving the same data each time a
report is requested. Scheduling data processing is also useful if you want to control the processing load on the
external database server or when you want to provide consistent results for multiple users who must work with
identical sets of data. With volatile data, an on-demand report can produce different results from one minute to
the next. A report snapshot, by contrast, allows you to make valid comparisons against other reports or
analytical tools that contain data from the same point in time.
A report snapshot is a report that contains layout instructions and query results that were retrieved at a specific
point in time. Unlike on-demand reports, which get up-to-date query results when you select the report, report
snapshots are processed on a schedule and then saved to a report server. When you select a report snapshot for
viewing, the report server retrieves the stored report from the report server database and shows the data and
layout that were current for the report at the time the snapshot was created.
Report snapshots are not saved in a particular rendering format. Instead, report snapshots are rendered in a
final viewing format (such as HTML) only when a user or an application requests it. Deferred rendering makes a
snapshot portable. The report can be rendered in the correct format for the requesting device or Web browser.

To configure report processing options


1. Start Report Manager (SSRS Native Mode).
2. Navigate to and open the report for which you want to set processing options.
Hover over the report, and click the drop-down arrow.
1. In the drop-down menu, click Manage and then select the Processing Options tab.
2. Click Render this repor t from an execution snapshot, and then select one of the following
options:
If you want to create a snapshot, select Use the following schedule to create repor t
execution snapshots , and then either define a report-specific schedule or select from the
Shared schedule list.
If you want to create a snapshot immediately, select Create a repor t snapshot when you click
the Apply button on this page .
3. Click Apply .

See Also
Set Report Processing Properties
Contents Page (Report Manager)
Report Server Content Management (SSRS Native Mode)
Processing Options Properties Page (Report Manager)

To configure report execution properties


From the web portal of a report server (SSRS Native Mode):
1. Navigate to the report for which you want to configure the execution properties.
2. Right-click the report and select Manage from the drop-down menu.
3. Select the Histor y snapshots tab to display the Histor y snapshots page.
4. Select Schedules and settings button, and check Create histor y snapshots on a schedule if it is
not already checked.
5. Select either a Shared schedule or a Repor t-specific schedule as desired.
6. In the Advanced section, select the desired Retention policy for the history snapshots.
7. Select Apply .

NOTE
If you want to create a snapshot immediately, select the New histor y snapshot button instead of the
Schedules and settings button, and a report snapshot will be created immediately.

See also
Set Report Processing Properties
Report Server Content Management (SSRS Native Mode)
Set Report Processing Properties
Limit Report History - Reporting Services
3/5/2021 • 2 minutes to read • Edit Online

Report history is a collection of report snapshots that you create over time. You can create report history on
demand, or schedule how often a snapshot is created and added to report history.
Report history is stored in the report server database. If report snapshots contain a large amount of data, you
might consider limiting report history to minimize the effect of snapshot retention on database size.

To configure report history for a report server


1. In Report Manager, click Site Settings on the global toolbar.
2. Select Keep an unlimited number of snapshots in repor t histor y if you want to keep all report
history indefinitely. Otherwise, select Limit the copies of repor t histor y to specify the maximum
number of snapshots that can be kept for any given report.
3. Click Apply .

To configure report history for a specific report


1. In Report Manager, navigate to the report for which you want to configure history, and then click the
report to open it.
2. Click the Proper ties tab.
3. Click the Histor y tab.
4. Select the options for your report and click Apply . For details about each option, see Snapshot Options
Properties Page (Report Manager).

See Also
Add a Snapshot to Report History (Report Manager)
Report Manager (SSRS Native Mode)

To configure report history for a report server


1. In the web portal, click Site Settings on the global toolbar.
2. Select Keep an unlimited number of snapshots in repor t histor y if you want to keep all report
history indefinitely. Otherwise, select Limit the copies of repor t histor y to specify the maximum
number of snapshots that can be kept for any given report.
3. Click Apply .

To configure report history for a specific report


1. In the web portal, navigate to the report for which you want to configure history, and then click the
report to open it.
2. Click the Proper ties tab.
3. Click the Histor y tab.
4. Select the options for your report and click Apply . For details about each option, see Snapshot Options
Properties Page.

See Also
Add a Snapshot to Report History
Upload a File or Report in the report server
3/18/2020 • 2 minutes to read • Edit Online

The web portal of the report server provides an upload feature so that you can add reports and other files to a
report server without having to publish those items from a client application. Files that you upload from the file
system are stored as items on the report server. The type of file you upload determines how it is stored:
.rdl files are stored as paginated reports.
All other files, including shared data source (.rds) files, are uploaded as resources. Resources are not
processed by a report server, but can be viewed in the web portal if the report server supports the MIME
type of the file.
To upload a file or report
1. In the web portal, click Upload .
2. Browse to the file you want to upload. You can upload a report definition file, an image, a document, or
any file that you want to make available on the report server.
3. Type a name for the new item. An item name can include spaces, but cannot include the reserved
characters: ; ? : @ & = + , $ / * < > |.
4. If you want to replace an existing item with the new item, select Over write item if it exists .
5. Click OK .

See Also
Create, Modify, and Delete Shared Data Sources Upload Files to a Folder
Create a Linked Report
3/18/2020 • 2 minutes to read • Edit Online

A linked report is a report server item that provides an access point to an existing report. Conceptually, it is
similar to a program shortcut that you use to run a program or open a file.
A linked report is derived from an existing report and retains the original's report definition. A linked report
always inherits report layout and data source properties of the original report. All other properties and settings
can be different from those of the original report, including security, parameters, location, subscriptions, and
schedules.
You can create a linked report when you want to create additional versions of an existing report. For example,
you could use a single regional sales report to create region-specific reports for all of your sales territories.
Although linked reports are typically based on parameterized reports, a parameterized report is not required.
You can create linked reports whenever you want to deploy an existing report with different settings.

To create a linked report


1. In the web portal, navigate to the desired report, right-click on it and select Manage from the drop down
menu.
2. On the Manage page, select Create linked repor t .
3. Enter a name for the new linked report. Optionally enter a description.
4. To select a different folder for the report, select the ellipsis button (...) to the right of Location . Navigate
to the new folder for the report and select Select . If you do not select a different folder, the linked report
is created in the current folder.
5. Select Create . The linked report is created.
6. Under Advanced , select a different Repor t timeout value if desired, and select Apply to save the
changes.
A linked report's icon differs from other items managed by a report server. The following icon indicates a
linked report:

See also
Reporting Services Concepts (SSRS)
The web portal of a report server (SSRS Native Mode)
Export paginated reports (Report Builder and SSRS)
6/8/2021 • 11 minutes to read • Edit Online

You can export a Reporting Services paginated report to another file format, such as PowerPoint, Image, PDF,
Accessible PDF, Microsoft Word, or Microsoft Excel or export the report by generating an Atom service
document, listing the Atom-compliant data feeds available from the report. You can export your report from
Report Builder, Report Designer ( SQL Server Data Tools (SSDT)), or the report server.
Export a report to do the following:
Work with the repor t data in another application. For example, you can export your report to Excel
and then continue to work with the data in Excel.
Print the repor t in a different format. For example, you can export the report to the PDF file format
and then print it.
Save a copy of the repor t as another file type. For example, you can export a report to Word and
save it, creating a copy of the report.
Use repor t data as data feeds in applications. For example, you can generate Atom-compliant data
feeds that Power Pivot, or Power BI, can consume, and then work with the data in Power Pivot, or Power
BI. For more information, see Generate Data Feeds from a Report
Rendering the report on the report server is useful when you set up subscriptions or deliver your reports
via e-mail, or if you want to save a report that is available on the report server. For more information, see
Subscriptions and Delivery (Reporting Services).
Reporting Services provides many rendering extensions, supporting exports of reports to common file formats.
The rendering extensions support file formats with soft breaks (for example, Word or Excel), hard-page breaks
(for example, PDF or TIFF), or data only (for example, CSV or Atom compliant XML).
Report pagination might be affected when you export a report to a different format. When you preview a report,
you are viewing the report as it is rendered by the HTML rendering extension, which follows soft-page break
rules. When you export a report to a different file format, such as Adobe Acrobat (PDF), pagination is based on
the physical page size, which follows hard-page break rules. Pages can also be separated by logical page breaks
that you add to a report, but the actual length of a page varies based on the renderer type that you use. To
change the pagination of your report, you must understand the pagination behavior of the rendering extension
you choose. You might need to adjust the design of your report layout for this rendering extension. For more
information see, Page Layout and Rendering.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To export a report from Report Builder


1. Run or Preview the report.
2. On the ribbon, click Expor t .
3. Select the format that you want to use.
The Save As dialog opens. By default, the file name is that of the report that you exported. Optionally,
you can change the file name.

To export a report from the Reporting Services web portal


1. From the Reporting Services web portal Home page, navigate to the report that you want to export.
2. Click the report to render and preview the report.
3. On the Report Viewer toolbar, click the Expor t drop-down arrow.

4. Select the format that you want to use.


5. Click Expor t . A dialog appears asking you if you want to open or save the file.
6. To view the report in the selected export format, click Open .
- or -
To immediately save the report in the selected export format, click Save .
Using the application that is associated with the format that you chose, the report is either displayed or
saved. If you click Save , you will be prompted for a location where you can save your report.

To export a report from a SharePoint library


1. Preview the report.
2. On the toolbar, click Actions , point to Expor t , and then select the format that you want to use.
The File Download dialog box opens.
3. To view the report in the selected export format, click Open .
- or -
To immediately save the report in the selected export format, click Save .
Using the application that is associated with the format that you chose, the report is either displayed or
saved. If you click Save , you will be prompted for a location where you can save your report.
Optionally, change the file name of the exported report.
Note If the program cannot open the report in the format that you chose because you do not have a
program associated with this file type, you will be prompted to save the exported report or to find a
program online to open the report.

Rendering Extension Types


There are three types of Reporting Services rendering extensions:
Data renderer extensions Data rendering extensions strip all formatting and layout information from
the report and display only the data. The resulting file can be used to import the raw report data into
another file type, such as Excel, another database, an XML data message, or a custom application. Data
renderers do not support page breaks.
The following data rendering extensions are supported: CSV, XML, and Atom.
Soft page-break renderer extensions Soft page-break rendering extensions maintain the report
layout and formatting. The resulting file is optimized for screen-based viewing and delivery, such as on a
Web page or in the Repor tViewer controls.
The following soft page-break rendering extensions are supported: Microsoft Excel, Microsoft Word, and
Web archive (MHTML).
Hard page-break rendering extensions Hard page-break renderer extensions maintain the report
layout and formatting. The resulting file is optimized for a consistent printing experience, or to view the
report online in a book format.
The following hard page-break rendering extensions are supported: TIFF and PDF.

Formats you can export while viewing reports


Reporting Services provides rendering extensions that render reports in different formats. You should optimize
the report design for your chosen file format. The following table lists the formats you can export from the user
interface. There are additional formats you can use with Reporting Services subscriptions or if you are exporting
from URL access. See the section Other Ways of Exporting Reportsin this topic.
F O RM AT REN DERIN G EXT EN SIO N T Y P E DESC RIP T IO N

Acrobat (PDF) file Hard page-break The PDF rendering extension renders a
report to files that can be opened in
Adobe Acrobat and other third-party
PDF viewers that support PDF 1.3.
Although PDF 1.3 is compatible with
Adobe Acrobat 4.0 and later, Reporting
Services supports Adobe Acrobat 6 or
later. The rendering extension does not
require Adobe software to render the
report. However, PDF viewers such as
Adobe Acrobat are required for
viewing or printing a report in PDF
format.

For more information, see Exporting to


a PDF File.

Atom Data The Atom rendering extension


generates Atom-compliant data feeds
from reports. The data feeds are
readable and exchangeable with
applications such as Power Pivot, or
Power BI, that can consume Atom-
compliant data feeds.

The output is an Atom service


document that lists the data feeds
available from a report. At least one
data feed is created for each data
region in a report. Depending on the
type of data region and the data that
the data region displays, multiple data
feeds might be generated.

For more information, see Generating


Data Feeds from Reports.

CSV Data The Comma-Separated Value (CSV)


rendering extension renders reports as
a flattened representation of data from
a report in a standardized, plain-text
format that is easily readable and
exchangeable with many applications.

For more information, see Exporting to


a CSV File.

EXCELOPENXML Soft page-break Displayed as "Excel" in the export


menus when reviewing reports. The
Excel rendering extension renders a
report as an Excel document (.xlsx) that
is compatible with Microsoft Excel
2013. For more information, see
Exporting to Microsoft Excel.

PowerPoint Hard page-break The PowerPoint rendering extension


renders a report as an PowerPoint
document (.pptx) that is compatible
with PowerPoint 2013.
F O RM AT REN DERIN G EXT EN SIO N T Y P E DESC RIP T IO N

TIFF file Hard page-break The Image rendering extension renders


a report to a bitmap or metafile. By
default, the Image rendering extension
produces a TIFF file of the report,
which can be viewed in multiple pages.
When the client receives the image, it
can be displayed in an image viewer
and printed.

The Image rendering extension can


generate files in any of the formats
supported by GDI+: BMP, EMF,
EMFPlus, GIF, JPEG, PNG, and TIFF.

For more information, see Exporting to


an Image File.

Web archive Soft page-break The HTML rendering extension renders


a report in HTML format. The
rendering extension can also produce
fully formed HTML pages or fragments
of HTML to embed in other HTML
pages. All HTML is generated with
UTF-8 encoding.

The HTML rendering extension is the


default rendering extension for reports
that are previewed in Report Builder
and viewed in a browser, including
when run in the Reporting Services
web portal.

For more information, see Rendering


to HTML.

WORDOPENXML Soft page-break Displayed as "Word" in the export


menu when viewing reports. The Word
rendering extension renders a report
as a Word document (.docx) that is
compatible with Microsoft Word 2013.
For more information, see Exporting to
Microsoft Word.

XML Data The XML rendering extension returns a


report in XML format. The schema for
the report XML is specific to the
report, and contains data only. Layout
information is not rendered and
pagination is not maintained by the
XML rendering extension. The XML
generated by this extension can be
imported into a database, used as an
XML data message, or sent to a
custom application.

For more information, see Exporting to


XML.

Generating Data Feeds From a Report


To generate data feeds from a report, run the report in the Reporting Services web portal, and then click the
Generate Data Feed icon on the web portal toolbar. You are prompted to choose whether to save or open the
file. If you chose Open , the Atom service document opens in the application that is associated with the .atomsvc
file extension. If you chose Save , the document is saved as an .atomsvc file. By default, the name of the file is the
name of the report. You can change the name to one that is more meaningful.
You save the Atom service document to your computer. Later you can upload it to a report server or another
server to make it available for others to use. For more information, see Generating Data Feeds from Reports and
Generate Data Feeds from a Report.

Troubleshooting Exported Reports


Sometimes your reports look different or do not work the way you want after you export them to a different
format. This occurs because certain rules and limitations might apply to the renderer. You can address many
limitations by considering them when you create the report. You might need to use a slightly different layout in
your report, carefully align items within the report, confine report footers to a single line of text, and so forth.
If your report contains Unicode text with Arabic numbers, or contains dates in Arabic, the dates and numbers do
not render correctly when you export the report to any of the following formats or print the report.
PDF
Word
Excel
Image/TIFF
If you export the report to HTML, the dates and numbers render correctly.
The topics about specific renderers describe how report items and data regions are rendered as well as the
limitations and solutions for each renderer.
Exporting to a CSV File (Report Builder and SSRS)
Exporting to Microsoft Excel (Report Builder and SSRS)
Exporting to Microsoft Word (Report Builder and SSRS)
Rendering to HTML (Report Builder and SSRS)
Exporting to a PDF File (Report Builder and SSRS)
Exporting to an Image File (Report Builder and SSRS)
Exporting to XML (Report Builder and SSRS)
Generating Data Feeds from Reports (Report Builder and SSRS)
Reporting Services provides additional features to help you create reports that work well in other formats. Page
breaks on tablix data regions (table, matrix, and list), groups, and rectangles give you better control of report
pagination. Report pages, delimited by page breaks, can have different page names and reset page numbering.
By using expressions, the page names and page numbers can be dynamically updated when the report is run.
For more information, see Pagination in Reporting Services.
In addition, you can use the RenderFormat built-in global to conditionally apply different report layouts for
different renderers. For more information, see Built-in Globals and Users References

Other Ways of Exporting Reports


Exporting a report is an on-demand task that you perform when the report is open in the Reporting Services
web portal or Report Builder. If you want to automate an export operation (for example, to export a report to a
shared folder as a specific file type on a recurring schedule), create a subscription that delivers the report to a
shared folder. For more information, see File Share Delivery in Reporting Services.
Reports previewed in the reporting tools or opened in a browser application such as the Reporting Services web
portal are always first rendered in HTML. You cannot specify a different rendering extension as the default for
viewing. You can, however, create a subscription that produces a report in the rendering format you want for
subsequent delivery to an e-mail inbox or shared folder. For more information, see Create and Manage
Subscriptions for Native Mode Report Servers and Create, Modify, and Delete Data-Driven Subscriptions.
You can also access a report through a URL that specifies a rendering extension as a URL parameter and render
the report directly to the specified format without rendering it in HTML first. The following example renders a
report in Excel format:

https://<Report Server Name>/reportserver?/Sales/YearlySalesSummary&rs:Format=Excel&rs:Command=Render

and the following renders a PowerPoint report from a named instance:

https://<Report Server Name/ReportServer_THESQLINSTANCE/Pages/ReportViewer.aspx?


%2freportfolder%2freport+name+with+spaces&rs:Format=pptx

For more information, see Export a Report Using URL Access.

Next steps
Controlling Page Breaks, Headings, Columns, and Rows (Report Builder and SSRS)
Finding, Viewing, and Managing Reports (Report Builder and SSRS )
Print Reports (Report Builder and SSRS)
Saving Reports (Report Builder)
More questions? Try asking the Reporting Services forum
Interactive Functionality - Different Report
Rendering Extensions
3/26/2020 • 5 minutes to read • Edit Online

Reporting Services provides features for interacting with a paginated report at run time. Not all of the report
rendering formats support the full range of interactive features. Use the following table to understand how each
interactive feature works in specific formats.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Interactive Features in Different Output Formats


Paginated reports that are rendered to XML, CSV, or Image formats do not support interactive features.
Reports that you view in the Reporting Services web portal, SharePoint Web parts, or in a browser are rendered
in HTML. HTML and Windows Forms are the only report output formats that fully support all interactive
features. Alternate HTML formats (such as MHTML) support many interactive features. If exceptions for MHTML
exist, they are noted in the following table.
Document maps
EXP O RT O P T IO N SUP P O RT IN F O RM AT IO N

Preview/Report Viewer, HTML Interactive document map provides a navigation pane of


hierarchical links that can be used to navigate to different
sections of a report.

PDF PDF renders a document map as the Bookmarks pane. All


items in the document map are listed one after the other
down the pane. It includes a hierarchy of links. If a page
range is specified, only those bookmarks that are rendered
exist in the hierarchy.

Excel Excel renders a document map as the first worksheet in the


workbook. It includes a hierarchy of links. When the link in
the document map is clicked, the appropriate target cell in
the respective worksheet is opened.

Word Word renders the document map as Table of Contents


labels.

Other (for example, TIFF, XML, and CSV) Not available in MHTML, XML, CSV, or Image.

Drillthrough links to other reports


EXP O RT O P T IO N SUP P O RT IN F O RM AT IO N
EXP O RT O P T IO N SUP P O RT IN F O RM AT IO N

Preview/Report Viewer, HTML Users click on data values in the report to view related data
in another report.

PDF Drillthrough links are not available in PDF. Consider using


hyperlinks for PDF reports that link to other pages.

Excel Drillthrough links are rendered in Excel.

The link becomes a hyperlink pointing to the report


referenced by the drillthrough link. Clicking the link opens a
report in a browser window.

Word Drillthrough links are rendered in Word.

The link becomes a hyperlink pointing to the report


referenced by the drillthrough link. Clicking the link opens a
report in a browser window.

Other Not available in XML, CSV, or Image.

Toggle items within a report


EXP O RT O P T IO N SUP P O RT IN F O RM AT IO N

Preview/Report Viewer, HTML Users click expand and collapse icons to view sections of a
report.

PDF The report server exports the current show or hide state of
the report to PDF. Interactive toggling is not supported

Excel Drilldown links and items that can be toggled are rendered
as collapsible outlines in Excel. You can expand and collapse
sections of the report in Excel. For more information about
Excel-imposed limitations, see Exporting to Microsoft Excel
(Report Builder and SSRS).

Word The report server exports the current show or hide state of
the report to PDF. Interactive toggling is not supported

Other Not available in MHTML, XML, or CSV. When exporting to an


Image format, the report server exports the current show or
hide stated of the report to PDF. Interactive toggling is not
supported.

Interactive sorting
EXP O RT O P T IO N SUP P O RT IN F O RM AT IO N

Preview/Report Viewer, HTML For tabular reports, users click sort arrows on column to
change how the data is sorted.

PDF Not available in PDF.

Excel Not available in Excel.


EXP O RT O P T IO N SUP P O RT IN F O RM AT IO N

Word Not available in Word.

Other Not available in MHTML, XML, CSV, or Image.

Hyperlinks to external Web content or images


EXP O RT O P T IO N SUP P O RT IN F O RM AT IO N

Preview/Report Viewer, HTML Users click links to open external Web pages in a new
browser window.

PDF Hyperlinks are rendered by the PDF rendering extension.


When a user clicks on a hyperlink, the linked pages are
opened in the browser.

Excel Hyperlinks are rendered in Excel.

Word Hyperlinks are rendered in Word.

Other Hyperlinks are not available in MHTML, XML, CSV, or Image.

For MHTML, and Image, external images are rendered as a


static picture.

Bookmark or anchor
EXP O RT O P T IO N SUP P O RT IN F O RM AT IO N

Preview/Report Viewer, HTML Users click links to navigate to another section of the same
report.

PDF Not available in PDF.

Excel Bookmarks are rendered in Excel.

The bookmark becomes a hyperlink pointing to the name of


the report item.

Word Bookmarks are rendered in Word.

The bookmark becomes a hyperlink pointing to the


bookmarked report item. Only 40 characters of a bookmark
or anchor name is converted when the report is exported
which can lead to duplicate bookmark or anchor names.
Spaces are converted to underscores (_).

Other Not available in XML, CSV, or Image.

Prompted parameters obtained at run time


EXP O RT O P T IO N SUP P O RT IN F O RM AT IO N
EXP O RT O P T IO N SUP P O RT IN F O RM AT IO N

Preview/Report Viewer, HTML A parameter input area appears at the top of the report.
This area is part of the HTML Viewer used to display reports
in a browser.

PDF The report server exports the report to PDF using the
parameter values currently in effect for the report.

Excel The report server exports the report to Excel using the
parameter values currently in effect for the report.

Word The report server exports the report to Word using the
parameter values currently in effect for the report.

Other The report server exports the report to other formats using
the parameter values currently in effect for the report.

Filters applied at run time


EXP O RT O P T IO N SUP P O RT IN F O RM AT IO N

Preview/Report Viewer, HTML The filtered data is displayed to the user at run time.

PDF The report server exports the report to PDF using filtered
data in the current report.

Excel The report server exports the report to Excel using filtered
data in the current report.

Word The report server exports the report to Word using filtered
data in the current report.

Other The report server exports the report to other formats using
filtered data in the current report.

See Also
Export Reports (Report Builder and SSRS)
Interactive Sort, Document Maps, and Links (Report Builder and SSRS)
Tables, Matrices, and Lists (Report Builder and SSRS)
Charts (Report Builder and SSRS)
Exporting to a CSV File (Report Builder and SSRS)
3/26/2020 • 5 minutes to read • Edit Online

The Comma-Separated Value (CSV) rendering extension renders paginated reports as a flattened representation
of data from a report in a standardized, plain-text format that is easily readable and exchangeable with many
applications.
The CSV rendering extension uses a string character delimiter to separate fields and rows, with the string
character delimiter configurable to be a character other than a comma. The resulting file can be opened in a
spreadsheet program like Microsoft Excel or used as an import format for other programs. The exported report
becomes a .csv file, and returns a MIME type of text/csv .
If you want to work with data related to charts, data bars, sparklines, gauges, and indicators in Microsoft Excel,
export the report to a CSV file, and then open the file in Microsoft Excel.
See Export Reports (Report Builder and SSRS) for details on how to export to CSV format.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

CSV Rendering
When rendered using the default settings, a CSV report has the following characteristics:
The default field delimiter string is a comma (,).

NOTE
You can change the field delimiter to any character that you want, including TAB, by changing the device
information settings. For more information, see CSV Device Information Settings.

The record delimiter string is the carriage return and line feed (<cr><lf>).
The text qualifier string is a quotation mark (").
The CSV renderer does not add qualifiers around all text strings. Text qualifiers are added only when the
value contains the delimiter character or when the value has a line break.
If the text contains an embedded delimiter string or qualifier string, the text qualifier is placed around the
text, and the embedded qualifier strings are doubled.
Formatting and layout are ignored.
The following items are ignored during rendering:
Page header
Page footer
Custom report items
Line
Image
Rectangle
Automatic subtotals
The remaining report items are sorted, from top to bottom, then left to right. Each item is then rendered to a
column. If the report has nested data items like lists or tables, the parent items are repeated in each record.
The following table indicates the appearance of report items when rendered:

IT EM REN DERIN G B EH AVIO R

Text box Renders the contents of the text box. In default mode, items
are formatted based on the item's formatting properties. In
compliant mode, formatting can be changed by device
information settings. For more information about CSV
rendering modes, see below.

Table Renders by expanding the table and creating a row and


column for each row and column at the lowest level of detail.
Subtotal rows and columns do not have column or row
headings. Drillthrough reports are not supported.

Matrix Renders by expanding the matrix and creating a row and


column for each row and column at the lowest level of detail.
Subtotal rows and columns do not have column or row
headings.

List Renders a record for each detail row or instance in the list.

Subreport The parent item is repeated for each instance of the


contents.

Chart Renders by creating a row for each chart value and member
labels. Labels from series and categories in hierarchies are
flattened and included in the row for a chart value.

Data bar Renders like a chart. Typically, a data bar does not include
hierarchies or labels.

Sparkline Renders like a chart. Typically, a sparkline does not do not


include hierarchies or labels.

Gauge Renders as a single record with the minimum and maximum


values of the linear scale, start and end values of the range,
and the value of the pointer.

Indicator Renders as a single record with the active state name,


available states, and the data value.

Map Renders a row with the labels and values for each map
member of a map layer.

If the map has multiple layers the values in the rows varies
depending on whether the map layers use the same or
different map data regions. If multiple map layers use the
same data region, the rows contain data from all layers.
Hierarchical and Grouped Data
Hierarchical and grouped data must be flattened in order to be represented in the CSV format.
The rendering extension flattens the report into a tree structure that represents the nested groups within the
data region. To flatten the report:
A row hierarchy is flattened before a column hierarchy.
Columns are ordered as follows: text boxes in body order left-to-right, top-to-bottom followed by data
regions ordered left-to-right, top-to-bottom.
Within a data region, the columns are ordered as follows: corner members, row hierarchy members,
column hierarchy members, and then cells.
Peer data regions are data regions or dynamic groups that share a common data region or dynamic
ancestor. Peer data is identified by branching of the flattened tree.
For more information, see Tables, Matrices, and Lists (Report Builder and SSRS).

Renderer Modes
The CSV rendering extension can operate in two modes: one is optimized for Excel and the other is optimized for
third-party applications that require strict CSV compliance to the CSV specification in RFC 4180. Depending on
which mode you use, peer data regions are handled differently.
Default Mode
The default mode is optimized for Excel. When rendered in default mode, the report is rendered as a CSV file
with multiple sections of CSV-rendered data. Each peer data region is delimited by an empty line. Peer data
regions within the report body are rendered as separate blocks of data within the CSV file. The result is a CSV
file in which:
Individual text boxes within the report body are rendered once as the first block of data within the CSV
file.
Each top-level peer data region in the report body is rendered in its own data block.
Nested data regions are rendered diagonally into the same data block.
Formatting
Numeric values are rendered in their formatted state. Excel can recognize formatted numeric values, such as
currency, percentage and date, and format the cells appropriately when importing the CSV file.
Compliant Mode
Compliant mode is optimized for third-party applications.
Data Regions
Only the first row of the file contains the column headers and each row has the same number of columns.
Formatting
Values are unformatted.

Interactivity
Interactivity is not supported by either CSV formats generated by this renderer. The following interactive
elements are not rendered:
Hyperlinks
Show or Hide
Document Map
Drillthrough or clickthrough links
End user sort
Fixes headers
Bookmarks

Device Information Settings


You can change some default settings for this renderer, including which mode to render in, which characters to
use as delimiters and which characters to use as the text qualifier default string, by changing the device
information settings. For more information, see CSV Device Information Settings.

See Also
Pagination in Reporting Services (Report Builder and SSRS)
Rendering Behaviors (Report Builder and SSRS)
Interactive Functionality for Different Report Rendering Extensions (Report Builder and SSRS)
Rendering Report Items (Report Builder and SSRS)
Tables, Matrices, and Lists (Report Builder and SSRS)
Exporting to Microsoft Excel (Report Builder and
SSRS)
3/5/2021 • 18 minutes to read • Edit Online

The Reporting Services Excel rendering extension renders a Reporting Services paginated report to the
Microsoft Excel format (.xlsx). With the Excel rendering extension, the width of columns in Excel more accurately
reflects the width of columns in reports.
The format is Office Open XML. The content type of files generated by this renderer is
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet and the file extension is .xlsx.
You can change some default settings for this renderer by changing the device information settings. For more
information, see Excel Device Information Settings.
See Export Reports (Report Builder and SSRS) for details on how to export to Excel.

IMPORTANT
When you define a parameter of type String , the user is presented with a text box that can take any value. If a report
parameter is not tied to a query parameter and the parameter values are included in the report, it is possible for a report
user to type expression syntax, script, or a URL into the parameter value, and render the report to Excel. If another user
then views the report and clicks the rendered parameter contents, the user may inadvertently execute the malicious script
or link.
To mitigate the risk of inadvertently running malicious scripts, open rendered reports only from trusted sources. For more
information about securing reports, see Secure Reports and Resources.

Excel Limitations
Microsoft Excel places limitations on exported reports due to the capabilities of Excel and its file formats. The
most significant are the following:
The maximum column width is limited to 255 characters or 1726.5 points. The renderer does not verify
that the column width is less than the limit.
The maximum number of characters in a cell is limited to 32,767. If this is exceeded, the renderer displays
an error message.
The maximum row height is 409 points. If the contents of the row cause the row height to increase
beyond 409 points, the Excel cell shows a partial amount of text up to 409 points. The rest of the cell
contents is still within the cell (up to Excel's max number of characters of 32,767).
Because the maximum row height is 409 points, if the defined height of the cell in the report is
something larger than 409 points, Excel splits the cell contents into multiple rows.
The maximum number of worksheets is not defined in Excel, but external factors, such as memory and
disk space, might causes limitations to be applied.
In outlines, Excel permits up to seven nested levels only.
If the report item that controls whether another item is toggled is not in the previous or next row or
column of the item being toggled, the outline is disabled also.
For more details about Excel limitations, see Excel specifications and limits.
Sizes of Excel 2003 (.xls) Files
IMPORTANT
The Microsoft Excel 2003 rendering extension is deprecated. For more information, see Deprecated Features in SQL Server
Reporting Services in SQL Server 2016.

When reports are first exported and saved to Excel 2003, they do not benefit from the file optimization that
Excel automatically applies to its *.xls workbook files. The larger file size can cause problems for e-mail
subscriptions and attachments. To reduce the size of the *.xls files for exported reports, open the *.xls files and
then resave the workbooks. Resaving the workbooks typically reduces their file sizes by 40 to 50 percent.

NOTE
In Excel 2003, approximately 1000 characters are displayed in an Excel cell on the worksheet but up to the maximum
number of characters can be edited in the formula bar. This limitation does not apply to current (.xlsx) Excel files.

Text Boxes and Text


The following limitations apply to text boxes and text:
Text box values that are expressions are not converted to Excel formulas. The value of each text box is
evaluated during report processing. The evaluated expression is exported as the contents of each Excel
cell.
Text boxes are rendered within one Excel cell. Font size, font face, decoration, and font style are the only
formatting that is supported on individual text within an Excel cell.
The text effect "Overline" is not supported in Excel.
Excel adds a default padding of approximately 3.75 points to the left and right sides of cells. If a text box's
padding settings are less than 3.75 points and is just barely wide enough to accommodate the text, the
text may wrap in Excel.

NOTE
To work around this issue, increase the width of the text box in the report.

Images
The following limitations apply to images:
Background images for report items are ignored because Excel does not support background images for
individual cells.
The Excel rendering extension only supports the background image of the report body. If a report body
background image is displayed in the report, the image is rendered as a worksheet background image.
Rectangles
The following limitation apply to rectangles.
Rectangles in report footers are not exported to Excel. However, rectangles in the report body, tablix cells, and
so forth are rendered as a range of Excel cells.
Report Headers and Footers
The following limitations apply to report headers and footers:
Excel headers and footers support a maximum of 256 characters including markup. The rendering
extension truncates the string at 256 characters.
Reporting Services does not support margins on report headers and footers. When exported to Excel,
these margin values are set to zero and any header or footer that contains multiple rows of data might
not print multiple rows, depending on the printer settings.
Text boxes in a header or footer maintain their formatting but not their alignment when exported to Excel.
This occurs because leading and trailing spaces are trimmed when the report is rendered to Excel.
Merging Cells
The following limitation applies to merging cells:
If cells are merged, word-wrap does not work correctly. If any merged cells exist on a row where a text box is
rendered with the AutoSize property, autosize will not work.
The Excel renderer is primarily a layout renderer. Its goal is to replicate the layout of the rendered report as
closely as possibly in an Excel worksheet and consequently cells might be merged in the worksheet to preserve
the report layout. Merged cells can cause problems because the sort functionality in Excel requires cells to be
merged in a very specific way for sort to work properly. For example, Excel requires that the ranges of merged
cells have the same size in order to be sorted.
If it is important that reports exported to Excel worksheets can be sorted, then the following can help you
reduce the number of merged cells in your Excel worksheets, which is the common cause for difficulties with
Excel sort functionality.
Not aligning items left and right is the most common cause of merged cells. Make sure the left and right
edges of all report items line up with one another. Making items align and the same width will solve the
problem in the majority of cases.
Although you align all items precisely, you might find in some rare cases that some columns continue to
be merged. This could be caused by internal unit conversion and rounding when the Excel worksheet is
rendered. In the report definition language (RDL), you can specify position and size in different
measurement units such as inches, pixels, centimeters, and points. Internally the Excel uses points. To
minimize conversion and the potential inaccuracy of rounding when converting inches and centimeters
to points, consider specifying all measurements in whole points for the most direct results. One inch is 72
points.
Report Row Groups and Column Groups
Reports that include row groups or column groups contain empty cells when exported to Excel. Imagine a report
that groups rows on commute distance. Each commute distance can contain more than one customer. The
following picture shows the report.
When the report is exported to Excel, the commute distance appears only in one cell of the Commute Distance
column. Depending on the alignment of the text in the report (top, middle, or bottom) the value is in the first,
middle, or last cell. The other cells are empty. The Name column that contains customer names has no empty
cells. The following picture shows the report after it is exported to Excel. The red cell borders were added for
emphasis. The gray boxes are the empty cells. (Neither the red lines nor the gray boxes are part of the exported
report.)

This means that reports with row groups or column groups require modification after exporting to Excel and
before you can display the exported data in pivot table. You must add the group value to cells in which they are
missing to make the worksheet a flat table with values in all cells. The following picture shows the updated
worksheet.
So if you create a report for the specific purpose of exporting it to Excel for further analysis of the report data,
consider not grouping on rows or columns in your report.

Excel Renderer
Current (.xlsx) Excel File Renderer
In SQL ServerReporting Services, the default Excel renderer is the version compatible with current (.xlsx)
Microsoft Excel files. This is the Excel option on the Expor ting menus in the Reporting Services web portal and
SharePoint list.
When you use the default Excel renderer, instead of the earlier Excel 2003 (.xls) renderer, you can install the
Microsoft Office Compatibility Pack for Word, Excel, and PowerPoint to allow earlier versions of Excel to open the
files that are exported.
Excel 2003 (.xls) Renderer

IMPORTANT
The Microsoft Excel 2003 rendering extension is deprecated. For more information, see Deprecated Features in SQL Server
Reporting Services in SQL Server 2016.

The earlier version of the Excel renderer, compatible with Excel 2003, is now named Excel 2003 and is listed on
menus using that name. The content type of files generated by this renderer is application/vnd.ms-excel and
the file name extension of files is .xls.
By default, the Excel 2003 menu option is not visible. An administrator can make it visible under certain
circumstances by updating the RSReportServer configuration file. To export reports from SQL Server Data Tools
(SSDT) using the Excel 2003 renderer, you update the RSReportDesigner configuration file.
The Excel 2003 menu option extension is never visible in the following scenarios:
Report Builder in disconnected mode and you preview a report in Report Builder. Because the
RSReportServer configuration file resides on the report server, the tools or products from where you
export reports must be connected to a report server to read the configuration file.
Report Viewer Web Part in local mode and the SharePoint farm is not integrated with a Reporting
Services report server. For more information, see Local Mode vs. Connected Mode Reports in the Report
Viewer (Reporting Services in SharePoint Mode)
If the Excel 2003 menu option renderer is configured to be visible, both the Excel and Excel 2003 options are
available in the following scenarios:
Reporting Services web portal native mode.
SharePoint site when Reporting Services is installed in SharePoint integrated mode.
SQL Server Data Tools (SSDT) and you preview reports.
Report Builder connected to a report server.
The Report Viewer Web Part in remote mode.
The following XML shows the elements for the two Excel rendering extensions in the RSReportServer and
RSReportDesigner configuration files:
<Extension Name="EXCELOPENXML"
Type="Microsoft.ReportingServices.Rendering.ExcelOpenXmlRenderer.ExcelOpenXmlRenderer,Microsoft.ReportingServices.ExcelRendering"/>

<Extension Name="EXCEL"
Type="Microsoft.ReportingServices.Rendering.ExcelRenderer.ExcelRenderer,Microsoft.ReportingServices.ExcelRendering"
Visible="false"/>

The EXCELOPENXML extension defines the Excel renderer for current (.xlsx) Excel files. The EXCEL extension
defines the Excel 2003 version. Visible = "false" indicates the Excel 2003 renderer is hidden. For more
information, see RsReportServer.config Configuration File and RSReportDesigner Configuration File.
Differences Between the current (.xlsx) Excel and Excel 2003 Renderers
Reports, rendered by using the current (.xlsx) Excel or the Excel 2003 renderers are typically identical and only
under rare circumstances will you notice differences between the two formats. The following table compares the
Excel and the Excel 2003 renderers.

P RO P ERT Y EXC EL 2003 C URREN T EXC EL

Maximum columns per worksheet 256 16,384

Maximum rows per worksheet 65,536 1,048,576

Number of colors allowed in a 56 (palette) Approximately 16 million (24-bit color)


worksheet
If more than 56 colors are used in the
report, the rendering extension
matches the required color to one of
the 56 colors already available in the
custom palette.

ZIP compressed files None ZIP compression

Default font family Arial Calibri

Default font size 10pt 11pt

Default row height 12.75 pt 15 pt

Because the report explicitly sets the row height, the default row height affects only rows that are sized
automatically upon export to Excel.

Report Items in Excel


Rectangles, subreports, the report body, and data regions are rendered as a range of Excel cells. Text boxes,
images, and charts, data bars, sparklines, maps, gauges, and indicators must be rendered within one Excel cell,
which might be merged depending on the layout of the rest of the report.
Images, charts, sparklines, data bars, maps, gauges, indicators, and lines are positioned within one Excel cell but
they sit on top of the cell grid. Lines are rendered as cell borders.
Charts, sparklines, data bars, maps, gauges, and indicators are exported as pictures. The data they depict, such as
the value and member labels for a chart, is not exported with them and is not available in the Excel workbook
unless it is included in a column or row in a data region within a report.
If you want to work with chart, sparkline, data bar, maps, gauge, and indicator data, export the report to a .csv
file or generate Atom-compliant data feeds from the report. For more information, see Exporting to a CSV File
(Report Builder and SSRS) and Generating Data Feeds from Reports (Report Builder and SSRS).
Page Sizing
The Excel rendering extension uses the page height and width settings to determine what paper setting to define
in the Excel worksheet. Excel tries to match the PageHeight and PageWidth property settings to one of the most
common paper sizes.
If no matches are found, Excel uses the default page size for the printer. Orientation is set to Portrait if the page
width is less than the page height; otherwise, orientation is set to Landscape.

Worksheet Tab Names


When you export a report to Excel, the report pages that were created by page breaks are exported to different
worksheets. If you provided an initial page name for the report, each worksheet of the Excel workbook will have
this name by default. The name appears on the worksheet tab. However, since each worksheet in a workbook
must have a unique name, an integer starting at 1 and incremented by 1 is appended to the initial page name
for each additional worksheet. For example, if the initial page name is Sales Repor t by Fiscal Year , the second
worksheet would be named Sales Repor t by Fiscal Year1 , the third one Sales Repor t by Fiscal Year2 , and
so forth.
If all report pages created by page breaks provide new page names, each worksheet will have the associated
page name. However, these page names might not be unique. If page names are not unique, the worksheets are
named the same way as initial page names. For example, if the page name of two groups is Sales for NW , one
worksheet tab will have the name Sales for NW , and the other Sales for NW1 .
If the report provides neither an initial page name, nor page names related to page breaks, the worksheet tabs
will have the default names Sheet1 , Sheet2 , and so forth.
Reporting Services provides properties to set on reports, data regions, groups, and rectangles to help you create
reports that can be exported to Excel in a way that you want. For more information, see Pagination in Reporting
Services (Report Builder and SSRS).

Document Properties
The Excel renderer writes the following metadata to the Excel file.

REP O RT EL EM EN T P RO P ERT IES DESC RIP T IO N

Created Date and time of report execution as an ISO date/time value.

Author Report.Author

Description Report.Description

LastSaved Date and time of report execution as an ISO date/time value.

Page Headers and Footers


Depending on the Device Information SimplePageHeaders setting, the page header can be rendered in two
ways: the page header can be rendered at the top of each worksheet cell grid, or in the actual Excel worksheet
header section. By default, the header is rendered to the cell grid on the Excel worksheet.
The page footer is always rendered to the actual Excel worksheet footer section, regardless of the value of the
SimplePageHeaders setting.
Excel header and footer sections support a maximum of 256 characters, including markup. If this limit is
exceeded, the Excel renderer removes markup characters starting at the end of the header and/or footer string
to reduce the number of total characters. If all markup characters are removed and the length still exceeds the
maximum, the string is truncated starting from the right.
SimplePageHeader Settings
By default, the Device Information SimplePageHeaders setting is set to False ; therefore, the page headers are
rendered as rows in the report on the Excel worksheet surface. The worksheet rows that contain the headers
become locked rows. You can freeze or unfreeze the pane in Excel. If the Print Titles option is selected, these
headers are automatically set to print on every worksheet page.
The page header repeats at the top of every worksheet in the workbook except the document map cover sheet if
the Print Titles option is selected on the Page Layout tab in Excel. If the Print on first page or the Print on
last page option is not selected in the Report Header Properties or Report Footer Properties dialog boxes, the
header will not be added to the first or last page respectively.
Page footers are rendered in the Excel footer section.
Because of Excel limitations, text boxes are the only type of report item that can be rendered in the Excel
header/footer section.

Interactivity
Some interactive elements are supported in Excel. The following is a description of specific behaviors.
Show and Hide
Microsoft Excel has limitations with how it manages hidden and displayed report items when they are exported.
Groups, rows, and columns that contain report items that can be toggled are rendered as Excel outlines. Excel
creates outlines that expand and collapse rows and columns across the entire row or column which can cause
the collapse of report items that are not intended to be collapsed. In addition, Excel's outlining symbols can
become cluttered with overlapping outlines. To address these issues, the following outlining rules are applied
when using the Excel rendering extension:
The report item in the top-left corner that can be toggled can continue to be toggled in Excel. Report
items that can be toggled and share vertical or horizontal space with the report item that can be toggled
in the top-left corner cannot be toggled in Excel.
To determine whether a data region will be collapsible by rows or columns, the position of the report
item that controls the toggling and the position of the report item that is toggled are determined. If the
item controlling the toggling appears before the item to be toggled, the item is collapsible by rows.
Otherwise, the item is collapsible by columns. If the item controlling the toggling appears beside and
above the area to be toggled equally, the item is rendered with row collapsible by rows.
To determine where the subtotals are placed in the rendered report, the rendering extension examines
the first instance of a dynamic member. If a peer static member appears immediately above it, the
dynamic member is assumed to be the subtotals. Outlines are set to indicate that this is summary data. If
there are no static siblings of a dynamic member, the first instance of the instance is the subtotal.
Due to an Excel limitation, outlines can be nested up to 7 levels only.
Document Map
If any document map labels exist in the report, a document map is rendered. The document map is rendered as
an Excel cover worksheet inserted at the first tab position in the workbook. The worksheet is named Document
map .
The text displayed in the document map is determined by the report item's or group's DocumentMapLabel
property. Document map labels are listed in the order that they appear in the report, starting at the first row, in
the first column. Each document map label cell is indented the number of levels deep it appears in the report.
Each level of indentation is represented by placing the label in a subsequent column. Excel supports up to 256
levels of outline nesting.
The document map outline is rendered as a collapsible Excel outline. The outline structure matches the nested
structure of the document map. The expand and collapse state of the outline starts at the second level.
The root node of the map is the report name, the <reportname>.rdl, and it is not interactive. The document map
links font is Arial, 10pt.
Drillthrough Links
Drillthrough links that appear in text boxes are rendered as Excel hyperlinks in the cell in which the text is
rendered. Drillthrough links for images and charts are rendered as Excel hyperlinks on the image when
rendered. When clicked, the drillthrough link opens the client's default browser and navigates to the HTML view
of the target.
Hyperlinks
Hyperlinks that appear in text boxes are rendered as Excel hyperlinks in the cell in which the text is rendered.
Hyperlinks for images and charts are rendered as Excel hyperlinks on the image when rendered. When clicked,
the hyperlink opens the client's default browser and navigates to the target URL.
Interactive Sorting
Excel does not support interactive sort.
Bookmarks
Bookmark links in text boxes are rendered as Excel hyperlinks in the cell in which the text is rendered. Bookmark
links for images and charts are rendered as Excel hyperlinks on the image when rendered. When clicked, the
bookmark goes to the Excel cell in which the bookmarked report item is rendered.

Changing Reports at Run-Time


If a report must render to multiple formats and it is not possible to create a report layout that renders the way
you want in all required formats, then you might consider using the value in the RenderFormat built-in global to
conditionally change the report appearance at run time. This way you can hide or show report items depending
the renderer used to get the best results in each format. For more information, see Built-in Globals and Users
References (Report Builder and SSRS).

See Also
Pagination in Reporting Services (Report Builder and SSRS)
Rendering Behaviors (Report Builder and SSRS)
Interactive Functionality for Different Report Rendering Extensions (Report Builder and SSRS)
Rendering Report Items (Report Builder and SSRS)
Tables, Matrices, and Lists (Report Builder and SSRS)
Exporting to Microsoft Word (Report Builder and
SSRS)
11/2/2020 • 13 minutes to read • Edit Online

The Word rendering extension renders paginated reports to the Microsoft Word format (.docx). The format is
Office Open XML.
The content type of files generated by this renderer is application/vnd.openxmlformats-
officedocument.wordprocessingml.document and the file extension is .docx.
See Export Reports (Report Builder and SSRS) for details on how to export to Word.
After you export the report to a Word document, you can change the contents of your report and design
document-style reports such as mailing labels, purchase orders, or form letters.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Report Items in Word


Reports exported to Word appear as a nested table that represents the report body. A tablix data region is
rendered as a nested table that reflects the structure of the data region in the report. Text boxes and rectangles
are each rendered as a cell within the table. The text box value is displayed inside the cell.
Images, charts, data bars, sparklines, maps, indicators, and gauges are each rendered as a static image within a
table cell. Hyperlinks and drillthrough links on these report items are rendered. Maps and areas that can be
clicked within a chart are not supported.
Newsletter-style column reports are not rendered in Word. Report body and page background images and
colors are not rendered.

Pagination
After the report is opened in Word, Word repaginates the entire report again based on the page size.
Repagination may cause page breaks to be inserted in locations where you did not intend to add them and, in
some instances, may cause the exported report to have two successive page breaks in a row or add blank pages.
You can try to change Word's pagination by adjusting the page margins.
This renderer supports only logical page breaks.
Page Sizing
When the report is rendered, the Word page height and width are set by the following RDL properties: paper
size height and width, left and right page margins, and the top and bottom page margins.
Page Width
Word supports page widths that are up to 22 inches wide. If the report is wider than 22 inches, the renderer will
still render the report; however, Word will not display the report contents while in print layout view or reading
layout view. To view the data, switch to normal view or Web layout view. In these views, Word reduces the
amount of whitespace, thereby displaying more of your report contents.
When rendered, the report grows as wide as required, up to 22 inches, to display the contents. The minimum
width of the report is based on the RDL Width property in the Properties pane.

Document Properties
The Word renderer writes the following metadata to the DOCX file.

REP O RT EL EM EN T P RO P ERT IES DESC RIP T IO N

Report Title (report title) Title


REP O RT EL EM EN T P RO P ERT IES DESC RIP T IO N

Report.Author Author

Report.Description Comments

Page Headers and Footers


Page headers and footers are rendered as header and footer regions in Word. If a report page number or an
expression that indicates the total number of report pages appears in the page header or footer, they are
translated to a Word field so that the accurate page number is displayed in the rendered report. If the header or
footer height is set in the report, Word cannot support this setting. The PrintOnFirstPage property can under
some circumstances specify whether text in a page header page footer prints on the first page of a report. If the
rendered report has multiple pages and each page contains only a single section, then you can set
PrintOnFirstPage to False and the text is suppressed on the first and page; otherwise, the text prints regardless of
the value of the PrintOnFirstPage property.
The Word renderer attempts to parse all expressions in page headers and footers when reports are exported to
Word. Many forms of expressions parse successfully and the expected values appear in page footers and
headers on all report pages.
However, when a page footer or page header contains a complex expression that evaluates to different values on
different pages of a report, the same value might display on all report pages. The page numbers in the following
two expressions do not increment in the exported report. The page number translates to the same value on all
report pages.
="Page: " + Globals!PageNumber.ToString + " of " + Globals!TotalPages.ToString

=Avg(Fields!YTDPurchase.Value, "Sales") & " Page Number " & Globals!PageNumber

This occurs because Word renderer parses the report for fields related to pagination such as PageNumber and
TotalPages and handles only simple reference, not calls to a function. In this case, the expression calls the
ToString function. The following two expressions are equivalent and both render correctly when you preview
the report in Report Builder or Report Designer or render the published report in a Reporting Services web
portal or a SharePoint library. However, the Word renderer parses only the second expression successfully and
renders the correct page numbers.
Complex expression: Expression is
="Average Sales " & Avg(Fields!YTDPurchase.Value, "Sales") & " Page Number " & Globals!PageNumber

Expression with Text Runs: Text, Average Sales , and expression,


=Avg(Fields!YTDPurchase.Value, "Sales) , and text, Page Number , and expression =Globals!PageNumber

To avoid this problem, use multiple text runs instead of one complex expression when you use expressions in
footers and headers. The following two expressions are equivalent. The first one is a complex expression the
second one uses text runs. The Word renderer parses only the second expression successfully.

Interactivity
Some interactive elements are supported in Word. The following is a description of specific behaviors.
Show and Hide
The Word renderer renders report items based on their state when rendered. If a report item's state is hidden,
the report item is not rendered in the Word document. If a report item's state is shown, the report item is
rendered in the Word document. Toggle functionality is not supported in Word.
Document Map
If any document map labels exist in the report, they are rendered as Word Table of Contents (TOC) labels on the
respective report items and groups. The document map label is used as the label text for the TOC labels. The
target link is positioned near the item on which the label is set. While a TOC is not created for you in the Word
document, you can build your own TOC using the document map labels that are rendered in the report.
Hyperlink and Drillthrough Links
Hyperlinks and drillthrough links on text box and image report items are rendered as hyperlinks in the Word
document. When you click the hyperlink, the default Web browser opens and navigates to the URL. When you
click the drillthrough hyperlink, the originating report server is accessed.
Interactive Sorting
The report contents are rendered based on how they are currently sorted within the report data region. Word
does not support interactive sorting. After the report is rendered, you can apply table sorting within Word.
Bookmarks
Bookmarks in the report are rendered as Word bookmarks. Bookmark links are rendered as hyperlinks that
connect to the bookmark labels within the document. Bookmark labels must be less than 40 characters long. The
only special character that can be used in a bookmark label is an underscore (_). Unsupported special characters
are stripped from the bookmark label name and, if the name is longer than 40 characters, the name is truncated.
If there are duplicate bookmark names in the report, the bookmarks are not rendered in Word.

Word Style Rendering


The following is a brief description of how styles are rendered in Word.
Color Palette
Colors rendered in the report are rendered in the Word document.
Border
Borders for report items, other than the page border, are rendered as Word table cell borders.

Squiggly Lines in Exported Reports


When exported and viewed in Word, report data or constants might be underlined by red or green squiggly
lines. The red squiggly lines identify spelling errors. The green squiggly lines identify grammar errors. This
occurs when the report includes words that do not comply with the proofing (spelling and grammar) of the
editing language that is specified in Word. For example, English report column titles will likely be underlined by
red squiggly lines when the report is rendered in a Spanish version of Word. Perceived spelling errors are more
common in reports than perceived grammar errors because reports typically include only short text, not
complete sentences or paragraphs.
The presence of squiggly lines in reports implies the report has errors, which it likely does not. You can remove
the squiggly lines by changing the proofing language for the report. To change the proofing language, select the
content of the report and then specify the appropriate language for the content. You can select all or part of the
content. In Word, the language option Set Proofing Language is in the Language area on the Review tab.
After you update the content, you need to resave the document.
Depending on the language version of your Office program, the proofing tools (for example, dictionary) of the
language that you chose is included with the program or provided in a Microsoft Office language pack that you
purchase.
The following topics provide additional information about setting Office and Word options.
Change the editing language in Microsoft Office Language Preferences or Word Options dialog
box in Word. For more information, see Enable the use of other languages in your Office programs.
Add Office language packs and then change the editing language. For more information, see Enable the
use of other languages in your Office programs and Office Language Options.

NOTE
When you change the editing language in Microsoft Office Language Preferences or the Word Options dialog box
in Word, the change applies to all Office programs.

Word Limitations
The following limitations are applied by Microsoft Word:
Word tables support a maximum of 63 columns. If your report has more than 63 columns and you try to
render it, Word splits the table. The additional columns are placed adjacent to the 63 columns displayed
in the report body. Therefore, the report columns may not line up as expected.
Word supports a maximum page width of 22 inches wide and 22 inches high. If your content is wider
than 22 inches, some data may not be displayed in Print Layout view.
Word ignores page header and footer height settings.
After the report is exported, Word paginates the report again. This may cause additional page breaks to
be added to the rendered report.
Word does not repeat header rows on page two and greater, although you set the RepeatOnNewPage
property of the static header row in a tablix (table, matrix, or list) to True . You can define explicit page
breaks in your report to force header rows to appear on new pages. However, because Word applies its
own pagination to the rendered report exported to Word, results might vary and the header row might
not repeat predictably. The static header row is the row that contains the column headings.
Text boxes grow when they contain non-breaking spaces.
When text is exported to Word, text with font decoration in certain fonts may generate unexpected or
missing glyphs in the rendered report.

Benefits of Using the Word Renderer


In addition to making the features that are new in Microsoft Word .docx files available to exported reports,
*.docx files of exported reports tend to be smaller. Reports exported by using the Word renderer are typically
significantly smaller than the same reports exported by using the Word 2003 renderer.

Backward Compatibility of Exported Reports


You can select a Word compatibility mode and set compatibility options. The Word renderer creates documents
with compatibility mode turned on. Resaving the documents with compatibility mode turned off might affect the
layout of the document.
If you turn off compatibility mode and then resave a report, the report layout might change in unexpected ways.

The Word 2003 Renderer


IMPORTANT
The Microsoft Word 2003 (.doc) rendering extension is deprecated. For more information, see Deprecated Features in SQL
Server Reporting Services in SQL Server 2016.

The Word renderer is compatible with Microsoft Word 2003 with the Microsoft Office Compatibility Pack for
Word, Excel, and PowerPoint installed. For more information, see Microsoft Office Compatibility Pack for Word,
Excel, and PowerPoint.
The previous version of the Word rendering extension, compatible with Microsoft Word 2003, is renamed to
Word 2003. Only the Word rendering extension is available by default. You must update the Reporting Services
configuration files to make the Word 2003 rendering extension available. The content type of files generated by
the Word 2003 renderer is application/vnd.ms-word and the file name extension of files is .doc.
In SQL Server Reporting Services, the default Word renderer is the version that renders to the Microsoft Word
format (.docx). This is the Word option that the Expor t menus in a Reporting Services web portal and
SharePoint list. The earlier version, compatible only with Microsoft Word 2003, is now named Word 2003 and is
listed on menus using that name. The Word 2003 menu option is not visible by default, but an administrator
can make it visible by updating the RSReportServer configuration file. To export reports from SQL Server Data
Tools (SSDT) using the Word 2003 renderer, you update the RSReportDesigner configuration file. However,
making the Word 2003 renderer visible does not make it available in all scenarios. Because the RSReportServer
configuration file resides on the report server, the tools or products from where you export reports must be
connected to a report server to read the configuration file. If you use tools or products in disconnected or local
mode, making the Word 2003 renderer visible has no effect. The Word 2003 menu option remains unavailable.
If you make the Word 2003 renderer visible in the RSReportDesigner configuration file, the Word 2003 menu
option is always available in SQL Server Data Tools (SSDT) report preview.
The Word 2003 menu option is never visible in the following scenarios:
Report Builder in disconnected mode and you preview a report in Report Builder.
Report Viewer Web Part in local mode and the SharePoint farm is not integrated with a Reporting
Services report server. For more information, see Local Mode vs. Connected Mode Reports in the Report
Viewer (Reporting Services in SharePoint Mode)
If the Word 2003 renderer is configured to be visible, both the Word and Word 2003 menu options are
available in the following scenarios:
Reporting Services web portal when Reporting Services is installed in native mode.
SharePoint site when Reporting Services is installed in SharePoint integrated mode.
SQL Server Data Tools (SSDT) and you preview reports.
Report Builder connected to a report server.
The Report Viewer Web Part in remote mode.
The following XML shows the elements for the two Word rendering extensions in the RSReportServer and
RSReportDesigner configuration files:
<Extension Name="WORDOPENXML"
Type="Microsoft.ReportingServices.Rendering.WordRenderer.WordOpenXmlRenderer.WordOpenXmlDocumentRenderer,Microsoft.ReportingServices.WordRenderi

<Extension Name="WORD"
Type="Microsoft.ReportingServices.Rendering.WordRenderer.WordDocumentRenderer,Microsoft.ReportingServices.WordRendering"
Visible="false"/>

The WORDOPENXML extension defines the Word renderer for Microsoft Word .docx files. The WORD extension
defines the Microsoft Word 2003 version. Visible = "false" indicates the Word 2003 renderer is hidden. For
more information, see RsReportServer.config Configuration File and RSReportDesigner Configuration File.
Differences Between the Word and Word 2003 Renderers
Reports, rendered by using the Word or Word 2003 renderers tend to be visually indistinguishable. However,
you might notice minor differences between the two the Word or Word 2003formats.

Device Information Settings


You can change some default settings for this renderer, such as omit hyperlinks and drillthrough links or expand
all items that can be toggled regardless of the original state of the item when rendered, by changing the device
information settings. For more information, see Word Device Information Settings.

Next steps
Pagination in Reporting Services
Rendering Behaviors
Interactive Functionality for Different Report Rendering Extensions
Rendering Report Items
Tables, Matrices, and Lists
More questions? Try asking the Reporting Services forum
Rendering to HTML (Report Builder and SSRS)
3/25/2020 • 4 minutes to read • Edit Online

The HTML rendering extension renders a paginated report in HTML format. The rendering extension can also
produce fully formed HTML pages or fragments of HTML to embed in other HTML pages. All HTML is generated
with UTF-8 encoding.
The HTML rendering extension is the default rendering extension for reports that are viewed in a browser,
including when run in the SQL Server 2016 Reporting Services or later (SSRS) web portal. The HTML rendering
extension can render HTML as a fragment or as a full HTML document. If the HTML is a fragment, the HEAD ,
HTML , and BODY tags of the HTML document are removed. Only the contents of the BODY tag are rendered.
This is useful for embedding the HTML in the HTML produced by another application.
In some scenarios, report parameters can be used to launch script injection attacks when rendering reports to
HTML. For more information about securing reports, see Secure Reports and Resources.
For more information about browsers, see Browser Support for Reporting Services and Power View.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Rendering in MHTML
The HTML rendering extension can also render reports in MHTML (MIME Encapsulation of Aggregate HTML
Documents). MHTML extends HTML to embed encoded objects, such as images, in the HTML document. Using
the MHTML rendering extension, you can embed resources such as images, documents, or other binary files as
MIME structures within the report HTML, into a single file. MHTML reports are also useful for embedding within
e-mail messages because all resources are included with the report. Although it is actually the HTML rendering
extension that renders MHTML, this functionality may also be referred to as the MHTML rendering extension.

Browser Support
This rendering extension supports the following browser versions:
Internet Explorer 5.5 and later
Firefox 1.5 and later
Safari 3.0 and later
Due to cross browser considerations, the rendered report may vary slightly from browser to browser. For
example, the text box contains a property called WritingMode. This property is not supported in Firefox.

HTML-Specific Rendering Rules


The following HTML-specific rules are applied when rendering:
The renderer builds an HTML table structure to contain all of the items in each Repor tItems collection, if
there is more than one.
Every item within the table structure occupies a single cell.
Empty cells are collapsed together as much as possible to reduce the size of the HTML.
A row of empty cells is added to the top edge and another column to the left edge to improve the speed
at which browsers can render the table.
Table rows or columns that contain no items, just gaps between items, are given fixed widths and heights.
All other rows and columns are allowed to grow depending on the size of each report item.
All coordinates and report item sizes are converted to millimeters. All other sizes, including style
properties, retain their original units. Size and position differences smaller than .2mm are treated as
0mm.

Interactivity
Some interactive elements are supported in HTML. The following is a description of specific behaviors.
Show and Hide
A report item whose visibility can be toggled is rendered with a +/- toggle image and is clickable. When the
item is clicked, a call back to the server takes place in order to re-render the output with the changed show or
hide state.
Document Map
Document map labels are rendered and can be navigated to by using the document map in the viewer control.
For omitted data region headers, labels are rendered on the first child cell. If there is no child cell present, the
label is rendered on the child that precedes it.
Bookmarks
Bookmark links are rendered and appear as hyperlinks. Bookmark targets are rendered and can be navigated to
by clicking the bookmark links. When a bookmark link is clicked, the report goes to the first occurrence of the
target bookmark label and, when possible, the browser is scrolled so that the bookmark link is at the top of the
window. HTML anchor (<a>) tags are used to mark bookmark targets.
Interactive Sorting
If a text box has user sort defined, the HTML rendering extension renders the sort icons in the text box to the
right of its contents. If a report contains any text box where user sort is defined, JavaScript is rendered that
causes a postback to the server when the sort image is clicked.
Hyperlinks and Drillthrough
Hyperlinks and drillthrough links are rendered as hyperlinks on report items using the HTML anchor (<a>) tags
around the item on which they are defined.
Search
The Search feature allows users to search for a string of text within the report.
Additional search and find functionality is provided by the ReportViewer Web Forms control.

Fonts on the Client Computer


When a custom font is used within the report, the computer that is used to view the report (the client computer)
must have the custom font installed for the report to display correctly. If the font is not installed on the client
computer, the report will display a system default font instead of the custom font.

Device Information Settings


You can change some default settings for this renderer, including which mode to render in, by changing the
device information settings. For more information, see HTML Device Information Settings.

See Also
Pagination in Reporting Services (Report Builder and SSRS)
Rendering Behaviors (Report Builder and SSRS)
Interactive Functionality for Different Report Rendering Extensions (Report Builder and SSRS)
Rendering Report Items (Report Builder and SSRS)
Tables, Matrices, and Lists (Report Builder and SSRS)
Exporting to an Image File (Report Builder and
SSRS)
3/26/2020 • 2 minutes to read • Edit Online

The Image rendering extension renders a paginated report to a bitmap or metafile. By default, the Image
rendering extension produces a TIFF file of the report, which can be viewed in multiple pages. When the client
receives the image, it can be displayed in an image viewer and printed. This topic provides Image renderer-
specific information and describes exceptions to the rendering rules.
The Image rendering extension can generate files in any of the formats supported by GDI+: BMP, EMF, EMFPlus,
GIF, JPEG, PNG, and TIFF. For TIFF format, the file name of the primary stream is ReportName.tif. For all other
formats, which render as a single page per file, the file name is ReportName_Page.ext where. ext is the file
extension for the chosen format. To produce a file in another Image-supported format, specify any of the above
listed strings in the OutputFormatDeviceInfo setting.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Supported Image Formats


The following table shows the file extension and MimeType for each Image renderer format.

TYPE EXT EN SIO N M IM ET Y P E

BMP bmp image/bmp

GIF gif image/gif

JPEG jpeg image/jpeg

PNG png image/png

TIFF tif image/tiff

EMF emf image/emf

EMFPlus emf image/emf

Rendering Multiple Pages


TIFF is the only format that supports multiple page documents in a single file. Other formats, such as JPG or
PNG, output one page at a time and require a separate call to the rendering extension for each page.

Interactivity
Interactivity is not supported in any Image formats generated by this renderer. The following interactive
elements are not rendered:
Hyperlinks
Show or Hide
Document Map
Drillthrough or clickthrough links
End user sort
Fixed headers
Bookmarks

Device Information Settings


You can change some default settings for this renderer by changing the device information settings. For more
information, see Image Device Information Settings.

See Also
Pagination in Reporting Services (Report Builder and SSRS)
Rendering Behaviors (Report Builder and SSRS)
Interactive Functionality for Different Report Rendering Extensions (Report Builder and SSRS)
Rendering Report Items (Report Builder and SSRS)
Tables, Matrices, and Lists (Report Builder and SSRS)
Exporting to a PDF File (Report Builder and SSRS)
6/8/2021 • 6 minutes to read • Edit Online

The PDF rendering extension renders Reporting Services paginated reports to files that can be opened in Adobe
Acrobat and other third-party PDF viewers that support PDF 1.3. Although PDF 1.3 is compatible with Adobe
Acrobat 4.0 and later versions, Reporting Services supports Adobe Acrobat 11.0 or later. The rendering
extension does not require Adobe software to render the report. However, PDF viewers such as Adobe Acrobat
are required to view or print a report in PDF format.
The PDF rendering extension supports ANSI characters and can translate Unicode characters from Japanese,
Korean, Traditional Chinese, Simplified Chinese, Cyrillic, Hebrew, and Arabic with certain limitations. For more
information about the limitations, see Export Reports (Report Builder and SSRS). The PDF rendering extension
also conforms to ISO 14289-1 (PDF/UA) standards for Accessible PDF. See PDF Rendering Extension
conformance to ISO 14289-1, Power BI Report Server & SSRS for details.
The PDF renderer is a physical page renderer and, therefore, has pagination behavior that differs from other
renderers such as HTML and Excel. This topic provides PDF renderer-specific information and describes
exceptions to the rules.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Font Embedding
When possible, the PDF rendering extension embeds the subset of each font that is needed to display the report
in the PDF file. Fonts that are used in the report must be installed on the report server. When the report server
generates a report in PDF format, it uses the information stored in the font referenced by the report to create
character mappings within the PDF file. If the referenced font is not installed on the report server, the resulting
PDF file might not contain the correct mappings and might not display correctly when viewed.
Fonts are embedded in the PDF file when the following conditions apply:
Font embedding privileges are granted by the font author. Installed fonts include a property that indicates
whether the font author intends to allow embedding a font in a document. If the property value is
EMBED_NOEMBEDDING, the font is not embedded in the PDF file. For more information, see
"TTGetEmbeddingType" on msdn.microsoft.com.
The Font is TrueType.
Fonts are referenced by visible items in a report. If a font is referenced by an item that has the Hidden
property set to True, the font is not needed to display rendered data and will not be included in the file.
Fonts are embedded only when they are needed to display the rendered report data.
If all of these conditions are met for a font, the font is embedded in the PDF file. If one or more of these
conditions is not met, the font is not embedded in the PDF file.
NOTE
Although the conditions are met, there is one circumstance under which fonts are not embedded in the PDF file. If the
fonts used are the ones in the PDF specification that are commonly known as standard type 1 fonts or the base fourteen
fonts, then fonts are not embedded for ANSI content.

Fonts on the Client Computer


When a font is embedded in the PDF file, the computer that is used to view the report (the client computer) does
not need to have the font installed for the report to display correctly.
When a font is not embedded in the PDF file, the client computer must have the correct font installed for the
report to display correctly. If the font is not installed on the client computer, the PDF file displays a question
mark character (?) for unsupported characters.
Verifying Fonts in a PDF File
Differences in PDF output occur most often when a font that does not support non-Latin characters is used in a
report and then non-Latin characters are added to the report. You should test the PDF rendering output on both
the report server and the client computers to verify that the report renders correctly.
Do not rely on viewing the report in Preview or exporting to HTML because the report will look correct due to
automatic font substitution performed by the graphical design interface or by Microsoft Internet Explorer,
respectively. If there are Unicode Glyphs missing on the server, you may see characters replaced with a question
mark (?). If there is a font missing on the client, you may see characters replaced with boxes (□).
The fonts that are embedded in the PDF file are included in the Fonts property that is saved with the file, as
metadata.

Metadata
In addition to the report layout, the PDF rendering extension writes the following metadata to the PDF
Document Information Dictionary.

P DF P RO P ERT Y C REAT ED F RO M

Title The Name attribute of the Repor t RDL element.

Author The Author RDL element.

Subject The Description RDL element.

Creator Reporting Services product name and version.

Producer Rendering extension name and version.

CreationDate Report execution time in PDF datetime format.

Interactivity
Some interactive elements are supported in PDF. The following is a description of specific behaviors.
Show and Hide
Dynamic show and hide elements are not supported in PDF. The PDF document is rendered to match the current
state of any items in the report. For example, if the item is displayed when the report is run initially, then the
item is rendered. Images that can be toggled are not rendered, if they are hidden when the report is exported.
Document Map
If there are any document map labels present in the report, a document outline is added to the PDF file. Each
document map label appears as an entry in the document outline in the order that it appears in the report. In
Acrobat, a target bookmark is added to the document outline only if the page it is on is rendered.
If only a single page is rendered, no document outline is added. The document map is arranged hierarchically to
reflect the level of nesting in the report. The document outline is accessible in Acrobat under the Bookmarks tab.
Clicking an entry within the document outline causes the document to go to the bookmarked location.
Bookmarks
Bookmarks are not supported in PDF rendering.
Drillthrough Links
Drillthrough links are not supported in PDF rendering. The drillthrough links are not rendered as clickable links
and drillthrough reports cannot connect to the target of the drillthrough.
Hyperlinks
Hyperlinks in reports are rendered as clickable links in the PDF file. When clicked, Acrobat will open the default
client browser and navigate to the hyperlink URL.

Compression
Image compression is based on the original file type of the image. The PDF rendering extension compresses PDF
files by default.
To preserve any compression for images included in the PDF file when possible, JPEG images are stored as JPEG
and all other image types are stored as BMP.

NOTE
PDF files don't support embedding PNG images.

Device Information Settings


You can change some default settings for this renderer by changing the device information settings. For more
information, see PDF Device Information Settings.

See Also
Pagination in Reporting Services (Report Builder and SSRS)
Rendering Behaviors (Report Builder and SSRS)
Interactive Functionality for Different Report Rendering Extensions (Report Builder and SSRS)
Rendering Report Items (Report Builder and SSRS)
Tables, Matrices, and Lists (Report Builder and SSRS)
Exporting to XML (Report Builder and SSRS)
3/26/2020 • 7 minutes to read • Edit Online

The XML rendering extension returns a paginated report in XML format. The schema for the report XML is
specific to the report, and contains data only. Layout information is not rendered and pagination is not
maintained by the XML rendering extension. The XML generated by this extension can be imported into a
database, used as an XML data message, or sent to a custom application.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Report Items
The following table describes how report items are rendered.

IT EM REN DERIN G B EH AVIO R

Report Renders as the top-level element of the XML document.

Data regions Renders as an element within the element for its container.
Data regions include table, matrix, and list that display data
as text and chart, data bars, sparklines, gauges, and
indicators that visualize data.

Group and detail sections Each instance renders as an element within the element for
its container.

Text box Renders as an attribute or element within its container.

Rectangle Renders as an element within its container.

Matrix column groups Renders as elements within row groups.

Map Renders as an element within the element for its container.


Map layers are child elements of the map and each map
layer includes elements for their map members and map
member attributes.

Chart Renders as an element within the element for its container.


Series are child elements of the chart, and categories are
child element of a series. Renders all chart labels for each
chart value. Labels and values are included as attributes.

Data bar Renders as an element within the element for its container,
similar to a chart. Typically, a data bar does not include
hierarchies or labels, only values.
IT EM REN DERIN G B EH AVIO R

Sparkline Renders as an element within the element for its container,


similar to a chart. Typically, a sparkline does not include
hierarchies or labels, only values.

Gauge Renders as an element within the element for its container.


Renders as a single element with the minimum and
maximum values of the scale, start and end values of the
range, and the value of the pointer as attributes.

Indicator Renders as an element within the element for its container,


similar to a gauge. Renders as a single element with the
active state name, available states, and the data value as
attributes.

Reports that are rendered using the XML rendering extension also follow these rules:
XML elements and attributes are rendered in the order that they appear in the report definition.
Pagination is ignored.
Page headers and footers are not rendered.
Hidden items that cannot be made visible by toggling are not rendered. Initially visible items and hidden
items that can be made visible through a toggle are rendered.
Images, lines, and custom repor t items are ignored.

Data Types
The text box element or attribute is assigned an XSD data type based on the values that the text box displays.

IF A L L T EXT B O X VA L UES A RE A SSIGN ED DATA T Y P E IS

Int16 , Int32 , Int64 , UInt16 , UInt32 , UInt64 , Byte , xsd:integer


SByte

Decimal (or Decimal and any integer or byte data type) xsd:decimal

Float (or Decimal and any integer or byte data type) xsd:float

Double (or Decimal and any integer or byte data type) xsd:double

DateTime or DateTime Offset xsd:dateTime

Time xsd:string

Boolean xsd:boolean

String , Char xsd:string

Other xsd:string

XML-Specific Rendering Rules


The following sections describe how the XML rendering extensions interprets the items within the report.
Report Body
A report is rendered as the root element of the XML document. The name of the element comes from the
DataElementName property set in the Properties pane.
XML namespace definitions and schema reference attributes are also included in the report element. Variables
are noted in bold face type:
<Repor t xmlns="SchemaName " xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation ="SchemaNameRepor tURL &rc%3aSchema=true" Name="ReportName">
The values for the variables are as follows:

NAME VA L UE

Report Report.DataElementName

ReportURL URLEncoded absolute URL to the report on the server.

SchemaName Report.SchemaName. If null, then Report.Name. If


Report.Name is used, it is first encoded with
XmlConvert.EncodeLocalName.

ReportName The name of the report.

Text boxes
Text boxes are rendered as elements or attributes according to the DataElementStyle RDL property. The name of
the element or attribute comes from the TextBox.DataElementName RDL property.
Charts, Data Bars, and Sparklines
Charts ,data bars, and sparklines are rendered in XML. The data is structured.
Gauges and Indicators
Gauges and indicators are rendered in XML. The data is structured.
Subreports
A subreport is rendered as an element. The name of the element is taken from the DataElementName RDL
property. The TextBoxesAsElements property setting of the report overrides that of the subreport. Namespace
and XSLT attributes are not added to the subreport element.
Rectangles
A rectangle is rendered as an element. The name of the element is taken from the DataElementName RDL
property.
Custom Report Items
CustomReportItems (CRI) are not visible to the rendering extension. If a custom report item exists in the report,
the rendering extension renders it as a conventional report item.
Images
Images are not rendered.
Lines
Lines are not rendered.
Tables, Matrices, and Lists
Tables, matrices, and lists, are rendered as an element. The name of the element comes from the Tablix
DataElementName RDL property.
Rows and Columns
Columns are rendered within rows.
Tablix Corner
The corner is not rendered. Only the contents of the corner are rendered.
Tablix Cells
Tablix cells are rendered as elements. The name of the element is taken from the cell's DataElementName RDL
property.
Automatic Subtotals
Tablix automatic subtotals are not rendered.
Row and Column Items that Do Not Repeat with a Group
Items that do not repeat with a group, such as labels, subtotals and totals, are rendered as elements. The name
of the element comes from the TablixMember.DataElementName RDL property.
The TablixMember.DataElementOutput RDL property controls whether a non-repeating item is rendered.
If the DataElementName property of the Tablix member is not provided, a name for the non-repeating item is
dynamically generated in this form:
RowX For non-repeating rows, where X is a zero-based row index within the current parent.
ColumnY For non-repeating columns, where Y ix a zero-based column index within the current parent.
A non-repeating header is rendered as a child of the row or column that does not repeat with a group.
If a non-repeating member has no corresponding Tablix cells, it is not rendered. This may occur in the case of a
Tablix cell where it spans more than one column.
Rows and Columns that Repeat with a Group
Rows and columns that repeat within a group are rendered according to Tablix.DataElementOutput rules. The
name for the element is taken from the DataElementName property.
Each unique value within a group is rendered as a child element of the group. The name for the element is taken
from the Group.DataElementName property.
If the DataElementOutput property value equals Output, a repeating item's header is rendered as a child of the
detail element.

Custom Formats and XSL Transformations


XML files produced by the XML rendering extension can be transformed into almost any format using XSL
Transformations (XSLT). This functionality can be used to produce data in formats not already supported by
existing rendering extensions. Consider using the XML rendering extension and XSLT before attempting to
create your own rendering extension.

Duplicate Names
If there are duplicate data element names within the same scope, the renderer displays an error message.

XSLT Transformations
The XML renderer can apply a server-side XSLT transformation to the original XML data. When an XSLT is
applied, the renderer outputs the transformed content instead of the original XML data. The transformation
occurs on the server, not on the client.
The XSLT to apply to the output is defined either in the report definition file with the DataTransform property of
the report or with the XSLT DeviceInfo parameter. If either of these values are set, the transform occurs each
time the XML renderer is used. When using subscriptions, the XSLT must be defined in the RDL DataTransform
property.
If an XSLT file is specified, by both the DataTransform definition property and the device information setting, the
XSLT specified in DataTransform occurs first, followed by the XSLT set by the device information settings.
Device Information Settings
You can change some default settings for this renderer by changing the device information settings, including
the following:
A transformation (XSLT) to apply to the XML.
The MIME type of the XML document.
Whether to apply format strings to data.
Whether to indent the XML output.
Whether to include the XML schema name.
The encoding for the XML document.
The file extension of the XML document.
For more information, see XML Device Information Settings.

See Also
Pagination in Reporting Services (Report Builder and SSRS)
Rendering Behaviors (Report Builder and SSRS)
Interactive Functionality for Different Report Rendering Extensions (Report Builder and SSRS)
Rendering Report Items (Report Builder and SSRS)
Tables, Matrices, and Lists (Report Builder and SSRS)
Generating Data Feeds from Reports (Report
Builder and SSRS)
3/26/2020 • 10 minutes to read • Edit Online

The Reporting Services Atom rendering extension generates an Atom service document that lists the data feeds
available from a paginated report and the data feeds from the data regions in a report. You use this extension to
generate Atom-compliant data feeds that are readable and exchangeable with applications that can consume
data feeds generated from reports. For example, you can use the Atom rendering extension to generated data
feeds that you can then use in Power Pivot or Power BI.
The Atom service document lists at least one data feed for each data region in a report. Depending on the type
of data region and the data that the data region displays, Reporting Services might generate multiple data feeds
from a data region. For example, a matrix or chart can provide multiple data feeds. When the Atom rendering
extension creates the Atom service document, a unique identifier is created for each data feed and you use the
identifier in the URL to access the content of the data feed.
The way that the Atom rendering extension generates data for a data feed is similar to how the Comma-
Separated Value (CSV) rendering extension renders data to a CSV file. Like a CSV file, a data feed is a flattened
representation of the report data. For example, a table with a row group that sums the sales within a group
repeats the sum in every data row and there is no separate row that contains only the sum.
You can generate Atom service documents and data feeds using the Reporting Services web portal, Report
Server, or a SharePoint site that is integrated with Reporting Services.
Atom applies to a pair of related standards. The Atom service document conforms to the RFC 5023 Atom
publishing protocol specification and the data feeds conform to the RFC 4287 Atom syndication format protocol
specification.
The following sections provide additional information about how to use the Atom rendering extension:
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in
SQL Server Data Tools. Each authoring environment provides different ways to create, open, and save reports
and related items.

Reports as Data Feeds


You can export a production report as a data feed or you can create a report whose primary purpose is provide
data, in the form of data feeds, to applications. Using reports as a data feed gives you an additional way to
provide data to applications when the data is not easy to access through client data providers, or when you
prefer to hide the complexity of the data source and make it simpler to use the data. Another benefit of using
report data as a data feed is that you can use Reporting Services features such as security, scheduling, and
report snapshots to manage the reports that provide data feeds.
To get the most from the Atom rendering extension, you should understand how the report is rendered into
data feeds. If you are using existing reports, being able to predict what the data feeds the reports will generate is
useful; if you are writing report specifically for use as data feeds, being able to include the data and fine tune the
report layout to maximize the usefulness of the data feeds is valuable.
For more information, see Generate Data Feeds from a Report (Report Builder and SSRS).

Atom Service Document (.atomsvc file)


An Atom service document specifies a connection to one or more data feeds. At a minimum, the connection is a
simple URL to the data service that produces the feed.
When you render report data by using the Atom rendering extension, the Atom service document lists the data
feeds available for a report. The document lists at least one data feed for each data region in the report. Tables
and gauges generate only one data feed each, but matrices, lists, and charts might generated multiple
depending on the data they display.
The following diagram shows a report that uses two tables and a chart.

The Atom service document generated from this report includes three data feeds, one for each table and one for
the chart.
The matrix data regions might have more than one data feed, depending on the structure of the matrix. The
following diagram shows a report that uses a matrix that generates two data feeds.

The Atom service document generated from this report includes two data feeds, one for each of the dynamic
peer columns: Territory and Year. The following diagram shows the content of each data feed.
Data Feeds
The data feed is an XML file that has a consistent tabular format that does not change over time and variable
data that can be different each time the report is run. The data feeds generated by Reporting Services are in the
same format as those generated by that ADO.NET Data Services.
A data feed contains two sections: header and data. The Atom specification defines the elements in each section.
The header includes information such as the character encoding schema to use with the data feeds.
Header Section
The following XML code shows the header section of a data feed.
<?xml version="1.0" encoding="utf-8" standalone="yes"?><feed
xmlns:d="https://schemas.microsoft.com/ado/2007/08/dataservices"
xmlns:m="https://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
xmlns="http://www.w3.org/2005/Atom">

<title type="text"></title>

<id>uuid:1795992c-a6f3-40ec-9243-fbfd0b1a5be3;id=166321</id>

<updated>2009-05-08T23:09:58Z</updated>

Data Section
The data section of the data feeds contains one <entr y > element for each row in the flattened rowset generated
by the Atom rendering extension.
The following diagram shows a report that uses groups and totals.
The following XML shows an <entr y > element from that report in a data feed. Notice that the <entr y >
element includes the totals of the sales and orders for the group and the totals of sales and orders for all the
groups. The <entr y > element includes all values on the report.
<entry><id>uuid:1795992c-a6f3-40ec-9243-fbfd0b1a5be3;id=166322</id><title type="text"></title><updated>2009-
05-08T23:09:58Z</updated><author /><content type="application/xml"><m:properties>

<d:ProductCategory_Value>Accessories</d:ProductCategory_Value>

<d:OrderYear_Value m:type="Edm.Int32">2001</d:OrderYear_Value>

<d:SumLineTotal_Value m:type="Edm.Decimal">20235.364608</d:SumLineTotal_Value>

<d:SumOrderQty_Value m:type="Edm.Int32">1003</d:SumOrderQty_Value>

<d:SumLineTotal_Total_2_1 m:type="Edm.Decimal">1272072.883926</d:SumLineTotal_Total_2_1>

<d:SumOrderQty_Total_2_1 m:type="Edm.Double">61932</d:SumOrderQty_Total_2_1>

<d:SumLineTotal_Total_2_2 m:type="Edm.Decimal">109846381.399888</d:SumLineTotal_Total_2_2>

<d:SumOrderQty_Total_2_2 m:type="Edm.Double">274914</d:SumOrderQty_Total_2_2></m:properties></content>

</entry>

Working with Data Feeds


All data feeds generated by the report include the report items that are in scope of the parent of the data region
that generate the data feeds. . Imagine a report that has several tables and a chart. Text boxes in the report body
provides descriptive text of each data region. Every entry in every data feed that the report generates includes
the value of the text box. For example, if the text is "Chart displays monthly sales averages by sales region", all
three data feeds would include this text on each row.
If the report layout includes hierarchical data relationships, such as nested data regions, those relationships are
included in the flattened rowset of report data.
The data rows for nested data regions are typically wide, especially if the nested tables and matrices include
groups and totals. You might find it useful to export the report to a data feed and view the data feed to verify
that the data generated is what you expected.
When the Atom rendering extension creates the Atom service document, a unique identifier is created for the
data feed and you use the identifier in the URL to view the content of the data feed. The sample Atom service
document, shown above, includes the URL
https://ServerName/ReportServer?
%2fProduct+Sales+Summary&rs%3aCommand=Render&rs%3aFormat=ATOM&rc%3aDataFeed=xAx0x1
. The URL identifies the report (Product Sales Summary), the Atom rendering format (ATOM), and the name of
the data feed (xAx0x1).
Report item names default to the report definition language (RDL) element names of the report items and often
they are not intuitive or easy to remember. For example, the default name of the first matrix placed in a report is
Tablix 1. The data feeds use these names.
To make the data feed easier to work with, you can use the DataElementName property of the data region to
provide friendly names. If you provide a value for DataElementName the data feed subelement <d > will use is it
instead of the default data region name. For example, if the default name of a data regions is Tablix1 and
DataElementName set SalesByTerritoryYear then the <d > in the data feed uses SalesByTerritoryYear. If the data
regions has two data feeds like the matrix report described above, the names used in the data feeds are
SalesByTerritoryYear _Territory and SalesByTerritoryYear _Year.
If you compare the data shown on the report and the data in the data feed, you might notice some differences.
Reports often shows formatted numeric and time/date data whereas the data feed contains unformatted data.
A data feed is saved with the .atom file name extension. You can use a text or XML editor such as Notepad or
XML Editor to view the file structure and content.

Flattening Report Data


The Atom renderer provides report data as flattened rowsets in an XML format. The rules for flattening data
tables are the same to those of the CSV renderer with a few exceptions:
Items in scope are flattened to the detail level. Unlike the CSV renderer, the text boxes at the top level
appear in each entry written to the data feed.
Report parameter values are rendered on each row of the output.
Hierarchical and grouped data must be flattened in order to be represented in the Atom-compliant format. The
rendering extension flattens the report into a tree structure that represents the nested groups within the data
region. To flatten the report:
A row hierarchy is flattened before a column hierarchy.
Members of the row hierarchy are rendered to the data feed before members of the column hierarchy.
Columns are ordered as follows: text boxes in body order left-to-right, top-to-bottom followed by data
regions ordered left-to-right, top-to-bottom.
Within a data region, the columns are ordered as follows: corner members, row hierarchy members,
column hierarchy members, and then cells.
Peer data regions are data regions or dynamic groups that share a common data region or dynamic
ancestor. Peer data is identified by branching of the flattened tree.
For more information, see Tables, Matrices, and Lists (Report Builder and SSRS).

Atom Rendering Rules


The Atom rendering extension ignores the following information when rendering a data feed:
Formatting and layout
Page header
Page footer
Custom report items
Rectangles
Lines
Images
Automatic subtotals
The remaining report items are sorted, from top to bottom, and then left to right. Each item is then rendered to
a column. If the report has nested data items like lists or tables, the parent items are repeated on each row.
The following table indicates the appearance of report items when rendered:

IT EM REN DERIN G B EH AVIO R

Table Renders by expanding the table and creating a row and


column for each row and column at the lowest level of detail.
Subtotal rows and columns do not have column or row
headings. Drillthrough reports are not supported.

Matrix Renders by expanding the matrix and creating a row and


column for each row and column at the lowest level of detail.
Subtotal rows and columns do not have column or row
headings.

List Renders a record for each detail row or instance in the list.

Subreport The parent item is repeated for each instance of the


contents.

Chart Renders a record with all chart labels for each chart value.
Labels from series and categories in hierarchies are flattened
and included in the row for a chart value.

Data bar Renders like a chart. Typically, a data bar does not include
hierarchies or labels.

Sparkline Renders like a chart. Typically, a sparkline does not include


hierarchies or labels.

Gauge Renders as a single record with the minimum and maximum


values of the linear scale, start and end values of the range,
and the value of the pointer.

Indicator Renders as a single record with the active state name,


available states, and the data value.

Map Generates a data feed for each map data region. If multiple
map layers use the same data region, the data feed includes
all of them. The data feed includes a record with the labels
and values for each map member of the map layer.
Device Information Settings
You can change some default settings for this renderer, including the encoding schema to use. For more
information, see ATOM Device Information Settings.

Next steps
Exporting to a CSV File
Export Reports
More questions? Try asking the Reporting Services forum
Generate Data Feeds from a Report (Report Builder
and SSRS)
3/26/2020 • 2 minutes to read • Edit Online

You can generate Atom-compliant data feeds from paginated reports, and then use the data feeds in
applications, such as Power Pivot, or Power BI, that can consume data feeds.
The Reporting Services Atom rendering extension generates an Atom service document that lists the data feeds
available from a report. The document lists at least one data feed for each data region in the report. Depending
on the type of data region and the data that the data region displays, Reporting Services might generate
multiple data feeds from a data region.
Atom service document contains a unique identifier for each the data feed and you use the identifier in a URL to
view the content of the data feed.
For more information, see Generating Data Feeds from Reports (Report Builder and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To generate an Atom service document


1. on the Reporting Services web portal, navigate to the report for which you want to generate data feeds.
2. Click the report.
The report is run.
3. On the toolbar, click the Expor t to Data Feed icon.
A message appears asking you if you want to save or open the atom document that contains the data
feed.
4. Click Save to save the document to the file system, or click Open to view the document content before
saving. By default, the document opens in a browser.
5. Browse to the location to save the document.
6. Optionally, change the name of the document.

NOTE
By default, the document name is the report name.

7. Verify the document type is ATOMSVC File , and then click Save .
8. Optionally, open the .atomsvc file in a browser or text or XML editor.
To view an Atom-compliant data feed
1. If the Atom service document is not already open, locate it and open it in a browser such as Internet
Explorer.
2. Copy the URL of the data feed that you want to view from the Atom service document to the browser.
The format of the URL is the following:
https://<server name>/ReportServer?%2f<ReportName>rs%3aCommand=Render&rs%3aFormat=ATOM&rc%3aDataFeed=
<Identifier>

3. Press ENTER.
A message appears asking you if you want to save or open the atom document that contains the data
feed.
4. Click Save to save the document to the file system, or click Open to view the data feed before saving.
5. Browse to the location to save the document.
6. Optionally, change the name of the document.

NOTE
By default the document name is the report name. If the Atom service document has multiple feeds, by default all
use the same name, the report name. To differentiate them, rename them to use meaningful names.

7. Verify the document type is ATOM File , and then click Save .
8. Optionally, open the .atom file in a browser or text editor or XML editor.

Next steps
Export Reports
More questions? Try asking the Reporting Services forum
Work Around the Excel 2003 Row Limitation
3/25/2020 • 2 minutes to read • Edit Online

This topic explains how to work around the Excel 2003 row limitation when you export paginated reports to
Excel. The workaround is for a report that contains only a table.

IMPORTANT
The Microsoft Excel 2003 (.xls) rendering extension is deprecated. For more information, see Deprecated Features in SQL
Server Reporting Services in SQL Server 2016.

Excel 2003 supports a maximum of 65,536 rows per worksheet. You can work around this limitation by forcing
an explicit page break after a certain number of rows. The Excel renderer creates a new worksheet for each
explicit page break.
To create an explicit page break
1. Open the report in SQL Server Data Tools - Business Intelligence or the Reporting Services web portal.
2. Right click the Data row in the table, and then click Add Group > Parent Group to add an outer table
group.

3. Enter the following formula in the Group by expression box, and then click OK to add the parent group.
=Int((RowNumber(Nothing)-1)/65000)
The formula assigns a number to each set of 65000 rows in the dataset. When a page break is defined for
the group, the expression results in a page break every 65000 rows.
Adding the outer table group adds a group column to the report.
4. Delete the group column by right-clicking on the column header, clicking Delete Columns , selecting
Delete columns only , and then click OK .
5. Right click Group 1 in the Row Groups section, and then click Group Proper ties .

6. On the Sor ting page of the Group Proper ties dialog box, select the default sorting option and click
Delete .

7. On the Page Breaks page, click Between each instance of a group and then click OK .
8. Save the report. When you export it to Excel, it exports to multiple worksheets and each worksheet
contains a maximum of 65000 rows.
Print Reports - Reporting Services (SSRS)
3/25/2020 • 2 minutes to read • Edit Online

After you save a report to a report server, you can view and print the report from the web portal or any
application that you use to view an exported report. Before saving a report, you can print it when you preview it.
All print processing is performed on demand and on the client computer. There is no server-side print
functionality that enables you to route a print job directly from a report server to a printer that is attached to the
Web server. Printers and print options are selected by individual report users by using a standard Print dialog
box.
Report authors who design reports specifically for print output can use page breaks, page headers and footers,
expressions, and background images to create a print-based design. Examples of report design elements
intended for print output might include terms and conditions that you print on the back of every report, or
graphic and text elements that mimic letterhead.
Due to the way pagination is implemented for different rendering formats, you might not be able to achieve
optimum print output results for every report in every rendering format. The following list provides examples:
1. Report pages are designed to accommodate variable amounts of data. Reports that include a matrix, for
example, can cause a page to grow both horizontally and vertically depending on whether a user
interactively toggles rows and columns. A user who does not expand a matrix will get different print
results than a user who does.
2. You cannot combine landscape and portrait mode pages in the same report, nor is there a way to create a
print-based layout that replaces or exists alongside the layout of a report as rendered in a browser or
other application.
3. For most exported reports, report printouts include everything that is visible on the report, as viewed by
the user on a computer monitor. White space from the report design surface is preserved. To add or
remove extra blank pages horizontally, change the report page width.

NOTE
HTML report printouts may contain only the content on the first page if you are using the browser's Print command. You
can achieve better results if you print HTML reports using the Reporting Services client printing functionality. For more
information, see Print Reports from a Browser with the Print Control (Report Builder and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

In This Section
Print Reports from a Browser with the Print Control (Report Builder and SSRS)
Describes how to use client-side printing to print reports from the web portal.
Print Reports from Other Applications (Report Builder and SSRS)
Describes how to print reports exported to another application.
Print a Report (Report Builder and SSRS)
Provides step-by-step instructions on how to print a report, how to control the margins on a page, and on how
to specify the paper size for reports that will be rendered by hard-page break renderers: PDF, Image, or Print.

See Also
Export Reports (Report Builder and SSRS)
Page Headers and Footers (Report Builder and SSRS)
Images (Report Builder and SSRS)
Pagination in Reporting Services (Report Builder and SSRS)
Print Reports from a Browser with the Print Control
(Report Builder and SSRS)
3/25/2020 • 2 minutes to read • Edit Online

Although a browser is the most common client application used to view a report, browser print functionality is
not ideal for printing reports. Print functionality in a browser is designed for printing Web pages. Typically,
pages that you print from a browser include all of the visual elements that are on a Web page, plus header and
footer information that identifies the page or Web site. Printing from a browser prints the contents of the
current window. For a multipage report, the browser prints the first page at most, and possibly less if the report
page extends beyond the dimensions of a printed page.
To improve the print quality of reports that you view in a browser and to print multiple pages, you can use the
client-side print functionality provided in SQL Server Reporting Services. Client-side printing provides a
standard Print dialog box that can be used to select a printer, specify pages and margins, and preview the report
before you print. Client-side printing is intended to be used in place of the Print command on the browser's File
menu. When you use client-side printing, the report is printed as it was designed, without the extra elements
you see in a Web page print out.
To use client-side printing, you need to install a Microsoft ActiveX control. For more information, see Enable and
Disable Client-Side Printing for Reporting Services.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Print Options
To configure print properties for your report, in the Print dialog box, click the Proper ties button. Paper size is
determined by the default height and width of the report page size as defined in the report definition. The
available values are dependent on the printer type and its capabilities. Width and height display default values
as determined by the print drivers that are configured on the computer. Changing these values causes the report
to print using the new dimensions. Page width and height are each determined by Orientation , which is set to
either Por trait or Landscape . The default orientation displayed is dependent on the page width and page
height of the report.

NOTE
The Print dialog box and the default printer settings for width, height, and page orientation are determined by the report
definition.

Print Preview
To preview a report, in the Print dialog box, click the Preview button. Clicking preview opens the first page of
the report in a separate preview window. Additional pages are made available as the report is rendered on the
report server. A previewed report is rendered in EMF format. You can navigate to the previous or next page until
the last page is reached, and the Next button is disabled.
Adjusting Print Margins
You can modify the print margins in the rendered EMF report prior to printing the report. To do this, in the Print
dialog box, click the Preview button. At the top of the preview page, click the Margins button. The Margins
dialog box is displayed. Configure the top, bottom, right, and left margins as desired. Click OK . The dialog box
closes and the settings are stored for rendering preview and printing.

See Also
Print Reports (Report Builder and SSRS)
Print a Report (Report Builder and SSRS)
Print Reports from Other Applications (Report
Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

Report Builder provides an export option that allows you to easily view a report in other applications. The
Expor t command is available on the report toolbar that appears at the top of a report when you open it in a
browser or Web-based application. Exporting a report displays it in a different application (for example,
exporting a report to Excel opens the report in Microsoft Excel). For printing purposes, exporting a report is
recommended only if the application has specific printing features that you want to use.
To export a report to another application, you must have that application installed. For example, you must have
Adobe Acrobat Reader installed on your computer before you can export to the Acrobat (PDF) format. If you
choose to export a report to TIFF format, the report server places the report in a viewing application that is
associated with the TIFF file type. Although the application used depends on which version of Microsoft
Windows you have, typically this tool is Windows Picture and Fax Viewer. The default resolution corresponds to
a screen resolution of 96 dots per inch (DPI). You can increase the resolution in Windows Picture and Fax Viewer
to 300 DPI or 600 DPI to match the capabilities of your printer. For more information about adjusting the
resolution, see the Windows product documentation.
If you choose Web archive (also known as MHTML), the report is exported to your default browser. Printing
from the browser may result in report path information being added at the bottom of every page. In most cases,
you can set browser options to omit path information on a printed page. For more information, see the product
documentation for the browser you are using.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

See Also
Print a Report (Report Builder and SSRS)
Print Reports from a Browser with the Print Control (Report Builder and SSRS)
Export Reports (Report Builder and SSRS)
Export a Report as Another File Type (Report Builder and SSRS)
Finding, Viewing, and Managing Reports (Report Builder and SSRS )
Print a Report (Report Builder and SSRS)
11/2/2020 • 3 minutes to read • Edit Online

After you save a report to a report server, you can view and print the report from a browser, the Reporting
Services web portal, or any application that you use to view an exported report. Before saving a report, you can
print it when you preview it.
When you print a report, you can specify the size of the paper to use. The size of the paper determines the
number of pages in a report and which report data fits on each page. Paper size affects only reports that are
rendered with hard page-break renders: PDF, Image, and Print. Setting the paper size has no effect on other
renderers. For more information, see Rendering Behaviors (Report Builder and SSRS).
From the report viewer toolbar in the Reporting Services web portal or in preview in Report Builder, you can
export a report to a hard page-break renderer or click the Print button to print a copy of the report. You might
need to set the paper size or other page setup properties. Use the Repor t Proper ties dialog box to change
page setup properties, including paper size.
You can specify print page margins in two different locations: in design mode and in run mode.
Design mode. When you set page margins in design mode, these settings are saved in the report
definition when you save the report.
Run mode. When you set page margins in run mode, this information is not saved in the report
definition. The next time you print the report, you will get the settings from the report definition, unless
you indicate your print margins again.

NOTE
Print margins are not displayed in design or run modes. There is no relationship between the design surface area
and the print area of your report. To see print margins, in run mode, click Print Layout on the Run tab on the
Ribbon.

For more information about report paging, see Pagination in Reporting Services (Report Builder and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To print a report in Report Builder


1. Open a report.
2. On the Home tab, click Run .
3. (optional) Click Print Layout to see how the report will look when it is printed.
4. (optional) Click Page Setup to set paper, orientation, and margins.
NOTE
The default values for these come from the report properties, which are set in Design view. The values you set
here in the Page Setup dialog box are for this session only. When you close this report and reopen it, it will have
the default values again.

5. Click Print .
6. In the Print dialog box, select a printer and specify other printing options.
To print a report from a Web browser application
1. In the Reporting Services web portal, navigate to the report that you want to print. Open the report.
2. On the toolbar at the top of the report, click Print .

NOTE
The first time you print an HTML report, the report server prompts you to install an ActiveX control used for
printing. You must install and configure the control to print.

3. In the Print dialog box, select a printer, and then click Prin t.
To print a report from other applications
1. In the Reporting Services web portal, navigate to the report that you want to print. Open the report.
2. On the toolbar at the top of the report, select a rendering format, and then click Expor t . The report opens
in a viewer application that corresponds to the rendering format.
For example, if you select PDF, the report opens in Adobe Acrobat Reader.
3. On the File menu in that program, click Print .
To change paper size
1. Right-click outside of the report body and click Repor t Proper ties .
2. In Page Setup , select a value from the Paper Size list. Each option populates the Width and Height
properties. You can also specify a custom size by typing numeric values in the Width and Height boxes.
Click OK .

NOTE
Size values have a default unit based on the user's locale settings. To designate a different unit, type a physical unit
designator such as cm, mm, pt, or pc after the numeric value.

To set page margins in design mode


Right-click the blue area around the design surface, click Repor t Proper ties , and then click the Page Setup
page.
To set page margins in run mode
Click Page Setup on the Run tab.

See Also
Print Reports (Report Builder and SSRS)
Export Reports (Report Builder and SSRS)
Report Properties Dialog Box, Page Setup (Report Builder)
Report Design View (Report Builder)
Print a Report (Reporting Services in SharePoint
Mode)
3/5/2021 • 3 minutes to read • Edit Online

For a report server that runs in SharePoint mode, there are three ways to print a report from a SharePoint Web
application:
From a SharePoint site Choose Print from the Actions menu that appears in the report toolbar when
you open the report. This provides Reporting Services print functionality, which includes a standard Print
dialog box used to select a printer, specify pages and margins, and preview the report. This print feature is
intended to be used in place of the Print command on a browser's File menu. When you print reports this
way, the report is printed as it was designed, without the extra elements you see in a Web page print out.
From a browser The print features of a browser work best for HTML reports that fit on a single page.
Typically, pages that you print from a browser include all of the visual elements that are on a Web page,
plus header and footer information that identifies the page or Web site. When you print from a browser,
only the contents of the current window are printed. If the report is long, the browser prints only a
portion of the report (typically just the first page).
From a target application You can export a report to use the print features of a target application, such
as Microsoft Office Excel or Adobe Acrobat Reader. Some application formats, such as TIFF or PDF, are
ideally suited for printing multipage reports. When you export a report to a desktop application, you can
use any specialized print features that the application provides. To export a report, choose Expor t from
the Actions menu that appears in the report toolbar when you open the report.

NOTE
To print a report, you must have permission to view it.

For best results when printing a report from a Web page, use Print on the Actions menu. The Print action is
tied to a client print control that is downloaded from the report server. The download occurs once, the first time
you select Print .
Report authors can design reports specifically for print output or for a specific application format. Recognize
that due to the way pagination is implemented for different application formats, you may not be able to achieve
optimum print output results for every report in every export format. In contrast with reports that are designed
for print output, on-screen report pages are designed to accommodate variable amounts of data. For example,
reports that include a matrix can cause a page to grow both horizontally and vertically depending on how you
expand the rows and columns. When printing a variable sized report, a user who does not expand a matrix will
get different print results than a user who does. For most exported reports, report printouts include everything
that is visible on the report, as viewed by the user on a computer monitor.
How to print reports from the Actions menu
1. Open the report.
2. On the Actions menu, click Print . If you do not see the Actions menu, the report toolbar has been
hidden and you cannot use the features it provides. If you have an Actions menu but Print is not on it,
the print functionality has been disabled on the report server and you cannot use it.
3. In the Print dialog box, select the printer and settings you want to use and click OK .
To modify the default settings, click the Proper ties button. Page size is determined by the default height
and width of the report page size as defined in the report definition. The extent to which you can change
page dimensions depends on the capabilities of the printer you are using.
To view the report before you print it, click the Preview button. This opens the first page of the report in
a separate preview window. Additional pages are made available as the report is rendered on the report
server. A previewed report is rendered in EMF format. You can navigate to the previous or next page until
the last page is reached, and the Next button is disabled. To modify the print margins in the preview
page, click the Margins button. The Margins dialog box is displayed. Configure the top, bottom, right,
and left margins and click OK . The dialog box closes and the settings are stored for rendering preview
and printing.

See Also
Enable and Disable Client-Side Printing for Reporting Services
Intro to Report Data in SQL Server Reporting
Services (SSRS)
11/2/2020 • 7 minutes to read • Edit Online

Report data can come from multiple sources of data in your organization. Your first step in designing a report is
to create data sources and datasets that represent the underlying report data. Each data source includes data
connection information. Each dataset includes a query command that defines the set of fields to use as data
from a data source. To visualize data from each dataset, add a data region, such as a table, matrix, chart, or map.
When the report is processed, the queries run on the data source, and each data region expands as needed to
display the query results for the dataset.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

Data in Report Builder

1. Data sources in the Repor t Data pane A data source appears in the Report Data pane after you
create an embedded data source or add a shared data source.
2. Connection Dialog Box Use the Connection Dialog Box to build a connection string or to paste a
connection string.
3. Data connection information The connection string is passed to the data extension.
4. Credentials Credentials are managed separately from the connection string.
5. Data Extension/Data Provider Connecting to the data can be through multiple data access layers.
6. External data sources Retrieve data from relational databases, multidimensional databases, SharePoint
lists, or Web services.

Defining terms
Data connection. Also known as a data source. A data connection includes a name and connection
properties that are dependent on the connection type. By design, a data connection does not include
credentials. A data connection does not specify which data to retrieve from the external data source. To do
that, you specify a query when you create a dataset.
Data source definition. A file that contains the XML representation of a report data source. When you
publish a report, its data sources are saved on the report server or SharePoint site as data source
definitions, independent of the report definition. For example, a report server administrator might update
the connection string or credentials. On a native report server, the file type is .rds. On a SharePoint site,
the file type is .rsds.
Connection string. A connection string is a string version of the connection properties that are needed
to connect to a data source. Connection properties differ based on data connection type. For examples,
see Create data connection strings - Report Builder & SSRS.
Shared data source. A data source that is available on a report server or SharePoint site to be used by
multiple reports.
Embedded data source. Also known as a report-specific data source. A data source that is defined in a
report and used only by that report.
Credentials. Credentials are the authentication information that must be provided to allow you access to
external data.

Tips for Specifying Report Data


Use the following information to design your report data strategy.
Data sources Data sources can be published and managed independently from reports on a report
server or SharePoint site. For each data source, you or the database owner can manage connection
information in one place. Data source credentials are stored securely on the report server; you do not
include passwords in the connection string. You can redirect a data source from a test server to a
production server. You can disable a data source to suspend all reports that use it.
Datasets Datasets can be published and managed independently from reports or the shared data
sources that they depend on. You or the database owner can provide optimized queries for report
authors to use. When you change the query, all reports that use the shared dataset use the updated
query. You can enable dataset caching to improve performance. You can schedule query caching for a
specific time or use a shared schedule.
Data used by repor t par ts Report parts can include the data that they depend on. For more
information about report parts, see Report Parts in Report Designer (SSRS).
Filter data Report data can be filtered in the query or in the report. You can use datasets and query
variables to create cascading parameters. With cascading parameters, users can narrow choices from
thousands of selections to a more manageable number. You can filter data in a table or chart based on
parameter values or other values that you specify.
Parameters Dataset query commands that include query variables automatically create matching report
parameters. You can also manually create parameters. When you view a report, the report toolbar
displays the parameters. Users can select values to control report data or report appearance. To
customize report data for specific audiences, you can create sets of report parameters with different
default values linked to the same report definition. You can also use the built-in UserID field to customize
data for different audiences. For more information, see Report Parameters (Report Builder and Report
Designer) and Built-in Collections in Expressions (Report Builder and SSRS).
Data aler ts After you publish a report, you can create alerts based on report data. Then you receive
email messages when it meets rules that you specify.
Group and aggregate data Report data can be grouped and aggregated in the query or in the report.
If you aggregate values in the query, you can continue to combine values in the report within the
constraints of what is meaningful. For more information, see Filter, Group, and Sort Data (Report Builder
and SSRS) and Aggregate Function (Report Builder and SSRS).
Sor t data Report data can be sorted in the query or in the report. In tables, you can also add an
interactive sort button to let the user control the sort order.
Expression-based data Because most report properties can be expression-based, and expressions can
include references to dataset fields and report parameters, you can write powerful expressions to control
report data and appearance. You can provide a user the ability to control the data they see by defining
parameters.
Display data from a dataset Data from a dataset is typically displayed on one or more data regions,
for example, a table and a chart.
Display data from multiple datasets You can write expressions in a data region based on one dataset
that look up values or aggregates in other datasets. You can include subreports in a table based on one
dataset to display data from a different data source.
Use the following list to help define sources of data for a report.
Consider whether to use embedded or shared data sources and datasets. Collaborate with owners of
sources of data to implement and use authentication and authorization technology that is appropriate for
your organization.
Understand the software data layer architecture for your organization and the potential issues arising
from data types. Understand how data extensions and data processing extensions can affect query
results. Data types differ among the source of data, data providers, and the data types stored in the report
definition (.rdl) file.
Understand the Reporting Services client/server architectures and tools. For example, in Report Designer,
you author reports on a client machine that uses built-in data source types. When you publish a report,
the data source types must be supported on the report server or SharePoint site. For more information,
see Data Sources Supported by Reporting Services (SSRS).
Data sources and datasets are authored in a report and published to a report server or SharePoint site
from a client authoring tool. Data sources can be created directly on the report server. After they are
published, you can configure credentials and other properties on the report server. For more information,
see Create data connection strings - Report Builder & SSRS and Reporting Services Tools.
The data sources you can use depend on which Reporting Services data extensions are installed. Support
for data sources can differ by client authoring tool, report server version, and report server platform. For
more information, see Data Sources Supported by Reporting Services (SSRS).
Data source credentials vary based on data source type and on whether you are viewing reports on your
client or report server or SharePoint site. For more information, see Set Permissions for Report Server
Items on a SharePoint Site (Reporting Services in SharePoint Integrated Mode), Specify Credential and
Connection Information for Report Data Sources, and credential information specific to each tool in
Reporting Services Tools.

Related Tasks
Tasks related to creating data connections, adding data from external sources, datasets, and queries.

C O M M O N TA SK S L IN K S

Create data connections Create data connection strings - Report Builder & SSRS

Create datasets and queries Report Embedded Datasets and Shared Datasets (Report
Builder and SSRS)
C O M M O N TA SK S L IN K S

Manage data sources after they are published Manage Report Data Sources

Manage shared datasets after they are published Manage Shared Datasets

Create and manage data alerts Reporting Services Data Alerts

Cache a shared dataset Cache Shared Datasets (SSRS)

Schedule a shared dataset to preload the cache Schedules

Add a data extension Implementing a Data Processing Extension


Data Sources Supported by Reporting Services
(SSRS)
3/5/2021 • 19 minutes to read • Edit Online

Reporting Services retrieves report data from data sources through a modular and extensible data layer that
uses data processing extensions. To retrieve report data from a data source, you must select a data processing
extension that supports the type of data source, the version of software running on the data source, and the data
source platform (32-bit or 64-bit x64).
When you deploy Reporting Services, a set of data processing extensions are automatically installed and
registered on both the report authoring client and on the report server to provide access to a variety of data
source types. Reporting Services installs the following data source types:
Microsoft SQL Server
Microsoft SQL Server Analysis Services for MDX, DMX, Microsoft Power Pivot, and tabular models
Microsoft Azure SQL Database
Oracle
SAP BW
Hyperion Essbase
Microsoft SharePoint List
Teradata
OLE DB
ODBC
XML
In addition, custom data processing extensions and standard Microsoft .NET Framework data providers can be
installed and registered by system administrators. To process and view a report, the data processing extensions
and data providers must be installed and registered on the report server; to preview a report, they must be
installed and registered on the report authoring client. Data processing extensions and data providers must be
natively compiled for the platform where they are installed. If you deploy a data source programmatically by
using the SOAP Web service, you must define the data source extension. Use data extension values from the
RSRepor tDesigner.config file. By default, the file is located in the following folder:

<drive letter>\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies

For example, the Analysis Services data extension is OLEDB-MD.


Many third-party standard .NET Framework data providers are available as downloads from the Microsoft
Download Center and from third-party sites. You can also search the SQL Server Reporting Services public
forum for information about third-party data providers.
NOTE
Standard .NET Framework data providers do not necessarily support all the functionality supplied by Reporting Services
data processing extensions. In addition, some OLE DB data providers and ODBC drivers can be used to author and
preview reports, but are not designed to support reports published on a report server. For example, the Microsoft OLE
DB Provider for Jet is not supported on the report server. For more information, see Data Processing Extensions and .NET
Framework Data Providers (SSRS).

For more information about custom data processing extensions, see Implementing a Data Processing Extension.
For more information about standard .NET Framework data providers, see the System.Data namespace.

Platform Support for Report Data Sources


The data sources you can use in a Reporting Services deployment vary by SQL Server edition, Reporting
Services version, and by platform. For more information about features, see Reporting Services Features
Supported by the Editions of SQL Server. The table later in this topic provides information about supported data
sources by version and by platform.
Platform considerations for Reporting Services data sources are separate for the report authoring client and the
report server.
On the report authoring client
SQL Server SQL Server Data Tools - Business Intelligence is a 32-bit application. SQL Server Data Tools -
Business Intelligence is not supported on an Itanium-based platform. On an x64 platform, to edit and preview
reports in Report Designer, you must have 32-bit data providers installed in the (x86) platform directory.
On the report server
When you deploy a report to a 64-bit report server, the report server must have natively compiled 64-bit data
providers installed. Wrapping a 32-bit data provider in 64-bit interfaces is not supported. For more information,
check the documentation for the data provider.

Supported Data Sources


The following table lists Microsoft data processing extensions and data providers that you can use to retrieve
data for report datasets and report models. For more information about an extension or data provider, click the
link in the second column. The table columns are described as follows:
Source of report data: The type of data being accessed; for example, relational database,
multidimensional database, flat file, or XML. This column answers the question: "What types of data can
Reporting Services use for a report?"
Reporting Services Data Source Type: One of the data source types you see in the drop-down list when
you define a data source in Reporting Services. This list is populated from installed and registered DPEs
and data providers. This column answers the question: "What data source type do I select from the drop-
down list when I create a report data source?"
Name of Data Processing Extension/Data Provider: The Reporting Services data processing extension or
other data provider that corresponds to the Reporting Services data source type selected. This column
answers the question: "When I select a data source type, which corresponding data processing extension
or data provider is used?"
Underlying Data Provider version (Optional): Some data source types support more than one data
provider. These could be different versions of the same provider or different implementations by third-
parties for a type of data provider. The provider name frequently appears in the connection string after
you have configured a data source. This column answers the question: "After selecting the data source
type, what data provider do I select in the Connection Proper ties dialog box?"
Data Source <platform>: The data source platform supported by the data processing extension or data
provider for the target data source. This column answers the question: "Can this data processing
extension or data provider retrieve data from a data source on this type of platform?"
Version of data source: The version of the target data source supported by the DPE or data provider. This
column answers the question: "Can this data processing extension or data provider retrieve data from
this version of the data source?"
RS <platform>: The platforms for the report server and report authoring client where you can install a
custom DPE or data provider. The built-in Reporting Services data processing extensions are included
with any installation of Reporting Services. A custom data processing extension or .NET Framework data
provider must be compiled natively for a specific platform. This column answers the question: "Can this
data processing extension or data provider be installed on this type of platform?"
Types of data sources
NAME OF UN DERLY I
DATA N G DATA
REP O RT I P RO C ESSI P RO VIDE DATA DATA
SO URC E NG NG R
OF SERVIC ES EXT EN SIO VERSIO N SO URC E SO URC E RS RS
DATA N / DATA VERSIO N
REP O RT SO URC E P RO VIDE ( O P T IO N P L AT F O R P L AT F O R O F DATA P L AT F O R P L AT F O R
DATA TYPE R AL) M X86 M X64 SO URC E M X86 M X64

SQL Microsoft Built-in Extends Y Y SQL Y Y


Server SQL Reporting System.D Server
relational Server Services ata.SqlCli 2012 and
database data ent later.
processin
g
extension

SQL OLEDB Built-in Extends Y Y SQL Y Y


Server Reporting System.D Server
relational Services ata.Oledb 2012 and
database data Client later.
processin
g
extension

SQL ODBC Built-in Extends Y Y SQL Y Y


Server Reporting System.D Server
relational Services ata.Odbc 2012 and
database data Client later.
processin
g
extension

SQL Microsoft Built-in Extends N/A N/A SQL Y Y


Database Azure Reporting System.D Database
SQL Services ata.SqlCli
Database data ent
processin
g
extension
NAME OF UN DERLY I
DATA N G DATA
REP O RT I P RO C ESSI P RO VIDE DATA DATA
SO URC E NG NG R
OF SERVIC ES EXT EN SIO VERSIO N SO URC E SO URC E RS RS
DATA N / DATA VERSIO N
REP O RT SO URC E P RO VIDE ( O P T IO N P L AT F O R P L AT F O R O F DATA P L AT F O R P L AT F O R
DATA TYPE R AL) M X86 M X64 SO URC E M X86 M X64

Azure Microsoft Built-in Extends N/A N/A Azure Y Y


Synapse Azure Reporting System.D Synapse
Analytics SQL Services ata.SqlCli Analytics
Database data ent
processin
g
extension

Microsoft Microsoft Deprecat N/A N/A N/A SQL N N


Azure Parallel ed Server
Synapse Data Reporting 2008 R2
Analytics Warehous Services Parallel
appliance e data Data
processin Warehous
g e
extension

Analysis Microsoft Built-in Uses Y Y SQL Y Y


Services SQL Reporting ADOMD. Server
multidim Server Services NET 2012
ensional Analysis data Analysis
or tabular Services processin Services
database g and later
extension

Power BI Microsoft Built-in Uses Y Y SQL Y Y


Premium SQL Reporting ADOMD. Server
dataset Server Services NET 2019
(Starting Analysis data Analysis
with Services processin Services
Reporting g and later
Services extension
2019 and
Power BI
Report
Server
January
2020)

Azure Microsoft Built-in Uses Y Y SQL Y Y


Analysis SQL Reporting ADOMD. Server
Services Server Services NET 2017
Analysis data Analysis
Services processin Services
g and later
extension
NAME OF UN DERLY I
DATA N G DATA
REP O RT I P RO C ESSI P RO VIDE DATA DATA
SO URC E NG NG R
OF SERVIC ES EXT EN SIO VERSIO N SO URC E SO URC E RS RS
DATA N / DATA VERSIO N
REP O RT SO URC E P RO VIDE ( O P T IO N P L AT F O R P L AT F O R O F DATA P L AT F O R P L AT F O R
DATA TYPE R AL) M X86 M X64 SO URC E M X86 M X64

Analysis OLEDB Built-in Extends Y Y SQL Y Y


Services Reporting System.D Server
multidim Services ata.Oledb 2012
ensional data Client Analysis
database processin Services
g Version
extension 10.0

SharePoin Microsoft Built-in Gets data N Y SharePoin Y Y


t lists SharePoin Reporting from t 2013
t List Services Lists.asmx Products
data or the and later
processin SharePoin
g t object
extension model
API
interfaces.

See Note.

XML XML Built-in XML data N/A N/A XML Web Y Y


Reporting sources Services
Services do not or
data have documen
processin platform ts
g dependen
extension cies.
NAME OF UN DERLY I
DATA N G DATA
REP O RT I P RO C ESSI P RO VIDE DATA DATA
SO URC E NG NG R
OF SERVIC ES EXT EN SIO VERSIO N SO URC E SO URC E RS RS
DATA N / DATA VERSIO N
REP O RT SO URC E P RO VIDE ( O P T IO N P L AT F O R P L AT F O R O F DATA P L AT F O R P L AT F O R
DATA TYPE R AL) M X86 M X64 SO URC E M X86 M X64

Report Report Deprecat Data N/A N/A Models N N


Server Model ed sources can be
Model Reporting for a created
Services model from:SQL
data use Built- Server
processin in data 2005 (9.x)
g processin and later.
extension g
for a extension Analysis
published s. Services
SMDL file
Oracle- Oracle
based 9.2.0.3 or
models later
require
Oracle Teradata
client V14, v13,
compone v12, and
nts. v6.2

Teradata-
based
models
require
.NET Data
Provider
for
Teradata
from
Teradata.

See
Teradata
documen
tation for
platform
support.

SAP SAP BW Built-in See SAP N/A N/A SAP BW Y N/A


multidim Reporting documen 7.0-7.5
ensional Services tation for
database data platform
processin support.
g
extension

Hyperion Hyperion Built-in See Y N/A Hyperion Y N/A


Essbase Essbase Reporting Hyperion Essbase
Services documen 9.3.1
data tation for
processin platform
g support.
extension
NAME OF UN DERLY I
DATA N G DATA
REP O RT I P RO C ESSI P RO VIDE DATA DATA
SO URC E NG NG R
OF SERVIC ES EXT EN SIO VERSIO N SO URC E SO URC E RS RS
DATA N / DATA VERSIO N
REP O RT SO URC E P RO VIDE ( O P T IO N P L AT F O R P L AT F O R O F DATA P L AT F O R P L AT F O R
DATA TYPE R AL) M X86 M X64 SO URC E M X86 M X64

Oracle Oracle Built-in Requires Y N/A Oracle Y Y


relational Reporting Oracle 11g, 11g
database Services client R2, 12c,
data compone 18c, 19c
processin nts 12c
g or higher.
extension

Teradata Teradata Built-in Extends Y N/A Teradata Y N


Reporting .NET Data v15
Services Provider
data for Teradata
processin Teradata v14
g from
extension Teradata. Teradata
v13
Requires
.NET Data
Provider
for
Teradata
from
Teradata.

See
Teradata
documen
tation for
platform
support.

DB2 Customiz 2004 Y N/A N/A Y N


relational ed Host
database registered Integratio
data n (HI)
extension Server
name

Generic OLEDB Built-in Any data Y N/A Any data Y N/A


OLE DB Reporting source source
data Services that that
source data supports supports
processin OLE DB. OLE DB.
g See Note.
extension See the
data
source
documen
tation for
platform
support.
NAME OF UN DERLY I
DATA N G DATA
REP O RT I P RO C ESSI P RO VIDE DATA DATA
SO URC E NG NG R
OF SERVIC ES EXT EN SIO VERSIO N SO URC E SO URC E RS RS
DATA N / DATA VERSIO N
REP O RT SO URC E P RO VIDE ( O P T IO N P L AT F O R P L AT F O R O F DATA P L AT F O R P L AT F O R
DATA TYPE R AL) M X86 M X64 SO URC E M X86 M X64

Generic ODBC Built-in Any data Y N/A Any data Y Y


ODBC Reporting source source
data Services that that
source data supports supports
processin ODBC. ODBC.
g See Note.
extension See the
data
source
documen
tation for
platform
support.

For information about using external data sources, see Add Data from External Data Sources (SSRS).
Many standard .NET Framework data providers are available from third parties. For more information, search
the third-party Web sites or forums.
To install and register a custom data processing extension or standard .NET Framework data provider, you will
need to refer to the data provider reference documentation. For more information, see Register a Standard .NET
Framework Data Provider (SSRS).
Return to Data sources table

Reporting Services Data Processing Extensions


The following data processing extensions are automatically installed with Reporting Services and SQL Server
Data Tools - Business Intelligence. For more information and to verify the installation, see RSReportDesigner
Configuration File and RsReportServer.config Configuration File.

NOTE
The SQL ServerIntegration Services data processing extension is not supported at this time.

For more information about data processing extensions supported by Report Builder, see Create data
connection strings - Report Builder & SSRS.
Microsoft SQL Server Data Processing Extension
The data source type Microsoft SQL Ser ver wraps and extends the .NET Framework Data Provider for SQL
Server. This data processing extension is natively compiled for and runs on x86 and x64-based platforms.
In SQL Server Data Tools - Business Intelligence, the query designer associated with this data extension is the
Visual Database Tool Designer. If you use the query designer in graphical mode, the query is analyzed and
possibly rewritten. Use the text-based query designer when you want to control the exact Transact-SQL syntax
that is used for a query. For more information, see Graphical Query Designer User Interface.
For more information, see SQL Server Connection Type (SSRS).
In Report Builder, the query designer associated with this data extension is the Relational Query Designer.
Return to Data sources table
Microsoft Azure SQL Database Processing Extension
The data source type Microsoft Azure SQL Database wraps and extends the .NET Framework Data Provider
for SQL Server.
In SQL Server Data Tools - Business Intelligence, the graphical query designer associated with this data
extension is the Relational Query Designer not the Visual Database Tool Designer that you use with the
Microsoft SQL Ser ver data source type.
SQL Server Data Tools - Business Intelligence automatically differentiates between Microsoft Azure SQL
Database and Microsoft SQL Ser ver data source types and opens the graphical query designer associated
with the data source type.
If you use the query designer in graphical mode, the query is analyzed and possibly rewritten. A text-based
query designer is also available for writing queries. Use the text-based query designer when you want to control
the exact Transact-SQL syntax that is used for a query.
Retrieving data from SQL Database, Azure Synapse Analytics and SQL Server is similar, but there are a few
requirements that apply only to SQL Database. For more information, see Azure SQL Connection Type (SSRS).
Return to Data sources table
Microsoft SQL Server Parallel Data Warehouse Processing Extension
This data source has been deprecated. Use the SQL Server data source type to connect to Microsoft Analytics
Platform (APS).
Return to Data sources table
Microsoft SQL Server Analysis Services Data Processing Extension
When you select data source type Microsoft SQL Ser ver Analysis Ser vices , you are selecting a Reporting
Services data processing extension that extends the .NET Framework Data Provider for Microsoft Analysis
Services. This data processing extension is natively compiled for and runs on x86 and x64-based platforms.
This data provider uses the ADOMD.NET object model to create queries using XML for Analysis (XMLA) version
1.1. Results are returned as a flattened rowset. For more information, see Analysis Services Connection Type for
MDX (SSRS), Analysis Services Connection Type for DMX (SSRS), Analysis Services MDX Query Designer User
Interface, and Analysis Services DMX Query Designer User Interface.
For Azure Analysis Services and Power BI Premium dataset data sources, please note you must have multi-factor
authentication disabled for the credentials being used to connect to the data source. If you need multi-factor
authentication enabled for your environment, review Azure Active Directory Conditional Access as an option to
disable multi-factor authentication for the credentials used in the data source.
When using a Power BI Premium dataset as a data source, only Import mode and DirectQuery are supported.
When connecting to an Analysis Services data source, the Microsoft SQL Server Analysis Services data
processing extension supports multivalue parameters and maps cell and member properties to extended
properties supported by Reporting Services. For more information, see Extended Field Properties for an
Analysis Services Database (SSRS).
You can also create models from SQL Server Analysis Services data sources.
OLE DB Data Processing Extension
The OLE DB data processing extension requires the choice of an additional data provider layer based on the
version of the data source you want to use in your report. If you do not select a specific data provider, a default
is provided. Choose a specific data provider through the Connection Proper ties dialog box, accessed through
the Edit button on the Data Source or Shared Data Source dialog boxes.
For more information about the OLE DB associated query designer, see Graphical Query Designer User
Interface. For more information about specific support for OLE DB providers, see Visual Studio .NET Designer
Tool Supports Specific OLE DB Providers in the Microsoft Knowledge Base.
Return to Data sources table
OLE DB for SQL Server
When you select data source type OLE DB , you are selecting a Reporting Services data processing extension
that extends the .NET Framework Data Provider for OLE DB. This data processing extension is natively compiled
for and runs on x86 and x64 platforms.
For more information, see OLE DB Connection Type (SSRS).
Return to Data sources table
OLE DB for OLAP 7.0
OLE DB Provider for OLAP Services 7.0 is not supported.
Return to Data sources table
OLE DB for Oracle
The data processing extension OLE DB for Oracle does not support the following Oracle data types: BLOB, CLOB,
NCLOB, BFILE, UROWID.
Unnamed parameters that are position-dependent are supported. Named parameters are not supported by this
extension. To use named parameters, use the Oracle data processing extension.
For more information about configuring Oracle as a data source, see How to use Reporting Services to
configure and to access an Oracle data source. For more information about additional permissions
configuration, see How to add permissions for the NETWORK SERVICE security principal in the Microsoft
Knowledge Base.
Return to Data sources table
OLE DB Standard .NET Framework data provider
To retrieve data from a data source that supports OLE DB .NET Framework data providers, use the OLE DB data
source type and select the default data provider, or select from the installed data providers in the Connection
String dialog box.

NOTE
Although a data provider may support previewing a report on your report authoring client, not all OLE DB data providers
are designed to support reports published on a report server.

Return to Data sources table


ODBC Data Processing Extension
When you select data source type ODBC , you are selecting a Reporting Services data processing extension that
extends the .NET Framework Data Provider for ODBC. This data processing extension is natively compiled for
and runs on x86 and x64 platforms. Use this extension to connect to and retrieve data from any data source that
has an ODBC provider.

NOTE
Although a data provider may support previewing a report on your report authoring client, not all ODBC data providers
are designed to support reports published on a report server.
Return to Data sources table
ODBC Standard .NET Framework data provider
To retrieve data from a data source that supports a standard ODBC .NET Framework data provider, use the
ODBC data source type and select the default data provider, or select from the installed data providers in the
Connection String dialog box.

NOTE
Although a data provider may support previewing a report on your report authoring client, not all ODBC data providers
are designed to support reports published on a report server.

Return to Data sources table


Oracle Data Processing Extension
When you select data source type Oracle , you are selecting a Reporting Services data processing extension that
uses the Oracle Data Provider directly and no longer goes through System.Data.OracleClient. To retrieve report
data from an Oracle database, your administrator must install Oracle client tools. The client application version
must be 11g or later. These tools must be installed on the report authoring client to preview reports and on the
report server to view published reports.
To install the Oracle Client tools you can do the following.
1. Go to Oracle's download site
2. Download ODAC 12c Release 4 (12.1.0.2.4) for Windows (64bit for server, 32bit for tools)
3. Install the Data Provider for .NET 4
Named parameters are supported by this extension. For Oracle version 11g or later, multivalue parameters are
supported. For unnamed parameters that are position-dependent, use the OLE DB data processing extension
with the data provider Microsoft OLE DB Provider for Oracle. For more information about configuring Oracle as
a data source, see How to use Reporting Services to configure and to access an Oracle data source. For more
information about additional permissions configuration, see How to add permissions for the NETWORK
SERVICE security principal in the Microsoft Knowledge Base.
You can retrieve data from stored procedures with multiple input parameters, but the stored procedure must
return only one output cursor. For more information, see Returning results with Oracle REF CURSORs in
"Retrieve data using a DataReader."
For more information, see Oracle Connection Type (SSRS). For more information about the associated query
designer, see Graphical Query Designer User Interface.
You can also create models based on an Oracle database.
Return to Data sources table
Teradata Data Processing Extension
When you select data source type Teradata , you are selecting a Reporting Services data processing extension
that extends the .NET Framework Data Provider for Teradata. To retrieve report data from Teradata, the system
administrator must install the .NET Framework Data Provider for Teradata on the report authoring client to edit
and preview reports on the client and on the report server to view published reports.
For report server projects, there is not a graphical query designer available for this extension. You must use the
text-based query designer to create queries.
The following table shows which versions of the .NET Data Provider for Teradata are supported for defining a
data source in a report definition in SQL Server Data Tools - Business Intelligence:
SQ L SERVER DATA TO O L S - B USIN ESS . N ET F RA M EW O RK DATA P RO VIDER
IN T EL L IGEN C E VERSIO N T ERA DATA VERSIO N F O R T ERA DATA VERSIO N

SQL Server 2008 12.00 12.00.01

SQL Server 2008 6.20 12.00.01

SQL Server 2008 13.00 13.0.0.1

SQL Server 2008 R2 12.00 12.00.01

SQL Server 2008 R2 6.20 12.00.01

SQL Server 2008 R2 13.00 13.0.0.1

SQL Server 2012 (11.x) 6.20 12.00.01

SQL Server 2012 (11.x) 12.00 12.00.01

SQL Server 2012 (11.x) 13.00 13.0.0.1

SQL Server 2012 (11.x) 14.00 14.00.01

SQL Server 2016 13.00 13.0.0.1

SQL Server 2016 14.00 14.00.01

SQL Server 2016 15.00 15.00.01

Multivalue parameters are supported by this extension. Macros can be specified in a query by using the
EXECUTE command in query mode TEXT.
For more information, see Teradata Connection Type (SSRS).
Return to Data sources table
SharePoint List Data Extension
Reporting Services includes the Microsoft SQL Server Reporting Services SharePoint List Data Extension so that
you can use SharePoint lists as a source of data in a report. You can retrieve list data from the following:
SharePoint Server 2016
SharePoint Server 2013
There are three implementations of the SharePoint List data provider.
1. From a report authoring environment such as Report Builder or Report Designer in SQL Server Data
Tools - Business Intelligence, or for a report server that is configured in native mode, list data comes from
the Lists.asmx Web service for the SharePoint site.
2. On a report server that is configured in SharePoint integrated mode, list data comes from either the
corresponding Lists.asmx Web service or from programmatic calls to the SharePoint API. In this mode,
you can retrieve list data from a SharePoint farm.
3. For SharePoint Server 2013 and SharePoint Server 2016, the Microsoft SQL Server Reporting Services
Add-in for Microsoft SharePoint Technologies enables you to retrieve list data from a Lists.asmx Web
service for a SharePoint site, or from SharePoint site that is part of a SharePoint farm. This scenario is also
known as local mode because a report server is not required.
The credentials that you can specify depend on the implementation that the client application uses. For more
information, see SharePoint List Connection Type (SSRS).
XML Data Processing Extension
Reporting Services includes an XML data processing extension so that you can use XML data in a report. The
data can be retrieved from an XML document, a Web service, or a Web-based application that can be accessed
by way of a URL. For more information, see XML Connection Type (SSRS). For more information about the
associated query designer, see the text-based query designer section in Graphical Query Designer User
Interface.
Return to Data sources table
SAP BW Data Processing Extension
Reporting Services includes a data processing extension that allows you to use data from an SAP BW data
source in a report.
Return to Data sources table
Hyperion Essbase Business Intelligence Data Processing Extension
Reporting Services includes a data processing extension that allows you to use data from a Hyperion Essbase
data source in a report.
For more information, see Hyperion Essbase Connection Type (SSRS). For more information about the
associated query designer, see Hyperion Essbase Query Designer User Interface.
For more information about Hyperion Essbase, see Using SQL Server Reporting Services with Hyperion Essbase.
Return to Data sources table

See Also
Create data connection strings - Report Builder & SSRS
Report Datasets (SSRS)
More questions? Try the Reporting Services forum
Create data connection strings - Report Builder &
SSRS
11/2/2020 • 6 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server 2016 Reporting Services and later ✔
️ Power BI Report Server ✔
️ SharePoint
To include data in Report Builder and Reporting Services paginated reports, you must first create a connection
string to your data source. This article explains how to create data connection strings and important information
related to data source credentials. A data source includes the data source type, connection information, and the
type of credentials to use. For more background, see Intro to Report Data in SQL Server Reporting Services
(SSRS).

Built-in data extensions


Default data extensions in Reporting Services include Microsoft SQL Server, Microsoft Azure SQL Database, and
Microsoft SQL Server Analysis Services. For a full list of data sources and versions Reporting Services supports,
see Data Sources Supported by Reporting Services (SSRS).

Common connection string examples


Connection strings are the text representation of connection properties for a data provider. The following table
lists examples of connections strings for various data connection types.

NOTE
Connectionstrings.com is another resource to get examples for connection strings.

DATA SO URC E EXA M P L E DESC RIP T IO N

SQL Server database on the local data source="(local)";initial Set data source type to Microsoft
server catalog=AdventureWorks SQL Ser ver . For more information,
see SQL Server Connection Type
(SSRS).

SQL Server Instance Data Source=localhost\MSSQL13. Set data source type to Microsoft
<InstanceName>; Initial SQL Ser ver .
Catalog=AdventureWorks
database

Azure SQL Database Data Source=<host>;Initial Set data source type to Microsoft
Catalog=AdventureWorks; Azure SQL Database . For more
Encrypt=True
information, see Azure SQL
Connection Type (SSRS).

SQL Server Parallel Data Warehouse HOST=<IP address>;database= Set data source type to Microsoft
AdventureWorks; port=<port> SQL Ser ver Parallel Data
Warehouse . For more information,
see SQL Server Parallel Data
Warehouse Connection Type (SSRS).
DATA SO URC E EXA M P L E DESC RIP T IO N

Analysis Services database on the local data source=localhost;initial Set data source type to Microsoft
server catalog=Adventure Works DW SQL Ser ver Analysis Ser vices . For
more information, see Analysis
Services Connection Type for MDX
(SSRS) or Analysis Services Connection
Type for DMX (SSRS).

Analysis Services tabular model Data source=<servername>;initial Set data source type to Microsoft
database with Sales perspective catalog= Adventure Works SQL Ser ver Analysis Ser vices .
DW;cube='Sales'
Specify perspective name in cube=
setting. For more information, see
Perspectives (SSAS Tabular).

Oracle server data source=myserver Set the data source type to Oracle .
The Oracle client tools must be
installed on the Report Designer
computer and on the report server.
For more information, see Oracle
Connection Type (SSRS).

SAP NetWeaver BI data source Set the data source type to SAP
DataSource=https://mySAPNetWeaverBIServer:8000/sap/bw/xml/soap/xmla
NetWeaver BI . For more information,
see SAP NetWeaver BI Connection
Type (SSRS).

Hyperion Essbase data source Data Set the data source type to Hyperion
Source=https://localhost:13080/aps/XMLA;
Essbase . For more information, see
Initial Catalog=Sample
Hyperion Essbase Connection Type
(SSRS).

Teradata data source data source= <NNN>.<NNN>. Set the data source type to Teradata .
<NNN>.<NNN> ; The connection string is an Internet
Protocol (IP) address in the form of
four fields, where each field can be
from one to three digits. For more
information, see Teradata Connection
Type (SSRS).

Teradata data source <database name>


Database= Set the data source type to Teradata ,
<NNN*>.<NNN>.
; data source= similar to the previous example. Only
<NNN>.<NNN>* use the default database that is
;Use X Views=False;Restrict to specified in the Database tag, and do
Default Database=True not automatically discover data
relationships.

XML data source, Web service data source=https://adventure- Set the data source type to XML . The
works.com/results.aspx connection string is a URL for a web
service that supports Web Services
Definition Language (WSDL). For more
information, see XML Connection Type
(SSRS).

XML data source, XML document https://localhost/XML/Customers.xml Set the data source type to XML . The
connection string is a URL to the XML
document.
DATA SO URC E EXA M P L E DESC RIP T IO N

XML data source, embedded XML Empty Set the data source type to XML . The
document XML data is embedded in the report
definition.

SharePoint List data Set data source type to SharePoint


source=https://MySharePointWeb/MySharePointSite/
List .

Power BI Premium dataset (Starting Data Set data source type to Microsoft
with Reporting Services 2019 and Source=powerbi://api.powerbi.com/v1.0/myorg/<workspacename>;Initial
SQL Ser ver Analysis Ser vices .
Catalog=<datasetname>
Power BI Report Server January 2020)

If you fail to connect to a report server using localhost , check that the network protocol for TCP/IP protocol is
enabled. For more information, see Configure Client Protocols.
For more information about the configurations needed to connect to these data source types, see the specific
data connection article under Add Data from External Data Sources (SSRS) or Data Sources Supported by
Reporting Services (SSRS).

Special characters in a password


If you configure your ODBC or SQL data source to prompt for a password or to include the password in the
connection string, and a user enters the password with special characters like punctuation marks, some
underlying data source drivers cannot validate the special characters. When you process the report, the message
"Not a valid password" may indicate this problem. If changing the password is impractical, you can work with
your database administrator to store the appropriate credentials on the server as part of a system ODBC data
source name (DSN). For more information, see OdbcConnection.ConnectionString" in the .NET Framework
documentation.

Expression-based connection strings


Expression-based connection strings are evaluated at run time. For example, you can specify the data source as a
parameter, include the parameter reference in the connection string, and allow the user to choose a data source
for the report. For example, suppose a multinational firm has data servers in several countries. With an
expression-based connection string, a user who is running a sales report can select a data source for a particular
country before running the report.
The following example illustrates the use of a data source expression in a SQL Server connection string. The
example assumes you have created a report parameter named ServerName :

="data source=" & Parameters!ServerName.Value & ";initial catalog=AdventureWorks"

Data source expressions are processed at run time or when a report is previewed. The expression must be
written in Visual Basic. Use the following guidelines when defining a data source expression:
Design the report using a static connection string. A static connection string refers to a connection string
that is not set through an expression (for example, when you follow the steps for creating a report-
specific or shared data source, you are defining a static connection string). Using a static connection
string allows you to connect to the data source in Report Designer so that you can get the query results
you need to create the report.
When defining the data source connection, do not use a shared data source. You cannot use a data source
expression in a shared data source. You must define an embedded data source for the report.
Specify credentials separately from the connection string. You can use stored credentials, prompted
credentials, or integrated security.
Add a report parameter to specify a data source. For parameter values, you can either provide a static list
of available values (in this case, the available values should be data sources you can use with the report)
or define a query that retrieves a list of data sources at run time.
Be sure that the list of data sources shares the same database schema. All report design begins with
schema information. If there is a mismatch between the schema used to define the report and the actual
schema used by the report at run time, the report might not run.
Before publishing the report, replace the static connection string with an expression. Wait until you are
finished designing the report before you replace the static connection string with an expression. Once
you use an expression, you cannot execute the query in Report Designer. Furthermore, the field list in the
Report Data pane and the Parameters list will not update automatically.

Next steps
Intro to Report Data in SQL Server Reporting Services (SSRS) Create and Modify Shared Data Sources
Create and Modify Embedded Data Sources
Set Deployment Properties
Specify Credential and Connection Information for Report Data Sources
More questions? Try asking the Reporting Services forum
Add and Verify a Data Connection (Report Builder
and SSRS)
3/5/2021 • 2 minutes to read • Edit Online

In Report Builder, you can add a shared data source from the report server or create an embedded data source
for your report. In Report Designer, you can create a shared data source or an embedded data source and
deploy it to a report server.
To add a shared data source to your report, browse to a report server and select a shared data source. The
shared data source in your report points to the shared data source definition on the report server.
To create an embedded data source, you must have connection information to the external source of data and
you must know which permissions you need to access the data. This information usually comes from the owner
of the data source. You can test the connection to verify that the credentials that are specified are sufficient.
For more information, see Create data connection strings - Report Builder & SSRS and Specify Credentials in
Report Builder

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To create a connection to a shared data source in Report Builder


1. On the toolbar in the Report Data pane, click New, and then click Data Source . The Data Source
Proper ties dialog box opens.
2. In the Name text box, type a name for the data source.

NOTE
This name is saved in the local report definition. This name is not the name of the shared data source on the
report server.

3. Select Use a shared connection or repor t model . The list of recently used shared data sources and
report models appears. To select one from a report server, click Browse and browse to the folder on the
report server where shared data sources are available.
4. Select the shared data source and then click Open .
5. Click OK .
The data source appears in the Report Data pane.
To verify a data connection
1. On the toolbar in the Report Data pane, double-click the data source. The Data Source Proper ties
dialog box opens.
2. Click Test Connection .
3. If the connection is successful, the following message appears: "Connection created successfully". Click
OK .
4. If the connection is not successful, the following message appears: "Unable to connect to the data source."
5. Click Details , and use the information to correct the issue.
For more information, see Specify Credentials in Report Builder.
6. Click OK .

See also
Report Datasets (SSRS)
Report Embedded Datasets and Shared Datasets (Report Builder and SSRS)
Finding, Viewing, and Managing Reports (Report Builder and SSRS )
Create data connection strings - Report Builder & SSRS
Specify Credential and Connection Information for
Report Data Sources
11/2/2020 • 10 minutes to read • Edit Online

A report server uses credentials to connect to external data sources that provide content to reports or recipient
information to a data-driven subscription. You can specify credentials that use Windows Authentication,
database authentication, no authentication, or custom authentication. When sending a connection request over
the network, the report server will either impersonate a user account or the unattended execution account. For
more information about the security context under which a connection request is made, see Data Source
Configuration and Network Connections further on in this topic.

NOTE
Credentials are also used to authenticate users who access a report server. Information about authenticating users to a
report server is provided in another topic.

The connection to an external data source is defined when you create the report. It can be managed separately
after the report is published. You can specify a static connection string or an expression that allows users to
select a data source from a dynamic list. For more information about how to specify a data source type and
connection string, see Create data connection strings - Report Builder & SSRS.

When Credentials are Used in Report Builder


In Report Builder, credentials are often used when you connect to a report server or for data-related tasks, such
as creating an embedded data source, running a dataset query, or previewing a report. Credentials are not
stored in the report. They are managed separately on the report server or on the local client. The following list
describes the types of credentials that you might need to provide, where they are stored, and how they are used:
Report server credentials that you enter in the Reporting Services Login Dialog Box.
When you first save to, publish to, or browse to a report server or SharePoint site, you might need to
enter your credentials. The credentials that you enter are used until the Report Builder session ends. If
you choose to save the credentials, they are stored securely with your user settings on your computer. In
subsequent Report Builder sessions, saved credentials are used to connect to the same report server or
SharePoint site. The report server administrator or SharePoint administrator specifies which type of
credentials to use.
Data source credentials that you enter in the Data Source Properties Dialog Box, Credentials (Report
Builder) page for an embedded data source.
These credentials are used by the report server to make a data connection to the external data source. For
some types of data sources, credentials can be stored securely on the report server. These credentials
enable other users to run the report without providing credentials for the underlying data connection.
Data source credentials that you enter in the Enter Data Source Credentials Dialog Box when you run
a dataset query, refresh dataset fields, or preview the report.
These credentials are used to make a data connection from Report Builder to the external data source, or
to preview a report that is configured to prompt for credentials. Credentials that you enter in this dialog
box are not stored on the report server and are not available for use by other users. Report Builder
caches the credentials during the report editing session so that you do not need to enter them every time
you run the query or preview the report.
For shared data sources, use the Save my password option to save the credentials locally with your
user settings on your computer. Report Builder uses the saved credentials every time a connection is
made to the corresponding external data source.
For more information, see Data Source Properties Dialog Box, General (Report Builder) and Previewing Reports
in Report Builder.

Using Remote Data Sources


If the report retrieves data from a remote database server, verify the following:
The credentials provided to the database server are valid. If you are using Windows user credentials,
make sure that the user has permission to the server and database.
Ports used by the database server are open. If you are accessing SQL Server relational databases on
external computers, or if the report server database is on an external SQL Server instance, you must open
port 1433 and 1434 on the external computer. Be sure to restart the server after you open ports. For
more information, see Configure a Windows Firewall for Database Engine Access.
Remote connections must be enabled. If you are accessing SQL Server relational databases on external
computers, you can use SQL Server Configuration Manager tool to verify that remote connections over
TCP are enabled.

Ways to Specify Credentials for Connecting to Remote Data Sources


The data sources that provide content to reports are usually hosted on remote servers. To retrieve data for a
report, a report server must connect to the server using a set of credentials that you provide in advance or that
are obtained at run time. When configuring a data source, you can specify credentials in the following ways:
Prompt the user for credentials.
Store credentials.
Use Windows integrated security.
Use no credentials.
The network environment determines the kinds of connections you can support. For example, if the Kerberos
version 5 protocol is enabled, you might be able to use the delegation and impersonation features available in
Windows Authentication to support connections across multiple servers. If your network does not support these
security features, you will need to work around connection constraints. If delegation and impersonation are not
enabled, Windows credentials can be passed across one computer connection before they expire. A user
connection from a client computer to a report server computer counts as the first connection. If the user opens a
report that retrieves data from a remote server, that login counts as a second connection and will fail if you
specified the connection to use integrated security when delegation is not enabled.
If multiple connections are required to complete a round trip from the client computer to an external report data
source, choose from the following strategies to make the connections succeed.
Enable impersonation and delegation features in your domain so that credentials can be delegated to
other computers without limit.
Use stored credentials or prompted credentials to query external data sources for report data. The
credentials can be either a Windows domain account or a database login.
Prompted Credentials
When you configure a report data source connection to use prompted credentials, each user who access the
report must enter a user name and password to retrieve the data. This approach is recommended for reports
that contain confidential data. Prompted credentials can be used only on reports that run on demand. Prompted
credentials can be a Windows account or a database login. To use Windows Authentication, you must select Use
as Windows credentials when connecting to the data source . Otherwise, the report server passes
credentials to the database server for user authentication. If the database server cannot authenticate the
credentials that you provide, the connection will fail.
Windows Integrated Security
When you use the Windows Integrated Security option, the report server passes the security token of the
user accessing the report to the server hosting the external data source. In this case, the user is not prompted to
type a user name or password. This approach is recommended if impersonation and delegation features are
enabled. If these features are not enabled, you should only use this approach if all the servers that you want to
access are located on the same computer.
Stored Credentials
You can store the credentials used to access an external data source. Credentials are stored in reversible
encryption in the report server database. You can specify one set of stored credentials for each data source used
in a report. The credentials you provide retrieve the same data for every user who runs the report.
Stored credentials are recommended as part of a strategy for accessing remote database servers. Stored
credentials are required if you want to support subscriptions, or schedule report history generation or report
snapshot refreshes. When a report runs as a background process, the report server is the agent that executes
the report. Because there is no user context in place, the report server must get credential information from the
report server database in order to connect to a data source.
The user name and password that you specify can be Windows credentials or a database login. If you specify
Windows credentials, the report server passes the credentials to Windows for subsequent authentication.
Otherwise, the credentials are passed to the database server for authentication.
How to Grant "Allow log on locally" Permissions to Domain User Accounts
If you use stored credentials to connect to an external data source, the Windows domain user account must have
permission to log on locally. This permission allows the report server to impersonate the user on the report
server and send the request to the external data source as that impersonated user.
To grant this permission, do the following:
1. On the report server computer, in Administrative Tools , open Local Security Policy .
2. Under Security Settings , expand Local Policies , and then click User Rights Assignment .
3. In the details pane, right-click Allow log on locally and then right-click Proper ties .
4. Click Add User or Group .
5. Click Locations , specify a domain or other location that you want to search, and then click OK .
6. Enter the Windows account for which you want to allow interactive login, and then click OK .
7. In the Allow log on locally Proper ties dialog box, click OK .
8. Verify that the account you selected does not also have deny permissions:
a. Right-click Deny log on locally and then right-click Proper ties .
b. If the account is listed, select it and then click Remove .
Using Impersonation with Stored Credentials
You can also use credentials to impersonate the identity of another user. For SQL Server databases, using the
impersonation options sets the SETUSER function.

IMPORTANT
Do not use impersonation for reports that support subscriptions or that use schedules to generate report history or
refresh a report execution snapshot.

No Credentials
You can configure a data source connection to use no credentials. Microsoft recommends that you always use
credentials to access a data sources; using no credentials is not advised. However, you may choose to run a
report with no credentials in the following cases:
The remote data source does not require credentials.
The credentials are passed in the connection string (recommended only for secure connections).
The report is a subreport that uses the credentials of the parent report.
Under these conditions, the report server connects to a remote data source using the unattended execution
account that you must define in advance. Because the report server does not connect to a remote server using
its service credentials, you must specify an account that the report server can use to make the connection. For
more information about creating this account, see Configure the Unattended Execution Account (Report Server
Configuration Manager).

User Name and Password Login


When you select Use this user name and password , a user name and password must be supplied to access
the data source. For a SQL Server database, the credentials might be for a database login. The credentials are
passed to the data source for authentication.

Data Source Configuration and Network Connections


The following table shows how connections are made for specific combinations of credential types and data
processing extensions. If you are using a custom data processing extension, see Specify Connections for Custom
Data Processing Extensions.

DATA SO URC E T Y P ES

( SQ L SERVER, O RA C L E, O DB C , O L E DB ,
C O N T EXT F O R N ET W O RK A N A LY SIS SERVIC ES, XM L , SA P
TYPE C O N N EC T IO N N ET W EAVER B I, H Y P ERIO N ESSB A SE)

Integrated security Impersonate the current user For all data source types, connect
using the current user account.

Windows credentials Impersonate the specified user For SQL Server, Oracle, ODBC, and
OLE DB: connect using the
impersonated user account.
DATA SO URC E T Y P ES

( SQ L SERVER, O RA C L E, O DB C , O L E DB ,
C O N T EXT F O R N ET W O RK A N A LY SIS SERVIC ES, XM L , SA P
TYPE C O N N EC T IO N N ET W EAVER B I, H Y P ERIO N ESSB A SE)

Database credentials Impersonate the unattended execution For SQL Server, Oracle, ODBC, and
account or the service account. OLE DB:

(Reporting Services removes Append the user name and password


administrator permissions when on the connection string.
sending the connection request using
the service identity). For Analysis Services:

The connection succeeds if you are


using the TCP/IP protocol, otherwise it
fails.

For XML:

Fail the connection on the report


server if database credentials are used.

None Impersonate the unattended execution For SQL Server, Oracle, ODBC, and
account. OLE DB:

Use the credentials defined in the


connection string. The connection fails
on the report server if the unattended
execution account is undefined.

For Analysis Services:

Always fail the connection if no


credentials are specified, even if the
unattended execution account is
defined.

For XML:

Connect as Anonymous User if the


unattended execution account is
defined; otherwise, fail the connection.

Setting Credentials Programmatically


You can set credentials in your code to control access to reports and to the report server. For more information,
see Data Sources and Connection Methods.

See Also
Data Sources Supported by Reporting Services (SSRS)
Create data connection strings - Report Builder & SSRS
Manage Report Data Sources
Configure Data Source Properties for a Report
Compare shared and embedded data sources -
Report Builder & Reporting Services (SSRS)
11/2/2020 • 2 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server 2016 Reporting Services and later ✔
️ Power BI Report Server ✔
️ SharePoint
You can connect to data with either a shared or an embedded data source. A shared data source is defined
independent of any report. You can use it in multiple reports on a report server or SharePoint site. An
embedded data source is defined in a report. You can only use it in that report.
Shared data sources are useful when you have data sources that you use often. We recommend that you create
and use shared data sources as much as possible. They make reports and report access easier to manage, and
help to keep reports and the data sources they access more secure. If you need a shared data source, you may
need to ask your system administrator to create one for you.
An embedded data source, also known as a report-specific data source, is a data connection that's saved in the
report definition. Embedded data source connection information can be used only by the report in which it's
embedded. To define and manage embedded data sources, use the Data Source Proper ties dialog box.
The difference between embedded and shared data sources is in how they are created, stored, and managed.
In Report Designer, create embedded or shared data sources as part of a SQL Server Data Tools (SSDT)
project. You can control whether to use them locally for preview or to deploy them as part of the project
to a report server or SharePoint site. You can use custom data extensions that have been installed on your
computer and on the report server or SharePoint site where you deploy your reports.
System administrators can install and configure additional data processing extensions and .NET
Framework data providers. For more information, see Data Processing Extensions and .NET Framework
Data Providers (SSRS).
Developers can use the Microsoft.ReportingServices.DataProcessing API to create data processing
extensions to support additional types of data sources.
In Report Builder, browse to a report server or SharePoint site and select shared data sources or create
embedded data sources in the report. You can't create a shared data source in Report Builder. You can't
use custom data extensions in Report Builder.

Summary of differences
The following table summarizes the differences between embedded and shared data sources.

EM B EDDED SH A RED

DESC RIP T IO N DATA SO URC E DATA SO URC E

Data connection is embedded in the


report definition.

Pointer to the data connection on the


report server is embedded in the
report definition.
EM B EDDED SH A RED

DESC RIP T IO N DATA SO URC E DATA SO URC E

Managed on the report server

Required for shared datasets

Required for components

Next steps
Create and Manage Shared Data Sources
Create and Modify Embedded Data Sources
Set Deployment Properties
Specify Credential and Connection Information for Report Data Sources
More questions? Try asking the Reporting Services forum
Create, Modify, and Delete Shared Data Sources
(SSRS)
11/2/2020 • 13 minutes to read • Edit Online

A shared data source is a set of data source connection properties that can be referenced by multiple reports,
models, and data-driven subscriptions that run on a Reporting Services report server. Shared data sources
provide an easy way to manage data source properties that often change over time. If a user account or
password changes, or if you move the database to a different server, you can update the connection information
in one place.
Shared data sources are optional for reports and data-driven subscriptions, but required for report models. If
you plan to use report models for ad hoc reporting, you must create and maintain a shared data source item to
provide connection information to the model.
A shared data source consists of the following parts:

PA RT DESC RIP T IO N

Name A name that identifies the item within the report server
folder hierarchy.

Description A description that appears with the item in the web portal
when you view the contents of the folder.

Connection type The data processing extension used with the data source.
You can only use data processing extensions that are
deployed on the report server. For more information about
data processing extensions included with Reporting Services,
see Data Sources Supported by Reporting Services (SSRS).

Connection string The connection string for the database. For more
information and to view examples of connection strings to
frequently used data sources, see Create data connection
strings - Report Builder & SSRS.

Credential type Specifies how credentials are obtained for the connection
and whether they are to be used after the connection is
made. For more information, see Specify Credential and
Connection Information for Report Data Sources.

A shared data source does not contain query information used to retrieve data. The query is always kept within
a report definition.

Creating and Modifying Shared Data Sources


To create a shared data source or modify its properties, you must have Manage data sources permissions on
the report server. If the report server runs in native mode, you can create and configure the shared data source
in the web portal. If the report server runs in SharePoint integrated mode, you can use the application pages on
a SharePoint site. For any report server regardless of its mode, you can create a shared data source in Report
Designer and then publish it to a target server.
After you create a shared data source on the report server, you can create role assignments to control access to
it, move it to a different location, rename it, or take it offline to prevent report processing while maintenance
operations are performed on the external data source. If you rename or move a shared data source item to
another location in the report server folder hierarchy, the path information in all reports or subscriptions that
reference the shared data source are updated accordingly. If you take the shared data source offline, all reports,
models, and subscriptions will not run until you re-enable the data source.
For more information about controlling access to shared data sources in the report server folder hierarchy, see
Secure Shared Data Source Items.
To create a shared data source in Repor t Designer
1. On the toolbar in the Report Data pane, click New and then click Data Source . The Data Source
Proper ties dialog box opens.

NOTE
If the Report Data pane is not visible, click Repor t Data on the View menu.

2. In the Name text box, type a name for the data source or accept the default. The data source name is
used internally within the report. For clarity, we recommend that the name of the data source contain the
name of the database specified in the connection string.
3. Verify that Use shared data source reference is selected and then do the following.
a. Click New . In the Shared Data Source properties dialog box, follow steps 2 and 3 to create a
new data source.
b. Click OK .
The new shared data source appears in the Shared Data Sources folder in Solution Explorer.
4. Click Credentials .
Specify the credentials to use for this data source. The owner of the data source chooses the type of
credentials that are supported.
To create a shared data source in the web por tal
1. In the web portal, select New > Data Source .
2. Type a name for the item. A name must contain at least one character and it must start with a letter. It can
also include certain symbols, but not spaces or the characters ; ? : @ & = + , $ / * < > | " /.
3. Optionally type a description to provide users with information about the connection..
4. In the Data source type list, specify the data processing extension that is used to process data from the
data source.
5. For Connection string , specify the connection string that the report server uses to connect to the data
source. We recommend not specifying credentials in the connection string.
The following example illustrates a connection string for connecting to the local SQL Server
AdventureWorks2016 database:

data source=<localservername>; initial catalog=AdventureWorks2016

6. For Connect using , specify how credentials are obtained when the report runs:
If you want to prompt the user for a logon name and password, click Credentials supplied by
the user running the repor t . To use the credentials that the user enters as Windows credentials,
click Use as Windows credentials when connecting to the data source . If the user name
and password are database credentials, do not select this option.
If you intend to use the data source as a shared data source with saved credentials that are
managed by the owner of the data source, or for reports that support subscriptions or other
scheduled operations (such as automated report history generation), click Credentials stored
securely in the repor t ser ver . If the database server supports impersonation or delegation, you
can select Impersonate the authenticated user after a connection has been made to the
data source .
If you want the report server to pass the credentials of the user accessing the report to the server
hosting the external data source, click Windows Integrated Security . In this case, the user is not
prompted to type a user name or password.
If the data source does not use credentials (for example, if the data source is an XML file that is
accessed from the file system), click Credentials are not required . You should only specify this
credential type if it is valid for the data source. If you select this option for a data source that
requires authentication, the connection will fail. If you select this option, be sure to configure the
unattended execution account that allows the report server to connect to other computers to
retrieve data or files when user credentials are not available.
For more information about configuring credentials, see Specify Credential and Connection
Information for Report Data Sources. For more information about the unattended execution
account, see Configure the Unattended Execution Account (Report Server Configuration Manager).
7. Click the Test Connection button to validate the data source configuration.

NOTE
The Test Connection button is not supported for the XML data source type.

8. Click OK
To modify a shared data source in the web por tal
1. In the web portal, navigate to the shared data source.
2. Select the ellipsis (...) in the upper-right corner of the shared data source > Manage .
The Proper ties page opens.
3. Modify the data source, and then click Apply .

Deleting Shared Data Sources


You can delete a shared data source the same way that you delete any item from the report server.
To delete a shared data source
1. In the web portal, navigate to the shared data source.
2. Select the ellipsis (...) in the upper-right corner of the shared data source > Manage .
The Proper ties page opens.
3. Click Delete , and then click OK .
Deleting a shared data source deactivates any report, model, or data-driven subscription that uses it. Without
the data source connection information, the items will no longer run. To activate these items, you must open
each one and do the following:
For reports and data-driven subscriptions that reference the shared data source, you can specify data
source connection information in report properties or subscription, or you can select a new shared data
source that has the values you want to use.
For models and Report Builder reports that use that model, you must specify a new shared data source.
Models get data source connection information only through shared data sources.
There is no Undo operation for deleting a shared data source. However, if you accidentally delete a shared data
source, you can create a new one using the same property values as the one you deleted. You will have to open
each report, model, and data-driven subscription to rebind the shared data source to the item that uses it, but as
long as the data source properties are the same as before, the reports, models, and subscriptions will continue
to function as before.

Importing Shared Data Sources


To impor t an existing data source in Repor t Designer
1. In Solution Explorer, right-click the Shared Data Sources folder in the report server project, and then
click Add Existing Item . The Add Existing Item dialog box opens.
2. Navigate to an existing Report Definition Shared data source (rds) file and then click Open .
3. Click OK .

Shared Data Sources in SharePoint


When you run a report from a SharePoint library, connection information can be defined inside the report or in
an external file that is linked to the report. If the connection information is embedded within the report, it is
called a custom data source. If the connection information is defined in an external file, it is called a shared data
source. The external file can be a report server data source (.rsds) file or an Office Data Connection (.odc) file.
An .rsds file is similar to an .rds file, but it has a different schema. To create an .rsds file, you can publish an .rds
from Report Designer or Model Designer to a SharePoint library (a new .rsds file is created from the original .rds
file). Or, you can create a new file in a library on a SharePoint Site.
After you create or publish a shared data source, you can edit connection properties or delete the file if it is no
longer used. Before you delete a shared data source, you should determine whether it is used by reports and
report models. You can do this by viewing dependent items that reference the shared data source.
Although the list of dependent items tells you whether the shared data source is referenced, it does not tell you
whether the item is actively used. To determine whether the shared data source or model is actively used, you
can review the log files on the report server computer. If you do not have access to the log files or if the files do
not contain the information you want, consider moving the report to an inaccessible folder while you determine
its actual status.
To create a shared data source (.rsds) file (SharePoint 2010)
1. Click the Documents tab on the library ribbon.
2. On the New Document menu, click Repor t Data Source
NOTE
If you do not see the Repor t Data Source item on the menu, the report data source content type has not been
enabled. For more information, see Add Reporting Services Content Types to a SharePoint Library.

3. In Name , enter a descriptive name for the .rsds file.


4. In Data Source Type , select the type of data source from the list. For more information, see Data
Sources Supported by Reporting Services (SSRS).
5. In Connection String , specify a pointer to the data source and any other settings that are necessary for
establishing a connection to the external data source. The type of data source you are using determines
the syntax of the connection string. For more information and examples, see Create data connection
strings - Report Builder & SSRS.
6. In Credentials , specify how the report server obtains credentials to access the external data source.
Credentials can be stored, prompted, integrated, or configured for unattended report processing.
Select Windows authentication (integrated) if you want to access the data using the
credentials of the user who opened the report. Do not select this option if the SharePoint site or
farm uses forms authentication or connects to the report server through a trusted account. Do not
select this option if you want to schedule subscription or data processing for this report. This
option works best when Kerberos authentication is enabled for your domain, or when the data
source is on the same computer as the report server. If Kerberos authentication is not enabled,
Windows credentials can only be passed to one other computer. This means that if the external
data source is on another computer, requiring an additional connection, you will get an error
instead of the data you expect.
Select Prompt for credentials if you want the user to enter his or her credentials each time he or
she runs the report. Do not select this option if you want to schedule subscription or data
processing for this report.
Select Stored credentials if you want to access the data using a single set of credentials. The
credentials are encrypted before they are stored. You can select options that determine how the
stored credentials are authenticated. Select Use as Windows credentials if the stored credentials
belong to a Windows user account. Select Set execution context to this account if you want to
set the execution context on the database server. For SQL Server databases, this option sets the
SETUSER function. For more information, see SETUSER (Transact-SQL).
Select Credentials are not required if you want to specify credentials in the connection string,
or if you want to run the report using a least-privilege account that is configured on the report
server. If this account is not configured on the report server, users will be prompted for credentials
and any scheduled operations that you define for the report will not run.
7. Select Enable this data source if you want the data source to be active. If the data source is configured
but not active, users will see an error message when they attempt to use a report based on the data
source.
8. Click the Test Connection button to validate the data source configuration.

NOTE
The Test Connection button is not supported for the XML data source type.

9. Click OK to save create the shared data source.


To delete a shared data source (.rsds) file
1. Open the library that contains the .rsds file.
2. Point to the shared data source.
3. Click to display a down arrow, and click Delete .
If you mistakenly delete a shared data source that you meant to keep, you can create a new one that contains
the same connection information. After you recreate the shared data source, you must open each report and
model that used that data source and select the shared data source. The new shared data source item can have a
different name, credentials, or connection string syntax from the one you delete. As long as the connection
resolves to the same data source, data source properties can vary from the original values.
Use caution when deleting a report model. If you delete a model, you can no longer open and modify any
reports that are based on that model in Report Builder. If you inadvertently delete a model that is used by
existing reports, you must regenerate the model, re-create and save any reports that use the model, and re-
specify any model item security that you want to use. You cannot simply regenerate the model and then attach it
to an existing report.

Dependent Items
To view a list of reports and models that use the data source, open the Dependent Items page for the shared
data source. You can access this page when you open the data source in the web portal or a SharePoint
application page. Note that the Dependent Items page does not show data-driven subscriptions. If a shared data
source is used by a subscription, the subscription will not appear in the dependent items list.
To view dependent items in SharePoint
1. Open the library that contains the .rsds file.
2. Point to the shared data source.
3. Click to display a down arrow, and select View Dependent Items .
For report models, the list of dependent items shows the reports that were created in Report Builder. For
shared data sources, the dependent items list can include both reports and report models.

See Also
Create data connection strings - Report Builder & SSRS
Manage Report Data Sources
Configure Data Source Properties for a Paginated Report
Create and Modify Embedded Data Sources
11/2/2020 • 3 minutes to read • Edit Online

An embedded data source is defined in a report definition and used only by that report.

To create an embedded data source in Report Designer


1. On the toolbar in the Report Data pane, click New and then click Data Source . The Data Source
Proper ties dialog box opens.

NOTE
If the Report Data pane is not visible, click Repor t Data on the View menu.

2. In the Name text box, type a name for the data source or accept the default. The data source name is
used internally within the report. For clarity, we recommend that the name of the data source contain the
name of the database specified in the connection string.
3. Verify that Embedded connection is selected, and do the following.
a. From the Type drop-down list, select a data source type; for example, Microsoft SQL Ser ver or
OLE DB .
b. Specify a connection string using one of the following alternatives:
Type the connection string directly in the Connection string text box. For a list of example
connection strings, see Create data connection strings - Report Builder & SSRS.
Click the expression (fx) button to create an expression that evaluates to a connection
string. In the Expression dialog box, type the expression in the Expression pane. Click OK .
Click Edit to open the Connection Proper ties dialog box for the data source type you
chose in step 2.
Fill in the fields in the Connection Proper ties dialog box as appropriate for the data
source type. Connection properties include the type of data source, the name of the data
source, and the credentials to use. After you specify values in this dialog box, click Test
Connection to verify that the data source is available and that the credentials you specified
are correct. For more information about specific data source types, see topics in Add Data
from External Data Sources (SSRS).
c. Click Credentials .
Specify the credentials to use for this data source. The owner of the data source chooses the type
of credentials that are supported.
4. The new embedded data source appears in the Report Data pane.

To create an embedded data source in Report Builder


1. On the toolbar in the Report Data pane, click New , and then click Data Source . The Data Source
Proper ties dialog box opens.
2. In the Name text box, type a name for the data source or accept the default.
3. Verify that Use a connection embedded in my repor t is selected.
a. From the Select connection type drop-down list, select a data source type; for example,
Microsoft SQL Ser ver or OLE DB .
b. Specify a connection string by using one of the following alternatives:
Type the connection string directly in the Connection string text box. For a list of example
connection strings, see Create data connection strings - Report Builder & SSRS.
Click the expression (fx) button to create an expression that evaluates to a connection
string. In the Expression dialog box, type the expression in the Expression pane. Click OK .
Click Build to open the Connection Proper ties dialog box for the data source type that
you chose in step 2.
Fill in the fields in the Connection Proper ties dialog box as appropriate for the data
source type. Connection properties include the type of data source, the name of the data
source, and the credentials to use. After you specify values in this dialog box, click Test
Connection to verify that the data source is available and that the credentials you specified
are correct.
4. Click Credentials .
Specify the credentials to use for this data source. The owner of the data source chooses the type of
credentials that are supported. For more information, see Specify Credential and Connection Information
for Report Data Sources.
5. Click OK .
The data source appears in the Report Data pane.

See Also
Report Embedded Datasets and Shared Datasets (Report Builder and SSRS)
Specify Credential and Connection Information for Report Data Sources
Convert Data Sources (Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

Each data source in the Report Data pane is embedded and specific to the report or is shared. In Report Builder,
a shared data source points to a published shared data source on a report server or SharePoint site. In Report
Designer, a shared data source points to a shared data source in the Shared Data Sources folder in Solution
Explorer.
For more information about the differences between embedded and shared data sources, see Embedded and
Shared Data Connections or Data Sources (Report Builder and SSRS).
For more information on how to create a shared data source, see Create an Embedded or Shared Data Source
(SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Report Designer
To convert a data source from embedded to shared
In the Report Data pane, right-click the data source, and then click Conver t to Shared Data Source .

NOTE
If the Report Data pane is not visible, on the View menu, click Repor t Data . If the pane opens as a floating
window, you can dock it. For more information, see Dock the Report Data Pane in Report Designer (SSRS).

In the Report Data pane, the data source icon changes to the shared data source icon. In Solution Explorer,
a shared data source with the same name appears under the Shared Data Source folder.
To convert a data source from shared to embedded
In the Report Data pane, right-click the data source, open the Data Source Proper ties dialog box, and
then click Embedded Connection . Enter the required information.
In the Report Data pane, the data source icon changes to the shared data source icon.

Report Builder
To convert a data source from embedded to shared
In the Report Data pane, right-click the data source to open the Data Source Proper ties dialog box, and
then click Embedded Connection . Enter the required information.
In the Report Data pane, the data source icon changes to the shared data source icon.
To convert a data source from shared to embedded
In the Report Data pane, right-click the data source, open the Data Source Proper ties dialog box, and
then click Embedded Connection . Enter the required information.
In the Report Data pane, the data source icon changes to the shared data source icon.
See Also
Manage Report Data Sources
Create data connection strings - Report Builder & SSRS
Add Data from External Data Sources (SSRS)
11/2/2020 • 5 minutes to read • Edit Online

To retrieve data from an external data source, you use a data connection. Data connection information is usually
provided by the owner of the external data source, who is responsible for granting permissions and specifying
which types of credentials to use. Data connection information is saved as a report data source. The data source
type specifies which data extension to use to retrieve the data.
For more information about data source types, see In This Section.

Understanding Data Access Technology


To retrieve data for a report dataset requires multiple layers of data access software. The following list provides
a simple description of how reports work with data access technologies:
Application and user interface The Report Builder application that you use to create a data source,
add a reference to a shared data source, add a shared dataset, or add a report part that includes the data
sources and datasets that it depends on..
Repor t definition elements Data sources and datasets are part of the report definition. After a report
is published to a report server, shared data sources and shared datasets are managed independently
from the report definition.
Data source and Shared data source Part of a report definition that includes the information
about the type of data processing extension, the connection information, and the authentication.
Dataset and field collection Part of a report definition that includes the query, the field
collection, and the field data types.
Repor ting Ser vices data extensions Built-in data extensions that are installed with Report Builder. A
data extension provides functionality that handles authentication, server aggregates, and multi-value
parameters.
Data provider The software that manages the connection and retrieval of data from the external data
source. The data provider defines the connection string syntax. Most data extensions are built on top of a
data provider layer.
External data source Where to retrieve report data from, for example, a database, a file, a cube, or a
Web service.

NOTE
When you are not connected to a report server, you can choose from data extensions that are installed with Report
Builder. You access the data as a single user using credentials from your computer. When you are connected to a report
server, you can choose from data extensions that are installed on the report server. You access the data as one of multiple
users who run the report and you are using credentials on the report server. For more information, see Specify Credential
and Connection Information for Report Data Sources.

Understanding Report Data


In its simplest form, a report displays data from a report dataset in a data region on the report page, that is, in a
single table, chart, matrix, or other type of report data region. The data in a report dataset comes from the first
result set that is returned from a single query command that runs from read-only access to an external data
source. Each data region expands as needed to display all the data from the dataset.
Data in a dataset are essentially tabular. Columns are the fields from the dataset query. Rows are from the rows
in the result set. You can use the following generalized types of data in a report:
Rectangular data. Data from a result set that has the same number of columns in every row.
Hierarchical data is supported as a flattened rowset.
Ragged hierarchies, where there is a different number of columns for each row of data, is not
supported. For some data extensions, this has some implications.
Data extensions that work with multidimensional data sources use XML for Analysis protocol and
retrieve data as a flattened row set and not as a cell set.
The XML data extension automatically flattens XML data to use it in a report. If the first instance of
an XML element does not include all attributes or subelements, the data might not be available as
report data.
Recursive data is supported. A result set that contains a recursive data hierarchy includes all the
information about the hierarchy structure in a rectangular result set. For example, the report-to structure
in a company can be represented by a table that includes two columns: an employee and a manager. Each
manager also is an employee with a manager. The top manager usually contains a null or some other
identifier that indicates that this employee has no manager.

Working with Data Types


When you create a dataset, the data types of the fields are mapped to a subset of common language runtime
(CLR) data types from the .NET Framework. Data types that cannot be clearly mapped are returned as strings.
For more information about working with field data types, see Dataset Fields Collection (Report Builder and
SSRS). When you create a parameter, the data type must be a supported report definition data type. For more
information about mapping data types from the data provider to a report parameter, see Data Types in
Expressions (Report Builder and SSRS).

How-To Topics
This section contains step-by-step instructions for working with data connections, data sources, and datasets.
Add and Verify a Data Connection (Report Builder and SSRS)
Create a Shared Dataset or Embedded Dataset (Report Builder and SSRS)
Add a Filter to a Dataset (Report Builder and SSRS)

In This Section
The following topics provide information about each built-in data extension.

TO P IC DATA SO URC E T Y P E

SQL Server Connection Type (SSRS) Microsoft SQL Server

Analysis Services Connection Type for MDX (SSRS) Microsoft SQL Server Analysis Services

Power Pivot Connection Type (SSRS) Microsoft SQL Server Analysis Services
TO P IC DATA SO URC E T Y P E

SharePoint List Connection Type (SSRS) Microsoft SharePoint List

Azure SQL Connection Type (SSRS) Microsoft SQL Database

SQL Server Parallel Data Warehouse Connection Type (SSRS) Microsoft SQL Server 2008 R2 Parallel Data Warehouse

SAP NetWeaver BI Connection Type (SSRS) SAP NetWeaver BI

Hyperion Essbase Connection Type (SSRS) Hyperion Essbase

OLE DB Connection Type (SSRS) OLE DB

ODBC Connection Type (SSRS) ODBC

XML Connection Type (SSRS) XML

Related Sections
These sections of the documentation provide in-depth conceptual information about report data, as well as
procedural information about how to define, customize, and use parts of a report that are related to data.

TO P IC DESC RIP T IO N

Report Datasets (SSRS) Provides an overview of accessing data for your report.

Create data connection strings - Report Builder & SSRS Provides information about data connections and data
sources.

Report Embedded Datasets and Shared Datasets (Report Provides information about embedded and shared datasets.
Builder and SSRS)

Dataset Fields Collection (Report Builder and SSRS) Provides information about the dataset field collection
generated by the query.

Data Sources Supported by Reporting Services (SSRS) Provides in-depth information about platform and version
support for each data extension.

Data Processing Extensions Overview Provides in-depth information for advanced users about
data extensions.

See Also
Report Datasets (SSRS)
Query Design Tools (SSRS)
SQL Server Connection Type (SSRS)
11/2/2020 • 6 minutes to read • Edit Online

To include data from a SQL Server database in your report, you must have a dataset that is based on a report
data source of type Microsoft SQL Server. This built-in data source type is based on the Microsoft SQL Server
data extension. Use this data source type to connect to and retrieve data from the current version and earlier
versions of SQL Server databases.
This data extension supports multivalue parameters, server aggregates, and credentials managed separately
from the connection string.
Use the information in this topic to build a data source. For step-by-step instructions, see Add and Verify a Data
Connection (Report Builder and SSRS).

Connection String
When you connect to a SQL Server database, you are connecting to the database object in an instance of SQL
Server on a server. The database might have multiple schemas that have multiple tables, views, and stored
procedures. You specify the database object to use in the query designer. If you do not specify a database in the
connection string, you connect to the default database that the database administrator assigned to you.
Contact your database administrator for connection information and for the credentials to use to connect to the
data source. The following connection string example specifies a sample database on the local client:

Data Source=<server>;Initial Catalog=AdventureWorks

For more information about connection string examples, see Create data connection strings - Report Builder &
SSRS.

Credentials
Credentials are required to run queries, to preview the report locally, and to preview the report from the report
server.
After you publish your report, you may need to change the credentials for the data source so that when the
report runs on the report server, the permissions to retrieve the data are valid.
From a report authoring client, the following options are available to specify credentials:
Current Windows user (also known as integrated security).
Use a stored user name and password.
Prompt the user for credentials. This option supports Windows integrated security only.
No credentials are required. To use this option, you must have the unattended execution account
configured on the report server. For more information, see Configure the Unattended Execution Account
(Report Server Configuration Manager).
For more information, see Create data connection strings - Report Builder & SSRS or Specify Credential and
Connection Information for Report Data Sources.
Queries
A query specifies which data to retrieve for a report dataset. The columns in the result set for a query populate
the field collection for a dataset. A report processes only the first result set that a query retrieves.
By default, if you create a new query or open an existing query that can be represented in the graphical query
designer, the relational query designer is available. You can specify a query in the following ways:
Build a query interactively. Use the relational query designer that displays a hierarchical view of tables,
views, stored procedures, and other database items, organized by database schema. Select columns from
tables or views, or specify stored procedures or table-valued functions. Limit the number of rows of data
to retrieve by specifying filter criteria. Customize the filter when the report runs by setting the parameter
option.
Type or paste a query. Use the text-based query designer to enter Transact-SQL text directly, to paste
query text from another source, to enter complex queries that cannot be built by using the relational
query designer, or to enter query-based expressions.
Import an existing query from a file or report. Use the Impor t query button from either query designer
to browse to a .sql file or .rdl file and import a query.
For more information, see Relational Query Designer User Interface (Report Builder) and Text-based Query
Designer User Interface (Report Builder).
The following query modes are supported:
Text Type in Transact-SQL commands.
Stored Procedure Choose from a list of stored procedures.
Using Query Type Text
In the text-based query designer, you can type Transact-SQL commands to define the data in a dataset. For
example, the following Transact-SQL query selects the names of all employees who are marketing assistants:

SELECT
HumanResources.Employee.BusinessEntityID
,HumanResources.Employee.JobTitle
,Person.Person.FirstName
,Person.Person.LastName
FROM
Person.Person
INNER JOIN HumanResources.Employee
ON Person.Person.BusinessEntityID = HumanResources.Employee.BusinessEntityID
WHERE HumanResources.Employee.JobTitle = 'Marketing Assistant'

Click the Run button (! ) on the toolbar to run the query and display a result set.
To parameterize this query, add a query parameter. For example, change the WHERE clause to the following:
WHERE HumanResources.Employee.JobTitle = (@JobTitle)

When you run the query, report parameters that correspond to query parameters are automatically created. For
more information, see Query Parameters later in this topic.
Using Query Type StoredProcedure
You can specify a stored procedure for a dataset query in one of the following ways:
In the Dataset Proper ties dialog box, set the Stored Procedure option. Choose from the drop-down
list of stored procedures and table-valued functions.
In the relational query designer, in the Database view pane, select a stored procedure or table-valued
function.
In the text-based query designer, select StoredProcedure from the toolbar.
After you select a stored procedure or table-valued function, you can run the query. You will be prompted for
input parameter values. When you run the query, report parameters that correspond to input parameters are
automatically created. For more information, see Query Parameters later in this topic.
Only the first result set that is retrieved for a stored procedure is supported. If a stored procedure returns
multiple result sets, only the first one is used.
If a stored procedure has a parameter that has a default value, you can access that value by using the DEFAULT
keyword as a value for the parameter. If the query parameter is linked to a report parameter, the user can type
or select the word DEFAULT in the input box for the report parameter.
For more information, see Stored Procedures (Database Engine).

Parameters
When query text contains query variables or stored procedures that have input parameters, the corresponding
query parameters for the dataset and report parameters for the report are automatically generated. The query
text must not include the DECLARE statement for each query variable.
For example, the following SQL query creates a report parameter named EmpID :

SELECT FirstName, LastName FROM HumanResources.Employee E INNER JOIN


Person.Contact C ON E.ContactID=C.ContactID
WHERE EmployeeID = (@EmpID)

Report parameters are created with default property values that you might need to modify. For example:
By default, each report parameter is data type Text . If the underlying data is a different data type, you
must change the parameter data type.
If you select the option for multivalued parameters, you must manually change the query to test whether
values are part of a set by using the IN operator, for example, WHERE EmployeeID IN (@EmpID) .

For more information, see Report Parameters (Report Builder and Report Designer).

Remarks
You can also retrieve data from a SQL Server database by using an OLE DB or ODBC data source type. For more
information, see OLE DB Connection Type (SSRS) or ODBC Connection Type (SSRS).
P l a t f o rm a n d V e rs i o n I n f o rma t i o n

For more information about platform and version support, see Data Sources Supported by Reporting Services
(SSRS).

How-To Topics
This section contains step-by-step instructions for working with data connections, data sources, and datasets.
Add and Verify a Data Connection (Report Builder and SSRS)
Create a Shared Dataset or Embedded Dataset (Report Builder and SSRS)
Add a Filter to a Dataset (Report Builder and SSRS)
Related Sections
These sections of the documentation provide in-depth conceptual information about report data, and
procedural information about how to define, customize, and use parts of a report that are related to data.
Report Datasets (SSRS)
Provides an overview of accessing data for your report.
Create data connection strings - Report Builder & SSRS
Provides information about data connections and data sources.
Report Embedded Datasets and Shared Datasets (Report Builder and SSRS)
Provides information about embedded and shared datasets.
Dataset Fields Collection (Report Builder and SSRS)
Provides information about the dataset field collection generated by the query.
Data Sources Supported by Reporting Services (SSRS).
Provides in-depth information about platform and version support for each data extension.

See Also
Report Parameters (Report Builder and Report Designer)
Filter, Group, and Sort Data (Report Builder and SSRS)
Expressions (Report Builder and SSRS)
Analysis Services Connection Type for MDX (SSRS)
11/2/2020 • 5 minutes to read • Edit Online

To include data from an Analysis Services cube in your report, you must have a dataset that is based on a report
data source of type Microsoft SQL Server Analysis Services. This built-in data source type is based on the
Microsoft SQL Server Analysis Services data extension. You can retrieve metadata about dimensions,
hierarchies, levels, key performance indicators (KPIs), measures, and attributes from a Microsoft SQL Server
Analysis Services cube for use as report data.
This data processing extension supports multivalue parameters, server aggregates, and credentials that are
managed separately from the connection string.
Use the information in this topic to build a data source. For step-by-step instructions, see Add and Verify a Data
Connection (Report Builder and SSRS).

Connection String
When you connect to a Analysis Services cube, you are connecting to the database object in an Analysis Services
instance on a server. The database might have multiple cubes. You specify the cube in the query designer when
you build the query. The following example shows a connection string:

data source=<server name>;initial catalog=<database name>

For more connection string examples, see Create data connection strings - Report Builder & SSRS.

Credentials
Credentials are required to run queries, to preview the report locally, and to preview the report from the report
server.
After you publish your report, you may need to change the credentials for the data source so that when the
report runs on the report server, the permissions to retrieve the data are valid.
From a report authoring client, the following options are available to specify credentials:
Current Windows user (also known as integrated security).
Use a stored user name and password.
Prompt the user for credentials. This option only supports Windows integrated security.
No credentials are required. To use this option, you must have the unattended execution account
configured on the report server. For more information, see Configure the Unattended Execution Account
(Report Server Configuration Manager)
For more information, see Create data connection strings - Report Builder & SSRS or Specify Credential and
Connection Information for Report Data Sources.

Queries
After you have a data connection to an Analysis Services data source, you create a dataset and define a
Multidimensional Expression (MDX) query that specifies which data to retrieve from the cube. Use the MDX
graphical query designer browse and selecting from the underlying data structures on the data source.
You can specify a query in the following ways:
Build a query interactively. The Analysis Services MDX Query Designer supports the following views:
Design View Drag dimensions, members, member properties, measures, and KPIs from the
metadata browser to the Data pane to build an MDX query. Drag calculated members from the
CalculatedMembers pane to the Data pane to define additional dataset fields.
Quer y View Drag dimensions, members, member properties, measures, and KPIs from the
metadata browser to the Query pane to build an MDX query. You can edit MDX text directly in the
Query pane. Drag calculated members from the CalculatedMembers pane to the Query pane to
define additional dataset fields.
For more information, see Analysis Services MDX Query Designer User Interface (Report Builder).
Import an existing MDX query from a report. Use the Impor t query button to browse to an .rdl file and
import a query. You can import a query from a report that contains an embedded dataset that is based
on a Analysis Services data source. Importing an MDX query directly from an .mdx file is not supported.
At design time, run the query to view a result set. The query results are automatically retrieved as a flattened
rowset. The columns in the result set for a query populate the field collection for a dataset. After you build the
query, view the dataset field collection that is generated from the metadata in the Report Data pane. When the
report runs, the actual data is returned from the external data source.
The Analysis Services data processing extension supports extended dataset field properties. These are values
that are available from the external data source but that do not appear in the Report Data pane. You can use
extended field properties supported by the Analysis Services data processing extension in your report through
the built-in Fields collection. For properties that have values on the data source, you can access predefined
property values such as FormattedValue , Color , or UniqueName . For more information, see Extended Field
Properties for an Analysis Services Database (SSRS)).

Parameters
To include query parameters, create a filter in the filter area in the query designer, and mark the filter as a
parameter. For each filter, a dataset is automatically created to provide the available values. By default, these
datasets do not appear in the Report Data pane. For more information, see Define Parameters in the MDX Query
Designer for Analysis Services (Report Builder and SSRS) and Show Hidden Datasets for Parameter Values for
Multidimensional Data (Report Builder and SSRS).
By default, each report parameter has data type Text . After the report parameters are created, you might have to
change default values. For more information, see Report Parameters (Report Builder and Report Designer).

Remarks
The Analysis Services data extension is based on the XMLA (XML for Analysis) protocol. Result sets from cubes
are retrieved through the XMLA protocol as a flattened row set. Ragged hierarchies are not supported. For more
information, see Ragged Hierarchies.
You can also retrieve data from an Analysis Services cube from the OLE DB data source type. For more
information, see OLE DB Connection Type (SSRS).
For more information about version support, see Data Sources Supported by Reporting Services (SSRS).

Related Sections
These sections of the documentation provide in-depth conceptual information about report data, as well as
procedural information about how to define, customize, and use parts of a report that are related to data.
Report Datasets (SSRS)
Provides an overview of accessing data for your report.
Create data connection strings - Report Builder & SSRS
Provides information about data connections and data sources.
Report Embedded Datasets and Shared Datasets (Report Builder and SSRS)
Provides information about embedded and shared datasets.
Dataset Fields Collection (Report Builder and SSRS)
Provides information about the dataset field collection generated by the query.
Extended Field Properties for an Analysis Services Database (SSRS)
Provides information about extra fields that are available through the XMLA data provider.
Data Sources Supported by Reporting Services (SSRS).
Provides in-depth information about platform and version support for each data extension.

See Also
Report Parameters (Report Builder and Report Designer)
Filter, Group, and Sort Data (Report Builder and SSRS)
Expressions (Report Builder and SSRS)
Extended Field Properties for an Analysis Services
Database (SSRS)
11/2/2020 • 6 minutes to read • Edit Online

The SQL Server Analysis Services data processing extension supports extended field properties. Extended field
properties are properties in addition to the field properties Value and IsMissing that are available on the data
source and supported by the data processing extension. Extended properties do not appear in the Report Data
pane as part of the field collection for a report dataset. You can include extended field property values in your
report by writing expressions that specify them by name using the built-in Fields collection.
Extended properties include predefined properties and custom properties. Predefined properties are properties
common to multiple data sources that are mapped to specific field property names and can be accessed
through the built-in Fields collection by name. Custom properties are specific to each data provider and can be
accessed through the built-in Fields collection only through syntax using the extended property name as a
string.
When you use the Analysis Services MDX query designer in graphical mode to define your query, a predefined
set of cell properties and dimension properties are automatically added to the MDX query. You can only use
extended properties that are specifically listed in the MDX query in your report. Depending on your report, you
may want to modify the default MDX command text to include other dimension or custom properties defined in
the cube. For more information about extended fields available in Analysis Services data sources, see Creating
and Using Property Values (MDX).

Working with Field Properties in a Report


Extended field properties include predefined properties and data provider-specific properties. Field properties
do not appear with the field list in the Repor t Data pane, even though they are in the query built for a dataset;
therefore, you cannot drag field properties onto your report design surface. Instead, you must drag the field
onto the report and then change the Value property of the field to the property that you want to use. For
example, if the cell data from a cube has already been formatted, you can use the FormattedValue field property
by using the following expression: =Fields!FieldName.FormattedValue .
To refer to an extended property that is not predefined, use the following syntax in an expression:
Fields!FieldName("PropertyName")

Predefined Field Properties


In most cases, predefined field properties apply to measures, levels, or dimensions. A predefined field property
must have a corresponding value stored in the Analysis Services data source. If a value does not exist, or if you
specify a measure-only field property on a level (for example), the property returns a null value.
You can use either of the following syntaxes to refer to a predefined property from an expression:
Fields!FieldName.PropertyName
Fields!FieldName("PropertyName")
The following table provides a list of predefined field properties that you can use.
P RO P ERT Y TYPE DESC RIP T IO N O R EXP EC T ED VA L UE

Value Object Specifies the data value of the field.

IsMissing Boolean Indicates whether the field was found


in the resulting data set.

UniqueName String Returns the fully qualified name of a


level. For example, the UniqueName
value for an employee might be
[Employee].[Employee Department].
[Department].&[Sales].&[North
American Sales Manager].&[272].

BackgroundColor String Returns the background color defined


in the database for the field.

Color String Returns the foreground color defined


in the database for the item.

FontFamily String Returns the name of the font defined


in the database for the item.

FontSize String Returns the point size of the font


defined in the database for the item.

FontWeight String Returns the weight of the font defined


in the database for the item.

FontStyle String Returns the style of the font defined in


the database for the item.

TextDecoration String Returns special text formatting defined


in the database for the item.

FormattedValue String Returns a formatted value for a


measure or key figure. For example,
the FormattedValue property for
Sales Amount Quota returns a
currency format like $1,124,400.00.

Key Object Returns the key for a level.

LevelNumber Integer For parent-child hierarchies, returns


the level or dimension number.

ParentUniqueName String For parent-child hierarchies, returns a


fully qualified name of the parent level.

NOTE
Values exist for these extended field properties only if the data source (for example, the Analysis Services cube) provides
these values when your report runs and retrieves the data for its datasets. You can then refer to those field property
values from any expression using the syntax described in the following section. However, because these fields are specific
to this data provider, changes that you make to these values are not saved with the report definition.
Example Extended Properties
To illustrate extended properties, the following MDX query and result set include several member properties
available from a dimension attribute defined for a cube. The member properties included are
MEMBER_CAPTION, UNIQUENAME, Properties("Day Name"), MEMBER_VALUE, PARENT_UNIQUE_NAME, and
MEMBER_KEY.
This MDX query runs against the AdventureWorks2012 cube in the AdventureWorks2012 DW database,
included with the AdventureWorks2012 sample databases.

WITH MEMBER [Measures].[DateCaption]


AS '[Date].[Date].CURRENTMEMBER.MEMBER_CAPTION'
MEMBER [Measures].[DateUniqueName]
AS '[Date].[Date].CURRENTMEMBER.UNIQUENAME'
MEMBER [Measures].[DateDayName]
AS '[Date].[Date].Properties("Day Name")'
MEMBER [Measures].[DateValueinOriginalDatatype]
AS '[Date].[Date].CURRENTMEMBER.MEMBER_VALUE'
MEMBER [Measures].[DateParentUniqueName]
AS '[Date].[Date].CURRENTMEMBER.PARENT_UNIQUE_NAME'
MEMBER [Measures].[DateMemberKeyinOriginalDatatype]
AS '[Date].[Date].CURRENTMEMBER.MEMBER_KEY'
SELECT {
[Measures].[DateCaption],
[Measures].[DateUniqueName],
[Measures].[DateDayName],
[Measures].[DateValueinOriginalDatatype],
[Measures].[DateParentUniqueName],
[Measures].[DateMemberKeyinOriginalDatatype]
} ON COLUMNS , [Date].[Date].ALLMEMBERS ON ROWS
FROM [Adventure Works]

When you run this query in an MDX query pane, you get a result set with 1158 rows. The first four rows are
shown in the following table.

DAT EVA L UEIN O R DAT EM EM B ERK E


DAT EUN IQ UEN A IGIN A L DATAT Y P DAT EPA REN T UN I Y IN O RIGIN A L DA
DAT EC A P T IO N ME DAT EDAY N A M E E Q UEN A M E TAT Y P E

All Periods [Date].[Date].[All (null) (null) (null) 0


Periods]

1-Jul-01 [Date].[Date].& Sunday 7/1/2001 [Date].[Date].[All 1


[1] Periods]

2-Jul-01 [Date].[Date].& Monday 7/2/2001 [Date].[Date].[All 2


[2] Periods]

3-Jul-01 [Date].[Date].& Tuesday 7/3/2001 [Date].[Date].[All 3


[3] Periods]

Default MDX queries built using the MDX Query Designer in graphical mode only include MEMBER_CAPTION
and UNIQUENAME for dimension properties. By default, these values always are data type String .
If you need a member property in its original data type, you can include an additional property MEMBER_VALUE
by modifying the default MDX statement in the text-based query designer. In the following simple MDX
statement, MEMBER_VALUE has been added to the list of dimension properties to retrieve.
SELECT NON EMPTY {[Measures].[Order Count]} ON COLUMNS,
NON EMPTY { ([Date].[Month of Year].[Month of Year] ) }
DIMENSION PROPERTIES
MEMBER_CAPTION, MEMBER_UNIQUE_NAME, MEMBER_VALUE ON ROWS
FROM [Adventure Works]
CELL PROPERTIES
VALUE, BACK_COLOR, FORE_COLOR,
FORMATTED_VALUE, FORMAT_STRING,
FONT_NAME, FONT_SIZE, FONT_FLAGS

The first four rows of the result in the MDX Results pane appear in the following table.

M O N T H O F Y EA R O RDER C O UN T

January 2,481

February 2,684

March 2,749

April 2,739

Even though the properties are part of the MDX select statement, they do not appear in the result set columns.
Nevertheless, the data is available for a report by using the extended properties feature. In an MDX query result
pane in SQL Server Management Studio, you can double-click on the cell and see the cell property values if they
are set in the cube. If you double-click on the first Order Count cell that contains 1,379, you will see a pop-up
window with the following cell properties:

P RO P ERT Y VA L UE

CellOrdinal 0

VALUE 2481

BACK_COLOR (null)

FORE_COLOR (null)

FORMATTED_VALUE 2,481

FORMAT_STRING #,#

FONT_NAME (null)

FONT_SIZE (null)

FONT_FLAGS (null)

If you create a report dataset with this query and bind the dataset to a table, you can see the default VALUE
property for a field, for example, =Fields!Month_of_Year!Value . If you set this expression as the sort expression
for the table, your results will be to sort the table alphabetically by month because the Value field uses a String
data type. To sort the table in so that the months are in the order they occur in the year with January first and
December last, use the following expression:
=Fields!Month_of_Year("MEMBER_VALUE")

This sorts the value of the field in its original integer data type from the data source.

See Also
Expressions (Report Builder and SSRS)
Built-in Collections in Expressions (Report Builder and SSRS)
Dataset Fields Collection (Report Builder and SSRS)
Power Pivot Connection Type (SSRS)
11/2/2020 • 3 minutes to read • Edit Online

You can use SQL Server Analysis Services data processing extension to retrieve data from a Power Pivot
workbook that is published in a SharePoint Power Pivot Gallery.
Use the information in this topic to build a data source. For step-by-step instructions, see Add and Verify a Data
Connection (Report Builder and SSRS).

Prerequisites
The Power Pivot data source must be published in a Power Pivot Gallery on a SharePoint site.
To support connections from Report Builder to a Power Pivot workbook, you must have SQL Server 2008 R2
ADOMD.NET on your workstation computer. This client library is installed with Power Pivot for Excel, but if you
are using a computer that does not have this application, you must download and install ADOMD.NET from the
SQL Server 2008 R2 Feature Pack.

Data Source Type


Use report data source type Microsoft SQL Ser ver Analysis Ser vices .

Connection String
The connection string is the URL to Power Pivot workbook published on SharePoint in the Power Pivot Gallery
or other library, for example, https://contoso-srv/subsite/PowerPivotLibrary/ContosoSales.xlsx .

Credentials
Specify the credentials that you need to access the Power Pivot workbook and SharePoint site, for example,
Windows Authentication (Integrated Security). For more information, see Create data connection strings -
Report Builder & SSRS or Specify Credential and Connection Information for Report Data Sources.

Queries
After you connect to the Power Pivot data source, use the MDX graphical query to build a query by browsing
and selecting from the underlying data structures. After you build a query, run the query to see sample data in
the results pane.
The query designer analyzes the query to determine the dataset fields. You can also manually edit the dataset
field collection in the Repor t Data pane. For more information, see Add, Edit, Refresh Fields in the Report Data
Pane (Report Builder and SSRS).

Filters
In the Filters pane, specify dimensions and members to filter out or to include in the query results.

Parameters
In the Filters pane, select the Parameters option for a filter to automatically create a report parameter with
available values that correspond to the filter selections.
Remarks
If you open Report Builder from the Power Pivot workbook in a Power Pivot Gallery, the PivotTables, PivotCharts,
slicers, and other layout and analytical features from the Power Pivot workbook are not re-created in the report.
Instead, the blank report includes a preconfigured data source that points to the data in the Power Pivot
workbook. Designing reports based on a Power Pivot workbook can be labor-intensive and time-consuming
depending on the number of slicers, filters, and tables or charts that you want to re-create in the report. A better
approach is to envision the presentation of the data that you want in a report independently from the Power
Pivot design.
The data in a Power Pivot workbook is highly compressed; data retrieved from the Power Pivot workbook for a
report is not compressed. Use the query designer to specify filters and parameters to limit the data to just what
is needed in the report.
Unlike connecting to an Analysis Services cube, a Power Pivot model has no hierarchies. To provide similar
functionality to related slicers in the workbook, you must create cascading parameters in the report. For more
information, see Add Cascading Parameters to a Report (Report Builder and SSRS).
In some cases, you might need to adjust expressions to accommodate the underlying data values from the
Power Pivot model. You might need to modify expressions to convert data to the right data type or to add or
remove an aggregate function. For example, to convert data type from String to Integer, use =CInt . Always
verify that the report displays the expected values from the data in the Power Pivot model before you publish
the report.
Preview images of a report in a Power Pivot Gallery are generated only if the following conditions are met:
The report and the Power Pivot workbook that provides the data must be stored together in the same
Power Pivot Gallery.
The report contains only Power Pivot data from a Power Pivot data source.

See Also
Analysis Services MDX Query Designer User Interface (Report Builder)
Expressions (Report Builder and SSRS)
SharePoint List Connection Type (SSRS)
11/2/2020 • 8 minutes to read • Edit Online

APPLIES TO: SQL Server 2016 Power BI Report Server ✔


️ SharePoint
To include data from a Microsoft SharePoint list in your report, you must add or create a dataset that is based on
a report data source of type Microsoft SharePoint List. This is a built-in data source type based on the Microsoft
SQL Server Reporting Services SharePoint List data extension. Use this data source type to connect to and
retrieve list data from SharePoint 2013 and later.
Use the information in this topic to build a data source. For step-by-step instructions, see Add and Verify a Data
Connection (Report Builder and SSRS).

Connection String
The connection string to a SharePoint list is the URL to the SharePoint site or subsite, for example,
https://MySharePointWeb/MySharePointSite or https://MySharePointWeb/MySharePointSite/Subsite .

The query designer automatically displays the SharePoint lists that you have sufficient permissions to access.
For more connection string examples, see Create data connection strings - Report Builder & SSRS.

Credentials
Credentials are required to run queries, to preview the report locally, and to preview the report from the report
server. After you publish your report, you may need to change the credentials for the data source so that when
the report runs on the report server, the permissions to retrieve the data are valid. The types of credentials that
can be used with this data extension depend on the SharePoint technology configuration for the SharePoint list
that you are using as a data source.
The following tables outline credential retrieval behavior for the SharePoint list extension, when connecting to a
local farm SharePoint list and to a remote SharePoint list.
Table 1 is for reports deployed to a legacy Windows SharePoint Site. A legacy Windows site supports only
Kerberos, NTLM, and Forms Based Authentication (FBA). Table 2 is for reports deployed to a Claims-based
SharePoint site.
Table 1

C L A SSIC M O DE W IN DO W S
RET RIEVA L T Y P E SUP P O RT ED C REDEN T IA L S A UT H EN T IC AT IO N *C L A IM S A UT H EN T IC AT IO N

Local farm SharePoint List Windows Authentication Yes Yes


(integrated) or SharePoint
User Token

Stored, Prompt, None (with Yes No


Windows credentials)

Stored and prompt


credentials with non-
Windows credentials is not
supported.
C L A SSIC M O DE W IN DO W S
RET RIEVA L T Y P E SUP P O RT ED C REDEN T IA L S A UT H EN T IC AT IO N *C L A IM S A UT H EN T IC AT IO N

Remote SharePoint List Windows Authentication Yes No


(integrated) or SharePoint
User Token Forms-based authentication
and Claims authentication
are not supported for
remote SharePoint lists.

Stored, Prompt, None (with Yes No


Windows credentials)
Forms-based authentication
Stored and prompt and Claims authentication
credentials with non- are not supported for
Windows credentials is not remote SharePoint lists.
supported.

*Windows authentication, Forms Based authentication (FBA), Secure Application Markup Language (SAML)
tokens, other identity providers or a combination of more than one of the above mentioned authentication
providers.
Table 2

C L A SSIC M O DE W IN DO W S
RET RIEVA L T Y P E SUP P O RT ED C REDEN T IA L S A UT H EN T IC AT IO N *C L A IM S A UT H EN T IC AT IO N

Local Farm SharePoint List Windows Authentication Yes Yes


(integrated) or SharePoint
User Token

Stored, Prompt, None (with No No


Windows credentials)

Stored and prompt


credentials with non-
Windows credentials is not
supported.

Remote SharePoint List Windows Authentication Yes No


(integrated) or SharePoint
User Token Forms-based authentication
and Claims authentication
are not supported for
remote SharePoint lists.

Stored, Prompt, None (with No No


Windows credentials)
Forms-based authentication
Stored and prompt and Claims authentication
credentials with non- are not supported for
Windows credentials is not remote SharePoint lists.
supported.

*Windows authentication, Forms Based authentication (FBA), Secure Application Markup Language (SAML)
tokens, other identity providers or a combination of more than one of the above mentioned authentication
providers.
Windows Authentication
For a SharePoint technology that is configured to work with a report server in Trusted Account mode, this option
is not supported. This applies only to releases prior to SQL Server 2012 Reporting Services.
For a SharePoint technology that is configured to work with a report server in Windows Integrated mode, this
option applies to both the current Windows user and the current SharePoint user.
For a SharePoint technology that is configured to work without a Report Server (local mode), this option is not
supported. For more information on local mode, see Local Mode vs. Connected Mode Reports in the Report
Viewer (Reporting Services in SharePoint Mode).
Credentials are not required (Do not use credentials):
To use this option, the unattended execution account must be configured on the report server. For more
information, see Configure the Unattended Execution Account (Report Server Configuration Manager).
For information about Claims authentication support across the Microsoft BI stack, see Using Claims
Authentication across the Microsoft BI Stack.
For more information, see Create data connection strings - Report Builder & SSRS, Specify Credential and
Connection Information for Report Data Sources, and Data Sources Supported by Reporting Services (SSRS).

Queries
To design a query, create a new dataset based on the data source, and then open the associated query designer.
For more information, see Create a Shared Dataset or Embedded Dataset (Report Builder and SSRS).
The SharePoint List graphical query designer displays four panes:
SharePoint Lists Displays a list of all the SharePoint lists on the site for this data source. Select a list and then
select the fields that you want in your query. The names of fields in this pane are the SharePoint friendly names,
also known as display names. Hover over an item to display the following properties in the tooltip:
Name The unique name of the field.
Identifier The unique identifier of the field.
Field Type The data type of the field.
Hidden Whether the field displays in the SharePoint list view.
Selecting fields from multiple lists is not supported. You can create a dataset for each list and select fields from
each dataset. If the lists have a common field, you can use the Lookup function in a tablix data region that is
bound to one dataset to retrieve a value from the other dataset that is not bound to the data region. For more
information, see Lookup Function (Report Builder and SSRS).
Selected Fields Displays the fields that you have selected. The names of fields in this pane are friendly
names that a SharePoint user has specified. When you close the query designer, you see these names in
the dataset field collection in the Report Data pane. The relationship between unique names and friendly
names is available in the Dataset Properties Dialog Box, Fields (Report Builder) page.
Applied Filters Limits the data that is returned from the SharePoint list, before the data is returned to
the report. Select the field name, operator, and value to use to limit the data that is retrieved in the list.
The operators vary depending on the data type of the value that you select.
You cannot change the sort order or specify groups in the graphical query designer. To do that, set sort
expressions on the report dataset, and group expressions on the data regions in the report. Query
parameters are not supported. To filter data in the report, use report filters or report parameters that you
create. For more information, see Filter, Group, and Sort Data (Report Builder and SSRS) and Report
Parameters (Report Builder and Report Designer).
Quer y Results Displays example rows that are returned when the query runs. If the SharePoint list
values change frequently on the SharePoint site, the values that you see in the query results pane might
differ from the values that you see in the report.
Selected Fields Displays the fields that you have selected. The names of fields in this pane are friendly
names that a SharePoint user has specified. When you close the query designer, you see these names in
the dataset field collection in the Report Data pane. The relationship between unique names and friendly
names is available in the Dataset Properties Dialog Box, Fields (Report Builder) page.
Applied Filters Limits the data that is returned from the SharePoint list, before the data is returned to
the report. Select the field name, operator, and value to use to limit the data that is retrieved in the list.
The operators vary depending on the data type of the value that you select.
You cannot change the sort order or specify groups in the graphical query designer. To do that, set sort
expressions on the report dataset, and group expressions on the data regions in the report. Query
parameters are not supported. To filter data in the report, use report filters or report parameters that you
create. For more information, see Filter, Group, and Sort Data (Report Builder and SSRS) and Report
Parameters (Report Builder and Report Designer).
Quer y Results Displays example rows that are returned when the query runs. If the SharePoint list
values change frequently on the SharePoint site, the values that you see in the query results pane might
differ from the values that you see in the report.
For more information, see SharePoint List Query Designer (Report Builder).
Query Text
To view the query that is generated by the graphical query designer, switch to the text-based query designer. In
this view, you can see the XML that is created by the graphical query designer. The XML includes elements for
the list name, the field collection, and the filter.
Example 1. Specified fields for a list
The following example shows a well-formed SharePoint query:

<RSSharePointList>
<listName>MyList</listName>
<viewFields>
<FieldRef Name="Field1"/>
<FieldRef Name="Field4"/>
</viewFields>
<Query>
<Where>
<And>
<Gt>
<FieldRef Name="Field1"/>
<Value Type="Integer">1</Value>
</Gt>
<IsNotNull>
<FieldRef Name="Field2"/>
<Value Type="string"/>
</IsNotNull>
</And>
</Where>
</Query>
</RSSharePointList>

You can edit this view of the query as long as it remains well-formed XML text.
Example 2. All fields for a list
You can also specify only the name of a list, and all fields, including hidden fields, are returned. The following
example retrieves all the fields from a list that is named Tasks:
<RSSharePointList>
<listName>Tasks</listName>
</RSSharePointList>

All fields for the list Tasks are returned in the query results.

Parameters
Parameters are not supported by this data extension.

How-To Topics
This section contains step-by-step instructions for working with data connections, data sources, and datasets.
Add and Verify a Data Connection (Report Builder and SSRS)
Create a Shared Dataset or Embedded Dataset (Report Builder and SSRS)
Add a Filter to a Dataset (Report Builder and SSRS)

Related Sections
These sections of the documentation provide in-depth conceptual information about report data, as well as
procedural information about how to define, customize, and use parts of a report that are related to data.
Report Datasets (SSRS)
Provides an overview of accessing data for your report.
Create data connection strings - Report Builder & SSRS
Provides information about data connections and data sources.
Report Embedded Datasets and Shared Datasets (Report Builder and SSRS)
Provides information about embedded and shared datasets.
Dataset Fields Collection (Report Builder and SSRS)
Provides information about the dataset field collection generated by the query.
Data Sources Supported by Reporting Services (SSRS).
Provides in-depth information about platform and version support for each data extension.

See Also
Report Parameters
Filter, Group, and Sort Data
Expressions (Report Builder and SSRS)
More questions? Try asking the Reporting Services forum
Azure SQL Connection Type (SSRS)
3/5/2021 • 8 minutes to read • Edit Online

Microsoft Azure SQL Database is a cloud-based, hosted relational database built on SQL Server technologies. To
include data from SQL Database in your report, you must have a dataset that is based on a report data source of
type SQL Database. This built-in data source type is based on the SQL Database data extension. Use this data
source type to connect to and retrieve data from SQL Database.
This data extension supports multivalued parameters, server aggregates, and credentials managed separately
from the connection string.
SQL Database is similar to an instance of SQL Server on your premises and getting data from SQL Database is,
with a few exceptions, identical to getting data from SQL Server.

NOTE
When opening a connection to a SQL Database, set the connection timeout to 30 seconds.

For more information, see Microsoft Azure SQL Database on docs.microsoft.com.


Use the information in this topic to build a data source. For step-by-step instructions, see Add and Verify a Data
Connection (Report Builder and SSRS).

Connection String
When you connect to SQL Database, you're connecting to a database object in the cloud. Just like onsite
databases, the hosted database might have multiple schemas that have multiple tables, views, and stored
procedures. You specify the database object to use in the query designer. If you don't specify a database in the
connection string, you connect to the default database that the administrator assigned to you.
Contact your database administrator for connection information and for the credentials to use to connect to the
data source. The following connection string example specifies a hosted sample database named
AdventureWorks.

Data Source=<host>;Initial Catalog=AdventureWorks; Encrypt=True;

Also, you use the Data Sources Proper ties dialog box to provide credentials such as user name and
password. The User Id and Password options are automatically appended to the connection string; you don't
need to type them as part of the connection string.
For more information and connection string examples, see Create data connection strings - Report Builder &
SSRS.

Credentials
Windows Authentication (integrated security) isn't supported. If you attempt to connect to SQL Database using
Windows Authentication an error occurs. SQL Database supports only SQL Server Authentication (user name
and password) and users must provide credentials (login and password) every time they connect to SQL
Database.
Credentials must be sufficient to access the database. Depending on your query, you might need other
permissions, such as sufficient permissions to run stored procedures and access tables and views. The owner of
the external data source must configure credentials that are sufficient to provide read-only access to the
database objects that you need.
From a report authoring client, the following options are available to specify credentials:
Use a stored user name and password. To negotiate the double hop that occurs when the database that
contains the report data is different than the report server, select options to use credentials as Windows
credentials. You can also choose to impersonate the authenticated user after connecting to the data
source.
No credentials are required. To use this option, you must have the unattended execution account
configured on the report server. For more information, see Configure the Unattended Execution Account
(Report Server Configuration Manager).
For more information, see Create data connection strings - Report Builder & SSRS or Specify Credential and
Connection Information for Report Data Sources.

Queries
A query specifies which data to retrieve for a report dataset. The columns in the result set for a query populate
the field collection for a dataset. If the query returns multiple result sets, the report processes only the first result
set that the query retrieves. Although there are some differences between SQL Server and SQL Databases such
as the sizes of databases supported, writing queries against SQL Databases is similar to writing queries against
SQL Server databases. Some Transact-SQL statements such as BACKUP aren't supported in SQL Database, but
they aren't ones that you use in report queries. For more information, see SQL Server Connection Type (SSRS).
By default, if you create a new query or open an existing query that can be represented in the graphical query
designer, the relational query designer is available. You can specify a query in the following ways:
Build a query interactively. Use the relational query designer that displays a hierarchical view of tables,
views, stored procedures, and other database items, organized by the database schema. Select columns
from tables or views, or specify stored procedures or table-valued functions. Limit the number of rows of
data to retrieve by specifying filter criteria. Customize the filter when the report runs by setting the
parameter option.
Type or paste a query. Use the text-based query designer to enter Transact-SQL text directly, to paste
query text from another source, to enter complex queries that cannot be built by using the relational
query designer or to enter query-based expressions.
Import an existing query from a file or report. Use the Impor t query button from either query designer
to browse to a .sql file or .rdl file and import a query.
The text-based query designer supports the following two modes:
Text Type Transact-SQL commands that select data from the data source.
Stored Procedure Choose from a list of stored procedures.
For more information, see Relational Query Designer User Interface (Report Builder) and Text-based Query
Designer User Interface (Report Builder).
The graphical query designer that SQL Database uses provides built-in support for grouping and aggregates to
help you write queries that retrieve only summary data. The Transact-SQL language features are: the GROUP BY
clause, DISTINCT keyword, and aggregates such as SUM and COUNT. The text-based query designer provides
full support for the Transact-SQL language, including grouping and aggregates. For more information about
Transact-SQL, see Transact-SQL Reference (Database Engine).
Using Query Type Text
In the text-based query designer, you type Transact-SQL commands to define the data in a dataset. For example,
the following Transact-SQL query selects the names of all employees who are marketing assistants:

SELECT
HumanResources.Employee.BusinessEntityID
,HumanResources.Employee.JobTitle
,Person.Person.FirstName
,Person.Person.LastName
FROM
Person.Person
INNER JOIN HumanResources.Employee
ON Person.Person.BusinessEntityID = HumanResources.Employee.BusinessEntityID
WHERE HumanResources.Employee.JobTitle = 'Marketing Assistant'

Click the Run button (! ) on the toolbar to run the query and display a result set.
To parameterize this query, add a query parameter. For example, change the WHERE clause to the following:

WHERE HumanResources.Employee.JobTitle = (@JobTitle)

When you run the query, report parameters that correspond to query parameters are automatically created. For
more information, see Query Parameters later in this topic.
Using Query Type StoredProcedure
You can specify a stored procedure for a dataset query in one of the following ways:
In the Dataset Proper ties dialog box, set the Stored Procedure option. Choose from the drop-down
list of stored procedures and table-valued functions.
In the relational query designer, in the Database view pane, select a stored procedure or table-valued
function.
In the text-based query designer, select StoredProcedure from the toolbar.
After you select a stored procedure or table-valued function, you can run the query. You then are prompted for
input parameter values. When you run the query, report parameters that correspond to input parameters are
automatically created. For more information, see Query Parameters later in this topic.
Only the first result set that is retrieved for a stored procedure is supported. If a stored procedure returns
multiple result sets, only the first one is used.
If a stored procedure has a parameter that has a default value, you can access that value by using the DEFAULT
keyword as a value for the parameter. If the query parameter is linked to a report parameter, the user can type
or select the word DEFAULT in the input box for the report parameter.
For more information about stored procedures, see Stored Procedures (Database Engine).

Parameters
When query text contains query variables or stored procedures that have input parameters, the corresponding
query parameters for the dataset and report parameters for the report are automatically generated. The query
text must not include the DECLARE statement for each query variable.
For example, the following SQL query creates a report parameter named EmpID :
SELECT FirstName, LastName FROM HumanResources.Employee E INNER JOIN
Person.Contact C ON E.ContactID=C.ContactID
WHERE EmployeeID = (@EmpID)

By default, each report parameter has data type Text and an automatically created dataset to provide a drop-
down list of available values. After the report parameters are created, you might have to change default values.
For more information, see Report Parameters (Report Builder and Report Designer).

Remarks
A l t e rn a t e Da t a E x t e n s i o n s

You can also retrieve data from a SQL Server database by using an ODBC data source type. Connecting to SQL
Database by using OLE DB isn't supported.
For more information, see ODBC Connection Type (SSRS).
P l a t f o rm a n d V e rs i o n I n f o rma t i o n

For more information about platform and version support, see Data Sources Supported by Reporting Services
(SSRS).

Azure SQL Database and AAD


You can use the Azure SQL database with Azure Active Directory (AAD).
This scenario is supported when you set up the following items properly:
Active Directory Authentication Library for SQL Server (ADALSQL) is installed on the report server.
Active Directory Federation Services (ADFS) is configured to federate across on-premises Active Directory
(AD) and AAD.
Kerberos Constrained Delegation (KCD) is configured from the report server to the ADFS server.
Configure the report/data source to authenticate to Azure SQL Database as the user viewing the report.

How-To Topics
This section contains step-by-step instructions for working with data connections, data sources, and datasets.
Add and Verify a Data Connection (Report Builder and SSRS)
Create a Shared Dataset or Embedded Dataset (Report Builder and SSRS)
Add a Filter to a Dataset (Report Builder and SSRS)

Related Sections
These sections of the documentation provide in-depth conceptual information about report data, and
procedural information about how to define, customize, and use parts of a report that are related to data.
Report Datasets (SSRS)
Provides an overview of accessing data for your report.
Create data connection strings - Report Builder & SSRS
Provides information about data connections and data sources.
Report Embedded Datasets and Shared Datasets (Report Builder and SSRS)
Provides information about embedded and shared datasets.
Dataset Fields Collection (Report Builder and SSRS)
Provides information about the dataset field collection generated by the query.
Data Sources Supported by Reporting Services (SSRS).
Provides in-depth information about platform and version support for each data extension.

See Also
Microsoft Azure SQL Database on docs.microsoft.com
Report Parameters (Report Builder and Report Designer)
Filter, Group, and Sort Data (Report Builder and SSRS)
Expressions (Report Builder and SSRS)
OLE DB Connection Type (SSRS)
11/2/2020 • 4 minutes to read • Edit Online

To include data from an OLE DB data provider, you must have a dataset that is based on a report data source of
type OLE DB. This built-in data source type is based on the Microsoft SQL Server Reporting Services OLE DB
data processing extension.
OLE DB is a data access technology that enables clients to connect to a variety of data providers. After you select
the data source type OLE DB, you must select a specific data provider. Support for features such as parameters
and credentials are dependent on the data provider that you select.
Use the information in this topic to build a data source. For step-by-step instructions, see Add and Verify a Data
Connection (Report Builder and SSRS).

Connection String
The connection string for the OLE DB data processing extension depends on the data provider that you want. A
typical connection string contains name/value pairs that are supported by the data provider. For example, the
following connection string specifies the OLE DB provider for SQL Server Native Client and the AdventureWorks
database:

Provider=SQLNCLI10.1;Data Source=server; Initial Catalog=AdventureWorks

The connection string that you use depends on the external data source that you are connecting to. To set
connection string properties specific to a data provider, from the General page of the Data Source
Proper ties dialog box, click the Build button to open the Connection Proper ties dialog box. Set extended
data source properties through the Data Link Proper ties dialog box.
For examples of connection strings, see Create data connection strings - Report Builder & SSRS.

Credentials
Credentials are required to run queries, to preview the report locally, and to preview the report from the report
server.
After you publish your report, you may need to change the credentials for the data source so that when the
report runs on the report server, the permissions to retrieve the data are valid.
For more information, see Specify Credential and Connection Information for Report Data Sources.
Sp e c i a l C h a ra c t e rs i n a P a s s w o rd

If you configure the OLE DB data source to prompt for a password or to include the password in the connection
string, and a user enters the password with special characters such as punctuation marks, some underlying data
source drivers cannot validate the special characters. When you process the report, the message "Not a valid
password" may indicate this problem.

NOTE
It is recommended that you do not add login information such as passwords to the connection string. Report Builder
provides a separate tab on the Data Source dialog box that you can use to enter credentials.
Parameters
Some OLE DB providers support unnamed parameters and not named parameters. Parameters are passed by
position by using a placeholder in the query. The placeholder character is determined by the syntax that is
supported by the data provider.

Remarks
OLEDB is a native technology for building data providers for specific data sources. OLEDB is based on COM
(Component Object Model) interfaces. OLEDB is a later technology than ODBC and earlier than ADO.NET data
providers. OLEDB data providers are registered with the operating system like any other COM component.
OLEDB data providers are available from Microsoft and third party vendors. Microsoft also provides MSDASQL,
an OLEDB data provider that bridges communication to ODBC drivers. For more information, see ODBC
Connection Type (SSRS).
To successfully retrieve the data that you want, you must provide query syntax that is supported by the data
provider. Parameter support varies by data provider. For more information, see topics that are specific to the
data provider that you select. For example:
Analysis Services OLE DB Provider (Analysis Services - Multidimensional Data)
SQL Server Native Client (OLE DB)
For more information about specific OLE DB data providers, see Data Sources Supported by Reporting Services
(SSRS).

How-To Topics
This section contains step-by-step instructions for working with data connections, data sources, and datasets.
Add and Verify a Data Connection (Report Builder and SSRS)
Create a Shared Dataset or Embedded Dataset (Report Builder and SSRS)
Add a Filter to a Dataset (Report Builder and SSRS)

Related Sections
These sections of the documentation provide in-depth conceptual information about report data, as well as
procedural information about how to define, customize, and use parts of a report that are related to data.
Report Datasets (SSRS)
Provides an overview of accessing data for your report.
Create data connection strings - Report Builder & SSRS
Provides information about data connections and data sources.
Report Embedded Datasets and Shared Datasets (Report Builder and SSRS)
Provides information about embedded and shared datasets.
Dataset Fields Collection (Report Builder and SSRS)
Provides information about the dataset field collection generated by the query.
Data Sources Supported by Reporting Services (SSRS).
Provides in-depth information about platform and version support for each data extension.

See Also
Report Parameters (Report Builder and Report Designer)
Filter, Group, and Sort Data (Report Builder and SSRS)
Expressions (Report Builder and SSRS)
SQL Server Parallel Data Warehouse Connection
Type (SSRS)
11/2/2020 • 7 minutes to read • Edit Online

Microsoft SQL Server 2016 Parallel Data Warehouse is a scalable data warehouse appliance that delivers
performance and scalability through massively parallel processing. Microsoft Azure Synapse Analytics uses SQL
Server databases for distributed processing and data storage.
The appliance partitions large database tables across multiple physical nodes, with each node running its own
instance of SQL Server. When a report connects to Microsoft Azure Synapse Analytics to retrieve report data, it
connects to the control node, which manages query processing, in the Microsoft Azure Synapse Analytics
appliance. After the connection is made, there are no differences between working with an instance of SQL
Server that is and is not within a Microsoft Azure Synapse Analytics environment.
To include data from Microsoft Azure Synapse Analytics in your report, you must have a dataset that is based on
a report data source of type Microsoft SQL Server Parallel Data Warehouse. This built-in data source type is
based on the Microsoft SQL Server Parallel Data Warehouse data extension. Use this data source type to connect
to and retrieve data from Microsoft Azure Synapse Analytics.
This data extension supports multivalued parameters, server aggregates, and credentials managed separately
from the connection string.
Use the information in this topic to build a data source. For step-by-step instructions, see Add and Verify a Data
Connection (Report Builder and SSRS).

Connection String
When you connect to Microsoft Azure Synapse Analytics, you are connecting to a database object within a
Microsoft Azure Synapse Analytics appliance. You specify the database object to use in the query designer. If you
do not specify a database in the connection string, you connect to the default database that the administrator
assigned to you. Contact your database administrator for connection information and for the credentials to use
to connect to the data source. The following connection string example specifies the sample database,
CustomerSales , in the Microsoft Azure Synapse Analytics appliance:

HOST=<IP address>; database= CustomerSales; port=<port>

In addition, you use the Data Sources Proper ties dialog box to provide credentials such as user name and
password, The User Id and Password options are automatically appended to the connection string, you do not
need to type them as part of the connection string. The user interface also provides options to specify the IP
address of the control node in the Microsoft Azure Synapse Analytics appliance and the port number. By default,
the port is 17000. The port is configurable by an administrator and your connection string might use a different
port number.
For more information about connection string examples, see Create data connection strings - Report Builder &
SSRS.

Credentials
Microsoft Azure Synapse Analytics provides its own security technology to implement and store user names and
passwords. You cannot use Windows Authentication. If you attempt to connect to Microsoft Azure Synapse
Analytics using Windows Authentication an error occurs.
Credentials must be sufficient to access the database. Depending on your query, you might need other
permissions, such as sufficient permissions to access tables and views. The owner of the external data source
must configure credentials that are sufficient to provide read-only access to the database objects that you need.
From a report authoring client, the following options are available to specify credentials:
Use a stored user name and password. To negotiate the double hop that occurs when the database that
contains the report data is different than the report server, select options to use credentials as Windows
credentials. You can also chose to impersonate the authenticated user after connecting to the data source.
No credentials are required. To use this option, you must have the unattended execution account
configured on the report server. For more information, see Configure the Unattended Execution Account
(Report Server Configuration Manager).
For more information, see Create data connection strings - Report Builder & SSRS or Specify Credential and
Connection Information for Report Data Sources.

Queries
A query specifies which data to retrieve for a report dataset.
The columns in the result set for a query populate the field collection for a dataset. If the query returns multiple
result sets, the report processes only the first result set that a query retrieves. By default, if you create a new
query or open an existing query that can be represented in the graphical query designer, the relational query
designer is available. You can specify a query in the following ways:
Build a query interactively. Use the relational query designer that displays a hierarchical view of tables,
views, and other database items, organized by database schema. Select columns from tables or views.
Limit the number of rows of data to retrieve by specifying filter criteria, grouping, and aggregates.
Customize the filter when the report runs by setting the parameter option.
Type or paste a query. Use the text-based query designer to enter SQL text directly, to paste query text
from another source, to enter complex queries that cannot be built by using the relational query designer,
or to enter query-based expressions.
Import an existing query from a file or report. Use the Impor t query button from either query designer
to browse to a .sql file or .rdl file and import a query.
For more information, see Relational Query Designer User Interface (Report Builder) and Text-based Query
Designer User Interface (Report Builder).
The text-based query designer supports the Text mode in which you type SQL commands that select data from
the data source.
Text
You use SQL with Microsoft Azure Synapse Analytics and Transact-SQL with SQL Server. The two dialects of the
SQL language are very similar. Queries written for the SQL Server data source connection type can typically be
used for the SQL Server 2016 Parallel Data Warehouse data source connection type.
A query that retrieves report data from a large database, including a data warehouse such as Microsoft Azure
Synapse Analytics, might generate a result set that has a very large number of rows unless you aggregate and
summarize data to reduce the number of rows that the query returns. You can write queries that include
aggregates and grouping by using either the graphical or text-based query designer.
SQL support the clause, keyword, and aggregates that the query designer provides to summarize data.
The graphical query designer used by Microsoft Azure Synapse Analytics provides built-in support for grouping
and aggregates to help you write queries that retrieve only summary data. The SQL language features are: the
GROUP BY clause, DISTINCT keyword, and aggregates such as SUM and COUNT. The text-based query designer
provides full support for the SQL language, including grouping and aggregates.
For more information about Transact-SQL, see Transact-SQL Reference (Database Engine).
Using Query Type Text
In the text-based query designer, you type SQL commands to define the data in a dataset. The queries that you
use to retrieve data from Microsoft Azure Synapse Analytics are the same as ones you use to retrieve data from
instances of SQL Server that are not running within a Microsoft Azure Synapse Analytics application. For
example, the following SQL query selects the names of all employees who are marketing assistants:

SELECT
HumanResources.Employee.BusinessEntityID
,HumanResources.Employee.JobTitle
,Person.Person.FirstName
,Person.Person.LastName
FROM
Person.Person
INNER JOIN HumanResources.Employee
ON Person.Person.BusinessEntityID = HumanResources.Employee.BusinessEntityID
WHERE HumanResources.Employee.JobTitle = 'Marketing Assistant'

Click the Run button (! ) on the toolbar to run the query and display a result set.
To parameterize this query, add a query parameter. For example, change the WHERE clause to the following:
WHERE HumanResources.Employee.JobTitle = (@JobTitle)

When you run the query, report parameters that correspond to query parameters are automatically created. For
more information, see Query Parameters later in this topic.

Parameters
When query text contains query variables or stored procedures that have input parameters, the corresponding
query parameters for the dataset and report parameters for the report are automatically generated. The query
text must not include the DECLARE statement for each query variable.
For example, the following SQL query creates a report parameter named EmpID :

SELECT FirstName, LastName FROM HumanResources.Employee E INNER JOIN


Person.Contact C ON E.ContactID=C.ContactID
WHERE EmployeeID = (@EmpID)

By default, each report parameter has data type Text and an automatically created dataset to provide a drop-
down list of available values. After the report parameters are created, you might have to change default values.
For more information, see Report Parameters (Report Builder and Report Designer).

Remarks
P l a t f o rm a n d V e rs i o n I n f o rma t i o n

For more information about platform and version support, see Data Sources Supported by Reporting Services
(SSRS).

How-To Topics
This section contains step-by-step instructions for working with data connections, data sources, and datasets.
Add and Verify a Data Connection (Report Builder and SSRS)
Create a Shared Dataset or Embedded Dataset (Report Builder and SSRS)
Add a Filter to a Dataset (Report Builder and SSRS)

Related Sections
These sections of the documentation provide in-depth conceptual information about report data, and
procedural information about how to define, customize, and use parts of a report that are related to data.
Report Datasets (SSRS)
Provides an overview of accessing data for your report.
Create data connection strings - Report Builder & SSRS
Provides information about data connections and data sources.
Report Embedded Datasets and Shared Datasets (Report Builder and SSRS)
Provides information about embedded and shared datasets.
Dataset Fields Collection (Report Builder and SSRS)
Provides information about the dataset field collection generated by the query.
Data Sources Supported by Reporting Services (SSRS).
Provides in-depth information about platform and version support for each data extension.

Next steps
Report Parameters
Filter, Group, and Sort Data
Expressions
More questions? Try asking the Reporting Services forum
Teradata Connection Type (SSRS)
11/2/2020 • 2 minutes to read • Edit Online

To include data from Teradata in your report, you must have a dataset that is based on a report data source of
type Teradata. This built-in data source type is based on the .NET Managed Provider for Teradata data processing
extension.
Use the information in this topic to build a data source. For step-by-step instructions, see Add and Verify a Data
Connection (Report Builder and SSRS).

Connection String
Contact your database administrator for connection information and for the credentials to use to connect to the
data source. The following connection string example specifies a Teradata data source on the server specified
with an IP address:

data source=<IP Address>

For more connection string examples, see Create data connection strings - Report Builder & SSRS.

Credentials
Credentials are required to run queries, to preview the report locally, and to preview the report from the report
server.
After you publish your report, you may need to change the credentials for the data source so that when the
report runs on the report server, the permissions to retrieve the data are valid.
For more information, see Create data connection strings - Report Builder & SSRS or Specify Credential and
Connection Information for Report Data Sources.

Remarks
Before you can connect a Teradata data source, the system administrator must have installed the version of the
.NET Data Provider for Teradata that supports retrieving data from Teradata. This data provider must be installed
on the same computer as Report Builder and also on the report server.
Not all report delivery modes are supported by this data provider. Delivering reports through data-driven
subscriptions is not supported for this data processing extension. For more information, see Use an External
Data Source for Subscriber Data (Data-Driven Subscription).

Report Models
To create a dataset from a report model that is based on a Teradata data source, the model must be designed in
Model Designer in SQL Server SQL Server Data Tools (SSDT) and published on a report server.

Related Sections
These sections of the documentation provide in-depth conceptual information about report data, as well as
procedural information about how to define, customize, and use parts of a report that are related to data.
Report Datasets (SSRS)
Provides an overview of accessing data for your report.
Create data connection strings - Report Builder & SSRS
Provides information about data connections and data sources.
Report Embedded Datasets and Shared Datasets (Report Builder and SSRS)
Provides information about embedded and shared datasets.
Dataset Fields Collection (Report Builder and SSRS)
Provides information about the field collection that is generated by the dataset query.
Data Sources Supported by Reporting Services (SSRS) Provides in-depth information about platform and
version support for each data extension.

See Also
Report Parameters (Report Builder and Report Designer)
Filter, Group, and Sort Data (Report Builder and SSRS)
Expressions (Report Builder and SSRS)
Oracle Connection Type (SSRS & Power BI Report
Server)
8/10/2021 • 5 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server 2016 Reporting Services and later ✔
️ Power BI Report Server
To use data from an Oracle database in your report, you must have a dataset that's based on a report data
source of type Oracle. This built-in data source type uses the Oracle Data Provider directly and requires an
Oracle client software component. This article explains how to download and install drivers for Reporting
Services, Power BI Report Server, Report Builder, and Power BI Desktop.
Use the information in this article to build a data source. For step-by-step instructions, see Add and Verify a Data
Connection (Report Builder and SSRS).

IMPORTANT
The following commands that use Oracle's OraProvCfg.exe tool to register Oracle's Managed and Unmanaged ODP.NET
drivers are provided as examples for use with the above Microsoft products. For the configuration of the ODP.NET drivers
specific to your environment, you may need to contact Oracle support or reference Oracle's documentation for
Configuring Oracle Data Provider for .NET.

64-bit drivers for the report servers


On the Oracle download site, install the Oracle 64-bit ODAC Oracle Universal Installer (OUI). You only need the
following steps when using Oracle ODAC drivers 12.2 and later. Otherwise, they install by default to a non-
machine-wide configuration for a new Oracle home installation. These steps assume you've installed the ODAC
18.x files to the c:\oracle64 folder.
Paginated (RDL ) Reports use Managed ODP.NET
Power BI Report Server and SQL Server Reporting Services 2016 and later all use Managed ODP.NET for
paginated (RDL) reports. Follow these steps to register Managed ODP.NET:
1. Register ODP.NET Managed Client to GAC:

C:\oracle64\product\18.0.0\client_1\odp.net\bin\4\OraProvCfg.exe /action:gac
/providerpath:C:\oracle64\product\18.0.0\client_1\odp.net\managed\common\Oracle.ManagedDataAccess.dll

2. Add ODP.NET Managed Client entries to machine.config:

C:\oracle64\product\18.0.0\client_1\odp.net\bin\4\OraProvCfg.exe /action:config /force /product:odpm


/frameworkversion:v4.0.30319
/providerpath:C:\oracle64\product\18.0.0\client_1\odp.net\managed\common\Oracle.ManagedDataAccess.dll

Power BI Reports use Unmanaged ODP.NET


Power BI Report Server uses Unmanaged ODP.NET for Power BI reports. Follow these steps to register
Unmanaged ODP.NET:
1. Register ODP.NET Unmanaged Client to GAC:
C:\oracle64\product\18.0.0\client_1\odp.net\bin\4\OraProvCfg.exe /action:gac
/providerpath:C:\oracle64\product\18.0.0\client_1\odp.net\bin\4\Oracle.DataAccess.dll

2. Add ODP.NET Unmanaged Client entries to machine.config:

C:\oracle64\product\18.0.0\client_1\odp.net\bin\4\OraProvCfg.exe /action:config /force /product:odp


/frameworkversion:v4.0.30319
/providerpath:C:\oracle64\product\18.0.0\client_1\odp.net\bin\4\Oracle.DataAccess.dll

32-bit drivers for Microsoft Report Builder


Microsoft Report Builder uses Managed ODP.NET for authoring paginated (RDL) reports. You only need the
following steps when using Oracle ODAC drivers 12.2 and later. Otherwise, they install by default to a non-
machine-wide configuration for a new Oracle home installation. These steps assume you've installed the ODAC
18.x files to the c:\oracle32 folder where Microsoft Report Builder is installed. Follow these steps to register
Managed ODP.NET:
1. On the Oracle download site, install the Oracle 32-bit ODAC Oracle Universal Installer (OUI).
2. Register ODP.NET Managed Client to GAC:

C:\oracle32\product\18.0.0\client_1\odp.net\bin\4\OraProvCfg.exe /action:gac
/providerpath:C:\oracle32\product\18.0.0\client_1\odp.net\managed\common\Oracle.ManagedDataAccess.dll

3. Add ODP.NET Managed Client entries to machine.config:

C:\oracle32\product\18.0.0\client_1\odp.net\bin\4\OraProvCfg.exe /action:config /force /product:odpm


/frameworkversion:v4.0.30319
/providerpath:C:\oracle32\product\18.0.0\client_1\odp.net\managed\common\Oracle.ManagedDataAccess.dll

64-bit drivers for Power BI Report Builder


NOTE
The following instructions apply to Power BI Report Builder version 15.7.01678.0001 and later. For versions before
15.7.01678.0001, follow the 32-bit drivers for Microsoft Repor t Builder instructions above.

Power BI Report Builder uses Managed ODP.NET for authoring paginated (RDL) reports. You only need the
following steps when using Oracle ODAC drivers 12.2 and later. Otherwise, they install by default to a non-
machine-wide configuration for a new Oracle home installation. These steps assume you've installed the ODAC
18.x files to the c:\oracle64 folder where Power BI Report Builder is installed. Follow these steps to register
Managed ODP.NET:
1. On the Oracle download site, install the Oracle 64-bit ODAC Oracle Universal Installer (OUI).
2. Register ODP.NET Managed Client to GAC:

C:\oracle64\product\18.0.0\client_1\odp.net\bin\4\OraProvCfg.exe /action:gac
/providerpath:C:\oracle64\product\18.0.0\client_1\odp.net\managed\common\Oracle.ManagedDataAccess.dll

3. Add ODP.NET Managed Client entries to machine.config:


C:\oracle64\product\18.0.0\client_1\odp.net\bin\4\OraProvCfg.exe /action:config /force /product:odpm
/frameworkversion:v4.0.30319
/providerpath:C:\oracle64\product\18.0.0\client_1\odp.net\managed\common\Oracle.ManagedDataAccess.dll

64-bit and 32-bit drivers for Power BI Desktop


Power BI Desktop uses Unmanaged ODP.NET for authoring Power BI reports. You only need the following
steps when using Oracle ODAC drivers 12.2 and later. Otherwise, they install by default to a non-machine-wide
configuration for a new Oracle home installation. These steps assume you've installed the ODAC 18.x files to the
c:\oracle64 folder for 64-bit Power BI Desktop or the c:\oracle32 folder for 32-bit Power BI Desktop. Follow these
steps to register Unmanaged ODP.NET:
64-bit Power BI Desktop
1. On the Oracle download site, install the Oracle 64-bit ODAC Oracle Universal Installer (OUI).
2. Register ODP.NET Unmanaged Client to GAC:

C:\oracle64\product\18.0.0\client_1\odp.net\bin\4\OraProvCfg.exe /action:gac
/providerpath:C:\oracle64\product\18.0.0\client_1\odp.net\bin\4\Oracle.DataAccess.dll

3. Add ODP.NET Unmanaged Client entries to machine.config:

C:\oracle64\product\18.0.0\client_1\odp.net\bin\4\OraProvCfg.exe /action:config /force /product:odp


/frameworkversion:v4.0.30319
/providerpath:C:\oracle64\product\18.0.0\client_1\odp.net\bin\4\Oracle.DataAccess.dll

32-bit Power BI Desktop


1. On the Oracle download site, install the Oracle 32-bit ODAC Oracle Universal Installer (OUI).
2. Register ODP.NET Unmanaged Client to GAC:

C:\oracle32\product\18.0.0\client_1\odp.net\bin\4\OraProvCfg.exe /action:gac
/providerpath:C:\oracle32\product\18.0.0\client_1\odp.net\bin\4\Oracle.DataAccess.dll

3. Add ODP.NET Unmanaged Client entries to machine.config:

C:\oracle32\product\18.0.0\client_1\odp.net\bin\4\OraProvCfg.exe /action:config /force /product:odp


/frameworkversion:v4.0.30319
/providerpath:C:\oracle32\product\18.0.0\client_1\odp.net\bin\4\Oracle.DataAccess.dll

Connection String
Contact your database administrator for connection information and for the credentials to use to connect to the
data source. The following connection string example specifies an Oracle database on the server named
"Oracle18" using Unicode. The server name must match what is defined in the Tnsnames.ora configuration file
as the Oracle server instance name.

Data Source="Oracle"; Unicode="True"

For more connection string examples, see Create data connection strings - Report Builder & SSRS.
Credentials
Credentials are required to run queries, to preview the report locally, and to preview the report from the report
server.
After you publish your report, you may need to change the credentials for the data source so that when the
report runs on the report server, the permissions to retrieve the data are valid.
For more information, see Specify Credential and Connection Information for Report Data Sources.

Queries
To create a dataset, you can either select a stored procedure from a drop-down list or create an SQL query. To
build a query, you must use the text-based query designer. For more information, see Text-based Query
Designer User Interface (Report Builder).
You can specify stored procedures that return only one result set. Using cursor-based queries aren't supported.

Parameters
If the query includes query variables, corresponding report parameters are automatically generated. Named
parameters are supported by this extension. For Oracle version 9 or later, multivalue parameters are supported.
Report parameters are created with default property values that you might need to modify. For example, each
report parameter is data type Text . After the report parameters are created, you might have to change default
values. For more information, see Report Parameters (Report Builder and Report Designer).

Remarks
Before you can connect an Oracle data source, the system administrator must have installed the version of the
.NET Data Provider for Oracle that supports retrieving data from the Oracle database. This data provider must
be installed on the same computer as Report Builder and also on the report server.
For more information, see the following articles:
How to use Reporting Services to configure and to access an Oracle data source
How to add permissions for the NETWORK SERVICE security principal
Alternate Data Extensions
You can also retrieve data from an Oracle database by using an OLE DB data source type. For more information,
see OLE DB Connection Type (SSRS).
Report Models
You can also create models based on an Oracle database.
Platform and Version Information
For more information about platform and version support, see Data Sources Supported by Reporting Services
(SSRS).

See Also
Report Parameters (Report Builder and Report Designer)
Filter, Group, and Sort Data (Report Builder and SSRS)
Expressions (Report Builder and SSRS)
SAP NetWeaver BI Connection Type (SSRS)
3/5/2021 • 5 minutes to read • Edit Online

To include data from a SAP NetWeaver® Business Intelligence external data source in your report, you must
have a dataset that is based on a report data source of type SAP NetWeaver Business Intelligence. This built-in
data source type is based on the data extension for the Microsoft .NET Framework Data Provider 1.0 for SAP
NetWeaver Business Intelligence.
This data extension enables you to retrieve multidimensional data from InfoCubes, MultiProviders (virtual
InfoCubes), and Web-enabled queries that are defined on a SAP NetWeaver Business Intelligence external data
source.
Use the information in this topic to build a data source. For step-by-step instructions, see Add and Verify a Data
Connection (Report Builder and SSRS).

Connection String
Contact the database administrator for connection information and for the credentials to use to connect to the
data source. The following connection string example specifies an SAP NetWeaver Business Intelligence data
source on a server using port 8000 and XML for Analysis Services (XMLA) over the Internet using SOAP:

DataSource=https://mySAPNetWeaverBIServer:8000/sap/bw/xml/soap/xmla

For more connection string examples, see Create data connection strings - Report Builder & SSRS.

Credentials
Credentials are required to run queries, to preview the report locally, and to preview the report from the report
server.
After you publish your report, you may need to change the credentials for the data source so that when the
report runs on the report server, the permissions to retrieve the data are valid.
For more information, see Specify Credential and Connection Information for Report Data Sources.

Queries
You can use the graphical query designer in Design or Query mode to build a Multidimensional Expression
(MDX) query by browsing the underlying data structures on the data source. At design time, you can
interactively run a query from the query designer to see the results. The query you build defines fields in the
dataset. At run time, the actual data is returned from the data source. Use the graphical query designer to
perform the following actions:
In Design mode, drag dimensions, members, member properties, and key figures from the data source
onto a Data pane to build a Multidimensional Expression (MDX) query. Drag calculated members from
the Calculated Members pane to the Data pane to define additional dataset fields.
In Query mode, drag dimensions, members, member properties, and key figures onto the Query pane or
type MDX text directly into the Query pane. Drag calculated members from the Calculated Members pane
to the Data pane to define additional dataset fields.
As you build queries, the query designer automatically adds default properties to the MDX query. To include
properties other than default properties, you must manually modify the MDX query.
For more information about working with this query designer, see SAP NetWeaver BI Query Designer User
Interface (Report Builder).

Extended Field Properties


The SAP NetWeaver Business Intelligence data source supports extended field properties. Extended field
properties are properties in addition to Value and IsMissing that are defined for a dataset field by the data
processing extension. Extended properties include predefined properties and custom properties. Predefined
properties are properties common to multiple data sources. Custom properties are unique to each data source.
Working with Field Properties
Extended field properties do not appear in the Report Data pane as items that you can drag onto your report
layout. Instead, you drag the parent field of the property onto the report and then change the default property
from Value to the property you want to use. For example, if the field name Calendar Year/Month Level 01 is
created in an MDX query designer by dropping a level from the Metadata pane onto the Query pane, you would
refer to the custom extended property Long Name in an expression using the following syntax:
=Fields!Calendar_Year_Month_Level_01("Long Name")

The name for an extended field property appears in the ToolTip when you hover over a field in the Metadata
pane. For more information about the query designers you can use to explore the underlying data, see SAP
NetWeaver BI Query Designer User Interface.

NOTE
Values exist for extended field properties only if the data source provides these values when your report runs and
retrieves the data for its datasets. You can then refer to those Field property values from any expression using the syntax
described below. However, because these fields are specific to this data provider and not part of the report definition
language, changes that you make to these values are not saved with the report definition.

Use either of the following syntaxes to refer to predefined extended properties in an expression:
Fields!FieldName.PropertyName
Fields!FieldName("PropertyName")
Use the following syntax to refer to custom extended properties in an expression:
Fields!FieldName("PropertyName")
Predefined Field Properties
The following table provides a list of predefined field properties that you can use for an SAP NetWeaver
Business Intelligence data source.

P RO P ERT Y TYPE DESC RIP T IO N O R EXP EC T ED VA L UE

Value Object Specifies the data value of the field.

IsMissing Boolean Indicates whether the field was found


in the resulting data set.

FormattedValue String Returns a formatted value for a key


figure.
P RO P ERT Y TYPE DESC RIP T IO N O R EXP EC T ED VA L UE

BackgroundColor String Returns the background color defined


in the database for the field.

Color String Returns the foreground color defined


in the database for the item.

Key Object Returns the key for a level.

LevelNumber Integer For parent-child hierarchies, returns


the level or dimension number.

ParentUniqueName String For parent-child hierarchies, returns a


fully qualified name of the parent level.

UniqueName String Returns the fully qualified name of a


level. For example, the UniqueName
value for an employee might be
[0D_Company].[10D_Department].[11].

For more information about using fields and field properties in an expression, see Built-in Collections in
Expressions (Report Builder and SSRS).

Remarks
Not all report delivery modes are supported by this data provider. Delivering reports through data-driven
subscriptions is not supported for this data processing extension. For more information, see Use an External
Data Source for Subscriber Data (Data-Driven Subscription).
For more information, see Using SQL Server 2008 Reporting Services with SAP NetWeaver Business
Intelligence.

How-To Topics
This section contains step-by-step instructions for working with data connections, data sources, and datasets.
Add and Verify a Data Connection (Report Builder and SSRS)
Create a Shared Dataset or Embedded Dataset (Report Builder and SSRS)
Add a Filter to a Dataset (Report Builder and SSRS)

Related Sections
These sections of the documentation provide in-depth conceptual information about report data, as well as
procedural information about how to define, customize, and use parts of a report that are related to data.
Report Datasets (SSRS)
Provides an overview of accessing data for your report.
Create data connection strings - Report Builder & SSRS
Provides information about data connections and data sources.
Report Embedded Datasets and Shared Datasets (Report Builder and SSRS)
Provides information about embedded and shared datasets.
Dataset Fields Collection (Report Builder and SSRS)
Provides information about the dataset field collection generated by the query.
Data Sources Supported by Reporting Services (SSRS)
Provides in-depth information about platform and version support for each data extension.

See Also
Report Parameters (Report Builder and Report Designer)
Filter, Group, and Sort Data (Report Builder and SSRS)
Expressions (Report Builder and SSRS)
Hyperion Essbase Connection Type (SSRS)
11/2/2020 • 7 minutes to read • Edit Online

To include data from a Hyperion Essbase external data source in your report, you must have a dataset that is
based on a report data source of type Hyperion Essbase. This built-in data source type is based on the data
extension for Hyperion Essbase, which enables you to retrieve multidimensional data from a Hyperion Essbase
external data source.
Use the information in this topic to build a data source. For step-by-step instructions, see Add and Verify a Data
Connection (Report Builder and SSRS).

Connection String
The following connection string example specifies a Hyperion Essbase data source on a server that uses port
13080 and XML for Analysis Services (XMLA) over the Internet using SOAP, connecting to a sample catalog:

Data Source=https://localhost:13080/aps/XMLA; Initial Catalog=Sample

For more information about connection string examples, see Create data connection strings - Report Builder &
SSRS.

Credentials
Credentials are required to run queries, to preview the report locally, and to preview the report from the report
server.
After you publish your report, you may need to change the credentials for the data source so that when the
report runs on the report server, the permissions to retrieve the data are valid.
For more information, see Specify Credential and Connection Information for Report Data Sources.

Queries
You can specify a query in the following ways:
Build a query interactively. Use the graphical query designer in Design or Query mode to browse the
metadata on the external data source and generate a query in Multidimensional Expression (MDX) syntax.
Design View Drag dimensions, members, member properties, measures, and KPIs from the
metadata browser to the Data pane to build an MDX query. Drag calculated members from the
CalculatedMembers pane to the Data pane to define additional dataset fields.
Quer y View Drag dimensions, members, member properties, measures, and KPIs from the
metadata browser to the Query pane to build an MDX query. You can edit MDX text directly in the
Query pane. Drag calculated members from the CalculatedMembers pane to the Query pane to
define additional dataset fields.
For more information, see Hyperion Essbase Query Designer User Interface (Report Builder).
Import an existing MDX query from a report. Use the Impor t query button to browse to an .rdl file and
import a query. You can import a query from a report that contains an embedded dataset that is based
on a Hyperion Essbase data source. Importing an MDX query directly from an .mdx file is not supported.
At design time, run the query to view a result set. After you build the query, view the dataset field collection that
is generated from the metadata in the Report Data pane. When the report runs, the actual data is returned from
the external data source.
The Hyperion Essbase data processing extension supports extended dataset field properties. These are values
that are available from the external data source but that do not appear in the Report Data pane. For more
information, see Extended Field Properties later in this topic.

Query Parameters
To include query parameters, create a filter in the filter area in the query designer, and mark the filter as a
parameter. For each filter, a dataset is automatically created to provide the available values. By default, these
datasets do not appear in the Report Data pane. For more information, see Show Hidden Datasets for Parameter
Values for Multidimensional Data (Report Builder and SSRS).
By default, each report parameter has data type Text . After the report parameters are created, you might have to
change default values. For more information, see Report Parameters (Report Builder and Report Designer).

Extended Field Properties


The Hyperion Essbase data processing extension supports extended field properties. Extended field properties
are properties in addition to Value and IsMissing that are defined for a dataset field by the data processing
extension. Extended properties include predefined properties and custom properties. Predefined properties are
properties common to multiple data sources. Custom properties are unique to each data source.
Extended field properties do not appear in the Report Data pane as items that you can drag onto your report
layout. Instead, you drag the parent field of the property onto the report and then change the default property
from Value to the property you want to use.
The name for an extended field property appears in the ToolTip when you rest the mouse on a field in the
Metadata pane in the query designer. For more information about the query designer you can use to explore the
underlying data, see Hyperion Essbase Query Designer User Interface.

NOTE
Values exist for extended field properties only if they are included in the MDX expression and the data source provides
these values when your report runs and retrieves the data for its datasets. You can then refer to those Field property
values from any expression using the syntax described in the following section. However, because these fields are specific
to this data provider and not part of the report definition language, changes that you make to these values are not saved
with the report definition.

Predefined Field Properties


Predefined field properties that are typically supported by multiple data providers and that appear in the
underlying MDX query for a report dataset. For example, the MDX dimension property
MEMBER_UNIQUE_NAME is mapped to the predefined report dataset field property UniqueName . To include
the unique name value in a text box, use the expression =Fields! <FieldName> .UniqueName .
The following table provides a list of predefined field properties that you can use for a Hyperion Essbase data
source.

P RO P ERT Y TYPE DESC RIP T IO N O R EXP EC T ED VA L UE


P RO P ERT Y TYPE DESC RIP T IO N O R EXP EC T ED VA L UE

Value Object Specifies the data value of the field.

For a dimension property, this is


mapped to MEMBER_CAPTION. For a
measure, this is mapped to the data
value.

IsMissing Boolean Indicates whether the field was found


in the resulting data set.

FormattedValue String Returns a formatted value for a key


figure.

Mapped from FORMATTED_VALUE in


the MDX expression.

BackgroundColor String Returns the background color defined


in the database for the field.

Mapped from BACK_COLOR in the


MDX expression.

Color String Returns the foreground color defined


in the database for the item.

Mapped from FORE_COLOR in the


MDX expression.

UniqueName String Returns the fully qualified name of a


level.

Mapped from
MEMBER_UNIQUE_NAME in the MDX
expression.

For more information about how to use fields and field properties in an expression, see Built-in Collections in
Expressions (Report Builder and SSRS).
Custom Properties
Custom field properties that are supported by a data provider and that appear in the underlying MDX query for
a report dataset, but do not appear in the report Datasets pane as fields under that dataset. For example, Long
Names is a member property defined for a dimension level. To include the value in a text box, you use the
expression =Fields! <FieldName> ("Long Names") . Field names in the expression are case-sensitive.
Use the following syntax to refer to custom extended properties in an expression:
Fields!FieldName("PropertyName")
The following table shows the custom field property that you can use for a Hyperion Essbase data source.

P RO P ERT Y TYPE DESC RIP T IO N O R EXP EC T ED VA L UE

FORMAT_STRING String Defined on a measure, this is the


FormattedValue available as a String
type.
Remarks
Not all report delivery modes are supported by this data provider. Delivering reports through data-driven
subscriptions is not supported for this data processing extension. For more information, see Use an External
Data Source for Subscriber Data (Data-Driven Subscription).
For more information, see Using SQL Server 2005 Reporting Services with Hyperion Essbase.

How-To Topics
This section contains step-by-step instructions for working with data connections, data sources, and datasets:
Add and Verify a Data Connection (Report Builder and SSRS)
Create a Shared Dataset or Embedded Dataset (Report Builder and SSRS)
Add a Filter to a Dataset (Report Builder and SSRS)

Related Sections
These sections of the documentation provide in-depth conceptual information about report data, as well as
procedural information about how to define, customize, and use parts of a report that are related to data.
Report Datasets (SSRS)
Provides an overview of accessing data for your report.
Create data connection strings - Report Builder & SSRS
Provides information about data connections and data sources.
Report Embedded Datasets and Shared Datasets (Report Builder and SSRS)
Provides information about embedded and shared datasets.
Dataset Fields Collection (Report Builder and SSRS)
Provides information about the field collection that is generated by the dataset query.
Data Sources Supported by Reporting Services (SSRS) Provides in-depth information about platform and
version support for each data extension.
Using SQL Server 2005 Reporting Services with Hyperion Essbase
Provides detailed information about working with this data extension.

See Also
Report Parameters (Report Builder and Report Designer)
Filter, Group, and Sort Data (Report Builder and SSRS)
Expressions (Report Builder and SSRS)
ODBC Connection Type (SSRS)
11/2/2020 • 3 minutes to read • Edit Online

To include data from an ODBC data provider, you must have a dataset that is based on a report data source of
type ODBC. This built-in data source type is based on the Microsoft SQL Server Reporting Services ODBC data
processing extension.
Use the information in this topic to build a data source. For step-by-step instructions, see Add and Verify a Data
Connection (Report Builder and SSRS).

Connection String
The connection string for the ODBC data processing extension depends on the ODBC driver that you want. A
typical connection string contains name/value pairs that are supported by the driver. For example, the following
connection string specifies the ODBC driver for SQL Server Native Client and the AdventureWorks database:

Driver={SQL Server Native Client 10.0};Server=server;Database=AdventureWorks;Trusted_Connection=yes;

Credentials
Credentials are required to run queries, to preview the report locally, and to preview the report from the report
server.
After you publish your report, you may need to change the credentials for the data source so that when the
report runs on the report server, the permissions to retrieve the data are valid.
If you configure your ODBC data source to prompt for a password or to include the password in the connection
string, and a user enters the password with special characters such as punctuation marks, some underlying data
source drivers cannot validate the special characters. When you process the report, the message "Not a valid
password" might indicate this problem. If changing the password is impractical, you can work with your
database administrator to store the appropriate credentials on the report server as part of a system ODBC data
source name (DSN). For more information, see "OdbcConnection.ConnectionString" in the .NET Framework SDK
documentation.

NOTE
It is recommended that you do not add login information such as passwords to the connection string. Report Builder
provides a separate tab on the Data Source dialog box that you can use to enter credentials.

For more information, see Create data connection strings - Report Builder & SSRS or Specify Credential and
Connection Information for Report Data Sources.

Remarks
ODBC is an early data access technology that preceded OLEDB. ODBC supports only relational data sources.
ODBC data providers are called drivers. ODBC drivers are provided by Microsoft and third party vendors. For
example, Microsoft Office installs ODBC drivers that connect to Office file formats.
Before you can build an ODBC connection string, you must have ODBC drivers installed and build a machine or
system DSN. To successfully retrieve the data that you want, you must provide query syntax that is supported by
the driver. Parameter support varies by driver. For more information, see topics that are specific to the driver that
you select, for example, SQL Server Native Client (ODBC).
P l a t f o rm a n d V e rs i o n I n f o rma t i o n

For more information about specific ODBC data providers, see Data Sources Supported by Reporting Services
(SSRS).

How-To Topics
This section contains step-by-step instructions for working with data connections, data sources, and datasets.
Add and Verify a Data Connection (Report Builder and SSRS)
Create a Shared Dataset or Embedded Dataset (Report Builder and SSRS)
Add a Filter to a Dataset (Report Builder and SSRS)

Related Sections
These sections of the documentation provide in-depth conceptual information about report data, as well as
procedural information about how to define, customize, and use parts of a report that are related to data.
Report Datasets (SSRS)
Provides an overview of accessing data for your report.
Create data connection strings - Report Builder & SSRS
Provides information about data connections and data sources.
Report Embedded Datasets and Shared Datasets (Report Builder and SSRS)
Provides information about embedded and shared datasets.
Dataset Fields Collection (Report Builder and SSRS)
Provides information about the dataset field collection generated by the query.
Data Sources Supported by Reporting Services (SSRS). Provides in-depth information about platform and
version support for each data extension.

See Also
Report Parameters (Report Builder and Report Designer)
Filter, Group, and Sort Data (Report Builder and SSRS)
Expressions (Report Builder and SSRS)
XML Connection Type (SSRS)
3/5/2021 • 6 minutes to read • Edit Online

To include data from an XML data source in your report, you must have a dataset that is based on a report data
source of type XML. This built-in data source type is based on the XML data extension. Use this data source type
to connect to and retrieve data from XML documents, Web services, or XML that is embedded in the query.
This data extension supports parameters and credentials managed separately from the connection string.
Use the information in this topic to build a data source. For step-by-step instructions, see Add and Verify a Data
Connection (Report Builder and SSRS).

Connection String
The connection string must be a URL that points to the Web service, Web-based application, or XML document
available through HTTP. XML documents must have the XML extension. You can also use an empty connection
string for XML data embedded in the dataset query.
The following examples illustrate the connection string syntax for a Web service and XML document,
respectively. The file:// protocol is not supported.

XM L DO C UM EN T T Y P E C O N N EC T IO N ST RIN G EXA M P L E

Web service https://adventure-works.com/results.aspx

XML document https://localhost/XML/Customers.xml

Embedded XML document Empty

For more connection string examples, see Data Connections, Data Sources, and Connection Strings in Report
Builder.

Credentials
Credentials are required to run queries, to preview the report locally, and to preview the report from the report
server.
After you publish your report, you may need to change the credentials for the data source so that when the
report runs on the report server, the permissions to retrieve the data are valid.
From a report authoring client, the following options are available to specify credentials:
Current Windows user (also known as integrated security).
No credentials are required. If you select no credentials, Anonymous access is used. Make sure that you
have defined the unattended execution account for the report server to connect to an external data
source. The XML data processing extension does not pass credentials to the target URL or the Web
service; the connection will be unsuccessful unless you have defined the unattended execution account.
For more information, see Configure the Unattended Execution Account (Report Server Configuration
Manager).
Stored and prompted credentials are not supported. Remember that if you disable Windows integrated security,
you cannot use it to retrieve data. If you specify stored or prompted credentials, an error will occur at run time.
For more information, see Create data connection strings - Report Builder & SSRS or Specify Credential and
Connection Information for Report Data Sources.

Queries
A query specifies which data to retrieve for a report dataset. The columns in the result set for a query populate
the field collection for a dataset. A report processes only the first result set retrieved by a query.
You must use the text-based query designer to create the query. The query must return XML data.
For more information about the text-based query designer, see Text-based Query Designer User Interface
(Report Builder).
The possible values for a dataset query for a data source that is type XML are shown below.
Empty
Use an empty query to create a default result set. The default query is created by reading the data source
and traversing the XML node hierarchy to the first leaf collection. The result set includes all nodes with
text values and all node attributes along that path. Columns in the result set are mapped to fields for the
dataset.
An element path
Specifies the sequence of nodes to use when retrieving XML data from the data source.
An XML Query element
An XML query specification with the following optional elements:
XML data source is a Web ser vice
Required XML elements:
<Method Namespace= "namespace" Name="MethodName" />

-- or --

<SoapAction> soap action </SoapAction>

Optional XML Elements:


<ElementPath> element path </ElementPath>

<Method Namespace= "namespace" Name="MethodName" />

-- or --

<SoapAction> soap action </SoapAction>

XML data source is an XML document


Required XML elements: None
Optional XML Elements:
<ElementPath> element path </ElementPath>

XML data source is an embedded XML document


Required XML elements:
<XmlData> inner XML </XmlData>

Optional XML Elements:


<ElementPath> element path </ElementPath>

-- or --

<ElementPath IgnoreNamespaces="true"> element path </ElementPath>

For more information about query syntax, see XML Query Syntax for XML Report Data (SSRS).
For examples, see Reporting Services: Using XML and Web Service Data Sources.
Requirements for Retrieving XML Web Service Data
The XML data processing extension does not detect the schema for you. Therefore, you must have some way of
discovering which SOAP methods will retrieve the data that you want. You must also understand the addressing
scheme or namespace that the Web service uses for its data.
For a Web service, you can provide a <Quer y > element that specifies a method to call or SOAP action. You can
leave the query empty and use the default query if the XML data source has a hierarchical structure that
produces the data that you want to use for your report. XML element node values and attributes retrieved when
the query runs map to the dataset fields you use in your report.
Requirements for Retrieving XML Document Data
Using the http protocol, the server must return XML data or the XML data must be embedded in the XML Quer y
element. If you refer to an XML document directly using the http protocol, the extension must be .xml.
You must know how to create an XML query that retrieves all the data you need. If you do not specify an
element path, the default behavior for parsing an XML document is to select the first available path to a leaf-
node collection in the XML document. If the XML document includes additional paths to other sibling leaf-node
collections, those nodes will be ignored unless you specify a path in your query.
You can provide an element path using XML syntax similar to XQuery.
For more information, see Element Path Syntax for XML Report Data (SSRS).

Parameters
The query is not analyzed to identify parameters.
To add parameters, you must create them manually through the Parameter page on the Dataset Properties
dialog box.

Remarks
The XML data extension supports reporting from XML data that is tabular and not hierarchical. For more
information, see Add Data from External Data Sources (SSRS).
There is no built-in support for retrieving XML documents from a SQL Server database.

How-To Topics
This section contains step-by-step instructions for working with data connections, data sources, and datasets.
Add and Verify a Data Connection (Report Builder and SSRS)
Create a Shared Dataset or Embedded Dataset (Report Builder and SSRS)
Add a Filter to a Dataset (Report Builder and SSRS)

Related Sections
These sections of the documentation provide in-depth conceptual information about report data, as well as
procedural information about how to define, customize, and use parts of a report that are related to data.
Report Datasets (SSRS)
Provides an overview of accessing data for your report.
Create data connection strings - Report Builder & SSRS
Provides information about data connections and data sources.
Report Embedded Datasets and Shared Datasets (Report Builder and SSRS)
Provides information about embedded and shared datasets.
Dataset Fields Collection (Report Builder and SSRS)
Provides information about the dataset field collection generated by the query.
Data Sources Supported by Reporting Services (SSRS).
Provides in-depth information about platform and version support for each data extension.

See Also
Report Parameters (Report Builder and Report Designer)
Filter, Group, and Sort Data (Report Builder and SSRS)
Expressions (Report Builder and SSRS)
XML Query Syntax for XML Report Data (SSRS)
11/2/2020 • 3 minutes to read • Edit Online

In Reporting Services, you can create datasets for XML data sources. After you define a data source, you create a
query for the dataset. Depending on the type of XML data pointed to by the data source, you create the dataset
query by including an XML Quer y or an element path. An XML Quer y starts with a <Quer y> tag and includes
namespaces and XML elements that vary depending on the data source. An element path is namespace-
independent and specifies which nodes and node attributes to use from the underlying XML data with an XPath-
like syntax. For more information about element paths, see Element Path Syntax for XML Report Data (SSRS).
You can create an XML data source for the following types of XML data:
Xml documents pointed to by a URL using http protocol
Web service endpoints that return XML data
Embedded XML data
How you specify an XML Quer y or an element path depends on the type of XML data.
For an XML document, the XML Quer y is optional. If it is included, it can contain an optional XML ElementPath .
The value of the XML ElementPath uses the element path syntax. You include the XML Quer y and XML
ElementPath to process namespaces correctly when it is needed by the XML data from the data source.
For a Web service endpoint pointed to by a connection string URL, the XML Quer y defines either the Web
service method, the SOAP action, or both. The XML data provider creates a Web service request that retrieves
XML data to use for the report.

NOTE
When a Web service namespace includes a forward slash (/) character, include both the Web service method and the
SOAP action so that the XML data processing extension can derive the namespace correctly.

For an embedded XML document, the XML Quer y defines the embedded XML data to use, includes optional
namespaces, and contains an optional XML ElementPath ..

Specifying Query Parameters for XML Data


You can specify query parameters for XML documents.
For URL requests, the query parameters are included as standard URL parameters.
For Web service requests, query parameters are passed to the Web service method. To define a query
parameter, use the Parameters page of the Dataset Proper ties dialog box.
Example
The examples in the following table illustrate how to retrieve data from the Report Server Web service, an XML
document, and embedded XML data.

XM L DATA SO URC E Q UERY EXA M P L E

Web service XML data from ListChildren method. <Query>

<Method Name="ListChildren"
Namespace="https://schemas.microsoft.com/sqlserver/2005/06/30/reporting/reportingservices"
/>

</Query>

Web service XML data from SoapAction. <Query xmlns=namespace>

<SoapAction>https://schemas/microsoft.com/sqlserver/2005/03/23/reporting/reportingservices/ListChil

</Query>

XML Document or embedded XML data that uses <Query


namespaces. xmlns:es="https://schemas.microsoft.com/StandardSchemas/ExtendedSales">

Query element specifying namespaces for an element path. <ElementPath>/Customers/Customer/Orders/Order/es:LineItems/es:LineItem</ElementPath>

</Query>
XM L DATA SO URC E Q UERY EXA M P L E

Embedded XML document. <Query>

<XmlData>

<Customers>

<Customer ID="1">Bobby</Customer>

</Customers>

</XmlData>

<ElementPath>Customer {@}</ElementPath>

</Query>

XML document that uses default. No query.

The element path is derived from the XML document itself


and is namespace-independent.

NOTE
The first Web service example lists the contents of the report server that uses the ListChildren method. To run this query,
you must create a new data source and set the connection string to
https://localhost/reportserver/reportservice2006.asmx . The ListChildren method takes two parameters: Item and
Recursive . Set the default value for Item to / and Recursive to 1 .

Specifying Namespaces
Use the XML Quer y element to specify the namespaces that are used in the XML data from the data source. The
following XML query uses the namespace sales . The XML ElementPath nodes for sales:LineItems and
sales:LineItem use the namespace sales .

<Query xmlns:sales=
"https://schemas.microsoft.com/StandardSchemas/ExtendedSales">
<SoapAction>
https://schemas.microsoft.com/SalesWebService/ListOrders
</SoapAction>
<ElementPath>
Customers/Customer/Orders/Order/sales:LineItems/sales:LineItem
</ElementPath>
</Query>

To specify the data provider namespace so that the default namespace remains empty, use xmldp . This is shown
in the following example.
Example
The following examples use the XML document DPNamespace.xml, which is provided for illustration after the
table. This table shows two examples of XML ElementPath syntax that includes namespace prefixes.

XM L Q UERY EL EM EN T RESULT IN G F IEL DS IN T H E DATA SET

<Query/> Value A: https://schemas.microsoft.com/...

Value B: https://schemas.microsoft.com/...

Value C: https://schemas.microsoft.com/...

<xmldp:Query Value D
xmlns:xmldp="https://schemas.microsoft.com/sqlserver/2005/02/reporting/XmlDPQuery"
xmlns:ns="https://schemas.microsoft.com/...">
Value E
<xmldp:ElementPath>Root
{}/ns:Element2/Node</xmldp:ElementPath>
Value F

</xmldp:Query>

XML document: DPNamespace.xml


You can copy this XML and save it to a URL available for Report Designer to use as an XML data source: for
example, https://localhost/DPNamespace.xml.
<Root xmlns:ns="https://schemas.microsoft.com/...">
<ns:Element1>
<Node>Value A</Node>
<Node>Value B</Node>
<Node>Value C</Node>
</ns:Element1>
<ns:Element2>
<Node>Value D</Node>
<Node>Value E</Node>
<Node>Value F</Node>
</ns:Element2>
</Root>

See Also
XML Connection Type (SSRS)
Reporting Services Tutorials (SSRS)
Element Path Syntax for XML Report Data (SSRS)
11/2/2020 • 5 minutes to read • Edit Online

In Report Designer, you specify the data to use for a report from an XML data source by defining a case-sensitive
element path. An element path indicates how to traverse the XML hierarchical nodes and their attributes in the
XML data source. To use the default element path, leave the dataset query or the XML ElementPath of the XML
Quer y empty. When data is retrieved from the XML data source, element nodes that have text values and
element node attributes become columns in the result set. The values of the nodes and attributes become the
row data when you run the query. The columns appear as the dataset field collection in the Report Data pane.
This topic describes the element path syntax.

NOTE
Element path syntax is namespace-independent. To use namespaces in an element path, use the XML query syntax that
includes an XML ElementPath element described in XML Query Syntax for XML Report Data (SSRS).

The following table describes conventions used to define an element path.

C O N VEN T IO N USED F O R

bold Text that must be typed exactly as shown.

| (vertical bar) Separates syntax items. You can choose only one of the
items.

[ ] (brackets) Optional syntax items. Do not type the brackets.

{ } (braces) Delimits parameters of syntax items.

[, ...n] Indicates the preceding item can be repeated n number of


times. The occurrences are separated by commas.

Syntax
Element path ::=
ElementNode[/Element path]
ElementNode ::=
XMLName[(Encoding)][{[FieldList]}]
XMLName ::=
[NamespacePrefix:]XMLLocalName
Encoding ::=
HTMLEncoded | Base64Encoded
FieldList ::=
Field[,FieldList]
Field ::=
Attribute | Value | Element | ElementNode
Attribute ::=
@XMLName[(Type)]
Value ::=
@[(Type)]
Element ::=
XMLName[(Type)]
Type ::=
String | Integer | Boolean | Float | Decimal | Date | XML
NamespacePrefix ::=
Identifier that specifies the namespace.
XMLLocalName :: =
Identifier in the XML tag.

Remarks
The following table summarizes element path terms. Examples in the table refer to the example XML document
Customers.xml, which is included in the Examples section of this topic.

NOTE
XML tags are case-sensitive. When you specify an ElementNode in the element path, you must exactly match the XML
tags in the data source.

T ERM DEF IN IT IO N

Element path Defines the sequence of nodes to traverse within the XML
document in order to retrieve field data for a dataset with an
XML data source.

ElementNode The XML node in the XML document. Nodes are designated
by tags and exist in a hierarchical relationship with other
nodes. For example, <Customers> is the root element node.
<Customer> is a subelement of <Customers>.

XMLName The name of the node. For example, the name of the
Customers node is Customers. An XMLName can be
prefixed with a namespace identifier to uniquely name every
node.

Encoding Indicates that the Value for this element is encoded XML
and needs to be decoded and included as a subelement of
this element.
T ERM DEF IN IT IO N

FieldList Defines the set of elements and attributes to use to retrieve


data.

If not specified, all attributes and subelements are used as


fields. If the empty field list is specified ({} ), no fields from this
node are used.

A FieldList may not contain both a Value and an Element


or ElementNode .

Field Specifies the data that is retrieved as a dataset field.

Attribute A name-value pair within the ElementNode . For example,


in the element node <Customer ID="1">, ID is an attribute
and @ID(Integer) returns "1" as an integer type in the
corresponding data field ID .

Value The value of the element. Value can only be used on the last
ElementNode in the element path. For example, because
<Return> is a leaf node, if you include it at the end of an
element path, the value of Return {@} is Chair .

Element The value of the named subelement. For example,


Customers {}/Customer {}/LastName retrieves values for only
the LastName element.

Type The optional data type to use for the field created from this
element.

NamespacePrefix NamespacePrefix is defined in the XML Query element. If


no XML Query element exists, namespaces in the XML
ElementPath are ignored. If there is an XML Query
element, the XML ElementPath has an optional attribute
IgnoreNamespaces . If IgnoreNamespaces is true ,
namespaces in the XML ElementPath and the XML
document are ignored. For more information, see XML
Query Syntax for XML Report Data (SSRS).

Example - No Namespaces
The following examples use the XML document Customers.xml. This table shows examples of element path
syntax and the results of using the element path in a query that defines a dataset, based on the XML document
as a data source.

NOTE
When the element path is empty, the query uses the default element path: the first path to a leaf node collection. In the
first example, leaving the element path empty is equivalent to specifying the element path
/Customers/Customer/Orders/Order. All node value and attributes along the path are returned in the result set, and the
node names and attributes names appear as dataset fields.

Example #1 : Empty
O RDER QT Y ID F IRST N A M E L A ST N A M E C USTO M ER. ID XM L N S

Chair 6 1 Bobby Moore 11 https://www.a


dventure-
works.com

Table 1 2 Bobby Moore 11 https://www.a


dventure-
works.com

Sofa 2 8 Crystal Hu 20 https://www.a


dventure-
works.com

EndTables 2 15 Wyatt Diaz 33 https://www.a


dventure-
works.com

Example #2 : Customers {}/Customer

F IRST N A M E L A ST N A M E ID

Bobby Moore 11

Crystal Hu 20

Wyatt Diaz 33

Example #3 : Customers {}/Customer {}/LastName

L A ST N A M E

Moore

Hu

Diaz

Example #4 : Customers {}/Customer {}/Orders/Order {@,@Qty}

O RDER QT Y

Chair 6

Table 1

Sofa 2

EndTables 2

Example #5 : Customers {}/Customer/Orders/Order{ @ID(Integer)}


O RDER. ID F IRST N A M E L A ST N A M E ID

1 Bobby Moore 11

2 Bobby Moore 11

8 Crystal Hu 20

15 Wyatt Diaz 33

XML document: Customers.xml


To try out the element path examples in the previous section, you can copy this XML and save it to a URL that is
accessible by Report Designer, and then use the XML document as an XML data source: for example,
https://localhost/Customers.xml .

<?xml version="1.0"?>
<Customers xmlns="https://www.adventure-works.com">
<Customer ID="11">
<FirstName>Bobby</FirstName>
<LastName>Moore</LastName>
<Orders>
<Order ID="1" Qty="6">Chair</Order>
<Order ID="2" Qty="1">Table</Order>
</Orders>
<Returns>
<Return ID="1" Qty="2">Chair</Return>
</Returns>
</Customer>
<Customer ID="20">
<FirstName>Crystal</FirstName>
<LastName>Hu</LastName>
<Orders>
<Order ID="8" Qty="2">Sofa</Order>
</Orders>
<Returns/>
</Customer>
<Customer ID="33">
<FirstName>Wyatt</FirstName>
<LastName>Diaz</LastName>
<Orders>
<Order ID="15" Qty="2">EndTables</Order>
</Orders>
<Returns/>
</Customer>
</Customers>

Alternatively, you can create an XML data source that has no connection string and embed Customers.XML in
the query, using the following procedure:
To e mb e d C u s t o me rs .X M L i n a q u e ry

1. Create an XML data source with a blank connection string.


2. Create a new dataset for the XML data source.
3. In the Dataset Proper ties dialog box, click Quer y Designer . The text-based query designer dialog box
opens.
4. In the query pane, enter the following two lines:
<Query>
<XmlData>

5. Copy Customers.XML and paste the text in the query pane after <XmlData> .
6. In the query pane, delete the first line that you copied from Customers.XML: <?xml version="1.0"?>

7. At the end of the query, add the following two lines:


<XmlData>

<Query>

8. Click Run Quer y (!).


The result set displays 4 lines of data with the following columns: xmlns , Customer.ID , FirstName ,
LastName , ID , Qty , Order .

9. Click OK .

See Also
XML Connection Type (SSRS)
Reporting Services Tutorials (SSRS)
Add, Edit, Refresh Fields in the Report Data Pane (Report Builder and SSRS)
Analysis Services Connection Type for DMX (SSRS)
11/2/2020 • 2 minutes to read • Edit Online

When you create a dataset using a SQL Server Analysis Services data source, Report Designer displays the
Multidimensional Expression (MDX) query designer if it detects a valid cube. If no cube is detected, but a data
mining model is available, Report Designer displays the Data Mining Extensions (DMX) query designer. To switch
between the MDX and DMX designers, click the Command Type DMX ( ) button on the toolbar. Use the DMX
Query Designer to interactively build a DMX query using graphical elements. To use DMX Query Designer, the
data source that you specify must already have a data mining model that provides the data. Query results are
converted to a flattened rowset for use in the report.

NOTE
You must train your model before designing your report. For more information, see Data Mining Solutions.

Design Mode
The DMX query designer opens in Design mode. Design mode includes a graphical design surface used for
selecting a single data mining model and input table, and a grid used for specifying the prediction query. There
are two other modes in DMX query designer: Query mode and Result mode. In Query mode, the grid from
Design mode is replaced with a Query pane, which you can use to type DMX queries. In Result mode, the result
set returned by the query appears in a data grid.
To change modes for the DMX query designer, right-click on the query design surface and select Design ,
Quer y , or Result . For more information, see Analysis Services DMX Query Designer User Interface and Retrieve
Data from a Data Mining Model (DMX) (SSRS).

Designing a Prediction Query


The Query Design pane of the Design mode contains two windows: Mining Model and Select Input Table .
Use the Mining Model window to select the mining model to use in your query. Use the Select Input Table
window to select the table on which to base your predictions. If you want to use a singleton query instead of an
input table, right-click in the Query Design pane and select Singleton Quer y . The Select Input Table window
is replaced with a Singleton Quer y Input window.
In Design mode, drag fields from the Mining Model and Select Input Table windows to the Field column in
the Grid pane. You can also fill in the remaining columns to specify an alias, to show the field in the results, to
group fields together, and to specify an operator to restrict the field value to a given criteria or argument. If you
are in Query mode, build the DMX query by dragging fields to the Query pane.

Using Parameters
You can pass report parameters to a DMX query parameter. To do this, you must add a parameter to your DMX
query, define the query parameters in the Quer y Parameters dialog box, and then modify the associated
report parameters. To define a query parameter, click the Quer y Parameters ( ) button on the toolbar. To
view instructions about defining parameters in a DMX query, see Define Parameters in the MDX Query Designer
for Analysis Services (Report Builder and SSRS).
For more information about how to manage the relationship between report parameters and query parameters,
see Associate a Query Parameter with a Report Parameter (Report Builder and SSRS). For more information
about parameters, see Report Parameters (Report Builder and Report Designer).

See Also
Data Mining Solutions
Query Design Tools (SSRS)
Create data connection strings - Report Builder & SSRS
Retrieve Data from a Data Mining Model (DMX)
(SSRS)
11/2/2020 • 3 minutes to read • Edit Online

To use data from a SQL Server Analysis Services data mining model in your report, you must define a SQL
Server Analysis Services data source and one or more report datasets. When you create the data source
definition, you must specify a connection string and credentials so that you can access the data source from
your client computer.
You can create an embedded data source definition for use by a single report or a shared data source definition
that can be used by multiple reports. The procedures in this topic describe how to create an embedded data
source. For more information about shared data sources, see Embedded and Shared Data Connections or Data
Sources (Report Builder and SSRS) and Create, Modify, and Delete Shared Data Sources (SSRS).
After you create a SQL Server Analysis Services data source, you can create one or more datasets. For each
dataset, you use a Data Mining Prediction Expression (DMX) query designer to create a DMX query that specifies
the field collection. For more information, see Analysis Services DMX Query Designer User Interface.
After you create a dataset, the name of the dataset appears in the Report Data pane as a node under its data
source.
After you publish your report, you may need to change the credentials for the data source so that when the
report runs on the report server, the permissions to retrieve the data are valid.
To create an embedded Microsoft SQL Server Analysis Services data source
1. On the toolbar in the Report Data pane, click New , and then click Data Source .
2. In the Data Source Proper ties dialog box, type a name in the Name text box, or accept the default
name.
3. Verify that Embedded connection is selected.
4. From the Type drop-down list, select Microsoft SQL Ser ver Analysis Ser vices .
5. Specify a connection string that works with your Analysis Services data source.
Contact your database administrator for connection information and for the credentials to use to connect
to the data source. The following connection string example specifies the sample
AdventureWorksDW2012 database on the local client.

Data Source=localhost;Initial Catalog=AdventureWorksDW2012

6. Click Credentials .
Set the credentials to use to connect to the data source. For more information, see Specify Credential and
Connection Information for Report Data Sources.
NOTE
To test the data source connection, click Edit . In the Connection Proper ties dialog box, click Test Connection .
If the test is successful, you will see the information message "Test connection succeeded." If the test fails, you will
see a warning message with more information about why the test was not successful.

7. Click OK .
The data source appears in the Report Data pane.
To create a dataset for a Microsoft SQL Server Analysis Services
1. In the Repor t Data pane, right-click the name of the data source that connects to a SQL Server Analysis
Services data source, and then click Add Dataset .
2. In the Dataset Proper ties dialog box, type a name in the Name text box.
3. In the Data source box , verify that the name is the name of a data source that connects to an Analysis
Services data source.
4. Click Quer y Designer to open the graphical query designer to build a query interactively. If the query
designer opens in MDX mode, click Command Type DMX ( ) on the toolbar to switch to the data
mining query designer. For more information, see Analysis Services DMX Query Designer User Interface.
Alternatively, to import an existing DMX query from another report, click Impor t , and then navigate to
the .rdl file with the DMX query. Importing a query from an .dmx file is not supported.
5. After you create and run your query to see sample results, click OK .
6. Click OK .
The dataset and its field collection appear in the Report Data pane under the data source node.

See Also
Analysis Services Connection Type for DMX (SSRS)
Create data connection strings - Report Builder & SSRS
Dataset Fields Collection (Report Builder and SSRS)
Report Embedded Datasets and Shared Datasets (Report Builder and SSRS)
Data Processing Extensions and .NET Framework
Data Providers (SSRS)
11/2/2020 • 2 minutes to read • Edit Online

A Reporting Services data processing extension is a component installed with Reporting Services, designed to
retrieve data from a specific type of data source and to provide extra functionality to support report design and
report processing. A .NET Framework data provider is a component available from Microsoft or third-party
sources that supports System.Data interfaces that allow you to retrieve and to modify data from a specific type
of data source.

Understanding a Data Processing Extension


A Reporting Services data processing extension supports a subset of the System.Data interfaces. Data
processing extensions require only read-only access to a data source, so the interfaces for write and update are
not implemented. Each data processing extension can provide custom features to support report processing. For
example, a data processing extension might support the following types of features:
Managing credentials separately from the connection string
Supporting multivalue parameters
Retrieving server aggregates, which are calculated on the data source
Retrieving data properties as well as data values from the data source

Understanding a Data Provider


A .NET Framework data provider (sometimes known as a driver) supports a standard set of System.Data
interfaces for reading, writing, and updating data on a data source. A data provider can be used when there is no
data processing extension available for a specific type of data source. Many third-party standard .NET
Framework data providers are available.
Because Reporting Services has an extensible data provider architecture, you can build a custom data
processing extension to include the extra functionality supplied by Reporting Services data processing
extensions. For more information, see Implementing a Data Processing Extension. For third-party data
processing extensions, see the documentation that comes with the third-party data processing extension.

NOTE
A .NET Framework data provider or custom data processing extension must be installed and registered before it can be
used to access data from a data source. The data processing extension must be installed and registered both on the
reporting client to author the report and on the report server to view the published report. Not all data providers are
designed to work in a server environment. For more information, see Register a Standard .NET Framework Data Provider
(SSRS).and Deploying a Data Processing Extension.

See Also
Data Processing Extensions Overview
Report Embedded Datasets and Shared Datasets (Report Builder and SSRS)
Register a Standard .NET Framework Data Provider
(SSRS)
3/5/2021 • 8 minutes to read • Edit Online

To use a third-party .NET Framework data provider to retrieve data for a Reporting Services report dataset, you
need to deploy and register the .NET Framework data provider assembly in two locations: on the report
authoring client and on the report server. On the report authoring client, you must register the data provider as
a data source type and associate it with a query designer. You can then select this data provider as a type of data
source when you create a report dataset. The associated query designer opens to help you create queries for
this data source type. On the report server, you must register the data provider as a data source type. You can
then process published reports that retrieve data from a data source using this data provider.
Third-party data providers do not necessarily provide all the functionality available with the Reporting Services
data processing extensions. For more information, see Data Sources Supported by Reporting Services (SSRS). To
learn about extending the functionality of a . .NET Framework data provider, see Implementing a Data Processing
Extension.
You need administrator credentials to install and register data providers.

Registering a .NET Framework Data Provider on the Report Server


In order to process published reports that use this .NET Framework data provider on the report server, you need
to install the assembly on the report server. You must modify two configuration files. Modify
rsreportserver.config to register the data provider. Modify rssrvpolicy.config to grant code access security
permissions for the assembly.
To install a data provider assembly on the report server
1. Navigate to the default location of the bin directory on the report server on which you want to use the
.NET Framework data provider. The default location of the report server bin directory is
<drive>:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting
Services\ReportServer\bin.
2. Copy your assembly from your staging location to the bin directory of the report server. Alternatively,
you can load your assembly in the global assembly cache (GAC). For more information, see Working with
Assemblies and the Global Assembly Cache in the .NET Framework SDK documentation on MSDN.
To register a .NET data provider on the report server
1. Make a backup of the RSReportServer.config file in the ReportServer parent directory for bin.
2. Open RSReportServer.config. You can open the configuration file with Visual Studio or a simple text
editor, such as Notepad.
3. Locate the Data element in the RSReportServer.config file. An entry for the .NET Framework data
provider should be made in the following location:

<Extensions>
<Data>
<Extension Your data provider configuration information goes here />
</Data>
</Extensions>

4. Add an entry for the .NET Framework data provider.


AT T RIB UT E DESC RIP T IO N

Name Provide a unique name for the data provider, for


example, MyNETDataProvider . The maximum length
for the Name attribute is 255 characters. The name
must be unique among all entries within the Extension
element of a configuration file. The value you include
here appears in the drop-down list of data source types
when you create a new data source.

Type Enter a comma-separated list that includes the fully


qualified namespace of the class that implements the
IDbConnection interface, followed by the name of the
.NET Framework data provider assembly (not including
the .dll file name extension).

For example, the entry might resemble the following for a DLL deployed to the report server bin
directory:

<Extension Name="MyNETDataProvider" Type="CompanyName.ExtensionName.DataProviderConnectionClass,


DataProviderAssembly" />

If you load your assembly into the global assembly cache (GAC), you must provide the strong name
properties. For example:

<Extension Name="MyNETDataProvider" Type="CompanyName.ExtensionName.DataProviderConnectionClass,


DataProviderAssembly,Version=1.0.0.0, Culture=neutral, PublicKeyToken=MyPublicToken"/>

To set the code group policy for a .NET data provider


1. Make a backup copy of the rssrvpolicy.config file in the ReportServer parent directory for bin.
2. Open rssrvpolicy.config. You can open the configuration file with Visual Studio or a simple text editor
such as Notepad.
3. Locate the CodeGroup element in the rssrvpolicy.config file.
4. Add a code group for the data provider assembly that grants FullTrust permission. Your code group
might resemble the following:

<CodeGroup class="UnionCodeGroup"
version="1"
PermissionSetName="FullTrust"
Name="ThisDataProviderCodeGroup"
Description="Code group for the .NET data provider">
<IMembershipCondition class="UrlMembershipCondition"
version="1"
Url=
"C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting
Services\ReportServer\bin\DataProviderAssembly.dll"
/>
</CodeGroup>

URL membership is only one of many membership conditions you might select for the data provider.
Verifying the Deployment and Registration
You can verify whether the data provider was deployed successfully to the report server by opening the web
portal and verifying that the data provider is included in the list of available data sources. For more information
about the web portal and data sources, see Create, Modify, and Delete Shared Data Sources (SSRS).

Registering a .NET Framework Data Provider on the Report Designer


Client
In order to author reports that use this .NET Framework data provider for a data source, you must install the
assembly on your client computer that runs Report Designer. You must modify two configuration files. Modify
RSReportDesigner.config to register the data provider as a data source and to use the generic query designer.
Modify RSPreviewPolicy.config to grant code access security permissions for the data provider assembly.
To install a data provider assembly on the Report Designer client
1. Navigate to the default location of the PrivateAssemblies directory on the Report Designer client on
which you want to use the .NET Framework data provider. The default location of the PrivateAssemblies
directory is <drive>:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies.
2. Copy your assembly from your staging location to the PrivateAssemblies directory of the Report
Designer client. Alternatively, you can load your assembly in the global assembly cache (GAC). For more
information, see Working with Assemblies and the Global Assembly Cache in the .NET Framework SDK
documentation on MSDN.
To register a .NET data provider on the Report Designer client
1. Make a backup copy of the RSReportDesigner.config file in the PrivateAssemblies directory.
2. Open RSReportDesigner.config with Visual Studio or a simple text editor such as Notepad.
3. Locate the Data element in the RSReportDesigner.config file. An entry for the data provider should be
made in the following location:

<Extensions>
<Data>
<Extension Your data provider configuration information goes here />
</Data>
</Extensions>

4. Add an entry for the data provider.

AT T RIB UT E DESC RIP T IO N

Name Provide a unique name for the data provider, for


example, MyNETDataProvider . The maximum length
for the Name attribute is 255 characters. The name
must be unique among all entries within the Extension
element of a configuration file. The value that you
include here appears in the drop-down list of data
source types when you create a new data source.

Type Enter a comma-separated list that includes the fully


qualified namespace of the class that implements the
IDbConnection interface, followed by the name of the
.NET Framework data provider assembly (not including
the .dll file name extension).

For example, the entry might resemble the following for a DLL deployed to the Visual Studio
PrivateAssemblies directory:
<Extension Name="MyNETDataProvider" Type="CompanyName.ExtensionName.DataProviderConnectionClass,
DataProviderAssembly" />

If you load your assembly into the GAC, you must provide the strong name properties. For example:

<Extension Name="MyNETDataProvider" Type="CompanyName.ExtensionName.DataProviderConnectionClass,


DataProviderAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=MyPublicToken"/>

5. Locate the Designer element in the RSReportDesigner.config file. An entry for the .NET Framework data
provider should be made in the following location:

<Extensions>
<Designer>
<Your data provider configuration information goes here>
</Designer>
</Extensions>

6. Add the following entry to the RSReportDesigner.config file under the Designer element. You need to
replace only the Name attribute with the name that you provided in previous entries.

<Extension Name="MyNETDataProvider"
Type="Microsoft.ReportingServices.QueryDesigners.GenericQueryDesigner,Microsoft.ReportingServices.Que
ryDesigners"/>

To set the code group policy for a .NET data provider on the Report Designer client
1. Make a backup copy of the RSPreviewPolicy.config file in the PrivateAssemblies directory.
2. Open RSPreviewPolicy.config with Visual Studio or a simple text editor, such as Notepad.
3. Locate the CodeGroup element in the RSPreviewPolicy.config file.
4. Add a code group for the .NET Framework data provider assembly that grants FullTrust permission. Your
code group might resemble the following:

<CodeGroup class="UnionCodeGroup"
version="1"
PermissionSetName="FullTrust"
Name="ThisDataProviderCodeGroup"
Description="Code group for the .NET data provider">
<IMembershipCondition class="UrlMembershipCondition"
version="1"
Url=
" C:\Program Files\Microsoft Visual Studio 9\Common7\IDE\PrivateAssemblies\DataProviderAssembly.dll"
/>
</CodeGroup>

URL membership is only one of many membership conditions you might select for the data provider.
Verifying the Deployment and Registration on the Report Designer Client
Before you can verify deployment, you must close all instances of Visual Studio on your local computer. After
you have ended all current sessions, you can verify whether your data provider was deployed successfully to
Report Designer by creating a new report project in Visual Studio. The data provider should be included in the
list of available data source types when you create a new data set for your report.
Platform Considerations
On a 64-bit (x64) platform, SQL Server Data Tools (SSDT) runs in 32-bit WOW mode. When you author reports
on an x64 platform, you need 32-bit data providers installed on the report authoring client in order to preview
your reports. If you publish the report on the same system, you need x64 data providers to view the report in
the web portal.
SQL Server Data Tools (SSDT) is not supported for Itanium-based platforms.
The data processing extensions that are installed with Reporting Services must be compiled natively for each
platform and installed in the correct locations. If you register a custom data provider or a standard .NET
Framework data provider, it needs to be compiled natively for the appropriate platform and installed the
appropriate locations. If you are running on a 32-bit platform, the data provider must be compiled for a 32-bit
platform. If you are running on a 64-bit platform, the data provider must be compiled for the 64-bit platform.
You cannot use a 32-bit data provider wrapped with 64-bit interfaces on a 64 bit platform. Check your third-
party software for information about whether the data provider will work on the installed platform. For more
information about data providers and platform support, see Data Sources Supported by Reporting Services
(SSRS).

See Also
Configure and Administer a Report Server (SSRS Native Mode)
Implementing a Data Processing Extension
Reporting Services Configuration Files
Code Access Security in Reporting Services
Report Datasets (SSRS)
11/2/2020 • 8 minutes to read • Edit Online

To add data to a report, you create datasets. Each dataset represents the result set from running a query
command on a data source. The columns in the result set are the field collection. The rows in the result set are
the data. A dataset does not contain the actual data. A dataset contains the information that is needed to retrieve
a specific set of data from a data source.
There are two types of datasets: embedded and shared. An embedded dataset is defined in a report and used
only by that report. A shared dataset is defined on the report server or SharePoint site and can be used by
multiple reports. In Report Builder, you can create shared datasets in Shared Dataset mode or embedded
datasets in Report Designer mode. In Report Designer in SQL Server Data Tools (SSDT), you can create shared
datasets as part of a project or embedded datasets as part of a report.
Embedded datasets. Unlike applications such as Microsoft Office Excel where you work with data
directly in a worksheet, in Report Builder or Report Designer you work with metadata that represents the
data that will be retrieved when the report is processed. To create an embedded dataset, select the source
of data and specify a query. After you create the dataset, use the Report Data pane to view the field
collection. You can display data from a dataset in a data region like a table or chart. In each data region,
you can group, filter, and sort the data to organize it. After you design the report layout, you run the
report to see the actual data.
In the following figure, the Report Data pane displays a data source named AdventureWorks2012 , a
dataset named DataSet1, and five fields in the dataset field collection. The Layout pane shows a table with
the top row of column headings and the bottom row with table cells that contain text. The placeholder
text [Name] is the metadata for the field Name. When the report runs, the placeholder text is replaced by
the actual data values. The table expands as required to display all the data.

Shared datasets. Create a shared dataset when you want to use a dataset in more than one report. To
create and save a shared dataset to a report server or SharePoint site, use Report Builder in shared
dataset design view. To create a shared dataset as part of a project that can be deployed to a server or
site, use Report Designer.
The following illustration shows Shared Dataset Design view in Report Builder. You can select or modify
the data connection, the dataset properties, the query, filters, and optionally mark filters as parameters,
and view the query results. You then save the changes back to the server or site.
For more information, see Embedded and Shared Datasets (Report Builder and SSRS) and Embedded and
Shared Data Connections or Data Sources (Report Builder and SSRS).
You can also add datasets to a report by adding report parts that include the datasets they depend on. Report
parts are self-contained report items that are stored on the report server and can be included in other reports.
Use Report Builder to browse and select parts from the Report Part Gallery to add to your reports. Use Report
Designer or Report Builder to save report parts for use in the Report Part Gallery. For more information, see
Repor t Par ts (Repor t Builder and SSRS) and Repor t Par ts in Repor t Designer (SSRS) on the Web at
microsoft.com.
To learn how to create a report that displays data from a SQL Server database, see Tutorial: Creating a Basic
Table Report (Report Builder). To build a report that includes its own data, see Tutorial: Create a Quick Chart
Report Offline (Report Builder).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Adding Report Data


In Report Builder, you can add report data in the following ways.
Add report parts from a report server to your report. Each report part is self-contained and includes
dependent datasets. The datasets are predefined.
Use the Table/Matrix, Chart, and Map wizards. From the wizards, you can select shared data sources and
shared datasets, or create new datasets, and continue to design the report.
Add shared datasets from a report server. Shared datasets are predefined and specify which data to use
from a predefined data source. When you add a shared dataset to your report, you add a dataset
reference that points to the shared dataset definition.
In Report Builder or Report Designer, you can add data in the following ways.
Add embedded datasets based on shared data sources.
Add embedded datasets based on embedded data sources.

NOTE
On a report server, shared items are secured individually or by inheriting permissions from the folder where they are
published. To enable other users to have access to shared datasets that you save, you must understand how permissions
are granted. For more information, see Security (Report Builder) or Secure Shared Dataset Items.

After you add data to a report, you can organize the data on the report page with data regions, modify report
parts and share those changes with others, and enable users to limit or sort the data they see in the report. For
more information, see the following related topics:
Tables, Matrices, and Lists (Report Builder and SSRS)
Charts (Report Builder and SSRS)
Sparklines and Data Bars (Report Builder and SSRS)
Indicators (Report Builder and SSRS)
Report Parameters (Report Builder and Report Designer)
Report Parts (Report Builder and SSRS)
Filter, Group, and Sort Data (Report Builder and SSRS)

Adding Data with Report Parts


Report parts contain the datasets that they depend on. These datasets are built on shared data sources that are
available on the report server. In Report Builder, when you add a report part to your report, the dependent
datasets are added to your report, just as if you had added them manually. For example, a predefined chart
contains a dataset. To see the data, preview the report.

NOTE
Report parts are self-contained report items that are stored on the report server and can be included in other reports.
Use Report Builder to browse and select parts from the Report Part Gallery to add to your reports. Use Report Designer
or Report Builder to save report parts for use in the Report Part Gallery. For more information, see Repor t Par ts
(Repor t Builder and SSRS) and Repor t Par ts in Repor t Designer (SSRS) on the Web at microsoft.com.

Report parts, shared data sources, and shared datasets are defined in advance and saved on a report server. To
access them, you must open Report Builder in server mode by connecting to the report server. You can use
these to create new versions of your own if you have write permissions to the report server.
For more information, see Report Parts (Report Builder and SSRS) and Report Parts in Report Designer
(SSRS).

Queries and Query Designers


To specify which data you want from a data source, you build a query command. Each data source type provides
a related query designer to help you build the query. The query designer can be graphical or text-based. In a
graphical query designer, you view metadata that represents the data on the external data source and
interactively build a query by dragging fields or entities to the query design surface. In a text-based query
designer, you write or import queries in the query syntax that is supported by the external data source.
In the query designer, you can run the query to view example data and validate the query command syntax.
Column names in the result set become the field names that you see in the Report Data pane. The result set
must be a single set of rows and columns where the same number of values exist for each row of data. Multiple
results sets from a single query are not supported. Ragged hierarchies, which do not have a constant number of
columns and can produce different number of data values for each row, are not supported.
To run a query, you must have design time credentials. For more information, see Specify Credential and
Connection Information for Report Data Sources and Create data connection strings - Report Builder & SSRS.
Communication between a data extension and the external data source is handled by data providers. Support
for query command syntax, query parameters, and data types for values in the result set is determined by each
data provider. For more information, see the topic for the specific type of data extension and Query Design Tools
(SSRS).

How-To Topics
Add and Verify a Data Connection (Report Builder and SSRS)
Create a Shared Dataset or Embedded Dataset (Report Builder and SSRS)
Add, Edit, Refresh Fields in the Report Data Pane (Report Builder and SSRS)
Build a Query in the Relational Query Designer (Report Builder and SSRS)
Show Hidden Datasets for Parameter Values for Multidimensional Data (Report Builder and SSRS)
Add a Filter to a Dataset (Report Builder and SSRS)
Set a No Data Message for a Data Region (Report Builder and SSRS)
Associate a Query Parameter with a Report Parameter (Report Builder and SSRS)
Define Parameters in the MDX Query Designer for Analysis Services (Report Builder and SSRS)

In This Section
Report Parts and Datasets in Report Builder
Create data connection strings - Report Builder & SSRS
Specify Credential and Connection Information for Report Data Sources
Report Embedded Datasets and Shared Datasets (Report Builder and SSRS)
Dataset Fields Collection (Report Builder and SSRS)

See Also
Report Design View (Report Builder)
Reporting Services Concepts (SSRS)
Query Design Tools (SSRS)
11/2/2020 • 6 minutes to read • Edit Online

Reporting Services provides a variety of query design tools that you can use to create dataset queries in Report
Designer. Some query designers provide alternate modes so that you can choose whether to work in visual
mode or directly in the query language. This topic introduces each tool and describes the type of data source
each one supports. The following tools are described in this topic:
Text-based Query Designer
Graphical Query Designer
Report Model Query Designer
MDX Query Designer
DMX Query Designer
SapNetWeaver BI Query Designer
Hyperion Essbase Query Designer
All of the query design tools run in the data design environment of SQL Server Data Tools (SSDT) when you
work with a Report Server project template or Report Server Wizard project template. For more information
about working with the query designers, see Reporting Services Query Designers.
The type of data source that you are working with determines the availability of a particular query designer.
The data source types that are available in your report are determined by the Reporting Services data
extensions installed on your client or report server. For more information, see RSReportDesigner Configuration
File and RsReportServer.config Configuration File.
A data processing extension and its associated query designer can differ in support for data sources in the
following ways:
By quer y designer type. For example, a SQL Server data source supports both the graphical and text-
based query designers.
By quer y language variation. For example, a query language such as Transact-SQL can differ in syntax
depending on the data source type. The Microsoft Transact-SQL language and the Oracle SQL language
have some variation in syntax for a query command.
By suppor t for the schema par t of a database object name. When a data source uses schemas as
part of the database object identifier, the schema name must be supplied as part of the query for any
names that do not use the default schema. For example,
SELECT FirstName, LastName FROM [Person].[Person] .

By suppor t for quer y parameters. Data providers differ in support for parameters. Some data
providers support named parameters; for example,
SELECT Col1, Col2 FROM Table WHERE <parameter identifier><parameter name> = <value> . Some data
providers support unnamed parameters; for example,
SELECT Col1, Col2 FROM Table WHERE <column name> = ? . The parameter identifier might differ by data
provider; for example, SQL Server uses the "at" (@) symbol, Oracle uses the colon (:). Some data
providers do not support parameters.
By ability to impor t queries. For example, for a SQL Server data source, you can import a query from
a report definition file (.rdl) or from a .sql file.

Text-based Query Designer


The text-based query designer is the default query building tool for most supported relational data sources,
including Microsoft SQL Server, Oracle, Teradata, OLE DB, XML, and ODBC. In contrast with the graphical query
designer, this query design tool does not validate query syntax during query design. The following image
provides an illustration of the text-based query designer.

The text-based query designer is recommended for creating complex queries, using stored procedures, querying
XML data, and for writing dynamic queries. Depending on the data source, you may be able to toggle the Edit
As Text button on the toolbar to switch between the graphical query designer and the text-based query
designer. For more information, see Text-based Query Designer User Interface.

Graphical Query Designer


The graphical query designer is used to create or modify Transact-SQL queries that run against a relational
database. This query design tool is used in several Microsoft products and in other SQL Server components.
Depending on the data source type, it supports Text, StoredProcedure, and TableDirect modes. The following
image provides an illustration of the graphical query designer.

You can toggle the Edit As Text button on the toolbar to switch between the graphical query designer and the
text-based query designer. For more information, see Graphical Query Designer User Interface.

Report Model Query Designer


The Report Model query designer is used to create or modify queries that run against a SMDL report model that
has been published to a report server. Reports that run against models support clickthrough data exploration.
The query determines the path of data exploration at run time. The following image provides an illustration of
the Report Model query designer.

To use the Report Model query designer, you must define a data source that points to a published model. When
you define a dataset for the data source, you can open the dataset query in the Report Model query designer.
The Report Model query designer can be used in graphical or text-based modes. You can toggle the Edit As
Text button on the toolbar to switch between the graphical query designer and the text-based query designer.
For more information, see Report Model Query Designer User Interface.

MDX Query Designer


The Multidimensional Expression (MDX) query designer is used to create or modify queries that run against an
Analysis Services data source with multidimensional cubes. The following image provides an illustration of the
MDX query designer after the query and filter are defined.
To use the MDX query designer, you must define a data source that has an Analysis Services cube available that
is valid and has been processed. When you define a dataset for the data source, you can open the query in the
MDX query designer. If necessary, use the MDX and DMX buttons on the toolbar to switch between MDX and
DMX modes. For more information, see Analysis Services MDX Query Designer User Interface.

DMX Query Designer


The Data Mining Prediction Expression (DMX) query designer is used to create or modify queries that run
against an Analysis Services data source with mining models. The following image provides an illustration of the
DMX query designer after the model and input tables are selected.

To use the DMX query designer, you must define a data source that has a valid, data mining model available.
When you define a dataset for the data source, you can open the query in the DMX query designer. If necessary,
use the MDX and DMX buttons on the toolbar to switch between MDX and DMX modes. After you select the
model, you can create data mining prediction queries that provide data to a report. For more information, see
Analysis Services DMX Query Designer User Interface.

Sap NetWeaver BI Query Designer


The SAP NetWeaver Business Intelligence query designer is used to retrieve data from a SAP NetWeaver
Business Intelligence database. To use this query designer, you must have an SAP NetWeaver Business
Intelligence data source that has at least one InfoCube, MultiProvider, or Web-enabled query defined. The
following image provides an illustration of the SAP NetWeaver Business Intelligence query designer. For more
information, see SAP NetWeaver BI Query Designer User Interface.
Hyperion Essbase Query Designer
The Hyperion Essbase query designer is used to retrieve data from Hyperion Essbase databases and
applications. The following image provides an illustration of the Hyperion Essbase query designer.

To use this query designer, you must have a Hyperion Essbase data source that has at least one database.
For more information, see Hyperion Essbase Query Designer User Interface.
See Also
Reporting Services Tools
Report Datasets (SSRS)
Create data connection strings - Report Builder & SSRS
Reporting Services Tutorials (SSRS)
Data Sources Supported by Reporting Services (SSRS)
Create an Embedded or Shared Data Source (SSRS)
Build a Query in the Relational Query Designer
(Report Builder and SSRS)
11/2/2020 • 3 minutes to read • Edit Online

A query designer helps you specify which data to retrieve from an external data source for a report dataset. You
use a query designer when you build a query in a wizard or create a dataset query.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

A dataset is based on a data source. The type of data source and the authoring environment determines which
query designer opens when you define the dataset query. Query designer features vary based on the
underlying data source. For more information about data layers, see Create data connection strings - Report
Builder & SSRS.
You can use a query designer for the following tasks:
Explore the metadata for multiple schemas on the external data source
Specify fields to retrieve for the dataset
Specify relationships between two objects such as tables
Specify filters to restrict the data before it is retrieved as report data
Indicate whether to create parameters
Specify aggregates to perform calculations on the external data source
After you open a query designer, you build a query in the same way for either an embedded dataset or a shared
dataset. The following procedures use an embedded dataset query.
For more information, see Relational Query Designer User Interface (Report Builder).
To build a query for an embedded dataset in Report Design View
1. Open the query designer. In the Report Data pane, right-click the dataset, and then click Quer y .
The query designer that is associated with the data source opens.
2. In the Database view pane, expand the folders that display a hierarchical view of database schema objects
such as tables, views, and stored procedures. Click the select box to select all fields for an object or
expand the node to select individual fields.
As you select fields from the Database view pane, the Select fields pane displays your selections.
If you select fields from more than one related database table, use the Relationships pane to view the
table relationships that were detected from the database schema.
3. Click OK .
4. Click OK .
The list of dataset fields appears in the Report Data pane.
To specify limits for a query
1. In the relational query designer, verify that you have fields selected and that the fields appear in the
Selected fields pane.
2. In the Applied filters pane toolbar, click Add Filter . A new filter row appears.
3. In Field name , click to display the drop-down list of fields, and then click the name of the field that you
want to filter by. For example, to filter by quantity, click the field that contains the number of items.
4. In Operator , click to display the drop-down list of operators, and then select the comparison operator to
use in the filter.
5. In Value , type the value that you want to filter by. For example, to filter on quantity greater than 100, type
100.
6. Select the parameter option in this row to create a dataset parameter to enable a user to specify a filter
value. A report parameter that matches the dataset parameter is automatically created.
7. Click OK .
8. Click OK .
The list of dataset fields appears in the Report Data pane.
To view a query result set
1. On the query designer toolbar, click Run Quer y (!) .

NOTE
The query designer uses design time credentials to run the query and retrieve the result set. For more
information, see Specify Credential and Connection Information for Report Data Sources.

The query runs on the data source and returns example data in the Query results pane.

See Also
Report Datasets (SSRS)
Add Data from External Data Sources (SSRS)
Query Design Tools (SSRS)
Create a Shared Dataset or Embedded Dataset (Report Builder and SSRS)
Report Design View (Report Builder)
Shared Dataset Design View (Report Builder)
Reporting Services Query Designers
Associate a Query Parameter with a Report
Parameter (Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

When you define a dataset query that contains a query variable, the query command is parsed. For each query
variable, a corresponding dataset parameter and report parameter are created. The dataset parameter points to
the report parameter. This enables a user to enter a value that passes directly to the query. Each time you edit
the query command, the same process takes place.
If you rename a report parameter that is bound to a query parameter, you need to manually link the query
parameters to the renamed report parameter by using the procedure in this topic.

NOTE: You can create and modify paginated report definition (.rdl) files in Report Builder and in Report
Designer in SQL Server Data Tools. Each authoring environment provides different ways to create, open, and
save reports and related items.

To associate a query parameter with a report parameter


1. In the Report Data pane, right-click the dataset, click Dataset Proper ties , and then click Parameters .

NOTE: If the Report Data pane is not visible, click Repor t Data on the View menu.

2. In the column Parameter Name , find the name of the query parameter. Parameter names are
automatically populated based on the query. Every time you change the query, the query is checked for
new query parameters. Query parameters that you create manually are not changed when the query
changes.
In Parameter Name , find the query parameter name as it exists in the query. You can also
manually add a new query parameter and enter a name.
In Parameter Value , type or select an expression that evaluates to the value to pass to the query
parameter. This is typically the name of the report parameter.

NOTE: You are not limited to report parameters as values for a query parameter. You can use
any expression that evaluates to a value for the parameter value.

3. Repeat step 2 for additional query parameters.

See Also
Report Embedded Datasets and Shared Datasets (Report Builder and SSRS)
Define Parameters in the MDX Query Designer for
Analysis Services
11/2/2020 • 2 minutes to read • Edit Online

To parameterize an MDX query for an Analysis Services data source, you must add a query parameter to the
query. In the MDX query designer, you can add a query parameter in both Design mode and Query mode by
specifying a filter. After you define the query with a query parameter, Reporting Services automatically creates a
report parameter and a dataset to provide the list of valid values. This enables a user to specify a value that is
passed directly to the query.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To define a query parameter in MDX in Design mode


1. In the Report Data pane, right-click on a dataset created from a SQL Server Analysis Services data source
type, and then click Quer y . The MDX query designer opens in Design mode.
2. Drag a dimension to the filter area and drop it on the first cell in the Dimension column.
3. In the Hierarchy column, choose a value from the drop-down list.
4. In the Operator column, choose an operator for the drop-down list.
5. In the Filter Expression column, select individual values from the drop-down list, or click the All
member to choose all values.
6. In the Parameters column, select the check box to create a report parameter.
7. Click Run .
After you run the query, click Design on the toolbar to toggle to Query mode to view the MDX query that
was created. Do not change the query text in Query mode if you want to continue to use Design mode to
develop the query. Click Design to toggle back to Design mode.
8. Click OK .
In the Report Data pane, expand the Parameters node to display the report parameter that was
automatically created for the filter.
To view the dataset that provides available values for the report parameter, right-click any blank area in
the Report Data pane, and then click Show Hidden Datasets . The Report Data pane displays all datasets
in the report.
To define a query parameter in MDX in Query mode
1. In the Report Data pane, right-click on a dataset created from a SQL Server Analysis Services data source
type, and then click Quer y . The MDX query designer opens in Design mode.
2. On the toolbar, click Design to toggle to Query mode.
3. On the MDX query designer toolbar, click Quer y Parameters ( ). The Query Parameters dialog box
opens.
4. In the Parameter column, click <Enter Parameter> , and then type the name of a parameter.
5. In the Dimension column, choose a value from the drop-down list.
6. In the Hierarchy column, choose a value from the drop-down list.
7. In the Multiple values column, select the check box to create a multivalue parameter.
8. In the Default column, from the drop-down list, select a single value or multiple values depending on
your choice in step 5.
9. Click OK .
10. On the query designer toolbar, click Run .
11. Click OK .
In the Report Data pane, expand the Parameters node to display the report parameter that was
automatically created for the filter.
To view the dataset that provides available values for the report parameter, right-click any blank area in
the Report Data pane, and then click Show Hidden Datasets . The Report Data pane displays all datasets
in the report.

See Also
Analysis Services Connection Type for MDX (SSRS)
Analysis Services MDX Query Designer User Interface
Analysis Services DMX Query Designer User
Interface
11/2/2020 • 3 minutes to read • Edit Online

Reporting Services provides graphical query designers for building Data Mining Expressions (DMX) queries and
Multidimensional Expression (MDX) queries for an Analysis Services data source. This topic describes the DMX
query designer. For more information about the MDX query designer, see Analysis Services MDX Query
Designer User Interface.
The DMX graphical query designer has three modes: Design, Query, and Result. To switch modes, right-click on
the Query Design pane, and select the mode. Each mode provides a Metadata pane from which you can drag
members from the selected cubes to build a DMX query that retrieves data for a dataset when the report is
processed.

Graphical DMX Query Designer Toolbar


The query designer toolbar provides buttons to help you design DMX queries using the graphical interface. The
following table describes the buttons and their functions.

B UT TO N DESC RIP T IO N

Edit As Text Disabled for this data source type.

Impor t Import an existing query from a report definition (.rdl) file on


the file system. For more information, see Report Embedded
Datasets and Shared Datasets (Report Builder and SSRS).

Switch to the MDX query designer mode.

Switch to the DMX query designer mode.

Refresh metadata from the data source.

Delete the selected column in the Data pane from the query.

Display the Quer y Parameters dialog box. When you


assign a default value to a variable, a corresponding report
parameter is created when you switch to the Layout view in
Report Designer.

Prepare the query.

Toggle between Design mode and Query mode. To change


to result view, right-click on the Design pane and choose
Result .

Graphical DMX Query Designer in Design Mode


When you edit a dataset that uses an Analysis Services data source that has no valid cubes but that does have
valid mining models, the graphical query designer opens in Design mode. The following figure labels the panes
for Design mode.

The following table describes the function of each pane.

PA N E F UN C T IO N

Query Design pane Use the Mining Model and Select Input Table dialog
boxes to build the DMX query.

Grid pane For each row in the grid, use the Source drop-down list to
select a function or expression, and choose fields, groups,
and criteria or arguments to use in your DMX query. To see
the DMX query text generated by your selections, click the
Design Mode button on the toolbar.

To run the DMX query and show results in the Result pane, right-click on the Query Design pane and select
Result .

Graphical DMX Query Designer in Query Mode


To change the graphical query designer to Query mode, click the Design Mode button on the toolbar or right-
click on the query design surface, and choose Quer y from the shortcut menu. Use this mode to enter DMX text
directly into the Query pane.
The following figure labels the panes for Query mode.

The following table describes the function of each pane.


PA N E F UN C T IO N

Query Design pane Use the Mining Model and Select Input Table dialog
boxes to build the DMX query.

Query pane View or edit DMX query text directly in the pane. Changes
to the DMX query text do not persist if you change back to
Design mode.

To run the DMX query and show results in the Result pane, right-click on the Query Design pane and select
Result .

Graphical DMX Query Designer in Result Mode


To display the Result mode, right-click the query design surface and choose Result from the shortcut menu.
When you switch to Result mode, the DMX query runs automatically.
The following figure shows the query designer in Result mode.

To switch back to Design mode or Query mode, right-click on the Result pane and select Design or Quer y .

See Also
Define Parameters in the MDX Query Designer for Analysis Services (Report Builder and SSRS)
Create a Shared Dataset or Embedded Dataset (Report Builder and SSRS)
Analysis Services Connection Type for DMX (SSRS)
Retrieve Data from a Data Mining Model (DMX) (SSRS)
RSReportDesigner Configuration File
Analysis Services Connection Type for MDX (SSRS)
Analysis Services Connection Type for DMX (SSRS)
Analysis Services MDX Query Designer User
Interface
11/2/2020 • 4 minutes to read • Edit Online

Reporting Services provides graphical query designers for building Multidimensional Expression (MDX) queries
and Data Mining Expression (DMX) queries for an Analysis Services data source. This topic describes the MDX
query designer. For more information about the DMX query designer, see Analysis Services Connection Type for
DMX (SSRS).
The MDX graphical query designer has two modes: design mode and query mode. Each mode provides a
metadata pane from which you can drag members from the selected cubes to build an MDX query that retrieves
data when the report is processed.

IMPORTANT
Users access data sources when they create and run queries. You should grant minimal permissions on the data sources,
such as read-only permissions.

NOTE
Importing an .mdx query from a file is not supported.

Graphical MDX Query Designer in Design Mode


When you edit an MDX query for a report dataset, the graphical MDX query designer opens in Design mode.
The following figure labels the panes for Design mode.

The following table lists the panes in this mode:


PA N E F UN C T IO N

Select Cube button (... ) Displays the currently selected cube.

Metadata pane Displays a hierarchical list of measures, Key Performance


Indicators (KPIs), and dimensions defined on the selected
cube.

Calculated Members pane Displays the currently defined calculated members available
for use in the query.

Filter pane Use to choose dimensions and related hierarchies to filter


data at the source and limit data returned to the report.

Data pane Displays the column headings for the result set as you drag
items from the Metadata pane and the Calculated Members
pane. Automatically updates the result set if the
AutoExecute button is selected. .

You can drag dimensions, measures, and KPIs from the Metadata pane, and calculated members from the
Calculated Member pane, onto the Data pane. In the Filter pane, you can select dimensions and related
hierarchies, and set filter expressions to limit the data available to query. If the AutoExecute ( ) toggle button
on the toolbar is selected, the query designer runs the query every time that you drop a metadata object onto
the Data pane. You can manually run the query using the Run ( ) button on the toolbar.
When you create an MDX query in this mode, the following additional properties are automatically included in
the query:
Member Proper ties MEMBER_CAPTION, MEMBER_UNIQUE_NAME
Cell Proper ties VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME,
FONT_SIZE, FONT_FLAGS
To specify your own additional properties, you must manually edit the MDX query in Query mode.
Graphical MDX Query Designer Toolbar in Design Mode
The query designer toolbar provides buttons to help you design MDX queries using the graphical interface. The
following table lists the buttons and their functions.

B UT TO N DESC RIP T IO N

Edit As Text Not enabled for this data source type.

Impor t Import an existing query from a report definition (.rdl) file on


the file system. For more information, see Report Embedded
Datasets and Shared Datasets (Report Builder and SSRS).

Switch to Command Type MDX.

Switch to Command Type DMX.

Refresh metadata from the data source.

Display the Calculated Member Builder dialog box.


B UT TO N DESC RIP T IO N

Toggle between showing and not showing empty cells in the


Data pane. (This is the equivalent to using the NON EMPTY
clause in MDX).

Automatically run the query and show the result every time
a change is made. Results are shown in the Data pane.

Show aggregations in the Data pane.

Delete the selected column in the Data pane from the query.

Display the Quer y Parameters dialog box. When you


specify values for a query parameter, a report parameter
with the same name is automatically created. The value of
the query parameter is set to an expression that references
the report parameter.

Prepare the query.

Run the query and display the results in the Data pane.

Cancel the query.

Toggle between Design mode and Query mode.

Graphical MDX Query Designer in Query Mode


To change the graphical query designer to Quer y mode, click the Design Mode button on the toolbar.
The following figure labels the panes for Query mode.

The following table lists the panes in this mode:

PA N E F UN C T IO N

Select Cube button (... ) Displays the currently selected cube.

Metadata/Functions/Templates pane Displays a hierarchical list of measures, KPIs, and dimensions


defined on the selected cube.
PA N E F UN C T IO N

Query pane Displays the query text.

Result pane Displays the results of running the query.

The Metadata pane displays tabs for Metadata , Functions , and Templates . From the Metadata tab, you can
drag dimensions, hierarchies, KPIs, and measures onto the MDX Query pane. From the Functions tab, you can
drag functions onto the MDX Query pane. From the Templates tab, you can add MDX templates to the MDX
Query pane. When you execute the query, the Result pane displays the results for the MDX query.
You can extend the default MDX query generated in Design mode to include additional member properties and
cell properties. When you run the query, these values do not appear in the result set. However, they are passed
back to Reporting Services and you can use these values in a report. For more information, see Extended Field
Properties for an Analysis Services Database (SSRS).
Graphical Query Designer Toolbar in Query Mode
The query designer toolbar provides buttons to help you design MDX queries using the graphical interface.
The toolbar buttons are identical between Design mode and Query mode, but the following buttons are not
enabled for Query mode:
Edit As Text
Add Calculated Member ( )
Show Empty Cells ( )
AutoExecute ( )
Show Aggregations ( )

See Also
Define Parameters in the MDX Query Designer for Analysis Services (Report Builder and SSRS)
Create a Shared Dataset or Embedded Dataset (Report Builder and SSRS)
Analysis Services Connection Type for DMX (SSRS)
RSReportDesigner Configuration File
Analysis Services Connection Type for MDX (SSRS)
Graphical Query Designer User Interface
11/2/2020 • 6 minutes to read • Edit Online

Reporting Services provides both a graphical query designer and a text-based query designer for creating
queries to retrieve data from a relational database for a report dataset in Report Designer. Use the graphical
query designer to interactively build a query and view the results for data source types SQL Server, Oracle, OLE
DB, and ODBC. Use the text-based query designer to specify multiple Transact-SQL statements, complex query
or command syntax, and expression-based queries. For more information, see Text-based Query Designer User
Interface. For more information about working with specific data source types, see Report Datasets (SSRS).
.

Graphical Query Designer


This graphical query designer supports three types of query commands: Text , StoredProcedure , or
TableDirect . Before you create a query for your dataset, you must select a command type option on the Query
page of the Dataset Properties dialog box.
The following options are available for query type:
Text Supports standard Transact-SQL query text for relational database data sources, including data
processing extensions for Microsoft SQL Server and Oracle.
TableDirect Selects all the columns from the specified table. For example, for a table named Customers,
this is the equivalent of the Transact-SQL statement SELECT * FROM Customers .
StoredProcedure Supports calls to stored procedures on the data source. To use this option, you must
have been granted Execute permissions on the stored procedure by the database administrator on the
data source.
The default command type is Text .

NOTE
Not all data processing extensions support all types. The underlying data provider must support a command type before
the option is available.

Command Type Text


In Text type, the graphical query designer presents four areas, or panes. You can specify columns, aliases, sort
values, and filter values for a Transact-SQL query. You can view the query text generated from your selections,
run the query, and view the result set. The following figure shows the four panes.
The following table describes the function of each pane.

PA N E F UN C T IO N

Diagram Displays graphic representations of the tables in the query.


Use this pane to select fields and define relationships
between tables.

Grid Displays a list of fields returned by the query. Use this pane
to define aliases, sort order, filters, groups, and parameters.

SQL Displays the Transact-SQL query represented by the diagram


and Grid panes. Use this pane to write or update a query
using Transact-SQL.

Result Displays the results of the query. To run the query, right-click
in any pane, and then click Run , or click the Run button on
the toolbar.

When you change information in any one of the first three panes, those changes will appear in the other panes.
For example, if you add a table in the Diagram pane, it will automatically be added to the Transact-SQL query in
the SQL pane. Adding a field to the query in the SQL pane will automatically add the field to the list in the Grid
pane and update the table in the Diagram pane.
For more information, see Query and View Designer Tools (Visual Database Tools).
Toolbar for the Graphical Query Designer
The graphical query designer toolbar provides buttons to help you design Transact-SQL queries using the
graphical interface.

B UT TO N DESC RIP T IO N

Edit As Text Toggle between the text-based query designer and the
graphical query designer.
B UT TO N DESC RIP T IO N

Impor t Import an existing query from a file or report. Only file types
.sql and .rdl are supported. For more information, see Report
Embedded Datasets and Shared Datasets (Report Builder
and SSRS).

Show or hide the Diagram pane.

Show or hide the Grid pane.

Show or hide the SQL pane.

Show or hide the Result pane.

Run the query.

Check that the syntax of the query text is correct.

Set the sort order to Sor t Ascending for the selected


column in the Diagram pane,

Set the sort order to Sor t Descending for the selected


column in the Diagram pane,

Remove the filter for the selected column in the Diagram


pane that is marked as having a filter ( ).

Show or hide the Group By column in the Grid pane. When


the Group By toggle is on, an extra column named Group
By appears in the Grid pane, and each value for the selected
columns in the query defaults to Group By , which causes
the selected column to be included in a Group By clause in
the SQL text. Use the Group By button to automatically add
a GROUP BY clause that includes all columns in the SELECT
clause. When your SELECT clause includes aggregate
function calls (for example, SUM(ColumnName)), include
each non-aggregate column in the GROUP BY clause if you
want it to appear in the result set.

To appear in the Result pane, each column in the query must


have an aggregate function defined for use in calculating the
value to display in the Result pane, or the column in the
query has to be specified in the GROUP BY clause of the SQL
query.

Add a new table from the data source to the Diagram pane.

Note When you add a new table, the query designer tries to
match up foreign key relationships from the data source.
After you add a table, confirm that the foreign key
relationships represented by linkages between the tables are
correct.

Example
The following query returns the list of last names from the AdventureWorks2012 database Person table:
SELECT LastName FROM Person.Person;

You can also run stored procedures from the SQL pane. The following query runs the stored procedure
uspGetEmployeeManagers in the AdventureWorks2012 database:

EXEC uspGetEmployeeManagers '1';

Command Type TableDirect


In TableDirect type, the graphical query designer displays a drop-down list of the available tables from the data
source and a Result pane. If you select a table and click the Run button, all the columns for that table are
returned.

NOTE
the TableDirect feature is supported only by OLE DB and ODBC data source types.

The following table describes the function of each pane.

PA N E F UN C T IO N

Table drop-down list Lists all the available tables from the data source. Select one
from the list to make it active.

Result Displays all columns from the selected table. To run the table
query, click the Run button on the toolbar.

Toolbar Buttons for the Command Type TableDirect


The graphical query designer toolbar provides a drop-down list of tables on the data source. The following table
lists each button and its function.

B UT TO N DESC RIP T IO N

Edit As Text Toggle between the text-based query designer and the
graphical query designer.

Impor t Import an existing query from a file or report. Only file types
.sql and .rdl are supported. For more information, see Report
Embedded Datasets and Shared Datasets (Report Builder
and SSRS).

Toggle between generic query designer and graphical query


designer, preserving the query text or stored procedure
view.

Select all columns from the selected table.

Command Type StoredProcedure


In StoredProcedure type, the graphical query designer displays a drop-down list of the available stored
procedures from the data source and a Result pane. The following table describes the function of each pane.
PA N E F UN C T IO N

Stored procedure drop-down list Lists all the available stored procedures from the data
source. Select one from the list to make it active.

Result Displays the result of running the stored procedure. To run


the selected stored procedure, click the Run button on the
toolbar.

Toolbar Buttons for Command Type StoredProcedure


The graphical query designer toolbar provides a drop-down list of stored procedures on the data source. The
following table lists each button and its function.

B UT TO N DESC RIP T IO N

Edit As Text Toggle between the text-based query designer and the
graphical query designer.

Impor t Import an existing query from a file or report. Only file types
.sql and .rdl are supported. For more information, see Report
Embedded Datasets and Shared Datasets (Report Builder
and SSRS).

Run the selected stored procedure.

Stored procedure drop-down list Click the down arrow to display a list of available stored
procedures from the data source. Click any stored procedure
from the list to select it.

Example
The following stored procedure calls a chain-of-command list of managers from the AdventureWorks2012
database. This stored procedure accepts BusinessEntityID as parameter. You can enter any small integer.
uspGetEmployeeManagers '1';

See Also
Query Design Tools (SSRS)
Report Datasets (SSRS)
SQL Server Connection Type (SSRS)
OLE DB Connection Type (SSRS)
Report Datasets (SSRS)
Oracle Connection Type (SSRS)
RSReportDesigner Configuration File
Design Queries and Views How-to Topics (Visual Database Tools)
Relational Query Designer User Interface (Report
Builder)
4/30/2021 • 12 minutes to read • Edit Online

Report Builder, and Report Designer in SQL Server Data Tools (SSDT), provide both a graphical query designer
and a text-based query designer to help you create a query that specifies the data to retrieve from Microsoft
SQL Server and Microsoft SQL Database relational databases and Microsoft SQL Server 2016 Parallel Data
Warehouse for a report dataset. Use the graphical query designer to explore the metadata, interactively build a
query, and view the results for your query. Use the text-based query designer to view the query that was built by
the graphical query designer or to modify a query. You can also import an existing query from a file or report.

NOTE
In Report Builder, to specify a query for data source types Oracle, OLE DB, ODBC, and Teradata, you must use the text-
based query designer. For more information, see Text-based Query Designer User Interface (Report Builder).

IMPORTANT
Users access data sources when they create and run queries. You should grant minimal permissions on the data sources,
such as read-only permissions.

Graphical Query Designer


In the graphical query designer, you can explore the database tables and views, interactively build the SQL
SELECT statement that specifies the database tables and columns from which to retrieve data for a dataset. You
choose the fields to include in the dataset and optionally, specify filters that limit the data in the dataset. You can
specify that filters are used as parameters and provide the value of the filter at run-time. If you choose multiple
related tables, the query designer describes the relationship between sets of two tables.
The graphical query designer is divided into three areas. Depending on whether the query uses tables/views or
stored procedures/table-valued functions, the layout of the query designer changes.

NOTE
SQL Server 2016 Parallel Data Warehouse does not support stored procedures or table-valued functions.

The following figure shows the graphical query designer when it is used with tables or views.
The following figure shows the graphical query designer when it is used with stored procedures or table-valued
functions.

The following table describes the function of each pane.


Database view
Displays a hierarchical view of tables, views, stored procedures, and table-valued functions that are organized by
database schema.
Selected fields
Displays the list of database field names from the selected items in the Database view pane. These fields become
the field collection for the report dataset.
Function parameters
Displays the list of input parameters for stored procedures or table-valued functions in the Database view pane.
Relationships
Displays a list of relationships that are inferred from selected fields for tables or views in the Database view
pane or the relationships that you created manually.
Applied filters
Displays a list of fields and filter criteria for tables or views in the Database view.
Query results
Displays sample data for the result set for the automatically generated query.
Database View Pane
The Database View pane displays the metadata for database objects that you have the permissions to view,
which is determined by the data source connection and credentials. The hierarchical view displays database
objects organized by database schema. Expand the node for each schema to view tables, views, stored
procedures, and table-valued functions. Expand a table or view to display the columns.
Selected Fields Pane
The Selected Fields pane displays the fields in the report dataset and the groups and aggregates to include in
the query.
The following options are displayed:
Selected fields Displays the database fields that you select for tables or views or the input parameters
for stored procedures or table-valued functions. The fields that are displayed in this pane become the
field collection for the report dataset.
Use the Report Data pane to view the field collection for a report dataset. These fields represent the data
you can display in tables, charts, and other report items when you view a report.
Group and Aggregate Toggles the use of grouping and aggregates in the query. If you turn off the
grouping and aggregate feature after you added grouping and aggregates, they are removed. The text,
(none) , indicates no grouping and aggregates are used. If you turn the grouping and aggregate feature
on again, the previous grouping and aggregates are restored.
Delete Field Deletes the selected field.
Group and Aggregate
Queries to databases with a large table might return a number of data rows that is too large to be useful in a
report and has a performance impact on the network that transports the vast amount of data and on the report
server that processes the report. To limit the number of data rows, the query can include SQL aggregates that
summarize the data on the database server. SQL aggregates are different from client-side aggregates, which are
applied when the report is rendered.
Aggregates provide summaries of data and the data is grouped to support the aggregate that deliver the
summary data. When you use an aggregate in the query, the other fields returned by the query are
automatically grouped and the query includes the SQL GROUP BY clause. You can summarize data without
adding an aggregate by using only the Grouped by option in the Group and Aggregate list. Many of the
aggregates include a version that uses the DISTINCT keyword. Including DISTINCT eliminates duplicate values.
Microsoft SQL Server uses Transact-SQL and Microsoft SQL Server 2016 Parallel Data Warehouse uses SQL.
Both dialects of the SQL language support the clause, keyword, and aggregates that the query designer
provides.
For more information about Transact-SQL, see Transact-SQL Reference (Database Engine).
The following table list the aggregates and provides brief descriptions of them.

A GGREGAT E DESC RIP T IO N

Avg Return the average of the values in a group. Implements the


SQL AVG aggregate.

Count Return the number of items in a group. Implements the SQL


COUNT aggregate.
A GGREGAT E DESC RIP T IO N

Count Big Returns the number of items in a group. It is the SQL


COUNT_BIG aggregate. The difference between COUNT and
COUNT_BIG is that COUNT_BIG always returns a bigint
data type value.

Min Returns the minimum value in a group. Implements the SQL


MIN aggregate.

Max Returns the maximum value in a group. Implements the SQL


MAX aggregate.

StDev Returns the statistical standard deviation of all values in a


group. Implements the SQL STDEV aggregate.

StDevP Returns the statistical standard deviation for the population


of the all values in a group specified expression. Implements
the SQL STDEVP aggregate.

Sum Returns the sum of all the values in the group. Implements
the SQL SUM aggregate.

Var Returns the statistical variance of all values in the group.


Implements the SQL VAR aggregate.

VarP Returns the statistical variance for the population for all
values in the group. Implements the SQL VARP aggregate.

Avg Distinct Returns unique averages. Implements a combination of the


AVG aggregation and the DISTINCT keyword.

Count Distinct Returns unique counts. Implements a combination of the


COUNT aggregate and the DISTINCT keyword.

Count Big Distinct Return unique count of items in a group. Implements a


combination of the COUNT_BIG aggregate and the
DISTINCT keyword.

StDev Distinct Returns unique statistical standard deviations. Implements a


combination of the STDEV aggregate and the DISTINCT
keyword.

StDevP Distinct Returns unique statistical standard deviations. Implements


combination of the STDEVP aggregate and the DISTINCT
keyword.

Sum Distinct Returns unique sums. Implements a combination of the SUM


aggregate and the DISTINCT keyword.

Var Distinct Returns unique statistical variances. Implements a


combination of the VAR aggregate and the DISTINCT
keyword.

VarP Distinct Returns unique statistical variances. Implements combination


of the VARP aggregate and the DISTINCT keyword.
Function Parameters Pane
The Function Parameters pane displays the parameters for a stored procedure or table-valued function. The
following columns are displayed:
Parameter Name Displays the name of the parameter that is defined by the stored procedure or table-
valued function.
Value A value to use for the parameter when the query runs to retrieve data to display in the Query
Results pane at design-time. This value is not used when the report runs at run-time.
Relationships Pane
The Relationships pane displays the join relationships. The relationships can be detected automatically from the
foreign key relationships that are retrieved from the database metadata or you can create them manually.
The following options are displayed:
Auto Detect Toggles the auto-detect feature that automatically creates relationships between tables. If
auto detect is turned on, the query designer creates relationships from foreign keys in tables; otherwise,
you must create the relationships manually. When you select tables in the Database view pane, auto
detect automatically attempts to create relationships. If you turn on auto detect after you have manually
created joins, those joins will be discarded.

IMPORTANT
When using with SQL Server 2016 Parallel Data Warehouse the metadata needed to create joins is not provided
and relationships cannot be detected automatically. If your query retrieves data from SQL Server 2016 Parallel
Data Warehouse, all table joins must be created manually.

Add Relationship Adds a relationship to the Relationship list.


If auto detect is turned on, the tables from which columns are used in the query are automatically added
to the Relationship list. When auto detect identifies that two tables are related, one table is added to the
Left Table column, the other the Right Table column, and an inner join is created between them. Each
relationship generates a JOIN clause in the query. If the tables are not related, all of them are listed in
Left Table column and the Join Type column indicates the tables are not related to other tables. When
auto detect is turned on, you cannot manually add relationships between tables that auto detect
determines are unrelated.
If auto detect is turned off, you can add and change relationships between tables. Click Edit Fields to
specify the fields to use to join the two tables.
The order in which the relationships appear in the Relationship list is the order in which the joins will be
performed in the query. You can change the order of relationships by moving them up and down in the
list.
When using multiple relationships in a query, one of the tables in each relationship, except the first one,
must be referenced in a proceeding relationships.
If both tables in a relationship are referenced by a preceding relationship then the relationship does not
generate a separate join clause; instead a join condition is added to the join clause generated for the
preceding relationship. The join type is inferred by the preceding relationship that referenced the same
tables.
Edit Fields Opens the Edit Related Fields dialog box in which you add and modify relationships
between tables. You chose the fields in the right and left tables to join. You can join multiple fields from
the left table and right table to specify multiple join conditions in a relationship. The two fields that join
the left and right tables do not need to have the same name. The joined fields must have compatible data
types.
Delete Relationship Deletes the selected relationship.
Move Up and Move Down Moves relationships up or down the Relationship list. The sequence in
which relationships are placed in the query can impact the query results. The relationships are added to
the query in the order they appear in the Relationship list.
The following columns are displayed:
Left Table Displays the name of the first table that is part of a join relationship.
Join Type Displays the type of SQL JOIN statement that is used in the automatically generated query. By
default, if a foreign key constraint is detected, INNER JOIN is used. Other joins types can be LEFT JOIN or
RIGHT JOIN. If none of these join types apply, the Join Type column displays Unrelated . No CROSS
JOIN joins are created for unrelated tables; instead, you must manually create relationships by joining
columns in the left and right tables.
Right Table Displays the name of the second table in the join relationship.
Join Fields Lists the pairs of joined fields, if a relationship has multiple join conditions the pairs of joined
fields are separated by commas (,).
Applied Filters Pane
The Applied Filters pane displays the criteria that are used to limit the number of rows of data that are retrieved
at run time. Criteria specified in this pane are used to generate an SQL WHERE clause. When you select the
parameter option, a report parameter is automatically created. Report parameters that are based on query
parameters enable a user to specify values for the query to control the data in the report.
The following columns are displayed:
Field Name Displays the name of the field to apply the criteria to.
Operator Displays the operation to use to in the filter expression.
Value Displays the value to use in the filter expression.
Parameter Displays the option to add a query parameter to the query. Use the Dataset properties to
view the relationship between query parameter and report parameter.
Query Results Pane
The Query results pane displays the results for the automatically generated query that is specified by selections
in the other panes. The columns in the result set are the fields that you specify in the Selected Fields pane and
the row data is limited by the filters that you specify in the Applied Filters pane. If the query includes aggregates
the result set includes the new aggregate columns. For example, if the column Color is aggregated using the
Count aggregate, the query results include a new column. By default, this column is named Count_Color .
This data represents values from the data source at the time that you run the query. The data is not saved in the
report definition .The actual data in the report is retrieved when the report is processed.
Sort order in the result set is determined by the order the data is retrieved from the data source. Sort order can
be changed by modifying the query or after the data is retrieved for the report.
Graphical Query Designer Toolbar
The relational query designer toolbar provides the following buttons to help you specify or view the results of a
query.
B UT TO N DESC RIP T IO N

Edit As Text Toggle to the text-based query designer to view the


automatically generated query or to modify the query.

Impor t Import an existing query from a file or report. File types .sql
and .rdl are supported.

Run Quer y Run the query. The Query results pane displays the result
set.

Understanding Automatically Generated Queries


When you select tables and columns or stored procedures and views in the Database View pane, the query
designer retrieves the underlying primary key and foreign key relationships from the database schema. By
analyzing these relationships, the query designer detects relationships between two tables and adds joins to the
query. You can then modify the query by adding groups and aggregates, adding or changing relationships, and
adding filters. To view the query text that shows the columns from which to retrieve data, the joins between
tables, and any groups or aggregates, click Edit As Text .

Text-Based Query Designer


For the most control over your query, use the text-based query designer. To switch to the text-based query
designer, in the toolbar, click Edit As Text . After you edit a query in the text-based query designer, you can no
longer use the relational query designer. The query will then always open in the text-based query designer. For
more information, see Text-based Query Designer User Interface (Report Builder).

See Also
Query Design Tools (SSRS)
Hyperion Essbase Query Designer User Interface
11/2/2020 • 3 minutes to read • Edit Online

Reporting Services provides a graphical query designer for building Multidimensional Expression (MDX) queries
for a Hyperion Essbase data source. The MDX graphical query designer has two modes: Design mode and Query
mode. Each mode provides a Metadata pane from which you can drag members from a cube defined on the
data source to build an MDX query that retrieves data when the report is processed.

IMPORTANT
Users access data sources when they create and run queries. You should grant minimal permissions on the data sources,
such as read-only permissions.

For more information about working with a Hyperion Essbase multidimensional data source, see Hyperion
Essbase Connection Type (SSRS).
This section describes the toolbar buttons and query designer panes for each mode of the graphical query
designer.

Graphical Query Designer in Design Mode


When you edit an MDX query for a dataset that uses a Hyperion Essbase data source, the graphical query
designer opens in Design mode.
The following figure labels the panes for Design mode.

The following table lists the panes in this mode.


PA N E F UN C T IO N

Select Cube button Displays the currently selected cube.

Metadata pane Displays a hierarchical list of cubes.

Calculated Members pane Displays the currently defined calculated members available
for use in the query.

Filter pane Displays the filters to apply in the query.

Data pane Displays the results of running the query.

You can drag dimensions and measures from the Metadata pane, and calculated members from the Calculated
Member pane onto the Data pane. If the AutoExecute toggle button on the toolbar is on, the query designer
runs the query every time you drop an object onto the Data pane. If AutoExecute is off, the query designer
does not run the query as you make changes to the Data pane. You can manually run the query using the Run
button on the toolbar.
In the Filter pane, you can select dimension values to limit the data retrieved from the data source. Values you
define in the filter in Design mode appear in the MDX Where clause in Query mode.
Toolbar for the Graphical Query Designer in Design Mode Toolbar
The query designer toolbar provides buttons to help you design MDX queries using the graphical interface. The
following table shows the buttons and describes their functions.

B UT TO N DESC RIP T IO N

Edit As Text Toggle between the text-based query designer and the
graphical query designer. Not available for this data source
type.

Impor t Import an existing query from a report definition (.rdl) file on


the file system. For more information, see Report Embedded
Datasets and Shared Datasets (Report Builder and SSRS).

Refresh metadata from the data source.

Display the Calculated Member Builder dialog box. Use


this to create or edit expressions for a calculated member,
including setting the Solve Order property.

Switch between showing and not showing empty cells in the


Data pane. (This is the equivalent to using the NON EMPTY
clause in MDX).

Automatically run the query and show the result every time
a change is made, for example, deleting a column in the Data
pane. Results are shown in the Data pane.

Delete the selected item from the query. Use this button to
delete selected rows in the Filter pane.

Run the query and display the results in the Data pane.
B UT TO N DESC RIP T IO N

Cancel the query.

Switch between Design mode and Query mode.

Graphical Query Designer in Query Mode


To change the graphical query designer to Query mode, click the Design Mode toggle button on the toolbar.
The following figure indicates the parts of the query designer in Query mode.

The following table describes the function of each pane.

PA N E F UN C T IO N

Select Cube button Displays the currently selected cube.

Metadata/Functions pane Displays a tabbed window that shows a list of available


metadata or functions that can be used to build the query
text.

Query pane Displays the current query text.

Result pane Displays the results of the query.

From the Metadata pane, you can drag measures and dimensions from the Metadata tab onto the MDX Query
pane. You can drag functions from the Functions tab onto the MDX Query pane. When you execute the query,
the Result pane displays the results for the current MDX query.
Toolbar for the Graphical Query Designer in Query Mode
The query designer toolbar provides buttons to help you design MDX queries using the graphical interface. The
toolbar buttons are identical between Design mode and Query mode, but the following buttons are not enabled
for Query mode:
Edit As Text
Add Calculated Member ( )
Show Empty Cells ( )
AutoExecute ( )

See Also
Create a Shared Dataset or Embedded Dataset (Report Builder and SSRS)
RSReportDesigner Configuration File
SAP NetWeaver BI Query Designer User Interface
11/2/2020 • 4 minutes to read • Edit Online

Reporting Services provides a graphical query designer for building Multidimensional Expression (MDX) queries
for a SAP NetWeaver® Business Intelligence data source. The MDX graphical query designer has two modes:
Design mode and Query mode. Each mode provides a Metadata pane from which you can drag members from
an InfoCube, MultiProvider, or Web-enabled query defined on the data source to build an MDX query that
retrieves data when the report is processed.

IMPORTANT
Users access data sources when they create and run queries. You should grant minimal permissions on the data sources,
such as read-only permissions.

For more information about working with a SAP multidimensional data source, see SAP NetWeaver BI
Connection Type (SSRS).
This section describes the toolbar buttons and query designer panes for each mode of the graphical query
designer.

Graphical Query Designer in Design Mode


When you edit a dataset query that uses a SAP NetWeaver Business Intelligence data source, the graphical
query designer opens in the Design mode. The following figure labels the panes for Design mode.

The following table lists the panes in this mode.


PA N E F UN C T IO N

Select Cube button Displays the currently selected InfoCube, MultiProvider, or


Web-enabled query.

Metadata pane Displays a hierarchical list of InfoCubes, MultiProviders, and


queries. Queries created at the data source may appear
under the corresponding cube.

Calculated Members pane Displays the currently defined calculated members available
for use in the query.

Data pane Displays the results of running the query.

You can drag dimensions and key figures from the Metadata pane, and calculated members from the Calculated
Member pane onto the Data pane. If the AutoExecute toggle button on the toolbar is on, the query designer
runs the query every time you drop an object onto the Data pane. If AutoExecute is off, the query designer
does not run the query as you make changes to the Data pane. You can manually run the query using the Run
button on the toolbar.
Toolbar for the Graphical Query Designer in Design Mode Toolbar
The query designer toolbar provides buttons to help you design MDX queries using the graphical interface. The
following table describes the buttons and their functions.

B UT TO N DESC RIP T IO N

Edit As Text Toggle between the text-based query designer and the
graphical query designer. Not available for this data source
type.

Impor t Import an existing query from a report definition (.rdl) file on


the file system. For more information, see Report Embedded
Datasets and Shared Datasets (Report Builder and SSRS).

Refresh metadata from the data source.

Display the Calculated Member Builder dialog box.

Switch between showing and not showing empty cells in the


Data pane. (This is the equivalent to using the NON EMPTY
clause in MDX).

Automatically run the query and show the result every time
a change is made, for example, deleting a column in the Data
pane. Results are shown in the Data pane.

Delete the selected column in the Data pane from the query.

Display the Variables dialog box. This button is enabled


only when the selected cube is a Query cube (because only
query cubes support variables). When you assign a default
value to a variable, a corresponding report parameter is
created.

Run the query and display the results in the Data pane.
B UT TO N DESC RIP T IO N

Cancel the query.

Switch between Design mode and Query mode.

Graphical Query Designer in Query Mode


To change the graphical query designer to Query mode, click the Design Mode toggle button on the toolbar.
The following figure indicates the parts of the query designer in Query mode.

The following table describes the function of each pane.

PA N E F UN C T IO N

Select Cube button Displays the currently selected InfoCube, MultiProvider, or


other cube.

Metadata/Functions pane Displays a tabbed window that shows a list of available


metadata or functions that can be used to build the query
text.

Variables pane Displays the currently defined variables available for use in
the query.

Query pane Displays the current query text.

Result pane Displays the results of the query.


From the Metadata pane, you can drag key figures and dimensions from the Metadata tab onto the MDX Query
pane; the technical name for the metadata is inserted at the cursor. You can drag functions from the Functions
tab onto the MDX Query pane. When you execute the query, the Result pane displays the results for the current
MDX query.
If your selected cube is a Web-enabled query, you will be prompted to set static default values for the existing
variables. You can then drag variables onto the MDX Query pane.
The Metadata and Variable panes display friendly names. When you drop the objects onto the MDX Query pane,
you see the technical names needed by the data source entered into the MDX query.
Toolbar for the Graphical Query Designer in Query Mode
The query designer toolbar provides buttons to help you design MDX queries using the graphical interface. The
toolbar buttons are identical between Design mode and Query mode, but the following buttons are not enabled
for Query mode:
Edit As Text
Add Calculated Member ( )
Show Empty Cells ( )
AutoExecute ( )
Delete ( )

See Also
Create a Shared Dataset or Embedded Dataset (Report Builder and SSRS)
RSReportDesigner Configuration File
SharePoint List Query Designer (Report Builder)
11/2/2020 • 4 minutes to read • Edit Online

Report Builder and Report Designer provide both a graphical query designer and a text-based query designer to
help you create a query that specifies the data to retrieve from a SharePoint site for a report dataset. Use the
graphical query designer to explore the SharePoint list metadata, interactively build a query, and view the results
of your query. Use the text-based query designer to view the query that was built by the graphical query
designer, modify a query, or type the query commands. You can also import an existing query from a file or
report.

IMPORTANT
Users access data sources when they create and run queries. You should grant minimal permissions on the data sources,
such as read-only permissions.

Graphical Query Designer


In the graphical query designer you can explorer the SharePoint site, interactively build the command that
retrieve SharePoint list data for a dataset. You choose the fields to include in the dataset and optionally, specify
filters that limit the data in the dataset. You can specify that filters are used as parameters and provide the value
of the filter at run-time.
SharePoint lists include a large number of SharePoint specific fields that might not be useful to include in
reports. The query designer provides an option to hide these fields to make it easier and quicker to determine
the fields to use.
The graphical query designer is divided into three areas
Explore pane in which you select the list items and their fields to use.
Design area in which you build the query.
Results pane in which you view the query results.
The following figure shows the graphical query designer when it is used with SharePoint lists.
The following table describes the function of each pane.
SharePoint Lists
Displays SharePoint lists and the fields within each item in the list.
Selected fields
Displays the list of SharePoint list field names from the selected items in the SharePoint Lists pane. These fields
become the field collection for the report dataset.
Applied filters
Displays a list of fields and filter criteria for tables or views in the Database view.
Query results
Displays sample data for the result set for the automatically generated query.
SharePoint Lists Pane
The SharePoint Lists pane displays the metadata for database objects that you have the permissions to view,
which is determined by the data source connection and credentials. The hierarchical view displays database
objects organized by database schema. Expand the node for each schema to view tables, views, stored
procedures, and table-valued functions. Expand a table or view to display the columns.
Selected Fields Pane
The Selected Fields pane displays the list item fields that you select for SharePoint list items. The fields that are
displayed in this pane become the field collection for the report dataset. After you create a dataset and a query,
use the Report Data pane to view the field collection for a report dataset. These fields represent the data you can
display in tables, charts, and other report items when you view a report.
To add or remove fields to this pane, select or clear check boxes for the table or view fields in the SharePoint
Lists pane.
Applied Filters Pane
The Applied Filters pane displays the criteria that are used to limit the number of rows of data that are retrieved
at run-time. Criteria specified in this pane are used to generate a Transact-SQL WHERE clause. When you select
the parameter option, a report parameter is automatically created. Report parameters that are based on query
parameters enable a user to specify values for the query to control the data in the report.
The following columns are displayed:
Field Name Displays the name of the field to apply the criteria to.
Operator Displays the operation to use in the filter expression.
Value Displays the value to use in the filter expression.
Parameter Displays the option to add a query parameter to the query. Use the Dataset properties to
view the relationship between query parameter and report parameter.
Query Results Pane
The Query results pane displays the results for the automatically generated query that is specified by selections
in the other panes. The columns in the result set are the fields that you specify in the Selected Fields pane and
the row data is limited by the filters that you specify in the Applied Filters pane.
This data represents values from the data source at the time that you run the query. The data is not saved in the
report definition .The actual data in the report is retrieved when the report is processed.
Sort order in the result set is determined by the order the data is retrieved from the data source. Sort order can
be changed by modifying the query or after the data is retrieved for the report.
Graphical Query Designer Toolbar
The relational query designer toolbar provides the following buttons to help you specify or view the results of a
query.

B UT TO N DESC RIP T IO N

Edit As Text Toggle to the text-based query designer to view the


automatically generated query or to modify the query.

Impor t Import an existing query from a file or report. File types .sql
and .rdl are supported.

Run Quer y Run the query. The Query results pane displays the result
set.

Show Hidden Fields Toggle to show or hide the fields that were automatically
generated by SharePoint such as the ProgId and Level for
SharePoint link items, but are typically not used in reports..
Hiding these fields makes the field list shorter and easier to
use.

See Also
Query Design Tools (SSRS)
Text-based Query Designer User Interface (Report
Builder)
3/31/2021 • 4 minutes to read • Edit Online

Use the text-based query designer to specify a query using the query language supported by the data source,
run the query, and view the results at design time. You can specify multiple Transact-SQL statements, query or
command syntax for custom data processing extensions, and queries that are specified as expressions. Because
the text-based query designer does not preprocess the query and can accommodate any kind of query syntax,
this is the default query designer tool for many data source types.

IMPORTANT
Users access data sources when they create and run queries. You should grant minimal permissions on the data sources,
such as read-only permissions.

The text-based query designer displays a toolbar and the following two panes:
Quer y Shows the query text, table name, or stored procedure name depending on the query type. Not
all query types are available for all data source types. For example, table name is supported only for the
data source type OLE DB.
Result Shows the results of running the query at design time.

Text-based Query Designer Toolbar


The text-based query designer provides a single toolbar for all the command types. The following table lists each
button on the toolbar and its function.

B UT TO N DESC RIP T IO N

Edit As Text Toggle between the text-based query designer and the
graphical query designer. Not all data source types support
graphical query designers.

Impor t Import an existing query from a file or report. Only file types
sql and rdl are supported

Run the query and display the result set in the Result pane.

Command Type Select Text , StoredProcedure , or TableDirect . If a stored


procedure has parameters, the Define Quer y Parameters
dialog box appears when you click Run on the toolbar, and
you can fill in values as needed. Support for command type
varies by data source type. For example, only OLE DB and
ODBC support TableDirect .

Note: If a stored procedure returns more than one result set,


only the first result set is used to populate the dataset.

Command Type Text


When you create a SQL Server dataset, the relational query designer opens by default. To switch to the text-
based query designer, click the Edit As Text toggle button on the toolbar. The text-based query designer
presents two panes: the Query pane and the Result pane. The following figure labels each pane.

The following table describes the function of each pane.

PA N E F UN C T IO N

Query Displays the Transact-SQL query text. Use this pane to write
or edit a Transact-SQL query.

Result Displays the results of the query. To run the query, right-click
in any pane and click Run , or click the Run button on the
toolbar.

Example
The following query returns the list of names from the AdventureWorks2014 database ContactType table for
the Person schema.

SELECT Name FROM Person.ContactType

When you click Run on the toolbar, the command in the Quer y pane runs and the results are displayed in the
Result pane. The resultset displays a list of 20 types of contacts, for example, Owner or Sales Agent.
Command Type StoredProcedure
When you select Command typeStoredProcedure , the text-based query designer presents two panes: the
Query pane and the Result pane. Enter the stored procedure name in the Query pane and click Run on the
toolbar. If the stored procedures uses parameters, the Define Quer y Parameters dialog box opens. Enter the
parameter values for the stored procedure. A report parameter is created for every stored procedure input
parameter.
The following figure shows the Query and Results panes when you run a stored procedure. In this case, the
input parameters are constants.

The following table describes the function of each pane.


PA N E F UN C T IO N

Query Displays the name of the stored procedure and any input
parameters.

Result Displays the results of the query. To run the query, right-click
in any pane and click Run , or click the Run button on the
toolbar.

Example
The following query calls the AdventureWorks2014 stored procedure uspGetWhereUsedProductID . You
must enter a value for the product identification number parameter when you run the query.

uspGetWhereUsedProductID

Click the Run (! ) button. When prompted for the query parameters, use the following table to enter values.

PA RA M ET ER VA L UE

@StartProductID 820

@CheckDate 20010115

For the specified date, the result set displays a list of 13 product identifiers that used the specified component
number.
Command Type TableDirect
When you select Command typeTableDirect , the text-based query designer presents two panes: the Query
pane and the Result pane. When you enter a table and click the Run button, all the columns for that table are
returned.
Example
For a data source type OLE DB, the following dataset query returns a result set for all contact types in the
AdventureWorks2014 database.
Person.ContactType

When you enter the table name Person.ContactType, it is the equivalent of creating the Transact-SQL statement
SELECT * FROM Person.ContactType .

See Also
Relational Query Designer User Interface (Report Builder)
Query Design Tools (SSRS)
Embedded and Shared Datasets (Report Builder
and SSRS)
11/2/2020 • 3 minutes to read • Edit Online

In a report, a dataset represents report data that is returned from running a query on an external data source.
The dataset depends on the data connection that contains information about the external data source. The data
itself is not included in the report definition. The dataset contains a query command, a field collection,
parameters, filters, and data options that include case sensitivity and collation. There are two types of datasets:
Shared datasets. A shared dataset is published on a report server and can be used by multiple reports.
A shared dataset must be based on a shared data source. A shared dataset can be cached and scheduled
by creating a cache refresh plan.
Embedded datasets. Embedded datasets are defined in and used by a single report.
The difference between the two is in how they are created, stored, and managed.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Shared Datasets
Use a shared dataset to provide a query that can be used by more than one report. Shared datasets are stored
on the report server and managed separately from reports or shared data sources. For example, a report server
administrator might update the query to take advantage of improved indexing or other query performance
optimization.
We recommend that you use shared datasets as much as possible. You can optimize a query or cache query
results to benefit report performance. Shared datasets make data access easier to manage, and help to keep
reports and the datasets they access more secure and more performant.
In Report Designer, you can create shared datasets as part of a report project, and control whether to deploy
them to a report server. You cannot browse to a report server and select a shared dataset to add to your report.
In Report Builder, you can do the following:
1. To create a shared dataset, use Shared Dataset Design View. You can save it to a report server or
SharePoint site to share with other reports. You can also browse to the report server and edit and existing
shared dataset. In this view, you can build a query and set all dataset options. For more information, see
Shared Dataset Design View (Report Builder).
2. To add a shared dataset to your report, open Report Builder in Report Design View. From a wizard or
from the Report Data pane, browse to the report server and select the shared dataset to add to your
report. In this view, you cannot change the query except to add fields. You can override other data options
and add filters. You cannot remove filters.
3. The following table compares the properties that can be configured for the definition of the shared
dataset on the report server and the instance of the shared dataset in the report definition.
C O N F IGURAT IO N N OT ES F O R T H E C O N F IGURAT IO N N OT ES F O R T H E
P RO P ERT Y DEF IN IT IO N IN STA N C E

Query text Configure the query, including Cannot change the query.
defining it as expression.

Query parameters Cannot reference report parameters Configure parameters that are not
marked Read Only in the definition
Includes default values

Includes a Read Only flag

Filters Define filters Cannot view or change dataset


filters that are part of the definition

Can create additional filters

Data Source Must be a shared data source Cannot change the data source

Fields Fields from the query command View fields, but cannot change them

Calculated fields are not part of the The field collection is static based on
dataset definition the query at the time you added
the shared dataset to the report. To
update, click Refresh Fields in the
Dataset Proper ties dialog box.
The actual field collection is
whatever the current query in the
definition returns.

Add calculated fields

Dataset Data options such as case sensitivity Override data options in the
instance

Embedded Datasets
Use an embedded dataset when you want to get data from an external data source to be used only in one
report. Embedded datasets are useful when you want to create a query that has no other dependencies and that
you do not need to use for multiple reports.
To create or edit an embedded dataset, use the Report Data pane. After you create a dataset, you can configure
the properties in the Dataset Proper ties dialog box.

See Also
Compare embedded and shared data sources - Report Builder & SSRS Create a Shared Dataset or Embedded
Dataset (Report Builder and SSRS)
Report Datasets (SSRS)
Dataset Fields Collection (Report Builder and SSRS)
Create data connection strings - Report Builder & SSRS
Create a Shared Dataset or Embedded Dataset
(Report Builder and SSRS)
5/10/2021 • 4 minutes to read • Edit Online

APPLIES TO: ✔
️ Microsoft Report Builder (SSRS) ❌ Power BI Report Builder
Embedded datasets are for use in a single paginated report. Shared datasets on a report server can be used by
multiple Reporting Services reports, both mobile and paginated. To create a dataset, you need an embedded or
shared data source.

Report Builder tasks


Use Report Builder for the following tasks:
1. Create a shared dataset in Dataset Design View. Shared datasets must use published shared data sources.
2. Create an embedded dataset in Report Design View.
3. Save the dataset directly to the report server or SharePoint site.

Report Designer tasks


Use Report Designer in SQL Server Data Tools (SSDT) for the following tasks:
1. Create a shared dataset in Solution Explorer. Shared datasets must use data sources from the Shared Data
Sources folder in Solution Explorer.
2. Create an embedded dataset in the Report Data pane.
3. Optionally deploy the shared datasets and shared data source with the report. For each type of item, use
Project Properties to specify paths to folders on the report server or SharePoint site.
For more information, see Report Embedded Datasets and Shared Datasets (Report Builder and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To create a shared dataset in Report Builder


1. Open Report Builder. The New repor t or dataset pane opens, as shown in the following figure:
NOTE
If the New repor t or dataset pane does not appear, from the Report Builder button, click New .

2. In the left pane, under Create a dataset , click Shared Dataset .


3. In the right pane, click Browse to select a shared data source from the report server, and then click
Create . The query designer associated with the shared data source opens.
4. In the query designer, specify the fields to include in the dataset.
5. Click Run (! ) to run the query.
6. On the Repor t Builder button, click Save or Save As to save the shared dataset to the report server.
7. To exit Report Builder, click Repor t Builder , and then click Exit Repor t Builder . To work with reports,
click Repor t Builder , and then click New or Open .

To set query parameter options


1. Open Report Builder.
2. Click Open .
3. Browse to the report server, and select the folder for the shared data source.
4. In Items of type , click Datasets (*.rsd) in the drop-down list.
5. Select the shared dataset, and then click Open . The associated query designer opens.
6. On the Ribbon, click Dataset Proper ties .
7. Click Parameters . On this page, set a default value to a constant or an expression, mark the parameter as
read-only, nullable, or Omit From Quer y . For more information, see Report Parameters.
8. Click OK .

To create a dataset from a SQL Server relational database


1. In the Report Data pane, right-click the name of the data source, and then click Add Dataset . The Quer y
page of the Dataset Proper ties dialog box opens.
2. In Name , type a name for the dataset or accept the default name.
NOTE
The dataset name is used internally within the report. For clarity, we recommend that the name of the dataset
describe the data that the query returns.

3. In Data source , browse to and select the name of an existing shared data source, or click New to create
a new embedded data source.
4. Select a Quer y type option. Options depend on the data source type.
Select Text to write a query using the query language of the data source.
Select Table to return all the fields in a relational database table.
Select StoredProcedure to run a stored procedure by name.
5. In Quer y , type the query, stored procedure, or table name. Alternatively, click Quer y Designer to open
the graphical or text-based query designer tool, or Impor t to import the query from an existing report.
In a few cases, the field collection specified by the query can only be determined by running the query on
the data source. For example, a stored procedure may return a variable set of fields in the result set. Click
Refresh Fields to run the query on the data source and retrieve the field names that are needed to
populate the dataset field collection in the Report Data pane. The field collection appears under the
dataset node after you close the Dataset Proper ties dialog box.
6. In Timeout , type the number of seconds that the report server waits for a response from the database.
The default value is 0 seconds. When the time out value is 0 seconds, the query does not time out.
7. Click OK .
The dataset and its field collection appear in the Report Data pane under the data source node.

See Also
Report Embedded Datasets and Shared Datasets (Report Builder and SSRS)
Dataset Fields Collection (Report Builder and SSRS)
Report Datasets (SSRS)
Create data connection strings - Report Builder & SSRS
Embedded and Shared Datasets (Report Builder and SSRS)
Report Parts and Datasets in Report Builder
11/2/2020 • 3 minutes to read • Edit Online

In Report Builder, the easiest way to include data in a report is to add report parts from the Report Part Gallery.
Report parts contain the datasets that they depend on, which are known as dependent datasets. Dependent
datasets are based on shared data sources and can be either embedded datasets or shared datasets. Read more
about Report Parts.
Another easy way to include data in a report is to use a shared dataset. For more information, see Report
Embedded Datasets and Shared Datasets (Report Builder and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Adding a Report Part with Dependent Datasets to Your Report


When you add a report part to your report, the dependent datasets that it contains are also added to your
report. Because a report part might include a rectangle that contains many other report items, it can add
multiple dependent datasets to your report. Each shared dataset is an independent reference; the shared data
source that it depends on is not added to your report. Each embedded dataset also adds the embedded or
shared data source that it depends on.
The credentials for an embedded data source are not saved as part of the report part. If an embedded data
source is added to your report, you will be prompted for credentials when you run the report. To avoid being
prompted for credentials, use report parts that are based on shared data sources with stored credentials.
After you add a report part to your report, the added datasets are no different than embedded or shared
datasets that you create. You can view the additional datasets in the Report Data pane. Embedded datasets
appear under the corresponding shared data source and shared datasets appear under the Shared Datasets
folder.

Customizing Dependent Datasets


After you add report parts to your report, you might preview it and decide to make some changes to the data.
What you can change depends on the type of dataset that you are working with.
To change data and data options for an embedded dataset, you can edit the dataset properties, including the
query, just as if you had created the dataset yourself.
To change a data and data options for a shared dataset, you can change the shared dataset definition on the
report server only you have sufficient permissions. You can also customize the instance of the shared dataset in
your report by adding filters, adding calculated fields, and changing data options such as case sensitivity. For
more information, see Embedded and Shared Datasets (Report Builder and SSRS).
For more information about how to change the definition of a shared dataset or how to show the latest data
changes for a shared dataset in your report, see Create a Shared Dataset or Embedded Dataset (Report Builder
and SSRS) and Add, Edit, Refresh Fields in the Report Data Pane (Report Builder and SSRS).

Publishing Dependent Datasets as Shared Datasets


When you publish a report item that has dependent datasets, you have the option to publish each dataset as a
shared dataset or as an embedded dataset that remains embedded in the report item.
When you select the shared dataset option, the dataset is saved to the report server as a shared dataset
definition. In your report, every report item that uses that dataset is updated to point to the shared dataset that
is now on the report server. Two things happen as a result:
1. In the Publish dialog box, each shared dataset that has been published is removed from the list of items
that are available to publish.
2. When you exit Report Builder or start a new report, you are prompted to save your report. If you do not
save your report, the next time you open this report and publish report items, you might publish new
copies of the same datasets. To prevent saving multiple copies of shared datasets to the report server, we
recommend that you save the report.

IMPORTANT
To ensure that you and others can continue to successfully use data from a shared dataset, you must understand the
principles behind securing report items. For more information, see Secure Shared Dataset Items.

See Also
Report Design View (Report Builder)
Security (Report Builder)
Report Parts (Report Builder and SSRS)
Report Embedded Datasets and Shared Datasets (Report Builder and SSRS)
Manage Shared Datasets
11/2/2020 • 7 minutes to read • Edit Online

In Reporting Services, shared datasets retrieve data from shared data sources that connect to external data
sources. A shared dataset provides a way to share a query to help provide a consistent set of data for multiple
reports. The dataset query can include dataset parameters. You can configure a shared dataset to cache query
results for specific parameter combinations on first use or by specifying a schedule. You can use shared dataset
caching in combination with report caching and report data feeds to help manage access to a data source.
Shared datasets use only shared data sources, not embedded data sources. A shared dataset can be based on
any data source for a supported Reporting Services data extension or on a report model.

Creating and using shared datasets


To create a shared dataset, you must use an application that creates a shared dataset definition file (.rsd). You can
use one of the following applications to create a shared dataset:
Report Builder Use shared dataset design mode and save the shared dataset to a report server or
SharePoint site.
Report Designer in SQL Server Data Tools (SSDT) / Visual Studio to create shared datasets in the Datasets
folder in Solution Explorer. To publish a shared dataset, deploy it to a report server or SharePoint site.
Upload a shared dataset definition (.rsd) file You can upload a file to the report server or SharePoint site.
On a SharePoint site. An uploaded file is not validated against the schema until the shared dataset is
cached or used in a report.
The shared dataset definition includes a query, dataset parameters including default values, data options such as
case sensitivity, and dataset filters. Values that you set in the definition are used whenever the shared dataset is
included in a report.
To use a shared dataset in a report, you open an application such as Report Builder, browse to the report server
or SharePoint site, and select the shared dataset. This adds an instance of the shared dataset to the report. In the
report, you cannot view or change the query or the shared data source for the shared dataset. You can specify
an additional set of dataset property values that apply to the instance in the report. For example, you can add a
filter or change data options such as case sensitivity. For more information, see Report Embedded Datasets and
Shared Datasets (Report Builder and SSRS).

Managing shared datasets


To manage the properties of a published shared dataset, you can use the web portal of a native mode report
server, or application pages on a SharePoint site, if you deployed the report server in SharePoint integrated
mode. The tasks that you can perform on a shared dataset depend on your role assignments and on site level
and item level permissions, including permissions on the folder if permission inheritance is in effect. Item level
security for shared datasets follow the same model as item level security for reports. For more information, see
Secure Shared Dataset Items.
You can manage the shared dataset item properties, including the shared data source to use, independently
from the report that uses the shared dataset or the shared data source that it depends on. To change the query
or other dataset properties that are part of the shared dataset definition, you must edit the definition.
Manage shared dataset item properties
The following table lists the item properties that you can change for a shared dataset item.

P RO P ERT Y DESC RIP T IO N

Edit Name Change the name of the shared dataset. All references from
dependent items will continue to work.

Edit Description Change the description of the shared dataset.

Edit Query execution time out Set the query execution timeout in seconds. Zero (0)
seconds means no time out. Determines the number of
seconds before the dataset query times out. To specify no
timeout value, use 0. For more information, see Setting
Time-out Values for Report and Shared Dataset Processing
(SSRS).

View dependent items View the items that use this shared dataset: published
report parts, shared data sources, and reports.

The following additional shared dataset properties are automatically configured:


P RO P ERT Y DESC RIP T IO N

HasDataSourceCredentials Whether the associated shared data source has credentials


saved on the report server.

HasUserProfileDependencies Whether the report has a reference to the User global


collection in its query or in filter expressions.

Viewing or changing the shared dataset definition


Shared dataset properties, including the query, dataset parameters, default values, dataset filters, and data
options such as collation and case sensitivity, are saved in the shared dataset definition. If you have sufficient
permissions, you can view and change the definition.
To view or change the shared dataset definition, edit the shared dataset in an application such as Report Builder
in shared dataset design mode. After you make changes, save the shared dataset definition back to the server or
site.
Another way to view the shared dataset definition in XML is to use URL access syntax in the web portal. For
example, to view the default values for each dataset parameter, you can use the following URL access command
to display a shared dataset definition named DataSet1 from the report server:

Controlling access to the shared dataset definition


By default, the following tasks apply to operations on shared datasets.
View Repor ts View shared dataset items and item properties.
Consume Repor ts Read shared dataset definitions.
Manage Repor ts Create and delete shared datasets and edit shared dataset properties.
Set security on Items View and modify security settings for shared datasets.
For more information about which tasks and permissions control access to data source properties on a native
mode report server, see Secure Shared Dataset Items.
Permissions to view and edit properties for items in a SharePoint library are determined by the site
administrator. For more information, see SharePoint Site and List Permission Reference for Report Server Items.

How to work with shared dataset properties on a Report Server


You can use a variety of tools to work with shared datasets. The following table summarizes the approaches and
tools, and provides a link to additional instructions.

TA SK TO O L L IN K

Add a shared dataset or change Save in Report Builder. Report Embedded Datasets and
shared dataset definition properties. Shared Datasets (Report Builder and
Deploy in Report Designer. SSRS)]

Upload an .rsd file in the web portal Upload a File or Report in the report
server

If you upload a shared dataset before


the shared data source that it depends
is published, you must manually bind
the shared dataset to the shared data
source. For more information, see
../../reporting-services/Work with
shared datasets - web portal.

Change shared dataset item web portal Work with shared datasets - web
properties. portal

Specify additional shared dataset Report Builder Report Designer Dataset Properties Dialog Box, Query
properties for a shared dataset (Report Builder)
instance in a report.

Bind to a different shared data source web portal Configure Data Source Properties for a
for a shared dataset. Paginated Report - SSRS

Verify default values for dataset Open in Report Builder or use URL For example:
parameters. access syntax.
https://localhost/reportserver/?/Datasets/Dataset1&rs:command=GetShareddata

Enable caching web portal Cache Shared Datasets (SSRS)


TA SK TO O L L IN K

Create or edit a cache refresh plan web portal Cache a Shared Dataset

In SharePoint integrated mode, SharePoint application pages Change shared dataset item properties
synchronize the shared dataset
definition between the report server Change cache options
and the SharePoint site
Change the shared data source

Comparing shared datasets with other report server items


When you manage multiple types of items on a report server, it helps to understand how items are similar and
how they are different from other report server items.
Shared datasets are similar to shared data sources and reports in the following ways:
Like shared data sources, shared datasets are managed independently from the reports that they are
used in. Part of managing a shared dataset on a report server is the ability to change the shared data
source that it depends on without editing the shared dataset definition.
Like reports, shared datasets can be cached. Credentials that are required by the data source must meet
caching restrictions and default values must be specified for every parameter. For more information, see
Cache Shared Datasets (SSRS).
Like reports, each time processing occurs, the current definition of the item on the report server is used.
If you make changes to a shared dataset, each report that uses it will use the current definition on the
report server when the report is processed. If caching is enabled for the shared dataset and you make
changes to the shared dataset definition, the changes are not used until data in the cache expires. You can
use cache refresh plans to help provide a consistent set of data for multiple reports.
Shared datasets are dissimilar to published report parts in the following way:
Unlike published report parts, changes in the shared dataset definition on a report server do not trigger
update notifications when the report is opened in a report authoring client. When you run the report, the
data from the current shared dataset definition on the report server is used.
Shared datasets are similar to subscriptions in the following ways:
Shared datasets can use item-specific and shared schedules for caching.
Shared datasets follow the same rules for specifying parameter values as subscriptions do.

See also
Report Server Content Management (SSRS Native Mode)
Granting Permissions on a Native Mode Report Server
Add, Edit, Refresh Fields in the Report Data Pane
(Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

Dataset fields are the built-in collection of field names that represent the data that is returned when a dataset
query runs on an external data source.
For an embedded dataset, the dataset fields are the fields that are created after you finish building a query and
close the Query Designer pane, and calculated fields that you create.
For a shared dataset, the dataset fields are the fields from the shared dataset definition when you added it to
your report. Although the query from the shared dataset on the report server is always used when you run the
report, the list of dataset fields in the report is static.
Use Refresh Fields to update the list of fields in the report to match the current list of fields from the shared
dataset query. Refreshing the field list does not affect the calculated fields that you define in your report.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To add a query field


1. In the Report Data pane, right-click the dataset, and then click Add Quer y Field .

NOTE
If you cannot see the Report Data pane, from the View menu, click Repor t Data .

2. In the Fields page of the Dataset Proper ties dialog box, click Add , and then click Quer y Field . A new
row is added to the bottom of the grid.
3. In the Field Name text box, type the name for the field.

NOTE
Names must be unique in the dataset.

4. In the Field Source text box, type the name of an existing field on the data source.
5. Click OK .
To add a calculated field
1. In the Report Data pane, right-click the dataset, and then click Add Calculated Field .
2. In the Fields page of the Dataset Proper ties dialog box, click Add , and then click Calculated Field . A
new row is added to the bottom of the grid.
3. In the Field Name text bo, type the name for the field.
NOTE
Names must be unique in the dataset.

4. In the Field Source text box, type the expression for the field. Click the expression (fx ) button to build an
expression.

NOTE
The expression for a calculated field cannot contain aggregates or references to report items.

5. Click OK .
To edit a query field or a dataset field
1. In the Report Data pane, right-click the field, and then click Field Proper ties .
2. In the Fields page of the Dataset Proper ties dialog box, click an existing field to select the row.
3. Change the name of the field or the value of the field.
4. Click OK .
To delete a query field or a calculated field
1. In the Report Data pane, expand the dataset to display the field collection.
2. Right-click the field you want to remove, and then click Delete .
To refresh the field collection in the Report Data Pane for a shared dataset
1. In the Report Data pane, right-click the dataset, and then click Quer y .
2. Click Refresh Fields .
On the report server, the shared dataset query runs and returns the current field collection.

See Also
Dataset Fields Collection (Report Builder and SSRS)
Report Datasets (SSRS)
Report Embedded Datasets and Shared Datasets (Report Builder and SSRS)
Reporting Services Query Designers
Query Design Tools (SSRS)
Add a Filter to a Dataset (Report Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

Add a filter to a dataset to limit the data in a report after the data is retrieved from an external data source.
When you add a filter to a dataset, all report parts or data regions use only data that matches the filter
conditions.
For a shared dataset, a filter that applies to all dependent items must be part of the shared dataset definition on
the report server. A report or report part that contains an instance of a shared dataset can create an additional
filter that applies only to the instance.
To add a filter, you must specify one or more conditions that are filter equations. A filter equation consists of an
expression that identifies the data that you want to filter, an operator, and the value to compare to. The data
types of the filtered data and the value must match. Filtering on aggregate values for a dataset is not supported.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To add a filter to a shared dataset


1. Open a shared dataset in shared dataset mode.
2. On the Home tab, in the Shared Datasets group, click Datasets. The Dataset Proper ties dialog box
opens.
3. Click Filters . This displays the current list of filter equations. By default, the list is empty.
4. Click Add . A new blank filter equation appears.
5. In Expression , type or select the expression for the field to filter. To edit the expression, click the
expression (fx) button.
6. From the list box, select the data type that matches the type of data in the expression you created in step
5.
7. In the Operator box, select the operator that you want the filter to use to compare the values in the
Expression box and the Value box. The operator you choose determines the number of values that are
used from the next step.
8. In the Value box, type the expression or value against which you want the filter to evaluate the value in
Expression .
For examples of filter equations, see Filter Equation Examples (Report Builder and SSRS).
9. Click OK .
To add a filter to an embedded dataset or a shared dataset instance
1. Open a report in report design mode.
2. Right-click a dataset in the Repor t Data pane and then click Dataset Proper ties . The Dataset
Proper ties dialog box opens.
3. Click Filters . This displays the current list of filter equations. By default, the list is empty.
4. Click Add . A new blank filter equation appears.
5. In Expression , type or select the expression for the field to filter. To edit the expression, click the
expression (fx) button.
6. From the drop-down box, select the data type that matches the type of data in the expression you created
in step 5.
7. In the Operator box, select the operator that you want the filter to use to compare the values in the
Expression box and the Value box. The operator you choose determines the number of values that are
used from the next step.
8. In the Value box, type the expression or value against which you want the filter to evaluate the value in
Expression .
For examples of filter equations, see Filter Equation Examples (Report Builder and SSRS).
9. Click OK .

See Also
Add Dataset Filters, Data Region Filters, and Group Filters (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Add a Filter (Report Builder and SSRS)
Show Hidden Datasets for Parameter Values -
Multidimensional Data
11/2/2020 • 2 minutes to read • Edit Online

Your report might include automatically-generated datasets (also known as hidden datasets) that do not appear
by default in the Report Data pane. These datasets are created in the following ways:
In some query designers for multidimensional databases, you can specify fields to filter on in the filter
area of the query pane, and select whether to create a query parameter for the filter. If you select the
parameter option, report datasets are automatically created to provide valid values for the report
parameter.
If you import a query based on multidimensional databases, you might also include hidden datasets in
your report.
Hidden datasets are not available to use from a wizard.
You can change the view in the Report Data pane to display all datasets in the report.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To display hidden datasets


In the Report Data pane, right-click the Datasets folder, and then click Show Hidden Datasets .

See Also
Query Design Tools (SSRS)
Reporting Services Query Designers
Report Embedded Datasets and Shared Datasets (Report Builder and SSRS)
Report Datasets (SSRS)
Set a No Data Message for a Data Region (Report
Builder and SSRS)
11/2/2020 • 2 minutes to read • Edit Online

When you want to specify text to show in the rendered report in place of a data region that has no data, set the
NoRowsMessage property for a table, matrix, or list data region, the NoDataMessage for a chart data region,
and the NoDataText for the color scale for a map. At run time, the report processor runs the query for each
dataset in a report and the dataset query may produce no result set. For a data region bound to an empty
dataset, you can specify text to display instead of displaying an empty data region. You can also set the
NoRowsMessage property for a subreport when no datasets in the subreport have data at run time.

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

To set the NoRowsMessage property for a table, matrix, or list


1. In Design view, click the table, matrix, or list data region or subreport on the design surface to select it.
The Properties pane displays the properties for the selected item.
2. In the Properties pane, type the text that you want to display as a message in NoRowsMessage
property field.
Alternatively, from the drop-down list, click Expression to open the Expression dialog box and create an
expression.
To set the NoDataMessage property for a chart
1. In Design view, click the chart on the design surface to select it. The Properties pane displays the
properties for the selected item.
2. In the Properties pane, expand the node for NoDataMessage .
3. In Caption , type the text that you want to display as a message in NoDataMessage property field.
Alternatively, from the drop-down list, click Expression to open the Expression dialog box and create an
expression.
To set the NoRowsMessage for a subreport
1. In Design view, click the subreport on the design surface to select it. The Properties pane displays the
properties for the selected item.
2. In the Properties pane, type the text that you want to display as a message in NoRowsMessage
property field.
Alternatively, from the drop-down list, click Expression to open the Expression dialog box and create an
expression.
To set the NoDataText property for a color scale for a map
1. In Design view, click the color scale on the map to select it. The Properties pane displays the properties
for the selected item.
2. In the Properties pane, in NoDataText , type the text that you want to display as a label for colors with no
data value.
Alternatively, from the drop-down list, click Expression to open the Expression dialog box and create an
expression.

See Also
Subreports (Report Builder and SSRS)
Tables, Matrices, and Lists (Report Builder and SSRS)
Charts (Report Builder and SSRS)
Maps (Report Builder and SSRS)
Subreports (Report Builder and SSRS)
Dataset Fields Collection (Report Builder and SSRS)
3/5/2021 • 8 minutes to read • Edit Online

Dataset fields represent the data from a data connection. A field can represent either numeric or non-numeric
data. Examples include sales amounts, total sales, customer names, database identifiers, URLs, images, spatial
data, and e-mail addresses. On the design surface, fields appear as expressions in report items such as text
boxes, tables, and charts.
A report has three types of fields and displays them in the Report Data pane: dataset fields, dataset calculated
fields, and built-in fields.
Dataset fields. The metadata that represents the collection of fields that will be returned when the
dataset query runs on the data source.
Dataset calculated fields. Additional fields that you create for the dataset. Each calculated field is
created by evaluating an expression that you define.
Built-in fields. The metadata that represents a collection of fields provided by Report Builder that
provide report information such as the report name or the time when the report was processed. For
more information, see Built-in Globals and Users References (Report Builder and SSRS).
Dataset field names are saved as part of the report dataset definition. For more information, see Report
Embedded Datasets and Shared Datasets (Report Builder and SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Dataset Fields and Queries


Dataset fields are specified by the dataset query command and by any calculated fields that you define. The
collection of fields that you see in your report depends on the type of dataset you have:
Shared dataset. The field collection is the list of fields for the query in the shared dataset definition at
the time that you directly added the shared dataset to your report, or when you added a report part that
included the shared dataset. The local field collection does not change when the shared dataset definition
changes on the report server. To update the local field collection, you must refresh the list for the local
shared dataset.
Embedded dataset. The field collection is the list of fields that is returned from running the current
query against the data source.
For more information see, Add, Edit, Refresh Fields in the Report Data Pane (Report Builder and SSRS)
Calculated Fields
You specify a calculated field manually by creating an expression. Calculated fields can be used to create new
values that do not exist on the data source. For example, a calculated field can represent a new value, a custom
sort order for a set of field values, or an existing field that is converted to a different data type.
Calculated fields are local to a report and cannot be saved as part of a shared dataset.
For more information, see Add, Edit, Refresh Fields in the Report Data Pane (Report Builder and SSRS).
Entities and Entity Fields
If you are working with a report model data source, you specify the entities and entity fields as your report data.
In the query designer for a report model, you can interactively explore and select related entities and choose the
fields that you want to include in your report dataset. After you finish designing the query, you can see the
collection of entity identifiers and entity fields in the Report Data pane. Entity identifiers are generated
automatically by the report model and are typically not displayed for the end user.
Using Extended Field Properties
Data sources that support multidimensional queries, such as SQL Server Analysis Services, support field
properties on fields. Field properties appear in the result set for a query, but are not visible in the Repor t Data
pane. They are still available to use in your report. To refer to a property for a field, drag the field onto the
report, and change the default property Value to the field name of the property you want. For example, in an
Analysis Services cube, you can define formats for values in the cube cells. The formatted value is available by
using the field property FormattedValue . To use the value directly instead of using a value and setting the
format property of the text box, drag the field to the text box and change the default expression
=Fields!FieldName.Value to =Fields!FieldName.FormattedValue .

NOTE
Not all Field properties can be used for all data sources. The Value and IsMissing properties are defined for all data
sources. Other predefined properties (such as Key , UniqueName , and ParentUniqueName for multidimensional data
sources) are supported only if the data source provides those properties. Custom properties are supported by some data
providers. For more information, see specific topics about extended field properties for your data source type in Report
Embedded Datasets and Shared Datasets (Report Builder and SSRS). For example, for a SQL ServerAnalysis Services data
source, see Extended Field Properties for an Analysis Services Database (SSRS).

Understanding Default Expressions for Fields


A text box can be a text box report item in the report body, or a text box in a cell in a tablix data region. When
you link a field with a text box, the location of the text box determines the default expression for the field
reference. In the report body, a text box value expression must specify an aggregate and a dataset. If only one
dataset exists in the report, this default expression is created for you. For a field that represents a numeric value,
the default aggregate function is Sum. For a field that represents a non-numeric value, the default aggregate is
First.
In a tablix data region, the default field expression depends on the row and group memberships of the text box
that you add the field to. The field expression for the field Sales, when added to a text box in the detail row of a
table, is [Sales] . If you add the same field to a text box in a group header, the default expression is
(Sum[Sales]) , because the group header displays summary values for the group, not detail values. When the
report runs, the report processor evaluates each expression and substitutes the result in the report.
For more information about expressions, see Expressions (Report Builder and SSRS).

Field Data Types


When you create a dataset, the data types of the fields on the data source may not be exactly the data types used
in a report. Data types may go through one or two mapping layers. The data processing extension or data
provider may map data types from the data source to common language runtime (CLR) data types. The data
types returned by data processing extensions are mapped to a subset of common language runtime (CLR) data
types from the .NET Framework.
On the data source, the data is stored in data types supported by the data source. For example, data in a SQL
Server database must be one of the supported SQL Server data types such as nvarchar or datetime . When
you retrieve data from the data source, the data passes through a data processing extension or data provider
that is associated with the data source type. Depending on the data processing extension, data may be
converted from the data types used by data source into data types supported by the data processing extension.
Reporting Services uses data types supported by the common language runtime (CLR) that is installed with SQL
Server Data Tools (SSDT). The data provider maps each column in the result set from the native data type to a
.NET Framework common language runtime (CLR) data type.
At each stage, the data is represented by the data types as described in the following list:
Data source The data types supported by the version of the type of data source to which you are
connecting.
For example, typical data types for a SQL Server data source include int , datetime , and varchar . Data
types introduced by SQL Server 2008 added support for date , time , datetimetz , and datetime2 . For
more information, see Data Types (Transact-SQL).
Data provider or data processing extension The data types supported by the version of the data
provider of the data processing extension you select when you connect to the data source. Data providers
based on the .NET Framework use data types supported by the CLR. For more information about .NET
Framework data provider data types, see Data Type Mappings (ADO.NET) and Working with Base Types
on MSDN.
For example, typical data types supported by the .NET Framework include Int32 and String . Calendar
dates and times are supported by the DateTime structure. The .NET Framework 2.0 Service Pack 1
introduced support for the DateTimeOffset structure for dates with a time zone offset.

NOTE
The report server uses the data providers that are installed and configured on the report server. Report authoring
clients in Preview mode use the installed and configured data processing extensions on the client machine. You
must test your report in both the report client and the report server environment.

Repor t processor The data types are based on the version of the CLR installed when you installed
Reporting Services.
For example, the data types the report processor uses for the new date and time types introduced in SQL
Server 2008 are shown in the following table:

SQ L DATA T Y P E C L R DATA T Y P E DESC RIP T IO N

Date DateTime Date only

Time TimeSpan Time only

DateTimeTZ DateTimeOffset Date and time with time zone offset

DateTime2 DateTime Date and time with fractional


milliseconds

For more information about SQL Server database types, see Data Types (Database Engine) and Date and Time
Data Types and Functions (Transact-SQL).
For more information about including references to a dataset field from an expression, see Data Types in
Expressions (Report Builder and SSRS).

Detecting Missing Fields at Run Time


When the report is processed, the result set for a dataset may not contain values for all of the columns specified
because the columns no longer exist on the data source. You can use the field property IsMissing to detect
whether values for a field were returned at run-time. For more information, see Dataset Fields Collection
References (Report Builder and SSRS).

See Also
Dataset Properties Dialog Box, Fields (Report Builder)
Report Parts and Datasets in Report Builder
Report Embedded Datasets and Shared Datasets (Report Builder and SSRS)
Dataset Properties Dialog Box, Options (Report
Builder)
11/2/2020 • 3 minutes to read • Edit Online

Select Options on the DatasetProper ties dialog box to change data options, such as collation options and
treating subtotals as detail data, for the query. For more information about collations, see Collation and Unicode
Support.
Data options that are part of a shared dataset definition on the report server affect all reports that use the
shared dataset. You can override options for the shared dataset after it is added to a report. These changes affect
only the report in which they are defined.
Data options for an embedded dataset affect only the report in which they are defined.
For more information, see Report Embedded Datasets and Shared Datasets (Report Builder and SSRS).

Options
Collation
Select a locale that determines the collation sequence to be used for sorting data. Default indicates that the
report server should attempt to derive the value from the data provider when the report runs. If the value
cannot be derived, the default value is derived from the locale setting of the computer.
Case sensitivity
Select a value that determines case sensitivity. This option indicates whether the data is case-sensitive. You can
set Case Sensitivity to True , False , or Auto . The default value, Auto , indicates that the report server should
attempt to derive the value from the data provider when the report runs. If the data provider does not support
the case-sensitivity type, the report runs as though the value were False . If you know the value and you know it
is supported, choose True .
Accent sensitivity
Select a value that determines accent sensitivity. Accent Sensitivity indicates whether the data is accent
sensitive and can be set to True , False , or Auto . The default value, Auto , indicates that the report server should
attempt to derive the value from the data provider when the report is run. If the data provider does not support
the accent sensitivity type, the report runs as though the value were False . If you know the value and you know
it is supported, choose True .
Kanatype sensitivity
Select a value that determines kanatype sensitivity. This option indicates whether the data is kanatype sensitive;
it can be set to True , False , or Auto . The default value, Auto , indicates that the report server should attempt to
derive the value from the data provider when the report runs. If the data provider does not support the
kanatype sensitivity type, the report runs as though the value were False . If you know the value and you know it
is supported, choose True .
Width sensitivity
Select a value that determines width sensitivity. This option indicates whether the data is width-sensitive and can
be set to True , False , or Auto . The default value, Auto , indicates that the report server should attempt to derive
the value from the data provider when the report runs. If the data provider does not support the width
sensitivity type, the report runs as though the value were False . If you know the value and you know it is
supported, choose True .
Interpret subtotals as detail rows
Select a value that indicates whether you want subtotal rows to be interpreted as detail rows instead of
aggregate rows. The default value, Auto , indicates that the subtotal rows should be treated as detail rows if the
report does not use the Aggregate () function to access any fields in the data set. If you want subtotal rows to
be interpreted as aggregate rows, choose False . If you want the subtotal rows to be interpreted as detail rows
and you know that they do not use the Aggregate () function, choose True .

See Also
Aggregate Function (Report Builder and SSRS)
Filter, Group, and Sort Data (Report Builder and SSRS)
Report Embedded Datasets and Shared Datasets (Report Builder and SSRS)
Dataset Properties Dialog Box, Query (Report Builder)
Dataset Properties Dialog Box, Parameters
11/2/2020 • 2 minutes to read • Edit Online

Select Parameters on the Dataset Proper ties dialog box to add, change, and delete query parameters,
including query parameters that link to report parameters.
Whenever the query is changed on the query tab, the query command is parsed. For each query parameter that
is identified, a report parameter with an identical case-sensitive name is created. By default, the query parameter
is automatically added to the query parameter list and linked to the corresponding report parameter.
If there are dependencies for the default values of one report parameter on another report parameter that is
linked to a query parameter, the order of report parameters (as they appear in the Repor t Parameters
Proper ties dialog box) is important. Report parameters later in the list can refer to report parameters earlier in
the list. For more information about report parameters, see Report Parameters (Report Builder and Report
Designer).

Options
Add
Add a new parameter to the list.
Delete
Remove the selected parameter from the list.
Parameter name
Type the name of a query parameter that you added to the dataset on the Quer y tab of the Dataset
Proper ties dialog box.
Parameter value
Enter a value for the query parameter. This can be a static value or an expression that refers to an object within
the report, but it cannot refer to any report items or fields. By default, Value contains an expression that points
to a report parameter.
Up arrow
Move the selected parameter up in the list.
Down arrow
Move the selected parameter down in the list.

See Also
Report Parameters (Report Builder and Report Designer)
Report Datasets (SSRS)
Change the Order of a Report Parameter (Report Builder and SSRS)
Dataset Properties Dialog Box, Query (Report
Builder)
11/2/2020 • 2 minutes to read • Edit Online

Select Quer y on the Dataset Proper ties dialog box to choose a shared dataset from a report server or to
create an embedded dataset. For an embedded dataset, you must choose a data source and build a query.

Options
Name
Type a name for the dataset. The name cannot be the same as a name for any data region or group in the report.
Use a shared dataset
Select this option to use a predefined dataset from the report server.
Browse
Browse to a folder on a report server or SharePoint site and select a shared dataset (.rsd).
Use an embedded dataset in my repor t
Select this option to create a dataset for use only by this report.
Data Source
Select the data source on which to base the dataset. To create a new data source, click New .
Quer y type
Select the type of command or query to use for the dataset. Select Text to run a query to retrieve data from the
database. Select Table to use the TableDirect feature of SQL Server to select all the fields within a table. Select
Stored Procedure to run a stored procedure by name. Text is selected by default and is used for most queries.
To edit the selected data source query, click Quer y Designer .

NOTE
Not all query types are supported by all data sources. For example, Table is supported only by data source types OLE
DB and ODBC .

Quer y
This option appears when you choose the Text command type option. Type a query or import a pre-existing
query by clicking Impor t . Click the Expression (fx) button to edit the expression.

NOTE
If you use a query designer to build a query, the text of the query appears in this box.

Table name
This option appears when you select Table . Enter the name of the table that you want to use as a dataset.
Select or enter stored procedure name
This option appears when you choose the Stored Procedure command type option. Type or choose the name of
the stored procedure that you want to use. Click the Expression (fx) button to edit the expression.
Time out (in seconds)
Type the number of seconds until the query times out. The default is 30 seconds. The value for Time out must
be empty or greater than zero. If it is empty, the query does not time out.
Refresh Fields
Run the query command to update the list of fields in the Dataset Proper ties Dialog Box, Fields page.

See Also
Report Embedded Datasets and Shared Datasets (Report Builder and SSRS).
Report Datasets (SSRS)
Query Design Tools (SSRS)
Report Embedded Datasets and Shared Datasets
(Report Builder and SSRS)
11/2/2020 • 17 minutes to read • Edit Online

A dataset specifies the data that you want to use from a data connection. A dataset is based on a data connection
that has been saved in the report as an embedded data source or a reference to a shared data source on a
report server. The dataset includes a query that specifies a set of fields. As you drag these fields to the design
surface, you create expressions that evaluate to the actual data when the report runs.
There are two types of datasets:
Shared dataset. A shared dataset is defined on the report server. You can browse to the server to create
a shared dataset or to select a predefined one to add to your report. Use a shared dataset to provide a
query that can be used by more than one report. Shared datasets are stored on the report server and
managed separately from reports or shared data sources. For example, a report server administrator
might update the query to take advantage of improved indexing or other query performance
optimization.
Embedded dataset. An embedded dataset is defined in and used by only the report it is embedded in.
Use an embedded dataset when you want to get data from an external data source to be used only in one
report. Embedded datasets are useful when you want to create a query that has no other dependencies
and that you do not need to use for multiple reports.
A dataset also includes parameters, filters, and data options that specify character sensitivities, such as case,
kana type, width, accent, and collation information.

1. Datasets in the Repor t Data pane A dataset appears in the Report Data pane after you create an
embedded dataset or add a shared dataset. A dataset is based on a data source.
2. Quer y Designer When you design a dataset query, the query designer that is associated with the data
source type opens.
3. Quer y command The query designer helps you build a query command. The command syntax is
determined by the data provider.
4. Data Extension/Data Provider Connecting to the data can be through multiple data access layers.
5. External data sources Retrieve data from relational databases, multidimensional data bases, SharePoint
lists, Web services, or report models.
6. Quer y results You can run the query and see an example result set. You must have design time
credentials to run a query.
7. Metadata from schema The data provider runs a schema query command separate from the query to
retrieve metadata for the dataset field collection. For example, a Transact-SQL SELECT statement returns
the column names for a database table. Use the Report Data pane to expand the dataset to view the
dataset field collection.
Data can also be included in a report by using predefined shared datasets and report parts. These items already
have the data connection information that you need. For more information, see Report Datasets (SSRS) and
Report Parts (Report Builder and SSRS).
For more information about built-in data source types and data extensions, see Add Data from External Data
Sources (SSRS).

NOTE
You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server
Data Tools. Each authoring environment provides different ways to create, open, and save reports and related items.

Understanding Report Datasets and Queries


A report dataset contains a query command that runs on the external data source and specifies what data to
retrieve. To build the query command, you use the query designer that is associated with the data extension for
the external data source. In the query designer, you can run the query command and view a result set. The result
set is a rectangular row set that has column names and rows with the same number of values in each row.
Hierarchical data, also known as ragged hierarchies, is not supported. The column names are saved in the report
definition as a list of dataset fields.
After you add datasets to your report, you drag fields from their field collections in the Report Data pane to
tables, charts, and other report items that you use to design the report layout. For more information about
working with fields, see Dataset Fields Collection (Report Builder and SSRS).
Understanding Data from a Report Dataset
Depending on the data extension, a report dataset can consist of the following types of data:
A result set from a relational database, which can result from running database commands, stored
procedures, or user-defined functions. If multiple result sets are retrieved through a single query, only the
first result set is processed, and all other result sets are ignored. For example, when you run the following
query in the text-based query designer, only the result set for Production.Product appears in the result
pane:

SELECT ProductID FROM Production.Product


GO
SELECT ContactID FROM Person.Contact

A flattened rowset from multidimensional data sources that use the XML for Analysis (XMLA) protocol.
Some data providers supply additional cell and dimension properties from the data source that you
cannot see in the result set but that are available in your report.
A flattened result set from XML data sources that include XML elements, their attributes, and their child
elements.
A result set from any registered and configured .NET Framework data provider.
Data from a report model that has been designed for a specific data source, with predefined entities,
entity relationships, and fields. For more information, see "Report Datasets" in the Reporting Services
documentation.
When the report is processed at run time, the actual result set returned for a query may have zero or more
rows. It is also possible that the columns defined in the query may be missing from the data source. Null values
from the data source are mapped to the .NET Framework value System.DBNull.Value .
For more information about dataset fields, see Dataset Fields Collection (Report Builder and SSRS).
Dataset Query
When you run a dataset query in a query designer at design time, you see a row set from the data source that
shows you example data. At run time, when a user views the report, the dataset query may produce different
values because the data on the data source has changed. Each time the report is processed, new data may
appear.
When you define each dataset, Report Builder opens the query designer that corresponds to the type of data
source to help you design queries. For example, to define a query for data from a SQL Server relational
database, the Table/Matrix, Chart, and Map wizards open a simple graphical interface that helps you build the
query; all you need to do is select the fields that you want in your dataset.
In a query designer, you can do the following:
Toggle between graphical and text-based query view. Use the graphical to explore schemas, tables, views,
and stored procedures on the data source. Use the text-based view to type, paste, or view an existing
query, typically used for a complex query that cannot be displayed in a graphical query designer. For
example, you can import a query from a Transact-SQL (.sql) file, a different report on the report server, or
a report definition (.rdl) file from a file share.
Run the query to see data. The query returns a result set. The columns in the result set become the
collection of fields for the dataset. The rows in the result become the data for the dataset. You can work
with the query until you get the columns that you want.
Add query parameters to help retrieve just the data that you want for your report. Query parameters
automatically generate matching report parameters. For a report model data source, the filter that you
specify automatically generates a matching report parameter. Report parameters enable users to specify
the report data that they want to see when they run the report. For example, the user selects which
product categories they want to data for, and when the report runs, data for only those product
categories appear in the report.
Import an existing query from another report.
Query designers can provide a graphical mode or a text mode depending on the data source type. If you choose
text mode, you must use the appropriate query syntax for the data source.
When you define a report dataset, you can set data properties in the query or accept the defaults set by the data
provider. You can change a data type by using one of the following strategies:
Rewrite the dataset query to specifically convert a field to a different data type.
Edit the field in the dataset and provide a custom format.
Create a new custom field based on a database field and provide a custom format.
For more information, see Dataset Fields Collection (Report Builder and SSRS).
Importing Existing Queries for a Dataset
When you create a dataset, you can create a new query or you can import an existing query from a file or from
another report. When you import a query from another report, you can choose which query to import from the
list of datasets in the report.
Only the .sql and .rdl file types are supported. Multidimensional Expression (MDX) queries, Data Mining
Prediction (DMX) queries, and model queries (SMQL) can only be generated by the associated the query
designer.

Comparing and Creating Shared Datasets and Embedded Datasets


An embedded dataset is defined in a report or in a published report part. Changes made to an embedded
dataset affect only that report or that report part.
A shared dataset is defined on a report server or SharePoint site, is based on a shared data source, and can be
used by multiple reports and report parts. Changes made to a shared dataset definition affect all reports and all
report parts that use it.
When you add a shared dataset to a report, the dataset field collection is updated to the current definition on the
report server. You do not receive update notifications when changes are made on the report server. To
synchronize a local copy of the field collection with changes made to the shared dataset definition on the report
server, you must refresh the local field collection. For more information, see Add, Edit, Refresh Fields in the
Report Data Pane (Report Builder and SSRS).
Published report items contain the embedded and shared datasets that they depend on. For more information,
see Report Parts and Datasets in Report Builder.
The difference between the embedded and shared data sources is in how they are created, stored, and managed.
The following table summarizes the differences between embedded and shared data sources:

EM B EDDED SH A RED

DESC RIP T IO N DATA SO URC E DATA SO URC E

Data connection is embedded in the


report definition.

Pointer to the data connection on the


report server is embedded in the
report definition.

Managed on the report server

Required for shared datasets

Required for components

In Report Designer, you can create shared datasets as part of a report project, and control whether to deploy
them to a report server. You cannot browse to a report server and select a shared dataset to add to your report.
In Report Builder, you can do the following:
To create a shared dataset, use Shared Dataset Design View. You can save it to a report server or
SharePoint site to share with other reports. You can also browse to the report server and edit and existing
shared dataset. In this view, you can build a query and set all dataset options. For more information, see
Shared Dataset Design View (Report Builder).
To add a shared dataset to your report, open Report Builder in Report Design View. From a wizard or
from the Report Data pane, browse to the report server and select the shared dataset to add to your
report. In this view, you cannot change the query except to add fields. You can override other data options
and add filters. You cannot remove filters.
The following table compares the properties that can be configured for the definition of the shared dataset on
the report server and the instance of the shared dataset in the report definition.

C O N F IGURAT IO N N OT ES F O R T H E C O N F IGURAT IO N N OT ES F O R T H E
P RO P ERT Y DEF IN IT IO N IN STA N C E

Query text Configure the query, including defining Cannot change the query.
it as expression.

Query parameters Cannot reference report parameters Configure parameters that are not
marked Read Only in the definition
Includes default values

Includes a Read Only flag

Filters Define filters Cannot view or change dataset filters


that are part of the definition

Can create additional filters

Data Source Must be a shared data source Cannot change the data source

Fields Fields from the query command View fields, but cannot change them

Calculated fields are not part of the The field collection is static based on
dataset definition the query at the time you added the
shared dataset to the report. To
update, click Refresh Fields in the
Dataset Proper ties dialog box. The
actual field collection is whatever the
current query in the definition returns.

Add calculated fields

Dataset Data options such as case sensitivity Override data options in the instance

For more information about creating datasets, see Create a Shared Dataset or Embedded Dataset (Report
Builder and SSRS) and Reporting Services Tools in the Reporting Services documentation.

Filtering, Sorting, and Grouping Data in a Dataset


Data in a dataset comes from running a query command on an external data source. The query command
syntax for a data extension determines whether data can be sorted or grouped. Sorting and grouping takes
place in the query before the data is retrieved for a report. Filtering takes place after the data is retrieved for a
report.
For more information, see Filter, Group, and Sort Data (Report Builder and SSRS).
Filtering Data in a Dataset
Filters are part of the dataset definition in a report. Use dataset filters to specify what data from a dataset to
include in a report. When you specify filters on a dataset, all data regions that are based on the dataset display
only data that passes through the dataset filters.
Filters are part of a shared dataset definition. Shared dataset filters affect all reports that include the shared
dataset. After you add a shared dataset to your report, or after you add a component with a dependent shared
dataset, you can create additional dataset filters. Filters that you create are used only in your report, they are not
part of the shared dataset definition on the report server.
You can set additional filters on a data region or a data region group. You can also use a combination of
parameters and filters enable users to choose the data that they want to see in a report. For more information,
see Report Parameters (Report Builder and Report Designer).
Sorting Data in a Dataset
In a dataset, the order of the data is the order that it is retrieved from the external data source. This is the same
order that you see when you run the query in the query designer. If the query-command syntax supports
sorting, you can edit the query to sort the data at the source, before it is returned as report data. For example,
for a Transact-SQL query, the ORDER BY statement controls the sort order.
To sort data after it is returned to the report, define sort expressions on data regions and data region groups.
For more information, see the topic for the specific type of data region, for example, Tables, Matrices, and Lists
(Report Builder and SSRS).
You can also use a combination of parameters and sort expressions to enable users to choose the sort order for
data in a report. For more information, see Report Parameters (Report Builder and Report Designer).
Grouping Data in a Dataset
You cannot group data in a dataset. To aggregate data in a dataset, you can edit the query command to calculate
aggregates before the data is retrieved for a report. These are known as server aggregates. In expressions, to
identify these values as precalculated aggregates, use the Aggregate function. For more information, see
Aggregate Function (Report Builder and SSRS).

Using Parameters and Datasets


For an embedded dataset query that contains query variables, query parameters and corresponding report
parameters are automatically created. When the report runs, the value of the report parameter is linked to the
dataset query parameter. In this way, the query command that runs on the external data source includes the
values that are specified for report parameters. Report parameters enable a user to help choose the data that
they want to see in the report. You can view how query parameters and report parameters are linked in the
Dataset Properties Dialog Box, Parameters page.
For a shared dataset, query parameters are part of the shared dataset definition that can be managed on the
report server independently from a report. The following list describes support for query parameter values:
Can be expression based.
Can include default values.
Can be set to read-only. Read-only parameters cannot be changed in an instance of the shared dataset in
a report.
Cannot include references to the built-in collection Parameters, which represents report parameters.
To configure query parameter values for a shared dataset, in dataset design mode, browse to and open a shared
dataset from the report server, and set options on the Dataset Properties Dialog Box, Parameters page. For more
information, see Create a Shared Dataset or Embedded Dataset (Report Builder and SSRS).
For some multidimensional data sources, such as Analysis Services, the graphical query designer enables you to
specify query filters and select an option to create a corresponding query parameter. When you select the
parameter option, the data extension automatically creates a separate report dataset to provide available values
for a drop-down list for that parameter. By default, these hidden datasets do not appear in the Report Data pane.
Report parameters that are linked to query parameters help filter data before the data is returned from the
external data source. You can also filter data in the report by creating filters that are part of the report definition.
For more information, see Filter, Group, and Sort Data (Report Builder and SSRS).
Displaying Hidden Datasets
When you create a parameterized query for some multidimensional data sources, datasets that provide valid
values for the parameter are automatically created. On some query designers, you do this by specifying filters
and then selecting the option to create parameters. By default, these datasets do not appear in the Report Data
pane, but they can be displayed. For more information, see Show Hidden Datasets for Parameter Values for
Multidimensional Data (Report Builder and SSRS).

Using Maps and Datasets


If you include a map in your report, you must provide spatial data. Spatial data can come from a report dataset,
from a map in the map gallery, or from ESRI Shapefiles. Spatial data from a report or from an ESRI Shapefile
does not appear as a dataset in the Report Data pane. For more information, see Maps (Report Builder and
SSRS).

Displaying Data from Multiple Datasets


A report typically has more than one dataset. The following list describes how you can use datasets in a report:
You display the data from each dataset using a separate data region. For more information, see Data
Regions and Maps (Report Builder and SSRS).
You can link more than one data region to a dataset and provide multiple views of the same data. For
more information, see Linking Multiple Data Regions to the Same Dataset (Report Builder and SSRS).
You can use datasets to provide a drop-down list of available values or default values for a report
parameter. For more information, see Report Parameters (Report Builder and Report Designer).
You can link related data from multiple datasets by using parameters with drillthrough reports or
subreports. For example, a sales report can show summary data for all stores, and a drillthrough link can
specify the store identifier as a parameter to a report with a dataset query that retrieves the individual
sales for the specified store. For more information, see Drillthrough, Drilldown, Subreports, and Nested
Data Regions (Report Builder and SSRS) and Subreports (Report Builder and SSRS).
You cannot display detail data from multiple datasets in a single data region. However, you can display
aggregate or built-in function values for multiple datasets within a data region. For more information, see
Aggregate Functions Reference (Report Builder and SSRS). If you need to combine detail data from
multiple datasets into one data region, you must rewrite your query to retrieve the data as a single
dataset.

Displaying a Message When No Rows of Data Are Available


During report processing, when the query for a dataset runs, the result set may contain no rows. In the rendered
report, a data region linked to an empty dataset displays as an empty data region. You can specify text to display
in the rendered report in place of the empty data region. You can also specify a message for subreports when
the queries for all datasets produce no data at run time. For more information, see Set a No Data Message for a
Data Region (Report Builder and SSRS).

Setting Dataset Options


For data sources that support international data, you might need to adjust properties for a dataset that affect the
sort order, international character properties, and case sensitivity. These properties include case, kanatype,
width, accent, and collation. For more information about how to set these properties, see Dataset Properties
Dialog Box, Options (Report Builder).
See Also
Dataset Fields Collection (Report Builder and SSRS)
Create data connection strings - Report Builder & SSRS
Report Datasets (SSRS)
Create mobile reports with SQL Server Mobile
Report Publisher
4/18/2019 • 2 minutes to read • Edit Online

Learn about Reporting Services mobile reports, optimized for mobile devices and connected to on-premises
data, with an assortment of data visualizations.

NOTE
Do you need to migrate Datazen Server content such as dashboards and KPIs to a SQL Server Reporting Services
server? Try the SQL Server Migration Assistant for Datazen.

With SQL Server Mobile Report Publisher, you can quickly create Reporting Services mobile reports, optimized
for mobile devices and a variety of other form factors. Mobile reports feature an assortment of visualizations,
from time, category, and comparison charts, to treemaps and custom maps.
Connect your mobile reports to a range of data sources, including on-premises SQL Server and Analysis
Services data.
Lay out your mobile reports on a design surface with adjusting grid rows and columns, and flexible mobile
report elements that scale well to any screen size.
Then save these mobile reports to a Reporting Services server, and view and interact with them in a browser
or in the Power BI mobile app on iPads, iPhones, Android phones and tablets, and Windows 10 devices.

Create Reporting Services mobile reports


These articles will help you get started.
Download SQL Server Mobile Report Publisher
Create a Reporting Services mobile report
End-to-end walkthrough: Create mobile reports and KPIs in SQL Server Reporting Services (Christopher
Finlan's blog)
Design first, or data first: Decide whether to design your report first with simulated data, or start with your
own data.
Data for Reporting Services mobile reports: Use data from shared datasets or prepare data from Excel
workbooks to use in your mobile reports.
How data refresh works in mobile reports and KPIs in Reporting Services (Christopher Finlan's blog): Read
about setting up caching for shared datasets so you control how often data is refreshed and speed up report
performance.
Visualizations in mobile reports
Gauges in mobile reports
Maps in mobile reports
Brand your web portal and mobile reports with the colors and logo of your business

SSRS mobile reports in the Power BI mobile apps


View Reporting Services mobile reports and KPIs in the Power BI mobile apps for iOS and Android
View Reporting Services mobile reports and KPIs in the Power BI app for Windows 10 devices

See Also
Create, Modify, and Delete Shared Data Sources (SSRS)
Manage Shared Datasets
Working with KPIs in Reporting Services
Enable a report server for Power BI mobile access
SQL Server mobile reports: End-to-end walk-
through
3/5/2021 • 8 minutes to read • Edit Online

Walk through creating mobile reports for any screen size with SQL Server Mobile Report Publisher on the
Reporting Services web portal, and viewing them in the Power BI mobile apps.
Create mobile reports on a design surface with adjustable grid rows and columns, and flexible mobile report
elements. Connect to a variety of on-premises data sources, or upload Excel workbooks to create mobile reports.
Then save your reports to a Reporting Services web portal and view them in a browser, or in the Power BI
mobile apps.
This article walks you through:
Creating a shared data source and dataset on the Reporting Services web portal, using the AdventureWorks
database as a sample data source.
Creating a Reporting Services mobile report in the Mobile Report Publisher
Publishing the mobile report to the Reporting Services web portal.
Viewing the mobile report in the Power BI mobile app.

Before we start
To follow along, you need these products:
To create data sources and KPIs, and publish datasets and mobile reports, you need access to a Reporting
Services native mode report server.
To create shared datasets, install Report Builder.
To create mobile reports, install SQL Server Mobile Report Publisher.
AdventureWorks sample databases.
OR: World Wide Importers sample database, available from the Microsoft SQL Server Samples page.
To view the result:
Sign up for the Power BI service and
Download the Power BI mobile app to your mobile device: iOS, Android phone, or Windows 10 device.

Create a shared data source


You can create a shared data source for your mobile reports from any of the data sources Reporting Services
supports. See the list of supported data sources.
1. From your Reporting Services web portal, click New > Data Source .
2. Enter your data source information > OK .
By default, data sources aren't displayed in the portal.
3. To view data sources, click Display > Data Source .

4. Now you see the data source in the Reporting Services portal.
Read more about shared data sources in Reporting Services.

Create a shared dataset


Use an existing Reporting Services client tool, such as Report Designer in SQL Server Data Tools (SSDT), to
create the shared dataset. This walkthrough uses Report Builder. Install Report Builder, or launch it from your
web portal. You'll create three datasets, one each for: the KPI value, the KPI trend, and one with more fields for
the Reporting Services mobile report.
1. From your Reporting Services web portal, click New > Paginated Repor t to start Report Builder.

2. Click New Dataset .


3. Click Browse other data sources .
4. In the Name field, type the name of the server where you saved your data source, in this format:
Name: https://localhost/ReportServer
Items of type: Data Sources (*.rsds)
5. Click Open , and navigate to the data source you created on that server.
6. Select your data source and click Open again.
7. Design your dataset in Report Builder.

8. When complete, save the dataset to the SSRS report server.


Now you can use the dataset as the basis for your KPIs and mobile reports. You can create multiple datasets
against the same data source. And you can create multiple KPIs and mobile reports against these shared
datasets.

Create a KPI
You create KPIs right in the Reporting Services web portal.
1. In the upper-right corner of the web portal, click New > New KPI .
In the KPI creation screen, you can manually enter values, or to use a shared dataset.
2. Change Value from Set manually to Dataset field .

3. Click the ellipsis (...) in the Pick dataset field box, and select a dataset from the previous step.

4. Choose the field in the dataset.

5. Choose the aggregation your want. KPIs can only display one number, so the field will be aggregated to
show that number.

6. Click OK .
7. In the Trend set box, click Dataset trend .
8. In the Pick dataset trend box, click the ellipsis (...)
9. Select a field and click OK .
10. Give your KPI a name and pick a visualization type, and click Create .
The KPI appears on the Reporting Services web portal.

Create a Reporting Services mobile report


To create a Reporting Services mobile report, install SQL Server Mobile Report Publisher, or launch it from the
Reporting Services web portal.
When you first open Mobile Report Publisher, you see a blank canvas where you can create your mobile report.
You can start by creating visuals first, or start with your data. If you create the visuals first, Mobile Report
Publisher automatically generates simulated data that is tied to the report and changes dynamically as you
change your visual selections. Try this yourself.

Start with the visuals


1. From your Reporting Services web portal, click New > Mobile Repor t to start Mobile Report Publisher.
Mobile Report Publisher opens to the master layout grid.
2. On the Layout tab, scroll down to the Charts section.

3. Drag the Tree Map to the grid, and drag the lower-right corner to make it three columns wide and three
rows high.
4. You can see its visual properties at the bottom. You may have to scroll sideways to see them all.

5. With the tree map visual selected, select the Data tab in the upper-left corner.
Now you see the simulated fields and values that Mobile Report Publisher has generated, and see what
the size and the color represent in the tree map.

6. Click the Layout tab.

7. Click the Options cog in the upper-right corner of the tree map to see the menu it contains.
8. Click the arrow in the middle of the wheel to close it.

Add your own data


1. Switch to the Data tab.
2. To add your own data, click Add Data in the upper-right corner, and navigate to your data.
3. You could use data from a local Excel workbook, but in this case, it's from the shared dataset on your
Reporting Services web portal. You see a "Server added" message.
4. Select the server, then select the dataset you created.
5. Back on the Data tab, in the Data Proper ties pane change Size Represents , Color Represents , and
other properties to fields in your own data.
Size Represents , Color Represents , and Custom Center Value have to be fields with numeric
values.
Group By is a category, so it's a text field.

6. Select Preview to see the tree map updated with your data.

Add a gauge to your mobile report


Let's add a gauge to see how year-to-date sales compare to last year's sales, using the same dataset.
1. On the Layout tab, drag a Half-donut to the canvas. place it under the tree map and drag the lower-right
corner to make it three squares wide by two squares high.
2. Again, it starts with simulated data.
Note that in Visual proper ties , by default Higher values are better , and the Delta label is a
Percentage of target . It has default Range stops you can change, but for now they're fine.
3. On the Data tab, select the table with your data and select the Main Value field and the field you want to
compare it to in Comparison Value .
4. You can choose different aggregations to come up with one number for Main Value and one for
Comparison Value . By default, it's a sum.

5. Select Preview to see how it looks.

Add a selection list as a filter


Selection lists act like slicers in Power BI and Excel. We can add one to filter the other visuals in the mobile
report.
1. On the Layout tab, drag a selection list to the right of the tree map, and drag the lower-right corner to
make it two squares wide and as tall as the canvas, five squares.

2. On the Data tab, Data proper ties , set Keys and Labels to a field in your data that you want to filter on.

Create a mobile report for phones


Now that you've created visuals on the master layout, you can create a mobile report with a layout specifically
optimized for your phone users.
1. In the upper-right corner, click the canvas icon > Phone .
2. On the Layout tab under Control Instances , you see the two charts you've created.
3. Drag the tree map to the phone canvas and make it four columns wide and three rows high.

Save your mobile report


You can save your report locally or to a Reporting Services web portal. If you save it locally, Mobile Report
Publisher saves it with cached data, so you can open it and continue working on it. But you can't view it on a
mobile device.
1. Click the save icon in the upper-left corner.
2. To share it with others and view it on a mobile device, click Save to Ser ver .
3. On the server, browse to the folder where you want to save your mobile report.
4. Click Choose Folder > Save .
You get a message confirming the report is saved.
After you save, you can return to the portal and see your mobile report thumbnail.
5. Tap the thumbnail to see the report in the web portal.

View your report on the web portal


View your report on a mobile device
To view your Reporting Services report, you first need to:
Sign up for the Power BI service, if you don't have an account yet.
Download the Power BI mobile app to your mobile device.
View your mobile report
1. Open and sign into the Power BI app on your mobile device.
2. To view your Reporting Services mobile reports and KPIs, tap Repor ting Ser vices .

3. Tap the options icon in the upper-left corner, and tap Connect to Ser ver .

4. Give the server a name, and fill in the server address and your email address and password, in this
format:
5. Now you see the server in the left navigation bar.

TIP

Tap the options icon anytime to go between your Reporting Services mobile reports in the Reporting Services
web portal and your dashboards in the Power BI service.

View KPIs and mobile reports in the Power BI app


Tap the KPIs or Mobile Repor ts tab.
Tap a KPI to see it in focus mode.

Tap a mobile report to open and interact with it in the Power BI app.
The KPIs and mobile reports are displayed in the same folders they're in on the Reporting Services web portal.

See also
View on-premises report server mobile reports and KPIs in the Power BI mobile app for iOS and Android
devices
View on-premises report server mobile reports and KPIs in the Power BI mobile app for Windows 10 devices
Create a Reporting Services mobile report
3/17/2020 • 2 minutes to read • Edit Online

With SQL Server Mobile Report Publisher, you can quickly create SQL Server Reporting Services mobile reports
that scale well to any screen size, on a design surface with adjustable grid rows and columns, and flexible mobile
report elements.
The first time you create a mobile report, you can install SQL Server Mobile Report Publisher, on your local
machine from the Reporting Services web portal. Or you can install it from the Microsoft Download Center.
After the first time, you can start it either from the web portal or locally.
1. In the top bar of the Reporting Services web portal, select New > Mobile Repor t .

2. On the Layout tab in Mobile Report Publisher, select a navigator, gauge, chart, map, or datagrid and drag
it to the design grid.
3. Grab the lower-right corner of the element and drag it to the size you want.

This is the Master design grid, where you create the elements you want in your report. Later, you can lay
out the report for a tablet or phone.
In Visual Proper ties below the design grid, notice the various properties you can set.
4. Select the Data tab in the upper-left corner, and you see the chart already has simulated data associated
with it.

5. Select Add Data in the upper-right corner.


6. Select Local Excel or Repor t Ser ver .

Tips : If you're adding data from Excel, make sure:


You prepare the Excel data to work in your mobile report.
You close the file first.

7. Select the worksheets you want, and select Impor t .


You can add more than one worksheet from a workbook at a time.
8. Still on the Data tab, in the Data Proper ties box select the table and field you want in the chart.

9. Back on the Layout tab, in the Visual Proper ties box you can set properties like Title , Time Unit , and
Number Format .

10. Select Preview in the upper left to see how your report is shaping up.
11. Time to save your report. Select the Save icon in the upper left, and either Save Locally or Save to
Ser ver .
To save it to a server, you need access to a SQL Server Reporting Services report server.
See also
Create and publish mobile reports with SQL Server Mobile Report Publisher
Lay out a Reporting Services mobile report for phone or tablet
Design first or data first when creating in Reporting
Services mobile reports
3/17/2020 • 2 minutes to read • Edit Online

With SQL Server Mobile Report Publisher, you can quickly create mobile reports that scale well to any screen
size, on a design surface with adjustable grid rows and columns, and flexible mobile report elements.
When creating mobile reports, you have your choice of two basic approaches: start with the data first, or start
with the design first. Mobile Report Publisher supports both.

Design first
The following diagram shows the components of the Mobile Report Publisher layout view:

In the design-first approach, you create a mobile report layout first without importing any data. This is a good
way to create a mobile report when you are not sure if the data is formatted correctly. Without real data, gallery
elements are automatically bound to generated simulated data, which you can export and use as a template to
describe the required data.

Data first
The data-first approach is to import all required data first, then design the mobile report and set data properties
on the mobile report elements. This has the advantage of being able to connect each element to real data when
you add it to the layout. When using a data-first approach, be sure that your real data is formatted correctly for
use with Mobile Report Publisher.
The following diagram shows all the components of the Mobile Report Publisher data view:
See also
Create and publish mobile reports with SQL Server Mobile Report Publisher
View SQL Server mobile reports and KPIs in the iPad app (Power BI for iOS)
View SQL Server mobile reports and KPIs in the iPhone app (Power BI for iOS)
Data for Reporting Services mobile reports
3/17/2020 • 2 minutes to read • Edit Online

The SQL Server Mobile Report Publisher data model is simple. Data is imported into Mobile Report Publisher as
a collection of datasets. Formal relationships between datasets aren't necessary. Lookups from one dataset to
another work as long as the key values match. Date/time aggregations are handled by the mobile report
runtime and they will match between different datasets, even if the date/time data granularity is different
between datasets.
You can import data from two types of sources:
Local Excel files : Select an Excel document and pick which worksheet(s) to import. After import, the
data is stored within the mobile report definition. To refresh the data from the original Excel file, use the
Refresh Data command in the upper-right corner on the Mobile Report Publisher Data tab. Read more
about preparing Excel data for SSRS mobile reports.
SQL Ser ver Mobile Repor t Publisher shared datasets : Browse the list of published datasets on the
server and select the ones to add to the mobile report. Mobile reports based on server data always stay
connected to the original server datasets and reflect the latest state of the data on the server. See a list of
supported data sources.
Read more about getting data from shared datasets in Mobile Report Publisher.
After you import data into Mobile Report Publisher, the rest of the mobile report creation and design experience
is the same, regardless of where the data came from.

Connect mobile report elements to data


Each SQL Server Mobile Report Publisher element contains one or more data settings. For example, the Radial
Gauge element contains two data settings: Main Value and Comparison Value. Each of these settings points to
exactly one field (column) in a specific dataset.
The mobile report runtime provides aggregated values for the gauge, based on user selections. Note that the
Comparison Value of the same Radial Gauge instance can be bound to a field from a different dataset.
See also
Prepare data for Reporting Services mobile reports
Create and publish mobile reports with SQL Server Mobile Report Publisher
Get data from shared datasets
Retain date formatting for Analysis Services data in mobile reports
Work with simulated data in Reporting Services
mobile reports
3/17/2020 • 2 minutes to read • Edit Online

When you place a gallery element on the design surface, Mobile Report Publisher immediately generates
simulated data for that element. This data serves a number of useful purposes when creating mobile reports.

Simulated data helps when taking a design-based approach to mobile report creation. Initially populating
elements with simulated data allows you to create mobile report prototypes quickly without having to address
specific data requirements. These mobile reports can then be evaluated for the overall aesthetics and
effectiveness.

Create an Excel file with simulated data as a template


Simulated data also provides a template that accurately represents the data requirements of a particular mobile
report design.
Click Expor t All Data in the upper-right corner of the Data View.
Mobile Report Publisher generates an Excel document containing the simulated data, allowing for quick
substitution of actual data, ready for import.

How simulated data behaves


The simulated data generated is tailored specifically to the mobile report you're creating. As you place more
elements on the design surface, the associated simulated data grows and changes to provide the best possible
experience short of real data. This evolution ensures that extra fields and filter possibilities are available in case
you add extra series to chart visualizations or expand the scope of one or more mobile report elements another
way.
As mentioned previously, you can export simulated data to an Excel file, creating a perfect data template for the
associated mobile report. You can swap in your own real data into the Excel file and import it back into the
Mobile Report Publisher.
After all controls are bound to real data, simulated tables that are no longer in use are automatically removed
from the mobile report. You can't remove simulated tables still referenced by elements on the design surface.

Note : Simulated data does not add to the overall mobile report footprint because it's not serialized with the
mobile report, but generated on-the-fly at runtime.

See also
Create and publish mobile reports with SQL Server Mobile Report Publisher
View SQL Server mobile reports and KPIs in the iPad app (Power BI for iOS)
View SQL Server mobile reports and KPIs in the iPhone app (Power BI for iOS)
Get data from shared datasets in Reporting Services
mobile reports
3/17/2020 • 2 minutes to read • Edit Online

Besides loading data from Excel files, SQL Server Mobile Report Publisher can also access data from almost any
source. Accessing data requires a shared data source, configured on a Reporting Services web portal. Read more
about creating shared data sources and creating shared datasets.
After shared data sources and shared datasets are configured on the Reporting Services server, you can use
them in mobile reports you create in Mobile Report Publisher.
After you've connected to a Reporting Services server from the Mobile Report Publisher, connecting a mobile
report to a shared dataset is straightforward.
1. On the Data tab, select Add Data .
2. Select Repor t Ser ver .
3. If this is the first time connecting to the server, fill in the server name and your name and password. Put
the server name in the Server address box in this format:
<"servername">/reports/
As in this example:

4. When you select the Reporting Services server, you see the available datasets in folders. Select a dataset
to import the data into Mobile Report Publisher.
After you've imported the dataset, you can design your mobile report just as you would with simulated data, or
local data from an Excel file.
By default, the shared dataset is always up to date with the latest data, because every time someone views a
mobile report based on that dataset, SQL Server runs the underlying query and returns the latest data. Clearly, if
lots of people view your mobile report this might not be ideal, so you can set up caching to run the query
periodically and cache the resulting dataset. This blog post explains how caching and data refresh works in the
web portal.

Add, edit, or remove a report server


If you're already connected to a report server, when you select Add Data on the Data tab, you don't see an
option to add another report server. Follow these steps instead.
1. In the upper-left corner, select Connections .

The Server Connection pane opens on the right.

2. Add a new server connection, or edit or remove existing connections.


See also
Create and publish mobile reports with SQL Server Mobile Report Publisher
Web portal (SSRS Native Mode)
View SQL Server mobile reports and KPIs in the iPad app (Power BI for iOS)
View SQL Server mobile reports and KPIs in the iPhone app (Power BI for iOS)
Prepare data for Reporting Services mobile reports
11/2/2020 • 2 minutes to read • Edit Online

SQL Server Mobile Report Publisher supports a number of complex data operations, including filtering,
aggregation, and time slicing. This article offers some points to keep in mind while preparing data. Pre-
aggregating data can optimize both mobile report creation and use, and some mobile report designs require it.

Date and time formats


When dealing with date and time intervals for use in a mobile report, particularly with the TimeNavigator, it's
important to format the date/time column properly so the Mobile Report Publisher can identify it as such. Here
are examples of valid date/time formats:
05/01/2009
2009-05-01
05/01/2009 14:57:32.8
2009-05-01 14:57:32.8
2009-05-01T14:57:32.8375298-04:00
5/01/2008 14:57:32.80 -07:00
1 May 2008 2:57:32.8 PM
Fri, 15 May 2009 20:10:57 GMT

Date- and time-based datasets can, in most cases, be described by one or more date/time intervals, such as
hourly, daily, monthly, quarterly, and yearly. Mobile Report Publisher can combine multiple tables of different
granularity and display them on a single mobile report. However, keep in mind the relevant intervals from the
original dataset(s), as they can help when deciding what date/time filter options to present to the user in the
final mobile report.
Date fields in Analysis Services multidimensional and tabular models can lose their date formatting in shared
datasets. See Retain date formatting for Analysis Services in mobile reports for a solution that keeps their
formatting.

Preparing filter data


Mobile Report Publisher can filter data based on both date/time fields and key fields. Though key fields can be
numeric, in most cases they're either an ID or a string value. To prepare a filter field for use with a navigator
element such as the Selection List, the filter key should be a single column in the data table. That way, you can
group the table rows according to the value in the filter column. Having multiple columns contain different filter
keys, or filter criteria, allows for mobile reports with multiple filter navigators to be used together hierarchically
or individually.

IN DUST RY C O UN T RY REGIO N

Banks AFGHANISTAN ASIA

Commercial & Professional Services AFGHANISTAN ASIA

Food, Beverage & Tobacco AFGHANISTAN ASIA

Media AFGHANISTAN ASIA


IN DUST RY C O UN T RY REGIO N

Pharmaceuticals AFGHANISTAN ASIA

Food & Staples Retailing ALBANIA EUROPE

Key-based filters may also be hierarchically structured for use with a Selection List in a tree structure. To prepare
data for use in this type of scenario, create a look-up table describing the hierarchical structure. Use a table
structure that includes a Key column and a Parent Key column to indicate where a node belongs in the overall
hierarchy.
In this table, the ParentKey items are first listed in the ItemKey column, then listed in the ParentItemKey column
next to their child items.

IT EM K EY PA REN T IT EM K EY

Financials

Industrials

Consumer Staples

Consumer Discretionary

Health Care

Information Technology

Banks Financials

Real Estate Financials

Diversified Financials Financials

Insurance Financials

Commercial & Professional Services Industrials

Capital Goods Industrials

Transportation Industrials

Food, Beverage & Tobacco Consumer Staples

Food & Staples Retailing Consumer Staples

Household & Personal Products Consumer Staples

Media Consumer Discretionary

Automobiles and Components Consumer Discretionary

Consumer Durables and Apparel Consumer Discretionary


IT EM K EY PA REN T IT EM K EY

Consumer Services Consumer Discretionary

Retailing Consumer Discretionary

Pharmaceuticals Health Care

Health Care Equipment & Services Health Care

Software & Services Information Technology

Technology Hardware & Equipment Information Technology

Telecommunication Services Information Technology

See also
Prepare Excel data for Reporting Services mobile reports
Retain date formatting for Analysis Services in mobile reports
Create mobile reports with SQL Server Mobile Report Publisher
Prepare Excel data for Reporting Services mobile
reports
11/2/2020 • 3 minutes to read • Edit Online

Here are some things to keep in mind when preparing an Excel file and worksheets for use with a mobile report:

Do
Have one worksheet per dataset.
Have column headers in the first row.
Keep data types consistent within each column.
Format cells as proper types in Excel.
Have the data in worksheets, not in the Data Model in Excel.
When using formulas, ensure that the entire column is calculated using the same formula.
Use Excel 2007 or later.
Save Excel files with the extension XLSX.

Don't
Include images, graphs, PivotTables, or other embedded objects in dataset worksheets.
Include total or calculated rows.
Keep the file open in Excel when importing.
Format numbers manually by adding currency or other symbols.
Use a workbook with data stored in the Data Model.

Worksheets
When preparing an Excel file as a dataset for a mobile report, make sure you have only one dataset per
worksheet. Each individual worksheet is imported into the Mobile Report Publisher as a separate table.
Identically named worksheets from multiple Excel sources are renamed upon importing by appending
incrementing numbers. For example if a workbook has three worksheets entitled "MyWorksheet", the second
and third will be renamed "MyWorksheet0" and "MyWorksheet1". The screenshot below illustrates the first few
rows of an ideal Excel worksheet ready for import.
Column headers
As you can see in the example above, the first row contains the name of the metric in that column. Mobile
Report Publisher preserves these column headers for easy reference in gallery element settings. Column
headers aren't required, however. If missing, Mobile Report Publisher generates headings using the Excel
A,B,C,...,AA,BB,... convention.
Mobile Report Publisher automatically detects first-row headers when importing Excel worksheets by
comparing the data types of the first two cells in each column. If the data types of the first two cells in any
column don't match, the first row is determined to contain column headers. Thus, if a table has numeric column
headers, prefix the header names with a string so they're detected as headers in the import process.

Cells
Cell data in each column of a worksheet dataset needs to be consistent. Each column is assigned a data type
upon importing. Mobile Report Publisher automatically detects data types as string, double (numeric), boolean
(true/false), or datetime. Mixed data types in the same column can cause this detection to be inaccurate or fail
completely. This detection accounts for possible column headers being of string type. Cells should be formatted
as the correct type in Excel to ensure that the Mobile Report Publisher detects the desired types. In the above
example the six columns would be typed as:
A datetime column
A string column
Four double columns
If a worksheet contains calculated cells or formulas, only the resulting display value is imported into the Mobile
Report Publisher.

File Location and Refreshing Excel Data


There are no restrictions on where you store Excel files you import into the Mobile Report Publisher. However, if
you move or rename the file after importing, you won't be able to refresh that data through the refresh all
data command found in the Data View.

Note : Mobile Report Publisher doesn't automatically refresh Excel data. You can refresh the data through the
Mobile Report Publisher refresh command, but only if the file hasn't moved.

Dates
Date fields are essential to many mobile reports, so make cells are properly formatted as dates in Excel. In some
cases this means a conversion is necessary. Here are examples of formulas for converting cells from text to
dates in Excel.
Week 24-2013=DATE(MID(A2,9,4),1,-2)-WEEKDAY(DATE(MID(A2,9,4),1,3))+MID(A2,6,2)*7

2013/03/21=DATEVALUE(A1)

2013-mar-12=DATEVALUE(RIGHT(A1,2)&"-"&MID(A1,6,3)&"-"&LEFT(A1,4))

After you've converted the cells, you have to format them as dates by selecting them, or the entire column >
Context menu > Format Cells > Date from the Categor y list. You can also use the Excel text-to-columns
wizard to convert text cells to properly formatted dates.

Unsupported
Worksheet data in formats other than those described above could cause unpredictable results when imported.
It is a good idea to restrict worksheets in an Excel file to only those that are in the correct format for use with a
mobile report.
Custom objects in Excel worksheets, including PivotTables, visualizations, and images, aren't imported into the
Mobile Report Publisher.
See also
Prepare data for Reporting Services mobile reports
Create and publish mobile reports with SQL Server Mobile Report Publisher
View SQL Server mobile reports and KPIs in the iPad app (Power BI for iOS)
View SQL Server mobile reports and KPIs in the iPhone app (Power BI for iOS)
Retain date formatting for Analysis Services in
mobile reports
11/2/2020 • 2 minutes to read • Edit Online

Add a measure to a shared dataset in Report Builder so dates in Analysis Services data sources retain their data
type in Mobile Report Publisher.
The default return type for Analysis Services queries is a string. When you build a dataset in Reporting Services
Report Builder, the string type is respected and gets saved to the server.
However, when the JSON table renderer processes the dataset, it reads the value of the column as a string and
renders strings. Then when SQL Server Mobile Report Publisher fetches the table, it also only sees strings.
The workaround for this is to add a calculated member when you're creating a shared dataset in Report Builder.
It works for both Analysis Services multidimensional and tabular models.

Create a measure to retain a date field data type


1. Create a measure to hold the value of the date field in question, and in the expression field, choose the
hierarchy/level of the date and append .CurrentMember.MemberValue . For example:
[Internet Sales].[Ship Date].CurrentMember.MemberValue

2. Now you can append this calculated member to the set of columns by dragging it from the Calculated
Members list in the bottom left and dropping it in the column grid on the right.
See also
Data for Reporting Services mobile reports
Prepare data for Reporting Services mobile reports
Add parameters to a mobile report | Reporting
Services
11/2/2020 • 2 minutes to read • Edit Online

You can create a Reporting Services mobile report with parameters, so you and your report readers can filter
your reports. A report with parameters can also be the target of a drillthrough from a source report.
To create a mobile report with parameters, you start with a shared dataset with at least one parameter. Read
about creating parameters in a shared dataset. Mobile reports don't support null value(s) for default parameters,
so make sure your parameters have default values other than null.
After you add parameters to a mobile report, you create a URL to open the report with query string parameters.
1. In the top bar of the Reporting Services web portal, select New > Mobile Repor t .

2. Select the Data tab in the upper-left corner of SQL Server Mobile Report Publisher.
3. In the upper-right corner, select Add Data .
4. Select Repor t Ser ver , then select a server.
5. Navigate to the shared datasets on the server and select one that has parameters.
In the grid, you see the data in the dataset. The green circle with brackets { } marks a dataset with a
parameter.

6. Select the cog on the tab, then select Param {} .


7. Select the report element that will pass values to the parameter.

8. Select Preview to see how the report will look. In this report, the selection list is using the Category
parameter.

9. When you select a value in the selection list, the report is filtered to that value, in this case, Accessories.
See also
Open a mobile report with specific query string parameters
Add drillthrough from a mobile report to other mobile reports or URLs
Create a shared or embedded dataset
Create and publish mobile reports with SQL Server Mobile Report Publisher
Open a mobile report with specific query string
parameters | Reporting Services
11/2/2020 • 2 minutes to read • Edit Online

If you have a Reporting Services mobile report with parameters and a SQL Server or Analysis Services data
source, you can include query string parameters in the report URL so it opens automatically with values you've
specified.
1. Create a mobile report with parameters.
2. Open the report in Mobile Report Publisher and select the Data tab.
3. Find the name of the dataset on the tab at the bottom of the table, and the field name you want.

4. The syntax of the URL depends on your data source.


For a SQL Ser ver Analysis Ser vices data source : Build a URL with a query string parameter in this
format:
https://<servername>/reports/<report-folder-name>/<report-name>?<dataset-name>.<field-name>=
<parameter-value>

For example:
https://sampleserver/reports/adventureworks-reports/adventureworks-load-on-demand?
TimeChartLoD.category=Clothing

For a SQL Ser ver data source : The query string parameter is almost the same, but has the @ symbol
in front of the field name:
https://<servername>/reports/<report-folder-name>/<report-name>?<dataset-name>.@<field-name>=
<parameter-value>

For example:
https://sampleserver/reports/adventureworks-reports/adventureworks-load-on-demand?
TimeChartLoD.@category=Clothing

5. This URL will open the report on the server, automatically filtered to the parameter value you specified.

See also
Add parameters to a mobile report
Add drillthrough from a mobile report to other
mobile reports or URLs
11/2/2020 • 3 minutes to read • Edit Online

You can add drillthrough from any gauge, chart, or data grid in a Reporting Services mobile report to another
mobile report or custom URL.
A drillthrough is a link from a source report that opens another target report or URL. The target drillthrough
report often contains details about some item in the summary report. Depending on the source mobile report,
one or more parameters can be passed to the target mobile report or integrated into a custom URL.
When you view the source mobile report in the Reporting Services web portal and select an element with a
drillthrough target, you go to that target, either another mobile report or a URL.
Report items with drillthrough, either to a URL or another mobile report, have the drillthrough icon in the
upper-right corner.

Tip : Create the target report and save it to a Reporting Services web portal first. If you plan to pass
parameters from the source report, add the parameters to the target report, too. Then you can set up
drillthrough from the source report to the target report. Add parameters to a mobile report.

Set up drillthrough to a mobile report


1. In Layout view in SQL Server Mobile Report Publisher, select a visualization that supports drillthrough.
Maps and gauges support drillthrough, as do most charts and simple data grids.
2. In the Visual Proper ties pane, select Drillthrough target > Mobile repor t .
3. Select the server and the target mobile report.

Note: If the target mobile report is not on the same server as the source mobile report, connect to it
with a custom URL instead, as explained in the next section.

4. After you select a target mobile report, you see its available input parameters, including properties that
can be bound to navigator controls and parameters configured on datasets of the target mobile report.
Drillthrough properties for the target mobile report
5. Select the arrow to the right of each property to connect properties with matching data types to available
output properties on the source mobile report. You can also set defaults for each output here, in case the
report user hasn't interacted with the source mobile report before drilling through to the destination
mobile report.

Set up a drillthrough to a custom URL


1. In Layout view in SQL Server Mobile Report Publisher, select a visualization that supports drillthrough
targets.
2. In the Visual Proper ties pane, select Drillthrough target > Custom URL . this will open the
drillthrough configuration dialog.
3. In Set drillthrough URL , enter the destination URL to go to when the visualization is clicked, and select
from Available parameters listed on the right. A preview of the custom URL combined with sample
resolved parameters (if included) is displayed in the panel below.

Drill through to custom URL properties


4. Click Apply .
When you preview a mobile report in Mobile Report Publisher, if you click a visualization with drillthrough, you
see a message that drillthrough is disabled. You can only actually drill through to the target after you save or
publish a mobile report and then view it, not from within Mobile Report Publisher layout or preview mode.

Hide a target mobile report on the web portal


If you're not going to set a default value for the target report, consider hiding it on the web portal. Otherwise,
when someone tries to view it on the web portal directly, without going through the source report, it will be
empty.
1. In the web portal, select the ellipsis (...) on the target report you want to hide, then select Manage.
2. In Proper ties , select Hide in tile view .
You can choose to view hidden items in the web portal:
In the upper-right of the web portal, select View > Show hidden.
Hidden items are displayed in a lighter color..
See also
Add parameters to a Reporting Services mobile report
Create mobile reports with SQL Server Mobile Report Publisher
Web portal (SSRS Native Mode)
Create a tabbed mobile report by using drillthrough
11/2/2020 • 2 minutes to read • Edit Online

Learn how to create a Reporting Services mobile report that looks and acts like a tabbed report by using
drillthrough and parameters.
For example, in this report, the gauges across the top act like tabs. When you click the Transportation gauge, the
data in the rest of the chart is filtered to the transportation data.

Behind the scenes, this is really a set of five separate reports, each with a different parameter that filters the
report to match the gauge selected at the top of the report. You create all five reports first, then for each of the
five reports, you make the other four gauges into drillthroughs to the other four reports.
Here are the steps for this example.

Create the basic report


1. Create a report called Sales, with five gauges:
Sales
Transportation
Fuel
Storage
Misc Expenses
2. Set Accent to On for the Sales gauge, so it will contrast with the rest of the report--in this case, white on
black.

3. Save it to a Reporting Services report server.

Make copies of the report


1. Make four copies of the Sales report and name them:
Transportation
Fuel
Storage
Misc Expenses
2. Save them to the Reporting Services report server.

Set the gauge as a drillthrough


In this section, you set each gauge (other than the Sales gauge) as a drillthrough to its respective report.
1. In the Sales report, select the Transportation gauge.

2. With the Layout tab selected, in the Visual proper ties pane select Drillthrough target .
3. Select Mobile repor t .
4. Navigate to and select the report that will be the destination for the drillthrough--in this case, "Financials
- Transportation."

5. In Configure target repor t , select the parameter to filter the report, and select Apply .
6. Repeat these steps for each of the other gauges in the Sales report.

Set the gauges for the other reports


1. Open the Transportation report, set the Sales gauge as a drillthrough to the Sales report, and the other
three gauges as drillthroughs to their respective reports.
2. Still in the Transportation report, set Accent for the Transportation gauge to On , contrast with the rest of
the report.
3. Repeat these steps for the Fuel, Storage, and Misc Expenses reports.

View the report in the web portal


1. Go to the Reporting Services report server and open one of the reports.
2. Notice that each of the gauges has a drillthrough icon in the upper-right corner.

3. Select one of the gauges to go to the report filtered to that gauge's data.
See also
Add parameters to a mobile report
Add drillthrough from a mobile report to other mobile reports or URLs
Add navigators to Reporting Services mobile
reports
11/2/2020 • 4 minutes to read • Edit Online

In SQL Server Mobile Report Publisher, you add navigators to filter the data in visualizations by time or by
selection.
Navigators are similar to slicers in Power BI and Excel PivotTables, but navigators have some unique traits, too.
Time-based navigators filter tables by selecting rows that fall in a specific time range.
Selection-based navigators filter tables by selecting rows where a particular column value matches the
selected key value; or, in cases of hierarchical trees, where a particular column value belongs to the sub-tree of
the selected key value. There are two types of selection navigators:
Selection lists are single-column tables you can use to filter your mobile report, similar to slicers in Power BI
and Excel.
Scorecard grids filter the mobile report, too, and can also contain

Time navigators
As its name implies, you use the time navigator to filter a range of data bounded by a time range.

The four line charts on the left are set in the Time Range Presets. The line chart on the right is the filter.
When you view the report in Preview or in the Reporting Services web portal, you drag the arrows in the time
navigator to filter the rest of the report.
By default, the time navigator filters all the visuals in the report that are connected to time-based data. If a table
contains more than one time-based column, only the first is used for filtering. The series table drives the
embedded visualization and determines the overall date range of the mobile report.
You can disconnect a visualization from the time navigator.
1. Select the visualization, then select the Data tab.
2. In Data Proper ties , select Options .
3. Clear the Filtered by check box.

Selection lists
The selection list filters data in a mobile report by matching the value you select in the list to the value of a
specified column for each row of a filtered table.
1. From the Layout tab, drag Selection list to the design surface and resize it the way you want it.
2. Select the Data tab, and in the Data proper ties pane under Keys , select the table and column that will
be the filter.
3. Under Labels , select the column with the label that will be displayed. The key column and label column
can be the same.
In the case of hierarchical tree data, select a parent key column.
4. After you've set the data properties, under Tables FIltered by Selection List , select the tables to be
filtered and the column to filter by. This column needs to match values in the selection list's key column.
For each visualization in the mobile report that you want the selection list to filter:
1. Select the visualization, select the Data tab, and in the Data proper ties pane, select Options next to the
field name.

2. Under Filtered by , select the selection list.


When you view the mobile report in Preview or in the Reporting Services web portal and select a value in the
selection list, it filters the other visualizations in the mobile report.

Scorecard grid
The scorecard grid filter functions much like the selection list filter, but it also displays value columns and score
indicators, which are the same as the indicators in an indicator data grid. After selecting the key, label, and
optional parent key columns, you select an input table and column to provide the scorecard with data. The
scorecard data column should be filterable by the key column.
1. From the Layout tab, drag Scorecard grid to the design surface and resize it the way you want it.
2. Select the Data tab, and in the Data proper ties pane under Keys , select the table and column that will
be the filter.
3. Under Labels , select the column with the label that will be displayed. The key column and label column
can be the same.
4. To add a score indicator, in the Data Columns pane, select Add score .
5. Name the score indicator and select Options to set the same properties you'd set for an indicator in a
data grid:
Gauge type
Value field
Comparison field
Value direction
6. To add a value indicator, in the Data Columns pane, select Add value .
7. Name the value indicator as desired, choose its source column from the table, and select how it will be
formatted.

8. After you've set the data properties, under Tables FIltered by Selection List , select the tables to be
filtered and the column to filter by. This column needs to match values in the selection list's key column.
When you view the mobile report in Preview or in the Reporting Services web portal and select a value in the
scorecard grid, it filters the other visualizations in the mobile report.
Set which visualizations are filtered
Gallery elements are configured to use filters by clicking the options button for a particular input in data view.
Filters are enabled by toggling the appropriate checkbox.
You can decide which visualizations in the mobile report that a navigator will filter:
1. Select the visualization, select the Data tab, and in the Data proper ties pane, select Options next to the
field name.

2. Under Filtered by , select the navigator. Each visualization can be filtered by multiple navigators.

Cascading filters
Filters can also be cascaded together so that the selected value of one will filter the available values in a second.
To cascade filters, apply the filters to the Key column as you would a regular gallery element.
See also
Maps in Reporting Services mobile reports
Visualizations in Reporting Services mobile reports
Gauges in Reporting Services mobile reports
Data grids in Reporting Services mobile reports
Add visualizations to Reporting Services mobile
reports
11/2/2020 • 8 minutes to read • Edit Online

Charts are an essential part of data visualization. Learn about the charts you can use in Reporting Services
mobile reports to cover a range of scenarios.
SQL Server Mobile Report Publisher has three basic chart types: time, category, and totals. These three chart
types have corresponding comparison charts, which are useful for comparing two distinct sets of series.

Shared chart properties


Some properties apply to all charts, and others only to specific charts. Here are some of the shared properties.
Number format
You can assign a variety of formats to numbers in a chart in Mobile Report Publisher -- for example, general,
currency with or without decimals, percentages with and without decimals, and so on. In a chart, number
formatting applies to axis annotations, as well as data point pop-ups. You set number formatting on each chart
individually, not on the mobile report as a whole.
To set the number format, select the Layout tab, select a chart on the design surface, and in the Visual
proper ties pane select a Number format .
Legend
To show the legend for a chart, select the Layout tab, select a chart on the design surface, and in the Visual
proper ties pane set Show legend to On
Series
Each individual metric, or value, displayed on a chart is referred to as a series; multiple series can, and do, share
both a common x-axis and a common y-axis. Series are defined in the data properties panel of the data view by
selecting one or more data tables and fields. Each field will result in an individual series of data points on the
chart visualization with its own color.
Change aggregation
For numeric fields in charts, the default aggregation is to sum. You can change it to average, count, minimum,
maximum, first, or last.
Select the Data tab, and in Data proper ties , select Options next to the numeric field > select a different
aggregation.
Set or clear filters
If you add a navigator to filter your mobile report, you can decide which charts you want it to filter.
1. Select the Data tab, and in Data proper ties , select Options .
2. Under Filtered by , you see navigators you can select or clear.
Read more about adding navigators to filter a mobile report.

Time charts
The time chart is the most basic chart in Mobile Report Publisher. The time (and date) axis of the chart is
automatically set to the first valid date/time field in the data table.

1. Drag a Time char t from the Layout tab to the design surface and resize it.
2. By default, it's a stacked bar chart. You can change that in Series visualization .
3. If the chart needs data that's not already in the report, select the Data tab > Add data to get data from
Excel or a shared dataset.
4. In the Data proper ties pane, Main Series is SimulatedTable . Select the arrow in the box > select your
table.
5. If you set Data structure to By columns (on the Layout tab > Visual proper ties pane), here in the
Data proper ties pane you can select multiple columns of numeric values.
If you set Data structure to By rows , here in the Data proper ties pane you can select one Series
Name Field and one column of numeric values.
Read more about grouping data by columns or rows.

Category charts
Unlike in a time chart, in a category chart you group on a field other than a date/time field on the x-axis. This
grouping, called the category coordinate, has to be on a string, not a numeric, field.
1. Drag a Categor y char t from the Layout tab to the design surface, resize it, and get data for it, if
necessary.
2. Select the Data tab, and in the Data proper ties pane under Categor y Coordinate , select a table and
field to group on. This field will be on the x axis of the resulting chart.
3. Under Main Series , select the table and numeric fields to be aggregated for each category.

Totals charts

The totals chart accomplishes two separate things:


It doesn't present multiple series -- only the sum, or total, of the defined main series.
It gives the option to group data by columns or by rows. Grouping by columns can be useful when dealing
with flattened data. When grouping by columns, only the main series property is available because the
category column is automatically determined by the number of fields selected for the main series property.
Read more about grouping data by columns or rows.

Comparison charts
Time, category, and totals charts are also available as comparison charts. In a comparison chart, you can specify
not only a main series, but also a second comparison series. The main and comparison series can be displayed
in three different ways.
1. Drag one of the Comparison char ts (time, category, or totals) from the Layout tab to the design
surface, resize it, and get data for it, if necessary.
2. In the Visual proper ties pane, in Series visualization , select one of the following:
Bar vs. thin bar
Line vs. bar
Bar vs. step area
In comparison charts, you can choose to have the same chart colors on the main and comparison values in a
series.
In the Visual proper ties pane, set Reuse colors on comparison series to On .
If set to On , the color palette restarts between drawing the main and comparison series, so related values
in the main and comparison series are the same.
If set to Off , the color palette continues its normal rotation when drawing the main series after the
comparison series, preventing potentially misleading color coordination between the two sets of series.

Pie and funnel charts


Pie and funnel charts are among the simplest of visualizations. You can structure the data either by rows or by
columns.
Pie char ts in Reporting Services mobile reports can be pies, donuts, or donuts with a total in the center. Pie
charts are good for showing the relative size of different parts of a whole. Too many slices make them hard
to read.
Funnel char ts are often used to show stages in a process, such as sales.
Structure pie and funnel chart data by rows or by columns
1. Drag a Pie char t or Funnel char t from the Layout tab to the design surface, resize it, and get data for
it, if necessary.
2. In the Visual proper ties pane under Data structure , select either:
By columns
By rows
3. If you selected By columns , select the Data tab, and in the Data proper ties pane under Main Series ,
select the table and all the fields you want to aggregate in the pie or funnel chart. The field names will be
used to label each area of the resulting chart.
If you selected By rows , select the Data tab, and in the Data proper ties pane under Categor y
Column , select the table and column with the values to use for grouping and labels in the pie. Under
Main Series Column, select a numeric field for the values in the chart.
Read more about grouping data by columns or rows.

Treemaps
Treemaps display metrics by applying their values to the size and color of tiles in a rectangular grid.
1. Drag a Treemap from the Layout tab to the design surface, resize it, and get data for it, if necessary.
2. Select the Data tab, and in the Data proper ties pane:
Under Size Represents select a numeric field for the tiles' size.
Under Color Represents select a numeric field for the tiles' color.
[optional] Custom Center Value : You can only use Custom Center Value when the
visualization type is HeatMapWithCustomCenterValue.
The center value decides the color of a box. The better the metric compared to center value, the
greener it is. The worse the metric, the redder it is.
[optional] To display a popup when viewers select a tile in the grid, under Popup Labels select a
field or fields. Treemap popups can display both text and numeric fields.
By default, treemaps are hierarchical, grouping the tiles by category first, then by size and color.
Still on the Data tab, under Group by select a table and field.
You can turn off grouping, so the tiles are arranged only by size and color.
Select the Layout tab and set Two-level treemap to Off .

Waterfall charts
A waterfall chart shows a running total as values are added or subtracted. It's useful for understanding how an
initial value (for example, net income) is affected by a series of positive and negative changes.
The columns are color coded green for increases and red for decreases so you can quickly see which is which.
The initial and the final value columns often start at zero, while the intermediate values are floating columns.
Because of this "look", waterfall charts are also called bridge charts.
When to use a waterfall chart
Waterfall charts are a good choice:
When you have changes for the measure across time series or different categories to audit the major
changes contributing to the total value.
To plot your company's annual profit by showing various sources of revenue and arrive at the total profit (or
loss).
To illustrate the beginning and the ending headcount for your company in a year.
To visualize how much money you make and spend each month, and the running balance for your account.
Create a waterfall chart
1. Drag a Waterfall char t from the Layout tab to the design surface, resize it, and get data for it, if
necessary.

2. Select the Data tab, and in the Data proper ties pane, select a category field in your data for Categor y
Coordinate , and a numeric field for Main Series :

3. Select the Layout tab to see the waterfall chart in preview.

Months with a loss, like February, June, and July, are in red. Months with a gain, like September, October,
and November, are in green.
See also
Maps in Reporting Services mobile reports
Navigators in Reporting Services mobile reports
Data grids in Reporting Services mobile reports
Gauges in Reporting Services mobile reports
Group data by columns or rows in a mobile report |
Reporting Services
11/2/2020 • 2 minutes to read • Edit Online

You can organize data by columns or by rows in many types of charts in Mobile Report Publisher. Follow along
in this step-by-step.
In time, totals, pie, and funnel charts, you can organize the data by rows or by columns.
Organizing by columns is useful if a table has several columns of data you'd like to compare.
Organizing by rows works better if one column in the table contains the names of the different categories.
The following steps use a comparison totals table with the simulated data in Mobile Report Publisher to
illustrate the difference between structuring the data by rows or by columns in a chart.
1. Drag a Comparison totals char t from the Layout tab to the design surface and make it bigger.
2. Select the Data tab. You see the SimulatedTable table contains a series of columns, Metric1 through
Metric5 and Comparison1 through Comparison5 .

3. In the Data proper ties pane, Main Series is SimulatedTable . Select the arrow in the box next to Main
Series , and you see Metric1 through Metric5 selected.

Likewise for Comparison Series -- Comparison1 through Comparison5 are selected.


4. Select Preview .
Each bar in the chart represents one column in the table. The thicker bars are the Metrics columns and
the thinner bars are the Comparison columns.
5. Select the back arrow in the upper-left corner to leave preview mode.
6. On the Layout tab, in the Visual proper ties pane change Data structure from By columns to By
rows .
7. Select the Data tab. Now the SimulatedTable table has a Categor y column along with the Metric and
Comparison columns, with Category A through E.

8. In the Data proper ties pane, there's now a Category Column box, which lists the Category column from
SimulatedTable. In Main Series, you can pick which column to use for the values. By default, Mobile
Report Publisher selects Metric1 through Metric5 for the Main Series and Comparison1 through
Comparison5 for the Comparison Series.

9. Select Preview .
Now each bar in the chart represents the values for each category in the Category column.
See also
Visualizations in Reporting Services mobile reports
Add data grids to mobile reports | Reporting
Services
11/2/2020 • 2 minutes to read • Edit Online

Sometimes the best visualization is the data itself. Learn about the three data grids, or tables, for displaying data
in SQL Server Mobile Report Publisher:
Simple data grid
Indicator data grid
Chart data grid

Simple data grid


The most basic, the simple data grid, can display multiple columns of data with custom formatting and headers.

After you add a data grid to the design surface, you can connect it to real data.
1. Drag a simple data grid from the Layout tab to the design grid and make it the size you want.
2. Get data from Excel or a shared dataset.
3. Select the Data tab, and in the Data proper ties pane, under Data for the grid view select a data table.
4. In the Columns pane, select the columns you want. Reorder and rename them and set their format and
aggregation.

Indicator data grid


You can add columns with gauges to an indicator data grid.
1. Drag an indicator data grid from the Layout tab to the design grid and make it the size you want.
2. On the Data tab in the Columns pane, select Add gauge column .
3. Select Options , then select a Gauge type .
4. Set the Value and Comparison fields and Value direction , just as in gauges you add directly to your
mobile report.
The data grid automatically feeds the gauge only the data specific to that row of the data grid.

Chart data grid


You can add you can add columns with either gauges or charts to a chart data grid.

When you add a chart column to a data grid, you need to add a separate data table to provide data for the chart
in each row. This second data table needs to share a field with the main data table, to link each row to its
associated chart data.
1. Drag a chart data grid from the Layout tab to the design grid and make it the size you want.
2. On the Data tab in the Columns pane, select Add char t column .
3. Get data from Excel or a shared dataset to add a second data table that shares a field with the main data
table, if you haven't done so already.
4. Under Data proper ties , select the main data table in Data for the Grid View , then select the second
table in Reference Data for Char t Visualizations .
5. Select Options , then select Char t type .
6. Select Char t data field , Source lookup , and Destination lookup . These three properties determine
how the data grid provides data to each chart in the column.
Source lookup is set to a field in the data table in Data for the Grid View . This field acts as a per-
row filter applied to the chart reference data table to provide data to the embedded chart for each
row.
Destination lookup is the field in the data table in Reference data for char t visualizations . The
data for the chart in each row will be joined on those two fields.
Char t data field determines which metric in the Reference data for char t visualizations data
table to use as the y-axis value or series in the chart in each row.

See also
Maps in Reporting Services mobile reports
Navigators in Reporting Services mobile reports
Visualizations in Reporting Services mobile reports
Gauges in Reporting Services mobile reports
Add gauges to mobile reports | Reporting Services
11/2/2020 • 3 minutes to read • Edit Online

Gauges are the most basic and widely used visuals in mobile reports. They display a single value in a dataset -
just the value, or the value compared to a goal.

Gauge visualizations in the Layout tab


All gauges in SQL Server Mobile Report Publisher have at least one property in common: a main value, set to a
numeric field in one of the data tables in the mobile report.
All the gauges except the Number gauge can also display a comparison, or delta, value -- the relationship
between the main and a comparison value. The comparison value is the often the goal, and the gauge is a visual
indicator of progress to that goal, or the delta between the actual and the goal.
Gauges can only represent one aggregated value for their main value and one aggregated value for their
comparison value. Gauge aggregations are standard -- sum, average, minimum, maximum, and so on. By
default, the gauge value is a sum, which displays the total of all values contained within the current filtered data
available to the gauge control.
You can filter gauge values by connecting them to navigators on the mobile report.

Set the main and comparison values for a gauge


1. Drag a gauge from the Layout tab to the design grid and make it the size you want.
2. Get data from Excel or a shared dataset.
3. Select the Data tab, and in the Data proper ties pane, under Main Value select a data table and a
numeric field.
4. In any gauge except the Number gauge, in the Data proper ties pane, under Comparison Value select
a data table and a numeric field.
5. [optional] To change the aggregation, select Options and select a different aggregation.

Note : When you change the aggregation for the main value, you probably also want to change the
aggregation for the comparison value, though in some cases you may want to mix aggregation
methods.

Filter a gauge
If the mobile report has any navigators, you can bind a gauge to one or more of them to filter it. You can bind a
gauge's value and comparison value to one or more different navigators, leading to almost endless options for
gauges.
1. Select a gauge, and on the Data tab in the Data proper ties pane, select Options next to Main Value or
Comparison Value .
2. Under Filtered by, select the navigator you want to filter the gauge.

Set visual properties for a gauge


Along with the data properties which connect gauge elements to data fields, you can also customize a number
of functional and visual properties.
Set value direction: High or low is better
Select a gauge, and on the Layout tab in the Visual proper ties pane, set Value direction to either Higher
values are better or Lower values are better .
Higher values are better colors the positive values green, indicating a desirable change for the better, or
lower values red, indicating an undesirable change for the worse.
The colors for Lower values are better are the opposite.
The value direction property relates only to Gauge elements that support a comparison value. The color of the
gauge is determined by the sign of the delta integer and the value direction property setting.
Set range stops for a gauge
The second gauge-specific non-data property is range stops.
Select a gauge, and on the Layout tab in the Visual proper ties pane, select Range stops .
With range stops, you set at what percentage of the comparison value visualization should be presented as on-
target (green), neutral (amber), or off-target (red) -- a gauge's comparison value being the target. Again, only
gauges with comparison values support range stops.
Format the numbers in the gauge
Another non-data property of gauge element, and one shared by many other elements, is number format.
Select a gauge, and on the Layout tab in the Visual proper ties pane, select Range stops .
It determines how numbers displayed in the gauge are formatted -- for example, currency, percentage, time, or
general. You set number formatting on each element of the mobile report.
See also
Create mobile reports with SQL Server Mobile Report Publisher
Maps in Reporting Services mobile reports
Navigators in Reporting Services mobile reports
Visualizations in Reporting Services mobile reports
Data grids in Reporting Services mobile reports
Lay out a Reporting Services mobile report for
phone or tablet
3/17/2020 • 2 minutes to read • Edit Online

Now that you've created your Reporting Services mobile report in SQL Server Mobile Report Publisher, you can
lay out a phone and tablet version of it.

The master layout for the mobile report.


1. In the upper-right corner of Mobile Report Publisher, select the layout icon > either Phone or Tablet .

The phone layout grid opens. All the visualizations are on the Layout tab.
2. Drag the visualizations to the grid and resize them.

3. Select Preview to see how the report will look on a phone.


See also
Create and publish mobile reports with SQL Server Mobile Report Publisher
Maps in Reporting Services mobile reports
3/17/2020 • 3 minutes to read • Edit Online

Maps are a great way to visualize geographical data. SQL Server Mobile Report Publisher provides three
different types of map visualization, and built-in maps for continents and a number of individual countries. You
can also upload and use custom maps.

Types of maps
SQL Server mobile reports offer three different types of maps, useful for different circumstances.

Gradient Heat Maps The field in the Values property is displayed as shades of a single color filling each region
in a map. You can set whether the higher or the lower values are darker in the Value Direction box.
Bubble Map The Values property determines the radius of a bubble visualization displayed over the associated
region. You can set whether all the bubbles are the same or all different colors.
Range Stop Heat Maps shows a value in relation to a target. The Targets property determines the delta
between a Comparison field and the Values field. The resulting delta determines the color that fills the
associated region of the map, from green to yellow to red. You can set whether higher or the lower values are
green in the Value Direction box.

Select the map type and region


1. On the Layout tab, select a map type, drag it to the design surface, and make it the size you want.
2. In Layout view > Visual Proper ties panel > Map , select the specific map region you need.

3. For both radiant and range stop heat maps, set whether higher or lower values are better in the Value
Direction box under Visual Proper ties .
4. For bubble maps, under Visual Proper ties set Use Different Colors to On or Off to make the
bubbles all the same color or all different colors.

Select the map data


When you first add a map to your report, Mobile Report Publisher populates it with simulated geography data.

To display real data in your map, you need to set values for at least two of the map's data properties:
The Keys property connects the data to specific map regions -- states in the USA, for instance, or countries in
Africa.
The Values property is a numeric field in the same table as the selected keys field. These values are
represented differently in different maps. The gradient map uses these values to color each region with a
varying shades based on the range of values. The bubble map base the size of a bubble visualization over
each region on the value property.
For range stop heat maps, you also need to set the Targets property.
Set map data properties
1. Select the Data tab in the upper-left corner.
2. Select Add Data , then either Local Excel or SSRS Ser ver .

Tip : Make sure the data is in a format that works for mobile reports.

3. Select the worksheets you want and select Impor t .


You see your data in the Mobile Report Publisher.
4. In this Data view > Data Proper ties panel > under Keys , in the left box select the table containing the
map data, and in the right box select the key field that matches the regions in your map.
5. Under Values , the same table is already in the left box. Select the numeric field whose values you want to
display on the map.
6. If this is a range stop heat map, under the Targets box the same table is in the left box. In the box on the
right, select the numeric field whose values you want to be the target.
7. Select Preview in the upper-left corner.

8. Select the Save icon in the upper-left corner and Save Locally on your computer or Save to Ser ver .
See also
Custom maps in Reporting Services mobile reports
Create and publish mobile reports with SQL Server Mobile Report Publisher
Custom maps in Reporting Services mobile reports
4/18/2019 • 2 minutes to read • Edit Online

Geographic maps in SQL Server Mobile Report Publisher are defined in a format known as ESRI shapefiles.
Initially designed by a private company, this is now a widespread semi-open format used in a large portion of
GIS applications. In accordance with this format, Mobile Report Publisher requires two files to be provided when
defining a map:
A .SHP file for shape geometries
A .DBF file for metadata
The base files names must match (e.g. canada.shp and canada.dbf). The metadata must include the field NAME
with the value of the corresponding shape's name (key), to be used when populating the map with data.
The two map files together, the SHP and the DBF, can be no bigger than 512 KB. If your map files are too big, use
a tool like https://mapshaper.org/ to reduce their size.
See how to add custom maps to mobile reports.

Technical information
The official specification: https://www.esri.com/library/whitepapers/pdfs/shapefile.pdf
The Wikipedia shapefile article: https://en.wikipedia.org/wiki/Shapefile

Creating & editing map geometry


Creating and editing shapefiles is a complex process that is beyond the scope of this document. Here are some
resources and applications to help you get started:
ArcGIS: https://www.arcgis.com/
MAPublisher plug-in for Adobe Illustrator: https://www.avenza.com/mapublisher
QuantumGIS (free): https://www.qgis.org/

Existing shapefiles
Many existing shapefiles can be downloaded from the Web, from sites like Diva-GIS: https://www.diva-
gis.org/Data.

See also
Maps in Reporting Services mobile reports
Create and publish mobile reports with SQL Server Mobile Report Publisher
Add a custom map to a Reporting Services mobile
report
3/17/2020 • 2 minutes to read • Edit Online

Custom maps require two files:


An .SHP file for shape geometries
A .DBF file for metadata
Read more about custom maps in Reporting Services mobile reports.
Store the two files in the same folder. The file names of the two must match (e.g., canada.shp and canada.dbf).
The first column of the metadata (DBF file) is used to match with the key value of the corresponding shape's
name (key), to be used when populating the map with data.

Load a custom map


1. On the Layout tab, select a map type: Gradient Heat Map , Range Stop Heat Map , or Bubble Map ,
drag it to the design surface, and make it the size you want.

2. In Layout view > Visual Proper ties panel > Map , select Custom Map From File .

3. In the Open dialog box, browse to the location of the SHP and DBF files and select both of them.
Connect data to a custom map
When you first add the custom map to your report, Mobile Report Publisher populates it with simulated
geography data.

Displaying real data in your custom map is the same as displaying data in the built-in maps. Follow the steps in
Maps in Reporting Services mobile reports to display your data.
See also
Custom maps in Reporting Services mobile reports
Maps in Reporting Services mobile reports
Create and publish mobile reports with SQL Server Mobile Report Publisher
Security (Report Builder)
3/25/2020 • 6 minutes to read • Edit Online

Report Builder is a report authoring client application that is designed to work with a SQL Server Reporting
Services report server. The report server can be configured to work in native mode as a stand-alone server or in
SharePoint integrated mode to support reports on a SharePoint site.
In Report Builder, you can author reports, shared datasets, and reusable report parts. From a report server or
SharePoint site, you can edit reports and add shared data sources, shared datasets, and shared report parts.
To author, publish, and use reports and report-related items, you should understand how security features relate
to the following areas:
The repor t ser ver or SharePoint site where you publish repor ts These features are managed by
the report server administrator or SharePoint site administrator.
Published repor ts and repor t-related items Report-related items include embedded and shared
data sources and their credentials, shared datasets, parameters, report parts, and report models. Security
features that apply to these items are managed by the report author. The report author must be granted
sufficient permissions by the report server administrator or SharePoint site administrator to publish and
share the items.
External data sources that are used by a repor t These features are managed by the owner of the
external data source.
Repor t models that are based on external data sources These features are managed by the model
designer.
Interactive repor t features such as parameters These features are managed by the report author.
Review the information in this topic to better understand how to use security features to help manage and
secure reports and report-related items.

Understanding Security for Report Servers


Publishing reports and viewing reports are privileged operations. A report server administrator grants
permissions to ensure that only authorized users can publish and view reports on one of the following types of
report servers:
Report server configured in native mode
To connect to or browse to a report server, you must have a valid URL and have sufficient permissions to
access the server.
To view or publish items on a report server, sets of permissions that apply to report-related items and
operations are organized into roles. A report server administrator assigns you to one or more roles. For
example, the predefined role Browser enables you to view reports, folders, models, and resources.
If you cannot connect to or browse to a report server, contact the report server administrator. For more
information, see Reporting Services Security and Protection.
Report server configured in SharePoint integrated mode
To connect to a SharePoint site that is integrated with a report server, you must have a valid URL to the
SharePoint site or subsite and have sufficient permissions to access it.
Permission to access report-related items and operations is granted through SharePoint security policies
that map a user or group account with a permission level, relative to an item.
If you cannot connect to or browse to a SharePoint site or subsite, contact the SharePoint site
administrator.

Understanding Security for Published Reports and Report-related


Items
Security for reports and report-related items is managed by the report server administrator. Report-related
items include embedded and shared data sources including credentials, shared datasets, parameters, report
parts, and models.
On a report server or SharePoint site, reports and report-related items and operations are independently
securable. Permission to access items and operations is granted through security policies that map a user or
group account with a permission level, relative to an item. To reduce the complexity and overhead of
maintaining a large number of policies, permissions on a container, such as a folder, are inherited by items in the
container. For example, if a user has the specific View Reports permission on a folder, they have View Reports
permission on the items in the folder.
Permissions can be overridden on items or folders by using item level security. When item-level security is
applied, permission inheritance from the parent container no longer applies to the item. If item-level security is
applied to a folder, nested folders inherit the same permissions.
If you are not able to browse to and find items that someone else has published for you, you might have a
permissions issue on the item or on the folder.
To enable others to browse to and find items that you published to be shared, you must work with the report
server administrator to set up a folder organization that provides access to your users. Access must be available
for authoring reports and for running published reports.
For more information, see the following topics:
Roles and Permissions (Reporting Services)
Manage Shared Datasets
Update Notifications for Report Parts
Report parts are published to a report server so that others can share them. By design, you specify the location
to publish report parts to.
Users who include report parts in their reports can enable the update feature. When this feature is enabled,
users receive notifications when report parts change on the report server.
If report parts are moved from the original location, the update notice includes both the current location and the
previous location of the report part. Accept updates only from trusted locations.
For more information, see Report Parts (Report Builder and SSRS).

Understanding Security for Report Data and External Data Sources


To access data from each external data source in a report, you create an embedded data source or add a
reference to a shared data source or shared dataset in your report.
For each external data source, you must supply credentials that are sufficient to access the source and the
underlying data. The data source owner specifies the type of credentials that provides this access.
Credentials are not saved in the report definition. They are managed independently from the report on the
report server or SharePoint site and on the report authoring client.
At report design time, credentials are used to run dataset queries and preview the report. At run time,
credentials are used to run the report and cache query results. You can also cache shared dataset query results
independently. Design time and run time credentials might differ. For more information, see Specify Credentials
in Report Builder.
For more information about securing data, see Security Center for SQL Server Database Engine and Azure SQL
Database.
For more information about data sources, see Create data connection strings - Report Builder & SSRS.

Understanding Models and Security Filters


When data is retrieved from a report model that is based on external data, you can apply security filters in the
model This is a good way to secure data so that each user who runs a report can see only the data that they
have permissions to.
Report parameters are not used for row-level security; they do not prevent users or groups of users from seeing
specific rows of data. To apply security to the data displayed within a report, you must use security filters or
model item security.

Understanding Security for Report Authoring for Interactive Features


Reports frequently use parameters to enable a user to interactively customize their view of a report. Use the
following tips to help design reports that follow good practices:
Do not use parameters that are based on query parameters and that are type Text unless you provide
valid values. An available values list helps a user choose only valid values. Without an available values list,
you cannot restrict which values a user can enter.
Do not use the global [&UserID] to secure private data. As a report parameter, this value can be specified
in a report URL by using URL access syntax. Using this value in an expression in a shared dataset
prevents the dataset from being cached. For more information, see URL Access Parameter Reference.
After items are published to a report server, the report server administrator can help secure them by assigning
role-based security or folder and item level security. For more information, see Secure Reports and Resources.

See Also
Install Report Builder
Report Parameters (Report Builder and Report Designer)
Reporting Services Security and Protection
11/2/2020 • 2 minutes to read • Edit Online

You can use information in this section to learn about the security features of SQL ServerReporting Services.
This section also explains the authorization models and authentication providers supported in Reporting
Services.

Extended Protection for Authentication


Beginning with SQL Server 2008 R2, support for Extended Protection for Authentication is available. The SQL
Server feature supports the use of channel binding and service binding to enhance protection of authentication.
The SQL Server features need to be used with an operating system that supports Extended Protection. For more
information, see Extended Protection for Authentication with Reporting Services.

Authentication and Authorization


Reporting Services provides different authentication types for users and client applications to authenticate with
the report server. Using the right authentication type for your report server enables your organization to
achieve the appropriate level of security required by your organization. For more information, see
Authentication with the Report Server.
Reporting Services also employs roles and permissions to control user access to content in the report server
catalog (in other words, who can access what, and how s/he can access it). For more information, see Roles and
Permissions (Reporting Services).

Related Tasks
TA SK DESC RIP T IO N S L IN K S

Configure the Transport Layer Security (TLS), previously Configure TLS Connections on a Native Mode Report Server
known as Secure Sockets Layer (SSL), to secure client
connections to the report server.
Extended Protection for Authentication with
Reporting Services
3/5/2021 • 13 minutes to read • Edit Online

Extended Protection is a set of enhancements to recent versions of the Microsoft Windows operating system.
Extended protection enhances how credentials and authentication can be protected by applications. The feature
itself does not directly provide protection against specific attacks such as credential forwarding, but it provides
an infrastructure for applications such as Reporting Services to enforce Extended Protection for Authentication.
The main authentication enhancements that are part of extended protection are service binding and channel
binding. Channel binding uses a channel binding token (CBT), to verify that the channel established between two
end points was not compromised. Service binding uses Service Principal Names (SPN) to validate the intended
destination of authentication tokens. For more background information about extended protection, see
Integrated Windows Authentication with Extended Protection.
SQL Server Reporting Services (SSRS) supports and enforces Extended Protection that has been enabled in the
operating system and configured in Reporting Services. By default, Reporting Services accepts requests that
specify Negotiate or NTLM authentication and could therefore benefit from Extended Protection support in the
operating system and the Reporting Services extended protection features.

IMPORTANT
By default, Windows does not enable Extended Protection. For information about how to enable Extended Protection in
Windows, see Extended Protection for Authentication. Both the operating system and client authentication stack must
support Extended Protection so that authentication succeeds. For older operating systems you may need to install more
than one update for a complete, Extended Protection ready computer. For information on recent developments with
Extended Protection, see updated information with Extended Protection.

Reporting Services Extended Protection Overview


SSRS supports and enforces extended protection that has been enabled in the operating system. If the operating
system does not support extended protection or the feature in the operating system has not been enabled, the
Reporting Services extended protection feature will fail authentication. Reporting Services Extended Protection
also requires a TLS/SSL Certificate. For more information, see Configure TLS Connections on a Native Mode
Report Server

IMPORTANT
By default, Reporting Services does not enable Extended Protection. The feature can be enabled by modifying the
rsrepor tser ver.config configuration file or using WMI APIs to update the configuration file. SSRS does not provide a
user interface to modify or view extended protection settings. For more information, see the configuration settings section
in this topic.

Common issues that occur because of changes in extended protection settings or incorrectly configured settings
are not be exposed with obvious error messages or dialog windows. Issues related to extended protection
configuration and compatibility result in authentication failures and errors in the Reporting Services trace logs.
IMPORTANT
Some data access technologies may not support extended protection. A data access technology is used to connect to SQL
Server data sources and to the Reporting Services catalog database. Failure of a data access technology to support
extended protection impacts Reporting Services in the following ways:
The SQL Server that runs the Reporting Services catalog database cannot have extended protection enabled or the
report server will not successfully connect to the catalog database and return authentication errors.
SQL Servers that are used as Reporting Services report data sources cannot have extended protection enabled or tries
by the report server to connect to the report data source will fail and return authentication errors.
The documentation for a data access technology should have information about support for extended protection.

Upgrade
Upgrading a Reporting Services server to SQL Server 2016 adds configuration settings with default
values to the rsrepor tser ver.config file. If the settings were already present, the SQL Server 2016
installation will preserve them in the rsrepor tser ver.config file.
When the configuration settings are added to the rsrepor tser ver.config configuration file, the default
behavior is for the Reporting Services extended protection feature to be off and you must enable the
feature as described in this topic. For more information, see the configuration settings section in this
topic.
The default value for the setting RSWindowsExtendedProtectionLevel is Off .
The default value for the setting RSWindowsExtendedProtectionScenario is Proxy .
Upgrade Advisor does not verify that the operating system or the current installation of Reporting
Services has Extended Protection support enabled.
What Reporting Services extended protection does not cover
The following feature areas and scenarios are not supported by the Reporting Services extended protection
feature:
Authors of Reporting Services custom security extensions must add support for extended protection to
their custom security extension.
Third-party components added to or used by a Reporting Services installation must be updated by the
third-party vendor, to support extended protection. For more information, contact the third-party vendor.

Deployment Scenarios and recommendations


The following scenarios illustrate different deployments and topologies and the recommended configuration to
secure them with Reporting Services Extended Protection.
Direct
This scenario describes directly connecting to a report server, for example, an intranet environment.

SC EN A RIO SC EN A RIO DIA GRA M H O W TO SEC URE


SC EN A RIO SC EN A RIO DIA GRA M H O W TO SEC URE

Direct TLS communication. Set


RSWindowsExtendedProtectionLe
The report server will enforce client to vel to Allow or Require .
report server Channel Binding.
Set
1) Client application RSWindowsExtendedProtectionSc
enario to Direct .
2) Report server

-Service Binding is not necessary


because the TLS channel will be used
for Channel Binding.

Direct HTTP communication. The Set


report server will enforce Client to RSWindowsExtendedProtectionLe
report server Service Binding. vel to Allow or Require .

Set
1) Client application RSWindowsExtendedProtectionSc
enario to Any .
2) Report server

-There is no TLS Channel therefore no


enforcement of Channel Binding is
possible.

-Service Binding can be validated,


however, it is not a complete defense
without Channel binding and Service
Binding on its own will only protect
from basic threats.

Proxy and Network Load Balancing


Client applications connect to a device or software that performs TLS and passes through the credentials to the
server for authentication, for example, an extranet, Internet, or Secure Intranet. The client connects to a Proxy or
all clients use a proxy.
The situation is the same when you are using a Network Load Balancing (NLB) device.

SC EN A RIO SC EN A RIO DIA GRA M H O W TO SEC URE


SC EN A RIO SC EN A RIO DIA GRA M H O W TO SEC URE

HTTP communication. The report Set


server will enforce client to report RSWindowsExtendedProtectionLe
server Service Binding. vel to Allow or Require .

1) Client application Set


RSWindowsExtendedProtectionSc
2) Report server enario to Any .

3) Proxy
-There is no TLS Channel therefore no
enforcement of Channel Binding is
possible.

-The report server must be configured


to know the name of the proxy server
to make sure that the service binding
is correctly enforced.

HTTP communication. Set


RSWindowsExtendedProtectionLe
The report server will enforce client to vel to Allow or Require .
Proxy Channel Binding and client to
report server Service Binding. 1) Client application Set
RSWindowsExtendedProtectionSc
2) Report server enario to Proxy .

3) Proxy
-TLS channel to proxy is available
therefore channel binding to the proxy
can be enforced.

-Service Binding can also be enforced.

-The Proxy name must be known to


the report server and the report
server administrator should either
create a URL reservation for it, with a
host header or configure the Proxy
name in the Windows registry entry
BackConnectionHostNames .
SC EN A RIO SC EN A RIO DIA GRA M H O W TO SEC URE

Indirect HTTPS communication with a Set


secure proxy. Report server will enforce RSWindowsExtendedProtectionLe
client to proxy Channel Binding and vel to Allow or Require .
Client to report server Service Binding.
1) Client application Set
RSWindowsExtendedProtectionSc
2) Report server enario to Proxy .

3) Proxy
-TLS channel to proxy is available
therefore channel binding to the proxy
can be enforced.

-Service Binding can also be enforced.

-The Proxy name must be known to


the report server and the report
server administrator should either
create a URL reservation for it, with a
host header or configure the Proxy
name in the Windows registry entry
BackConnectionHostNames .

Gateway
This scenario describes Client applications connecting to a device or software that performs TLS and
authenticates the user. Then the device or software impersonates the user context or a different user context
before it makes a request to the report server.

SC EN A RIO SC EN A RIO DIA GRA M H O W TO SEC URE

Indirect HTTP communication. Set


RSWindowsExtendedProtectionLe
Gateway will enforce Client to Gateway vel to Allow or Require .
channel binding. There is a Gateway to
report server Service Binding. 1) Client application Set
RSWindowsExtendedProtectionSc
2) Report server enario to Any .

3) Gateway device
-Channel Binding from client to report
server is not possible because the
gateway impersonates a context and
therefore creates a new NTLM token.

-There is no TLS from the Gateway to


report server therefore channel
binding cannot be enforced.

-Service Binding can be enforced.

-The Gateway device should be


configured by your administrator to
enforce channel binding.
SC EN A RIO SC EN A RIO DIA GRA M H O W TO SEC URE

Indirect HTTPS communication with a Set


Secure Gateway. The Gateway will RSWindowsExtendedProtectionLe
enforce Client to Gateway Channel vel to Allow or Require .
Binding and the report server will
enforce Gateway to report server 1) Client application Set
Channel Binding. RSWindowsExtendedProtectionSc
2) Report server enario to Direct .

3) Gateway device
-Channel Binding from client to report
server is not possible because the
gateway impersonates a context and
therefore creates a new NTLM token.

-TLS from Gateway to the report


server means channel binding can be
enforced.

-Service Binding is not required.

-The Gateway device should be


configured by your administrator to
enforce channel binding.

Combination
This scenario describes Extranet or Internet environments where the client connects a Proxy. This is in
combination with an intranet environment where a client connects to report server.

SC EN A RIO SC EN A RIO DIA GRA M H O W TO SEC URE

Indirect and direct access from client 1) Client application Set


to report server service without TLS RSWindowsExtendedProtectionLe
on either of the client to proxy or 2) Report server vel to Allow or Require .
client to report server connections.
3) Proxy Set
RSWindowsExtendedProtectionSc
4) Client application enario to Any .

-Service Binding from client to report


server can be enforced.

-The Proxy name must be known to


the report server and the report
server administrator should either
create a URL reservation for it, with a
host header or configure the Proxy
name in the Windows registry entry
BackConnectionHostNames .
SC EN A RIO SC EN A RIO DIA GRA M H O W TO SEC URE

Indirect and direct access from client Set


to report server where the client RSWindowsExtendedProtectionLe
establishes a TLS connection to the vel to Allow or Require .
proxy or report server.
Set
RSWindowsExtendedProtectionSc
enario to Proxy .

1) Client application

2) Report server -Channel Binding can be used

3) Proxy -The Proxy name must be known to


the report server and the report
4) Client application server administrator should either
create a URL reservation for the proxy,
with a host header or configure the
Proxy name in the Windows registry
entry BackConnectionHostNames .

Configuring Reporting Services extended protection


The rsrepor tser ver.config file contains the configuration values that control the behavior of Reporting
Services extended protection.
For more information on using and editing the rsrepor tser ver.config file, see RsReportServer.config
Configuration File. The extended protection settings can also be changed and inspected using WMI APIs. For
more information, see SetExtendedProtectionSettings Method (WMI MSReportServer_ConfigurationSetting).
When validation of the configuration settings fail, the authentication types RSWindowsNTLM ,
RSWindowsKerberos and RSWindowsNegotiate are disabled on the report server.
Configuration Settings for reporting services extended protection
The following table provides information about configuration settings that appear in the
rsrepor tser ver.config for extended protection.

SET T IN G DESC RIP T IO N


SET T IN G DESC RIP T IO N

RSWindowsExtendedProtectionLevel Specifies the degree of enforcement of extended protection.


Valid values are:

Off : Default. Specifies no channel binding or service binding


verification.

Allow supports extended protection but does not require it.


Specifies:

-Extended protection will be enforced for client applications


that are running on operating systems that support
extended protection. How protection is enforced is
determined by setting
RsWindowsExtendedProtectionScenario

-Authentication will be allowed for applications that are


running on operating systems which do not support
extended protection.

Require specifies:

-Extended protection will be enforced for client applications


that are running on operating systems that support
extended protection.

-Authentication will not be allowed for applications that are


running on operating systems which do not support
extended protection.

RsWindowsExtendedProtectionScenario Specifies what forms of extended protection are validated:


Channel binding, Service Binding, or both. Valid values are:

Proxy : Default. Specifies:

-Windows NTLM, Kerberos, and Negotiate authentication


when a channel binding token is present.

-Service Binding is enforced.

Any Specifies:

-Windows NTLM, Kerberos, and Negotiate authentication


and a channel binding are not required.

-Service binding is enforced.

Direct Specifies:

-Windows NTLM, Kerberos, and Negotiate authentication


when a CBT is present, a TLS connection to the current
service is present, and the CBT for the TLS connection
matches the CBT of the NTLM, Kerberos or negotiate token.

-Service Binding is not enforced.

Note: The RsWindowsExtendedProtectionScenario


setting is ignored if
RsWindowsExtendedProtectionLevel is set to OFF .
Example entries in the rsrepor tser ver.config configuration file:

<Authentication>
<RSWindowsExtendedProtectionLevel>Allow</RSWindowsExtendedProtectionLevel>
<RSWindowsExtendedProtectionScenario>Proxy</RSWindowsExtendedProtectionLevel>
</Authentication>

Service Binding and included SPNs


Service binding uses Service Principal Names or SPN to validate the intended destination of authentication
tokens. Reporting Services uses the existing URL reservation information to build a list of SPNs that are
considered valid. Using the URL reservation information for validation of both SPN and URL reservations
enables system administrators to manage both from a single location.
The list of valid SPNs is updated when the report server starts, the configuration settings for extended
protection are changed, or when the application domain is recycled.
The valid list of SPNs is specific for each application. For example, Report Manager and Report Server will each
have a different list of valid SPNs calculated.
The list of valid SPNs calculated for an application is determined by the following factors:
Each URL reservation.
Each SPN retrieved from the domain controller for the reporting services service account.
If a URL reservation includes wildcard characters ('*' or '+'), then Report Server will add each entry from
the hosts collection.
Hosts collection sources.
The following table lists the potential sources for the Hosts collection.

T Y P E O F SO URC E DESC RIP T IO N

ComputerNameDnsDomain The name of the DNS domain assigned to the local


computer. If the local computer is a node in a cluster, the
DNS domain name of the cluster virtual server is used.

ComputerNameDnsFullyQualified The fully qualified DNS name that uniquely identifies the
local computer. This name is a combination of the DNS host
name and the DNS domain name, using the form
HostName.DomainName. If the local computer is a node in a
cluster, the fully qualified DNS name of the cluster virtual
server is used.

ComputerNameDnsHostname The DNS host name of the local computer. If the local
computer is a node in a cluster, the DNS host name of the
cluster virtual server is used.

ComputerNameNetBIOS The NetBIOS name of the local computer. If the local


computer is a node in a cluster, the NetBIOS name of the
cluster virtual server is used.

ComputerNamePhysicalDnsDomain The name of the DNS domain assigned to the local


computer. If the local computer is a node in a cluster, the
DNS domain name of the local computer is used, not the
name of the cluster virtual server.
T Y P E O F SO URC E DESC RIP T IO N

ComputerNamePhysicalDnsFullyQualified The fully qualified DNS name that uniquely identifies the
computer. If the local computer is a node in a cluster, the
fully qualified DNS name of the local computer, is used not
the name of the cluster virtual server.

The fully qualified DNS name is a combination of the DNS


host name and the DNS domain name, using the form
HostName.DomainName.

ComputerNamePhysicalDnsHostname The DNS host name of the local computer. If the local
computer is a node in a cluster, the DNS host name of the
local computer is used, not the name of the cluster virtual
server.

ComputerNamePhysicalNetBIOS The NetBIOS name of the local computer. If the local


computer is a node in a cluster, the NetBIOS name of the
local computer, not the name of the cluster virtual server.

For more information, see Register a Service Principal Name (SPN) for a Report Server and About URL
Reservations and Registration (Report Server Configuration Manager).

Next steps
Connect to the Database Engine Using Extended Protection
Extended Protection for Authentication Overview
Integrated Windows Authentication with Extended Protection
Microsoft Security Advisory: Extended protection for authentication
Report Server Service Trace Log
RsReportServer.config Configuration File
SetExtendedProtectionSettings Method (WMI MSReportServer_ConfigurationSetting)
More questions? Try asking the Reporting Services forum
Authentication with the Report Server
3/5/2021 • 6 minutes to read • Edit Online

SQL Server Reporting Services (SSRS) offers several configurable options for authenticating users and client
applications against the report server. By default, the report server uses Windows Integrated authentication and
assumes trusted relationships where client and network resources are in the same domain or in a trusted
domain. Depending on your network topology and the needs of your organization, you can customize the
authentication protocol that is used for Windows Integrated authentication, use Basic authentication, or use a
custom forms-based authentication extension that you provide. Each of the authentication types can be turned
on or off individually. You can enable more than one authentication type if you want the report server to accept
requests of multiple types.
All users or applications who request access to report server content or operations must be authenticated
before access is allowed.

Authentication Types
All users or applications who request access to report server content or operations must be authenticated using
the authentication type configured on the report server before access is allowed. The following table describes
the authentication types supported by Reporting Services.

A UT H EN T IC AT IO N T Y P E H T T P A UT H EN T IC AT IO N
NAME L AY ER VA L UE USED B Y DEFA ULT DESC RIP T IO N

RSWindowsNegotiate Negotiate Yes Attempts to use Kerberos


for Windows Integrated
authentication first, but falls
back to NTLM if Active
Directory cannot grant a
ticket for the client request
to the report server.
Negotiate will only fall back
to NTLM if the ticket is not
available. If the first attempt
results in an error rather
than a missing ticket, the
report server does not
make a second attempt.

RSWindowsNTLM NTLM Yes Uses NTLM for Windows


Integrated authentication.

The credentials will not be


delegated or impersonated
on other requests.
Subsequent requests will
follow a new challenge-
response sequence.
Depending on network
security settings, a user
might be prompted for
credentials or the
authentication request will
be handled transparently.
A UT H EN T IC AT IO N T Y P E H T T P A UT H EN T IC AT IO N
NAME L AY ER VA L UE USED B Y DEFA ULT DESC RIP T IO N

RSWindowsKerberos Kerberos No Uses Kerberos for Windows


Integrated authentication.
You must configure
Kerberos by setting up
setup service principle
names (SPNs) for your
service accounts, which
requires domain
administrator privileges. If
you set up identity
delegation with Kerberos,
the token of the user who is
requesting a report can also
be used on an additional
connection to the external
data sources that provide
data to reports.

Before you specify


RSWindowsKerberos, be
sure that the browser type
you are using actually
supports it. If you are using
Microsoft Edge, or Internet
Explorer, Kerberos
authentication is only
supported through
Negotiate. Microsoft Edge,
or Internet Explorer, will not
formulate an authentication
request that specifies
Kerberos directly.

RSWindowsBasic Basic No Basic authentication is


defined in the HTTP
protocol and can only be
used to authenticate HTTP
requests to the report
server.

Credentials are passed in


the HTTP request in base64
encoding. If you use Basic
authentication, use
Transport Layer Security
(TLS), previously known as
Secure Sockets Layer (SSL)
to encrypt user account
information before it is sent
across the network. SSL
provides an encrypted
channel for sending a
connection request from
the client to the report
server over an HTTP TCP/IP
connection. For more
information, see Using SSL
to Encrypt Confidential
Data on the Microsoft
TechNet Web site.
A UT H EN T IC AT IO N T Y P E H T T P A UT H EN T IC AT IO N
NAME L AY ER VA L UE USED B Y DEFA ULT DESC RIP T IO N

Custom (Anonymous) No Anonymous authentication


directs the report server to
ignore authentication
header in an HTTP request.
The report server accepts
all requests, but call on a
custom ASP.NET Forms
authentication that you
provide to authenticate the
user.

Specify Custom only if you


are deploying a custom
authentication module that
handles all authentication
requests on the report
server. You cannot use the
Custom authentication type
with the default Windows
Authentication extension.

Unsupported Authentication Methods


The following authentication methods and requests are not supported.

A UT H EN T IC AT IO N M ET H O D EXP L A N AT IO N

Anonymous The report server will not accept unauthenticated requests


from an anonymous user, except for those deployments that
include a custom authentication extension.

Report Builder will accept unauthenticated requests if you


enable Report Builder access on a report server that is
configured for Basic authentication.

For all other cases, anonymous requests are rejected with an


HTTP Status 401 Access Denied error before the request
reaches ASP.NET. Clients receiving 401 Access Denied must
reformulate the request with a valid authentication type.

Single sign-on technologies (SSO) There is no native support for single sign-on technologies in
Reporting Services. If you want to use a single sign-on
technology, you must create a custom authentication
extension.

The report server hosting environment does not support


ISAPI filters. If the SSO technology you are using is
implemented as an ISAPI filter, consider using the ISA Server
built-in support for RSASecueID or the RADIUS protocol.
Otherwise, you can create an ISA Server ISAPI or an
HTTPModule for RS, but it is recommended you use ISA
Server directly.

Passport Not supported in SQL Server Reporting Services.

Digest Not supported in SQL Server Reporting Services.


Configuration of Authentication Settings
Authentication settings are configured for default security when the report server URL is reserved. If you modify
these settings incorrectly, the report server will return HTTP 401 Access Denied errors for HTTP requests that
cannot be authenticated. Choosing an authentication type requires that you already know how Windows
Authentication is supported in your network. At least one authentication type must be specified. Multiple
authentication types can be specified for RSWindows. RSWindows authentication types (that is,
RSWindowsBasic , RSWindowsNTLM , RSWindowsKerberos , and RSWindowsNegotiate ) are mutually
exclusive with Custom.

IMPORTANT
Reporting Services does not validate the settings you specify to determine whether they are correct for your computing
environment. It is possible that default security will not work for your installation, or that you will specify configuration
settings that are not valid for your security infrastructure. For this reason, it is important that you carefully test your
report server deployment in controlled test environment before making it available to your larger organization.

The Report Server Web service and the web portal always use the same authentication type. You cannot
configure different authentication types for the feature areas of the Report Server service. If you have a scale-
out deployment, be sure to duplicate all of your changes on all nodes in the deployment. You cannot configure
different nodes in the same scale-out to use different authentication types.
Background processing does not accept requests from end-users, however it does authenticate all requests for
unattended execution purposes. It always uses Windows Authentication and it authenticates requests using the
Report Server service or the unattended execution account if it is configured.

In This Section
Configure Windows Authentication on the Report Server
Configure Basic Authentication on the Report Server
Configure Custom or Forms Authentication on the Report Server

Related Tasks
TA SK DESC RIP T IO N S L IN K S

Configure the Windows Integrated authentication type. Configure Windows Authentication on the Report Server

Configure the Basic authentication type. Configure Basic Authentication on the Report Server

Configure forms authentication or otherwise a Custom Configure Custom or Forms Authentication on the Report
authentication type. Server

Enable the web portal to handle the custom authentication Configure the Web Portal to Pass Custom Authentication
scenario. Cookies

Next steps
Granting Permissions on a Native Mode Report Server
RsReportServer.config Configuration File
Create and Manage Role Assignments
Specify Credential and Connection Information for Report Data Sources
Implementing a Security Extension
Configure TLS Connections on a Native Mode Report Server
Security Extensions Overview
Authentication in Reporting Services
Authorization in Reporting Services
More questions? Try asking the Reporting Services forum
Configure Windows Authentication on the Report
Server
6/11/2021 • 9 minutes to read • Edit Online

By default, Reporting Services accepts requests that specify Negotiate or NTLM authentication. If your
deployment includes client applications and browsers that use these security providers, you can use the default
values without additional configuration. If you want to use a different security provider for Windows integrated
security (for example, if you want to use Kerberos directly), or if you modified the default values and want to
restore the original settings, you can use the information in this topic to specify authentication settings on the
report server.
To use Windows integrated security, each user who requires access to a report server must have a valid
Windows local or domain user account or be a member of a Windows local or domain group account. You can
include accounts from other domains as long as those domains are trusted. The accounts must have access to
the report server computer, and must be subsequently assigned to roles in order to gain access to specific
report server operations.
The following additional requirements must also be met:
The RSReportServer.config files must have AuthenticationType set to RSWindowsNegotiate ,
RSWindowsKerberos , or RSWindowsNTLM . By default, the RSReportServer.config file includes the
RSWindowsNegotiate setting if the Report Server service account is either NetworkService or
LocalSystem; otherwise, the RSWindowsNTLM setting is used. You can add RSWindowsKerberos if
you have applications that only use Kerberos authentication.

IMPORTANT
Using RSWindowsNegotiate will result in a Kerberos authentication error if you configured the Report Server
service to run under a domain user account and you did not register a Service Principal Name (SPN) for the
account. For more information, see Resolving Kerberos Authentication Errors When Connecting to a report server
in this topic.

ASP.NET must be configured for Windows Authentication. By default, the Web.config files for the Report
Server Web service include the <authentication mode="Windows"> setting. If you change it to
<authentication mode="Forms">, the Windows Authentication for Reporting Services will fail.
The Web.config files for the Report Server Web service must have <identity impersonate= "true" />.
The client application or browser must support Windows integrated security.
The web portal does not need additional configuration.
To change the report server authentication settings, edit the XML elements and values in the
RSReportServer.config file. You can copy and paste the examples in this topic to implement specific
combinations.
The default settings work best if all client and server computers are in the same domain or in a trusted domain
and the report server is deployed for intranet access behind a corporate firewall. Trusted and single domains are
a requirement for passing Windows credentials. Credentials can be passed more than one time if you enable the
Kerberos version 5 protocol for your servers. Otherwise, credentials can be passed only one time before they
expire. For more information about configuring credentials for multiple computer connections, see Specify
Credential and Connection Information for Report Data Sources.
The following instructions are intended for a native mode report server. If the report server is deployed in
SharePoint integrated mode, you must use the default authentication settings that specify Windows integrated
security. The report server uses internal features in the default Windows Authentication extension to support
report servers in SharePoint integrated mode.

Extended Protection for Authentication


Beginning with SQL Server 2008 R2, support for Extended Protection for Authentication is available. The SQL
Server feature supports the use of channel binding and service binding to enhance protection of authentication.
The Reporting Services features need to be used with an operating system that supports Extended Protection.
Reporting Services configuration for extended protection is determined by settings in the RSReportServer.config
file. The file can be updated by either editing the file or using WMI APIs. For more information, see Extended
Protection for Authentication with Reporting Services.
To configure a report server to use Windows integrated security
1. Open RSReportServer.config in a text editor.
2. Find <Authentication >.
3. Copy one of the following XML structures that best fits your needs. You can specify
RSWindowsNegotiate , RSWindowsNTLM , and RSWindowsKerberos in any order. You should
enable authentication persistence if you want to authenticate the connection rather than each individual
request. Under authentication persistence, all requests that require authentication will be allowed for the
duration of the connection.
The first XML structure is the default configuration when the Report Server service account is either
NetworkService or LocalSystem:

<Authentication>
<AuthenticationTypes>
<RSWindowsNegotiate />
</AuthenticationTypes>
<EnableAuthPersistence>true</EnableAuthPersistence>
</Authentication>

The second XML structure is the default configuration when the Report Server service account is not
NetworkService or LocalSystem:

<Authentication>
<AuthenticationTypes>
<RSWindowsNTLM />
</AuthenticationTypes>
<EnableAuthPersistence>true</EnableAuthPersistence>
</Authentication>

The third XML structure specifies all of the security packages that are used in Windows integrated
security:

<AuthenticationTypes>
<RSWindowsNegotiate />
<RSWindowsKerberos />
<RSWindowsNTLM />
</AuthenticationTypes>
The fourth XML structure specifies NTLM only for deployments that do not support Kerberos or to work
around Kerberos authentication errors:

<AuthenticationTypes>
<RSWindowsNTLM />
</AuthenticationTypes>

4. Paste it over the existing entries for <Authentication >.


Note that you cannot use Custom with the RSWindows types.
5. Modify as appropriate the settings for extended protection. Extended protection is disabled by default. If
these entries are not present, the current computer may not be running a version of Reporting Services
which supports extended protection. For more information, see Extended Protection for Authentication
with Reporting Services

<RSWindowsExtendedProtectionLevel>Allow</RSWindowsExtendedProtectionLevel>
<RSWindowsExtendedProtectionScenario>Proxy</RSWindowsExtendedProtectionScenario>

6. Save the file.


7. If you configured a scale-out deployment, repeat these steps for other report servers in the deployment.
8. Restart the report server to clear any sessions that are currently open.

Resolving Kerberos Authentication Errors When Connecting to a


Report Server
On a report server that is configured for Negotiate or Kerberos authentication, a client connection to the report
server will fail if there is a Kerberos authentication error. Kerberos authentication errors are known to occur
when:
The Report Server service runs as a Windows domain user account and you did not register a Service
Principal Name (SPN) for the account.
The report server is configured with the RSWindowsNegotiate setting.
The browser chooses Kerberos over NTLM in the authentication header in the request it sends to the
report server.
You can detect the error if you enabled Kerberos logging. Another symptom of the error is that you are
prompted for credentials multiple times and then see an empty browser window.
You can confirm that you are encountering a Kerberos authentication error by removing <
RSWindowsNegotiate /> from your configuration file and reattempting the connection.
After you confirm the problem, you can address it in the following ways:
Register an SPN for the Report Server service under the domain user account. For more information, see
Register a Service Principal Name (SPN) for a Report Server.
Change the service account to run under a built-in account such as Network Service. Built-in accounts
map HTTP SPN to the Host SPN, which is defined when you join a computer to your network. For more
information, see Configure a Service Account (Report Server Configuration Manager).
Use NTLM. NTLM will generally work in cases where Kerberos authentication fails. To use NTLM, remove
RSWindowsNegotiate from the RSReportServer.config file and verify that only RSWindowsNTLM is
specified. If you choose this approach, you can continue to use a domain user account for the Report
Server service even if you do not define an SPN for it.
Logging information
There are several sources of logging information that can help resolve Kerberos related issues.
U se r- A c c o u n t - C o n t r o l A t t r i b u t e

Determine if the Reporting Services service account has the sufficient attribute set in Active Directory. Review
the reporting services service trace log file to find the value logged for the UserAccountControl attribute. The
value logged is in decimal form. You need to convert the decimal value to hexadecimal form and then find that
value in the MSDN topic describing User-Account-Control Attribute.
The reporting services service trace log entry will look similar to the following:

appdomainmanager!DefaultDomain!8f8!01/14/2010-14:42:28:: i INFO: The UserAccountControl value for the


service account is 590336

One option for converting the value Decimal value to hexadecimal form is to us the Microsoft Windows
Calculator. Windows Calculator supports several modes that show the 'Dec' option and 'Hex' options.
Select the 'Dec' option, paste or type in the decimal value you found in the log file and then select the
'Hex' option.
Then refer to the topic User-Account-Control Attribute to derive the attribute for the service account.
SP N s C o n fi g u r e d i n A c t i v e D i r e c t o r y fo r t h e R e p o r t i n g Se r v i c e s se r v i c e a c c o u n t .

To log the SPNs in the Reporting Services service trace log file, you can enable the Reporting Services Extended
Protection feature temporarily.
Modify the configuration file rsrepor tser ver.config by setting the following:

<RSWindowsExtendedProtectionLevel>Allow</RSWindowsExtendedProtectionLevel>
<RSWindowsExtendedProtectionScenario>Any</RSWindowsExtendedProtectionScenario>

Restart the Reporting Services service.


If you don't want to continue using Extended Protection, then set the configuration values back to defaults and
restart the Reporting Services Service account.

<RSWindowsExtendedProtectionLevel>Off</RSWindowsExtendedProtectionLevel>
<RSWindowsExtendedProtectionScenario>Proxy</RSWindowsExtendedProtectionScenario>

For more information see, Extended Protection for Authentication with Reporting Services
How the Browser Chooses Negotiated Kerberos or Negotiated NTLM
When you use Internet Explorer to connect to the report server, it specifies either Negotiated Kerberos or NTLM
on the authentication header. NTLM is used instead of Kerberos when:
The request is sent to a local report server.
The request is sent to an IP address of the report server computer rather than a host header or server
name.
Firewall software blocks ports used for Kerberos authentication.
The operating system of a particular server does not have Kerberos enabled.
The domain includes older versions of Windows client and server operating systems that do not support
the Kerberos authentication feature built into newer versions of the operating system.
In addition, Internet Explorer might choose either Negotiated Kerberos or NTLM depending on how you
configured URL, LAN, and proxy settings.
R e p o rt Se rv e r UR L

If the URL includes a fully qualified domain name, Internet Explorer selects NTLM. If the URL specifies localhost,
Internet Explorer selects NTLM. If the URL specifies the network name of the computer, Internet Explorer selects
Negotiate, which will succeed or fail depending on whether an SPN exists for the Report Server service account.
L A N a n d P ro x y Se t t i n g s o n t h e C l i e n t

LAN and proxy settings that you set in Internet Explorer can determine whether NTLM is chosen over Kerberos.
However, because LAN and proxy settings vary across organizations, it is not possible to precisely determine the
exact settings that contribute to Kerberos authentication errors. For example, your organization might enforce
proxy settings that transform URLs from intranet URLs to fully-qualified domain name URLs that resolve over
Internet connections. If different authentication providers are used for different types of URLs, you might find
that some connections succeed when you would have expected them to fail.
If you encounter connection errors that you think are due to authentication failures, you can try different
combinations of LAN and proxy settings to isolate the problem. In Internet Explorer, LAN and proxy settings are
on the Local Area Network (L AN) Settings dialog box, which you open by clicking L AN settings on the
Connection tab of Internet Options .

External resources
For additional information regarding Kerberos and report servers, see Deploying a Business Intelligence
Solution Using SharePoint, Reporting Services, and PerformancePoint Monitoring Server with Kerberos.

See Also
Authentication with the Report Server
Granting Permissions on a Native Mode Report Server
RsReportServer.config Configuration File
Configure Basic Authentication on the Report Server
Configure Custom or Forms Authentication on the Report Server
Extended Protection for Authentication with Reporting Services
Configure Basic Authentication on the Report
Server
3/5/2021 • 3 minutes to read • Edit Online

By default, Reporting Services accepts requests that specify Negotiate and NTLM authentication. If your
deployment includes client applications or browsers that use Basic authentication, you must add Basic
authentication to the list of supported types. In addition, if you want to use Report Builder, you must enable
Anonymous access to the Report Builder files.
To configure Basic authentication on the report server, you edit XML elements and values in the
RSReportServer.config file. You can copy and paste the examples in this topic to replace the default values.
Before you enable Basic authentication, verify that your security infrastructure supports it. Under Basic
authentication, the Report Server Web service will pass credentials to the local security authority. If the
credentials specify a local user account, the user is authenticated by the local security authority on the report
server computer and the user will get a security token that is valid for local resources. Credentials for domain
user accounts are forwarded to and authenticated by a domain controller. The resulting ticket is valid for
network resources.
Channel encryption, such as Transport Layer Security (TLS), previously known as Secure Sockets Layer (SSL), is
required if you want to mitigate the risk of having credentials intercepted while in transit to a domain controller
in your network. By itself, Basic authentication transmits the user name in clear text and the password in base-64
encoding. Adding channel encryption makes the packet unreadable. For more information, see Configure TLS
Connections on a Native Mode Report Server.
After you enable Basic authentication, be aware that users cannot select the Windows integrated security
option when setting connection properties to an external data source that provides data to a report. The option
will be grayed out in the data source property pages.

NOTE
The following instructions are intended for a native mode report server. If the report server is deployed in SharePoint
integrated mode, you must use the default authentication settings that specify Windows integrated security. The report
server uses internal features in the default Windows Authentication extension to support report server in SharePoint
integrated mode.

To configure a report server to use Basic authentication


1. Open RSReportServer.config in a text editor.
To find the config file, see the File Location section in the "RsReportServer.config Configuration File"
article.
2. Find <Authentication >.
3. Copy one of the following XML structures that best fits your needs. The first XML structure provides
placeholders for specifying all of the elements, which are described in the next section:
APPLIES TO: ✔
️ SQL Server Reporting Services (2016)
<Authentication>
<AuthenticationTypes>
<RSWindowsBasic>
<LogonMethod>3</LogonMethod>
<Realm></Realm>
<DefaultDomain></DefaultDomain>
</RSWindowsBasic>
</AuthenticationTypes>
<EnableAuthPersistence>true</EnableAuthPersistence>
</Authentication>

If you are using default values, you can copy the minimum element structure:

<AuthenticationTypes>
<RSWindowsBasic/>
</AuthenticationTypes>

APPLIES TO: ✔
️ SQL Server Reporting Services (2017 and later) ✔
️ Power BI Report Server

<Authentication>
<AuthenticationTypes>
<RSWindowsBasic/>
</AuthenticationTypes>
<EnableAuthPersistence>true</EnableAuthPersistence>
<RSWindowsExtendedProtectionLevel>Off</RSWindowsExtendedProtectionLevel>
<RSWindowsExtendedProtectionScenario>Any</RSWindowsExtendedProtectionScenario>
</Authentication>

4. Paste it over the existing entries for <Authentication >.


If you are using multiple authentication types, add just the RSWindowsBasic element but do not delete
the entries for RSWindowsNegotiate , RSWindowsNTLM , or RSWindowsKerberos .
Note that you cannot use Custom with other authentication types.
5. Replace empty values for <Realm > or <DefaultDomain > with values that are valid for your
environment.
6. Save the file.
7. If you configured a scale-out deployment, repeat these steps for other report servers in the deployment.
8. Restart the report server to clear any sessions that are currently open.

RSWindowsBasic Reference
The following elements can be specified when configuring Basic authentication.

EL EM EN T REQ UIRED VA L ID VA L UES


EL EM EN T REQ UIRED VA L ID VA L UES

LogonMethod Yes 2 = Network logon, intended for high


performance servers to authenticate
If you do not specify a value, 3 will be plain text passwords.
used.
3 = Cleartext logon, which preserves
logon credentials in the authentication
package that is sent with each HTTP
request, allowing the server to
impersonate the user when connecting
to other servers in the network.
(Default)

Note: Values 0 (for interactive logon)


and 1 (for batch logon) are NOT
supported in SQL Server 2016
Reporting Services or later (SSRS).

Realm Optional Specifies a resource partition that


includes authorization and
authentication features used to control
access to protected resources in your
organization.

DefaultDomain Optional Specifies the domain used by the


server to authenticate the user. This
value is optional, but if you omit it the
report server will use the computer
name as the domain. If the computer
is a member of domain, that domain is
the default domain. If you installed the
report server on a domain controller,
the domain used is the one controlled
by the computer.

See Also
Application Domains for Report Server Applications
Reporting Services Security and Protection
Configure Custom or Forms Authentication on the
Report Server
3/5/2021 • 2 minutes to read • Edit Online

Reporting Services provides an extensible architecture that allows you to plug in custom or forms-based
authentication modules. You might consider implementing a custom authentication extension if deployment
requirements do not include Windows integrated security or Basic authentication. The most common scenario
for using custom authentication is to support Internet or extranet access to a Web application. Replacing the
default Windows Authentication extension with a custom authentication extension gives you more control over
how external users are granted access to the report server.
In practice, deploying a custom authentication extension requires multiple steps that include copying assemblies
and application files, modifying configuration files, and testing. This topic focuses on just the authentication
settings that you specify in the configuration files.

NOTE
Creating a custom authentication extension requires custom code and expertise in ASP.NET security. If you do not want to
create a custom authentication extension, you can use Microsoft Active Directory groups and accounts, but you should
greatly reduce the scope of a report server deployment. For more information about custom authentication, see
Implementing a Security Extension.

Additionally, if you want to use Forms authentication or a custom authentication extension in a SQL Server
Reporting Services environment that is integrated with a SharePoint product, you must configure the SharePoint
site to use the authentication method that you choose. For more information about configuring authentication
in SharePoint, see Authentication Samples on Microsoft Developer Network (MSDN).
To configure a report server to use Custom authentication
1. Open RSReportServer.config in a text editor.
2. Find <Authentication >.
3. Copy the following XML structure:

<Authentication>
<AuthenticationTypes>
<Custom />
</AuthenticationTypes>
<EnableAuthPersistence>true</EnableAuthPersistence>
</Authentication>

4. Paste it over the existing entries for <Authentication >.


Note that you cannot use Custom with other authentication types.
5. Save the file.
6. Open the Web.config file for the report server. By default, it is located at \Program Files\Microsoft SQL
Server\MSRS10_50.MSSQLSERVER\ReportServer.
7. Find authentication mode and set it Forms .
<authentication mode = "Forms" />

8. Find identity impersonate and set it to False .

<identity impersonate = "false" />

9. Add the PassThroughCookies element structure to the configuration file. For more information, see
Configure the Web Portal to Pass Custom Authentication Cookies
10. Save the file.
11. If you configured a scale-out deployment, repeat all of the previous steps for other report servers in the
deployment.
12. Restart the report server to clear any sessions that are currently open.

See Also
Implementing a Security Extension
Reporting Services Custom Security Sample (GitHub)
Authentication with the Report Server
RsReportServer.config Configuration File
Configure Basic Authentication on the Report Server
Configure Windows Authentication on the Report Server
More questions? Try the Reporting Services forum
Configure the Web Portal to Pass Custom
Authentication Cookies
11/2/2020 • 2 minutes to read • Edit Online

If you are using a custom authentication extension, you should configure the web portal to transmit custom
authentication cookies. Otherwise, the web portal will only transmit cookies through HTTP requests specific to
the report server. If you want to transmit additional cookies, you must modify the RSReportServer.Config file.

Modifying the RSReportServer.Config File


You can enable the web portal to transmit additional cookies through to the report server by adding a
<PassThroughCookies > element to the web portal configuration settings in the RSReportServer.config file.
Transmitting additional cookies is helpful in a single sign-on authentication solution that requires not only the
report server authentication cookies, but also cookies from a third-party authentication system.
To enable additional cookies to be transmitted through HTTP requests when using the web portal, set the
following elements in the RSReportServer.config file:

<UI>
<CustomAuthenticationUI>
...
<PassThroughCookies>
<PassThroughCookie>cookiename1</PassThroughCookie>
<PassThroughCookie>cookiename2</PassThroughCookie>
</PassThroughCookies>
</CustomAuthenticationUI>
...
</UI>

See Also
Authentication with the Report Server
RsReportServer.config Configuration File
Security Extensions Overview
Configure and Administer a Report Server (SSRS Native Mode)
More questions? Try the Reporting Services forum
Roles and Permissions (Reporting Services)
11/2/2020 • 2 minutes to read • Edit Online

Reporting Services provides an authentication subsystem and role-based authorization model. Authentication
and authorization models vary depending on whether the report server runs in native mode or SharePoint
mode. If the report server is part of a SharePoint deployment, SharePoint permissions determine who has
access to the report server.

Identity and Access Control for Native Mode


Default authentication is based on Windows Authentication and integrated security. You can change the
authentication settings to allow the report server to respond to different authentication requests, or even
replace the default security features with a custom authentication extension that you provide.
Authorization is based on roles that you assign to a principle. Each role consists of a set of related tasks, which
are in turn composed of related operations. For example, the Manage repor ts task grants access to the
following report server operations: view reports, add report, update report, delete report, schedule report, and
update report properties.

Identity and Access Control for SharePoint Mode


In SharePoint integrated mode, authentication and authorization are handled on the SharePoint site, before
requests reach the report server. Depending on how you configure authentication, requests from a SharePoint
site include a security token or a trusted user name. Permissions that you set for SharePoint users and groups
authorize access to report server items that are placed in SharePoint libraries.

In This Section
Granting Permissions on a Native Mode Report Server
Describes the role-based authorization model that provides access to content and operations.
Granting Permissions on Report Server Items on a SharePoint Site
Explains how SharePoint groups, permission levels, and permissions are used to control access to a report
server.

See Also
Authentication with the Report Server
Granting Permissions on a Native Mode Report Server
Grant user access to a report server
11/2/2020 • 4 minutes to read • Edit Online

APPLIES TO: SQL Server 2016 Power BI Report Server


Reporting Services uses role-based security to grant user access to a report server. On a new report server
installation, only users who are members of the local Administrators group have permissions to report server
content and operations. To make the report server available to other users, you must create role assignments
that map user or group accounts to a predefined role that specifies a collection of tasks.
SharePoint mode repor t ser vers: For a report server that is configured for SharePoint integrated mode, you
configure access from a SharePoint site using SharePoint permissions. Permission levels on the SharePoint site
determine access to report server content and operations. You must be a site administrator to grant permissions
on a SharePoint site. For more information, see Granting Permissions on Report Server Items on a SharePoint
Site.
Native mode repor t ser vers: This article is focused on a report server that is configured for native mode and
the use of the web portal to assign users to a role. There are two types of roles:
Item-level roles are used to view, add, and manage report server content, subscriptions, report
processing, and report history. Item-level role assignments are defined on the root node (the Home
folder) or on specific folders or items farther down the hierarchy.
System-level roles grant access to site-wide operations that are not bound to any specific item. Examples
include using Report Builder and using shared schedules.
The two types of roles complement each other and should be used together. For this reason, adding a
user to a report server is a two-part operation. If you assign a user to an item-level role, you should also
assign them to a system-level role. When assigning a user to a role, you must select a role that is already
defined. To create, modify, or delete roles, use SQL Server Management Studio. For more information, see
Create, Delete, or Modify a Role (Management Studio).

Before you start


Review the following list before adding users to a native mode report server.
You must be a member of the local Administrators group on the report server computer. If you are
deploying Reporting Services on Windows Vista or Windows Server 2008, additional configuration is
required before you can administer a report server locally. For more information, see Configure a Native
Mode Report Server for Local Administration.
To delegate this task to other users, create role assignments that map user accounts to Content Manager
and System Administrator roles. Users who have Content Manager and System Administrator
permissions can add users to a report server.
In SQL Server Management Studio, view the predefined roles for System Roles and User Roles so that
you are familiar with the kinds of tasks in each role. Task descriptions are not visible in the web portal, so
you will want to be familiar with the roles before you begin adding users.
Optionally, customize the roles or define additional roles to include the collection of tasks that you
require. For example, if you plan to use custom security settings for individual items, you might want to
create a new role definition that grants view-access to folders.
To add a user or group to a system role
1. Start the web portal.
2. Select the Gear icon in the upper right and then select Site Settings from the dropdown menu.

3. Select Security .
4. Select Add group or user .
5. In Group or user , enter a Windows domain user or group account in this format: <domain>\
<account>.

NOTE
If you are using forms authentication or custom security, specify the user or group account in the format that is
correct for your deployment.

6. Select a system role, and then select OK .


Roles are cumulative, so if you select both System Administrator and System User, a user or group will be
able to perform the tasks in both roles.
7. Repeat to create assignments for additional users or groups.
To add a user or group to an item role
1. Start the web por tal and locate the report item for which you want to add a user or group.
2. Select the ... (ellipse) on an item.
3. In the drop-down menu, select Manage .
4. Select Security .
5. Select Add group or user .

NOTE
If an item currently inherits security from a parent item, select Customize security in the toolbar to change the
security settings. Then select Add group or user .

6. In Group or user , enter a Windows domain user or group account in this format: <domain>\
<account>. If you are using forms authentication or custom security, specify the user or group account in
the format that is correct for your deployment.
7. Select one or more role definitions that describe how the user or group should access the item, and then
select OK .
8. Repeat to create assignments for additional users or groups.
Next steps
Create and Manage Role Assignments
Role Assignments
Role Definitions
More questions? Try asking the Reporting Services forum
Grant permissions on a native mode report server
11/2/2020 • 3 minutes to read • Edit Online

SQL Server Reporting Services uses role-based authorization and an authentication subsystem to determine
who can perform operations and access items on a report server. Role-based authorization categorizes into
roles the set of actions that a user or group can perform. Authentication is based on built-in Windows
Authentication or a custom authentication module that you provide. You can use predefined or custom roles
with either authentication type.

Use roles to grant report server access


All users interact with a report server within the context of a role that defines a specific level of access. Reporting
Services includes predefined roles that you can assign to users and groups to provide immediate access to a
report server. Content Manager , Publisher , and Browser are examples of predefined roles. Each role defines
a collection of related tasks. For example, a Publisher has permission to add reports and create folders for
storing those reports.
Role assignments are typically inherited from a parent node, but you can break permission inheritance by
creating a new role assignment for a particular item. A user who is a member of the Content Manager role for
one report might be a member of the Browser role for another report.
To grant access to report server items and operations:
1. Review the predefined roles to determine whether you can use them as is. If you need to adjust the tasks
or define additional roles, take these actions before you assign users to specific roles. For more
information about each role, see Predefined roles.
2. Identify which users and groups require access to the report server, and at what level. Assign most users
to the Browser role or the Repor t Builder role. Assign a smaller number of users to the Publisher role.
Assign only a few users to the Content Manager role.
3. Use the web portal to assign roles on the Home folder for each user or group who requires access. The
Home folder is the top-level folder of the report server folder hierarchy.
4. At the site level, on the Site Settings page in the web portal, create a system-level role assignment for
each user and group by using the predefined roles System User and System Administrator .
5. Create additional role assignments as needed for specific folders, reports, and other items. Avoid creating
a large number of role assignments. If you create too many, it's difficult to keep track of the different
permission levels for each user.

NOTE
If you configured a report server to run in SharePoint integrated mode, you must set permissions on the SharePoint site
to grant access to report server items. For more information, see Grant permissions on report server items on a
SharePoint site.
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

Who sets permissions


Initially, only users who are members of the local administrators group can access a report server. Reporting
Services is installed with two default role assignments that grant item-level and system-level access to members
of the local administrators group. Local administrators can use these built-in role assignments to grant report
server access to other users and manage report server items. The built-in role assignments can't be deleted. A
local administrator always has permission to fully manage a report server instance.
Additional configuration is required before you can administer a report server instance on a local computer that
runs Windows Vista or Windows Server 2008. For more information, see Configure a native mode report server
for local administration (SSRS).

How permissions are stored


Role assignments and definitions are stored in the report server database. If you use a variety of client tools or
programmatic interfaces, all access is subject to the permissions that are defined for the report server instance
as a whole. If you configure multiple report servers in a scale-out deployment, the role assignments that you
define on one instance are stored in a shared database and used by all the other instances in the same scale-out
deployment. Because role assignments are stored with the items they secure, you can move the database to
another report server instance without losing the permissions you defined.

Tasks and tools for managing permissions


Use the following tools to manage role definitions and assignments.

TO O L TA SK S

Management Studio: Used to view, modify, create, and delete Create, delete, or modify a role (Management Studio)
role definitions

The web portal: Used to assign users and groups to roles Grant user access to a report server

Modify or delete a role assignment

See also
Predefined roles
Grant permissions on report server items on a SharePoint site
Authentication with the report server
Create and manage role assignments
Reporting Services security and protection
Report server content management (SSRS native mode)
Securable Items
11/2/2020 • 2 minutes to read • Edit Online

Reporting Services uses role-based security to control access to items that are stored on a report server. When
you grant a user access to a report server, you typically do so by creating a pair of role assignments:
At the site level
On Home, which is the root node of the report server folder hierarchy
Security is inherited within the report server folder hierarchy. Creating role assignments at the site level and on
the Home folder sets permission inheritance that extends to all items and operations on a report server.
You can override permission inheritance by defining security for individual items. Items that you can secure
individually include:
Folders
Reports
Report models
Resources
Shared data sources
Shared datasets
Other constructs, such as schedules and subscriptions, are not explicitly secured. Schedules and subscriptions
operate within the security of a report.

Item Descriptions
The following table lists securable items and describes their characteristics.

IT EM C H A RA C T ERIST IC S

Folders Folder security applies to the folder itself and the items it
contains. The Home folder is the root node of the folder
hierarchy. Security that you set for this folder establishes the
initial security settings for all subordinate folders, reports,
resources, and shared data sources in the folder hierarchy.
For more information, see Secure Folders.

My Reports is a special-purpose folder that is secured


through an implied role assignment based on a dedicated
role. For more information, see Secure My Reports.
IT EM C H A RA C T ERIST IC S

Reports Reports and linked reports can be secured to control the


range of actions that users can perform, such as changing
the properties of a given report.

Report history is secured through the report that contains


the history. You cannot secure individual snapshots within
report history.

For more information about report security, see Secure


Reports and Resources.

Report models You can specify role assignment on all or part of a report
model. Because report models can be quite extensive, you
might want to secure the model items that map to
confidential data.

Resources Resources can be secured to control access to the resource


itself and its properties.

Only stand-alone resources can be secured as separate


items. Resources that are embedded within a report cannot
be secured separately from that report.

For more information about resource security, see Secure


Reports and Resources.

Shared data sources Shared data sources can be secured to limit access to the
item and its property pages. For more information, see
Secure Shared Data Source Items.

Shared datasets Shared datasets can be secured to control the range of


actions that users can perform, such as viewing or changing
the definition, or changing the properties of a given shared
dataset.

For more information, see Secure Shared Dataset Items.

See Also
Granting Permissions on a Native Mode Report Server
Create, Delete, or Modify a Role (Management Studio)
Grant User Access to a Report Server (Report Manager)
Modify or Delete a Role Assignment (Report Manager)
Tasks and Permissions
11/2/2020 • 2 minutes to read • Edit Online

In Reporting Services, tasks are actions that a user or administrator can perform. Tasks are predefined. You
cannot create custom tasks or modify the ones provided either programmatically or through a tool. There are
twenty-five tasks in all. These tasks comprise the entire set of operations that are available in role-based security.
Some examples of tasks include "View reports," "Manage reports," and "Manage report server properties."
Each task consists of a set of permissions, which are also predefined. For example, the "Manage folders" task
contains permissions to create and delete folders and view and update folder properties. Permissions for each
task are documented to provide a more exact description of each task. It is not possible to interact with
permissions directly or to specify them in role assignments. Users are granted permissions indirectly through
the tasks that are included in role definitions.
Tasks can be performed only if they are part of a role and that role is included in a role assignment. Thus, if the
View Models task is not included in a role, or that role is not included in a role assignment, users cannot view
report models. The following diagram shows how permissions are combined into tasks, and how tasks are
combined into roles that can be used for specific role assignments.

Permissions and task diagram

System and Item Level Tasks


Tasks fall into two categories: system level and item level. A role can include tasks only from a single category.
The following table describes each category of tasks.

C AT EGO RY DESC RIP T IO N

Item-Level Tasks Actions that are performed on items managed by a report


server, such as folders, reports, report models, and
resources.

Item-level tasks are scoped to the report server folder


namespace. All items that you access through the folders on
a report server or through URL access are secured by role
assignments that include item-level tasks.

System-Level Tasks Actions that are performed at the system level, such as
managing jobs or shared schedules that can be used with
many items. System-level tasks are scoped outside of the
report server folder namespace.

See Also
Role Definitions
Predefined Roles
Granting Permissions on a Native Mode Report Server
Tasks and Permissions - Item-Level Tasks
3/5/2021 • 2 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server 2016 Reporting Services and later ✔
️ Power BI Report Server
An item-level task is a collection of permissions that relate to a report, folder, report model, resource, or shared
data source. Reporting Services also includes system-level tasks that apply to the report server site as a whole.
For more information, see System-Level Tasks. For more information about tasks and permissions in general,
see Tasks and Permissions.

NOTE
If you are working with these tasks programmatically, you must use methods that support item-level tasks. For more
information, see ListTasks and ListRoles.

Permissions in Item-Level Tasks


The following table lists item-level tasks, the permissions that are included in each task, and the items to which
the permissions apply. Permissions are listed for informational purposes only to provide a more exact
description of the functionality available through each task.
Shared datasets use the same set of permissions as reports. Report parts use the same set of permissions as
Resources.

TA SK A P P L IES TO IT EM P ERM ISSIO N S

Comment on reports Reports Read Properties


(SSRS 2017 and later, Power BI Report
Server) Create Comments

Delete Comments

Read Comments

Update Comments

Consume reports Reports Read Content

Read Report Definitions

Read Properties

Consume reports Shared Datasets Read Content

Read Report Definitions

Read Properties

Create linked reports Reports Create Link

Read Properties
TA SK A P P L IES TO IT EM P ERM ISSIO N S

Manage all subscriptions Reports Read Properties

Read Any Subscription

Create Any Subscription

Delete Any Subscription

Update Any Subscription

Manage comments Reports Read Properties


(SSRS 2017 and later, Power BI Report
Server) Delete Any Comments

Manage data sources Folders Create Data Source

Manage data sources Data Sources Update Properties

Delete Update Content

Read Properties

Manage folders Folders Create Folder

Delete Update Properties

Read Properties

Manage individual subscriptions Reports Read Properties

Create Subscription

Delete Subscription

Read Subscription

Update Subscription

Manage models Folders Create Model

Manage models Models Read Properties

Read Content

Delete Update Content

Read Data Sources

Update Data Sources

Read Model Item Authorization Policies

Update Model Item Authorization


Policies

Delete Update Properties


TA SK A P P L IES TO IT EM P ERM ISSIO N S

Manage report history Reports Read Properties

Create Report History

Delete Report History

Execute Read Policy

Update Policy

List Report History

Manage reports Folders Create Report

also applies to creating shared


datasets

Manage reports Reports Read Properties

Delete Update Properties

Update Parameters

Read Data Sources

Update Data Sources

Read Report Definition

Update Report Definition

Execute Read Policy

Update Policy

Manage reports Shared Datasets Read Properties

Delete Update Properties

Update Parameters

Read Data Sources

Update Data Sources

Read Report Definition

Update Report Definition

Execute Read Policy

Update Policy

Manage resources Folders Create Resource


TA SK A P P L IES TO IT EM P ERM ISSIO N S

Manage resources Resources Update Properties

Delete Update Content

Read Properties

Manage resources Report Parts Update Properties

Delete Update Content

Read Properties

Set security for individual items Reports, Resources, Data sources, Read Security Policies Update Security
Shared Datasets, Folders Policies

View data sources Data sources Read Content

Read Properties

View folders Folders Read Properties

Execute And View

List Report History

View models Report models Read Properties

Read Content

Read Data Sources

View reports Reports Read Content

Read Properties

View reports Shared Datasets Read Content

Read Properties

View resources Resources Read Content

Read Properties

View resources Report Parts Read Content

Read Properties

See Also
Granting Permissions on a Native Mode Report Server
Tasks and Permissions - System-Level Tasks
11/2/2020 • 2 minutes to read • Edit Online

A system-level task is a collection of permissions that relate to operations that apply to the report server site as
a whole. Reporting Services also includes item-level tasks that apply to specific items. For more information, see
Item-Level Tasks. For more information about tasks and permissions in general, see Tasks and Permissions.

NOTE
If you are working with these tasks programmatically, you must use methods that support system-level tasks. For more
information, see ListTasks and ListRoles.

Permissions in System-Level Tasks


The following table identifies the collection of permissions for each system task. Permissions are listed for
informational purposes only, to provide a more exact description of the functionality available through each
task.

TA SK P ERM ISSIO N S

Execute report definitions Execute Report Definitions (the permission and task name
are the same)

Generate events Generate Events

Manage jobs Read System Properties

Update System Properties

Manage report server properties Read System Properties

Update System Properties

Manage roles Create Roles

Delete Roles

Read Role Properties

Update Role Properties

Manage shared schedules Create Schedules

Manage report server security Read System Security Policies

Update System Security Policies

View report server properties Read System Properties

View shared schedules Read Schedules


See Also
Granting Permissions on a Native Mode Report Server
Create and Manage Role Assignments
11/2/2020 • 3 minutes to read • Edit Online

A role assignment is a security policy that determines a user's or group's permissions. Permissions decide
whether the user or group can access or modify a specific report server item, or do a task. A role assignment
consists of a single user or group account name and one or more role definitions.
Role assignments are scoped to the item level or system level.
An item-level role assignment is created for a specific item or branch of the folder hierarchy on the report
server. You navigate to a specific folder or item to create a role assignment for it.
System-level role assignments give selected users the capability to do tasks that affect the report server
site as a whole. These tasks include:
Creating shared schedules
Managing jobs
Processing reports
Setting properties
System-level security doesn't convey access to items in the report server folder hierarchy.

Creating an Item-level Role Assignment


From here, you can create a separate role assignment for each user or group account that requires access to the
report server. If the account is on a domain other than the one that contains the report server, include the
domain name. After you specify an account, you choose one or more role definitions. The role definitions are
additive. The combined set of all tasks from all definitions is supported in the assignment for a particular user or
group.
To enable widespread access, you choose an item that is high in the folder hierarchy (for example, the root folder
Home). Later, you can create role assignments to lock down specific areas of the folder hierarchy.
You must be a member of the local Administrator's group on the report server computer to create a role
assignment. You can delegate that responsibility by assigning other users to the Content Manager role.
To create or manage role assignments, or for more information, see Grant User Access to a Report Server

Creating a System-level Role Assignment


System-level and item-level role assignments go together. You create a system-level role assignment for each
user or group, that has an item-level role assignment.
System-level role assignments include a wide range of permissions, but they don't include permissions that are
part of an item-level role assignment.
In contrast with system permissions on a computer, system roles in reporting servers don't convey overarching
permissions that include all possible tasks. Instead, system-level role assignments are simply a set of tasks that
are scoped to the report server site. System role assignments determine whether users can view application
properties (such as the image or title of the Home page), view or manage shared schedules, or use Report
Builder.
To create or manage a system-level role assignment or for more information, see Grant User Access to a Report
Server and Predefined Roles.

Modifying a Role Assignment


You can modify a role assignment at any time. Your changes take effect when you save the role assignment. User
sessions are not affected by role assignment changes. If a user has a report open, and you modify a role
assignment to deny access, the user can continue using the report for that active session.
If you add a user account to a group that is already part of a role assignment, there will be a delay before the
user account is able to access items from the change. This delay is caused by Internet Information Services (IIS)
caching of authentication tokens. You can either wait for the tokens to refresh (typically 15 minutes), or you can
reset IIS to update the cache immediately.
You can only modify one role assignment at a time. You can't perform a global search-and-replace operation to
change role definition names, role assignment settings, or to find all the role assignments that include a specific
user or group.

Deleting a Role Assignment


You can delete role assignments by selecting the checkbox by each assignment you want to delete, and then
clicking Delete . You can also delete role assignments by clicking Rever t to Parent Security . When you select
this button, the existing role assignments for the item are deleted, and replaced with the assignments inherited
from the parent item.

See Also
Grant User Access to a Report Server
Role Assignments
Role Definitions
Predefined Roles
Granting Permissions on a Native Mode Report Server
Secure Folders
11/2/2020 • 2 minutes to read • Edit Online

Folder security is the foundation for securing all content in a report server. Because security is inherited
throughout the folder structure, you can designate large or small sections of the folder hierarchy to allow for
certain kinds of access.
High-security folders can be used to store confidential reports or as staging areas; for example, you can have a
folder that you use to test reports before moving them to a final location. To control access to this area, you can
define one role assignment that allows only report authors to add and delete items, and a second role
assignment that allows testers to run reports but not to add or remove items. Because the role assignments are
defined explicitly for testers and report authors, no other users (except for local system administrators) can
access the folder.
Low-security folders can be used to store reports that you want to be easily accessible.
Folder security forms the basis of item-level security, starting with the root node of the report server folder
hierarchy, the Home folder. Because security is inherited, it is advisable to set a fairly restrictive security policy on
the Home folder. Using the Browser role in Home folder role assignments does exactly that by providing view-
only access.

Tasks and Folder Access


When creating role assignments for folders, consider the tasks listed in the following table.

SEL EC T T H IS TA SK TO GIVE P ERM ISSIO N TO

View folders View the folder hierarchy and read-only properties that
indicate when the folder was created and modified.

Users cannot view items in the folder unless they are


assigned to roles that also include the following tasks: "View
reports," "View models", "View resources," and "View data
sources."

Manage folders View folder properties, change the name or description, or


move the folder to another location. This task allows users to
create folders.

Manage reports Add reports from the file system to a folder and publish
reports from Report Designer to the report server.

Manage data sources Add new shared data source items to a folder and change
existing shared data sources.

Set security on items Create and modify role assignments that control access to
the folder. This task must be used with either "View folders"
or "Manage folders." If it is not, it will have no effect because
the user will not be able to select the item.

See Also
Secure Reports and Resources
Secure Shared Data Source Items
Granting Permissions on a Native Mode Report Server
Secure Reports and Resources
11/2/2020 • 6 minutes to read • Edit Online

You can set security for individual reports and resources to control the degree of access that users have to these
items. By default, only users who are members of the Administrators built-in group can run reports, view
resources, modify properties, and delete the items. All other users must have role assignments created for them
that allow access to a report or resource.

Role-based Access to Reports and Resources


To grant access to reports and resources, you can allow users to inherit existing role assignments from a parent
folder or create a new role assignment on the item itself.
In most cases, you will probably want to use the permissions that are inherited from a parent folder. Setting
security on individual reports and resources should only be necessary if you want to hide the report or resource
from users who do not need to know that the report or resource exists, or to increase the level of access for a
report or item. These objectives are not mutually exclusive. You can restrict access to a report to a smaller set of
users, and provide all or some of them with additional privileges to manage the report.
You may need to create multiple role assignments to achieve your objectives. For example, suppose you have a
report that you want to make accessible to two users, Ann and Fernando, and to the Human Resource Managers
group. Ann and Fernando must be able to manage the report, but the Human Resource Managers members
need only to run it. To accommodate all of these users, you would create three separate role assignments: one to
make Ann a content manager of the report, one to make Fernando a content manager of the report, and one to
support view-only tasks for the Human Resource Managers group.
Once you set security on a report or resource, those settings stay with the item even if you move the item to a
new location. For example, if you move a report that only a few people are authorized to access, the report
continues to be available to just those users even if you move it to a folder that has a relatively open security
policy.

Mitigating HTML Injection Attacks in a Published Report or Document


In Reporting Services, reports and resources are processed under the security identity of the user who is
running the report. If the report contains expressions, script, custom report items, or custom assemblies, the
code runs under the user's credentials. If a resource is an HTML document that contains script, the script will run
when the user opens the document on the report server. The ability to run script or code within a report is a
powerful feature that comes with a certain level of risk. If the code is malicious, the report server and the user
who is running the report are vulnerable to attack.
When granting access to reports and to resources that are processed as HTML, it is important to remember that
reports are processed in full trust and that potentially malicious script might be sent to the client. Depending on
browser settings, the client will execute the HTML at the level of trust that is specified in the browser.
You can mitigate the risk of running malicious script by taking the following precautions:
Be selective when deciding who can publish content to a report server. Because the potential for
publishing malicious content exists, you should limit users who can publish content to a small number of
trusted users.
All publishers should avoid publishing reports and resources that come from unknown or untrusted
sources. If necessary, open the file in a text editor and look for suspicious script and URLs.
Report Parameters and Script Injection
Report Parameters provide flexibility for the overall report design and execution. However, this same flexibility
can, in some cases be used by an attacker in luring attacks. To mitigate the risk of inadvertently running
malicious scripts, only open rendered reports from trusted sources. It is recommended you consider the
following scenario that is a potential HTML Renderer script injection attack:
1. A report contains a text box with the hyperlink action set to the value of a parameter which could contain
malicious text.
2. The report is published to a report server or otherwise made available in such a way that the report
parameter value can be controlled from the URL of a web page.
3. An attacker creates a link to the web page or report server specifying the value of the parameter in the
form "javascript:<malicious script here>" and sends that link to someone else in a luring attack.

Mitigating Script Injection Attacks in a Hyperlink in a Published


Report or Document
Reports can contain embedded hyperlinks in the value of the Action property on a report item or part of a
report item. Hyperlinks can be bound to data that is retrieved from an external data source when the report is
processed. If a malicious user modifies the underlying data, the hyperlink might be at risk for scripting exploits.
If a user clicks the link in the published or exported report, malicious script could run.
To mitigate the risk of including links in a report that inadvertently run malicious scripts, only bind hyperlinks to
data from trusted sources. Verify that data from the query results and the expressions that bind data to
hyperlinks do not create links that can be exploited. For example, do not base a hyperlink on an expression that
concatenates data from multiple dataset fields. If necessary, browse to the report and use "View Source" to
check for suspicious scripts and URLs.

Mitigating SQL Injection Attacks in a Parameterized Report


In any report that includes a parameter of type String , be sure to use an available values list (also known as a
valid values list) and ensure that any user running the report has only the permissions required to view the data
in the report. When you define a parameter of type String , the user is presented with a text box that can take
any value. An available values list limits the values that can be entered. If the report parameter is tied to a query
parameter and you do not use an available values list, it is possible for a report user to type SQL syntax into the
text box, potentially opening the report and your server to a SQL injection attack. If the user has sufficient
permissions to execute the new SQL statement, it may produce unwanted results on the server.
If a report parameter is not tied to a query parameter and the parameter values are included in the report, it is
possible for a report user to type expression syntax or a URL into the parameter value and render the report to
Excel or HTML. If another user then views the report and clicks the rendered parameter contents, the user may
inadvertently execute the malicious script or link.
To mitigate the risk of inadvertently running malicious scripts, open rendered reports only from trusted sources.

NOTE
In previous releases of the documentation, an example of creating a dynamic query as an expression was included. This
type of query creates a vulnerability to SQL injection attacks and therefore is not recommended.

Securing Confidential Reports


Reports that contain confidential information should be secured at the data-access level, by requiring users to
provide credentials to access sensitive data. For more information, see Specify Credential and Connection
Information for Report Data Sources. You can also secure a folder to make it inaccessible to unauthorized users.
For more information, see Secure Folders.

See Also
Create and Manage Role Assignments
Granting Permissions on a Native Mode Report Server
Secure Shared Data Source Items
Store Credentials in a Reporting Services Data Source
Secure Shared Data Source Items
11/2/2020 • 2 minutes to read • Edit Online

You can set security on a shared data source item to enable or disable access to it.
A user who has minimal access to a shared data source (for example, the access granted through the Browser
role) can view the list of reports that use the item, provided the user is also authorized to view the reports
themselves.
A user who has additional access (such as that granted through the Content Manager role) can view and set
properties for the shared data source.
To set security, you create a role assignment that specifies which user or group account has access to the shared
data source. Users who have access to a shared data source item can change its name, description, connection
string, or credential information.

Tasks and Access to Items


When creating role assignments, use a role that has these tasks to assign appropriate permissions to users and
groups.

SEL EC T T H IS TA SK TO GIVE USERS P ERM ISSIO N TO

View data sources View the shared data source item in the folder hierarchy.
Without this task, the item is not visible to users and they
may not be aware that the data source is available.

Manage data sources View properties that specify the name, description, and
connection information. This task is also used to display a
shared data source item in the folder hierarchy. If you
choose this task, you can omit the "View data sources" task.

Set security on items Create and modify role assignments that control access to
the shared data source. This task must be used with either
"View data source" or "Manage data sources" tasks. If it is
not, it has no effect because the user cannot select the item.

See Also
Manage Report Data Sources
Secure Folders
Secure Reports and Resources
Granting Permissions on a Native Mode Report Server
Store Credentials in a Reporting Services Data Source
Secure Shared Dataset Items
11/2/2020 • 3 minutes to read • Edit Online

On a report server, shared dataset items can be used by multiple reports. You can secure shared datasets to
control the degree of access that users have. By default, only users who are members of the Administrators
built-in group can view shared datasets, modify properties, enable caching, create cache refresh plans, and
delete the items. All other users must have role assignments created for them that allow access to a shared
dataset.
To set security, create a role assignment that specifies which user or group account has access to the shared
dataset.

Role-based Access to Shared Datasets


To grant access to shared datasets, you can allow users to inherit existing role assignments from a parent folder
or create a new role assignment on the item itself.
Default role assignments that enable you to add, delete, edit item properties, and view related reports and
shared data sources for shared datasets are Content Manager, My Reports, and Publisher. To edit a shared
dataset definition, use the default role assignments Report Builder or Content Manager.
Because role assignments are typically inherited from a parent node, a folder that has the View repor ts task
enabled passes that permission to shared datasets and reports in the folder.
To provide more control over shared datasets and their query results, configure item level security on the shared
dataset item or save shared datasets to a folder and configure item level security on the folder.

Shared Dataset Parameters


Shared dataset parameters cannot be used to restrict data for specific users. The purpose of shared dataset
parameters is to provide a way to specify which data to include when the shared dataset is processed. On the
report server, you cannot secure the values for a shared dataset parameter.
In the shared dataset definition, you can mark parameters as read-only and specify default values. Parameters
that are marked read-only cannot be overridden on the server. For example, in a cache refresh plan for a shared
dataset, you cannot specify values for read-only parameters. If the shared dataset parameters include
expressions that refer to the User global collection, or have any other user dependencies, you cannot create a
cache refresh plan for the shared dataset.

Tasks, Access to Items, and Default Roles


Shared datasets follow the same security model as reports. To provide a user with permission for specific
actions, choose a role that includes the correspond task that includes those permissons. The following table lists
tasks and the actions they include.

DEFA ULT RO L ES T H AT IN C L UDE T H E


SEL EC T T H IS TA SK TO GIVE USERS P ERM ISSIO N TO TA SK
DEFA ULT RO L ES T H AT IN C L UDE T H E
SEL EC T T H IS TA SK TO GIVE USERS P ERM ISSIO N TO TA SK

View reports View the shared dataset item in the Browser


folder hierarchy. Without this task, the
item is not visible to users and they Content Manager
might not realize that the dataset is
available. Report Builder

My Reports

Manage reports View properties that specify the name, Content Manager
description, and connection
information. This task is also used to Publisher
display a shared dataset item in the
folder hierarchy. If you choose this My Reports
task, you can omit the "View reports"
task.

Consume reports View the shared dataset definition. Content Manager

Report Builder

Set security on items Create and modify role assignments Content Manager
that control access to the shared
dataset. This task must be used with
either "View reports" or "Manage
reports" tasks. If it is not, it has no
effect because the user cannot select
the item.

For more information, see Item-Level Tasks and Predefined Roles.

See Also
Manage Shared Datasets
Secure Folders
Secure Reports and Resources
Granting Permissions on a Native Mode Report Server
Granting Permissions on a Native Mode Report Server
Secure My Reports
11/2/2020 • 2 minutes to read • Edit Online

The My Reports feature provides a user-managed workspace for working with reports. In order to serve its
intended purpose, the My Reports folder requires less restrictive permissions than other folders that are
available for general use. Users who have permissions to only view and run reports in other folders might
require an expanded set of permissions to manage their My Reports folders and content that they own.
Reporting Services provides a specialized role assignment and role definition for this purpose.

NOTE
My Reports is available only in Report Manager. It is not available in SQL ServerManagement Studio.

Role Assignment for My Reports


The role assignment for My Reports has preset elements and is automatically created for each user who
activates a My Reports folder. Having the report server automatically assign security is especially useful for
organizations that use My Reports widely because administrators do not have to enable access for each My
Reports user.
A My Repor ts role assignment consists of the following elements:
The user's My Reports folder, which is located in Users Folders\<username>\My Reports folder.
The user account, which is determined when the My Reports folder is activated. A folder is activated when
a user clicks a My Reports folder in Report Manager or when publishing a report to a My Reports folder
from Report Designer. This folder is also activated when a user requests properties on the My Reports
link.
The predefined role definition for My Reports.

Role Definition for My Reports


The My Repor ts role definition includes tasks that support content management of a My Reports folder. The
My Repor ts role is intended to be a single-purpose role. Although you can choose it for any item-level security
policy, you should avoid doing so to minimize the chance that you will modify it to accommodate other folder
requirements. Reserving the My Repor ts role for the My Reports feature can help you maintain a consistent
experience for users.
By default, only report server administrators modify the My Repor ts role. You can customize the My Repor ts
role by changing the tasks it contains. You can also substitute a different role.

Denying Access to My Reports


You can prevent users from accessing My Reports by:
Disabling My Reports on the Site Settings page. For more information, see Enable and Disable My
Reports.
Removing all tasks from the My Repor ts role.
When you disable My Reports, the link to a My Reports folder is removed from Report Manager. The underlying
folder structure that supports My Reports (that is, the Users Folders folder and subfolders) is still available and
can be accessed if a user knows the folder path. Removing tasks from My Repor ts role ensures that access is
prevented.

See Also
Secure Reports and Resources
Secure Folders
Granting Permissions on a Native Mode Report Server
Create the RSExecRole
11/2/2020 • 6 minutes to read • Edit Online

Reporting Services uses a predefined database role called RSExecRole to grant report server permissions to
the report server database. The RSExecRole role is created automatically with the report server database. As a
rule, you should never modify it or assign other users to the role. However, when you move a report server
database to a new or different SQL Server Database Engine, you must re-create the role in the Master and
MSDB system databases.
Using the following instructions, you will perform the following steps:
Create and provision the RSExecRole in the Master system database.
Create and provision the RSExecRole in the MSDB system database.

NOTE
The instructions in this topic are intended for users who do not want to run a script or write WMI code to provision the
report server database. If you manage a large deployment and will be moving databases routinely, you should write a
script to automate these steps. For more information, see Access the Reporting Services WMI Provider.

Before you start


Back up the encryption keys so that you can restore them after the database is moved. This is step does
not directly affect your ability to create and provision the RSExecRole , but you must have a backup of
the keys in order to verify your work. For more information, see Back Up and Restore Reporting Services
Encryption Keys.
Verify you are logged on as a user account that has sysadmin permissions on the SQL Server instance.
Verify SQL Server Agent service is installed and running on the instance of the Database Engine instance
that you plan to use.
Attach the ReportServerTempDB and ReportServer databases. You are not required to attach the
databases to create the actual role, but they must be attached before you can test your work.
The instructions for manually creating the RSExecRole are intended to be used within the context of migrating
a report server installation. Important tasks such as backing up and moving the report server database are not
addressed in this topic, but are documented in the Database Engine documentation.

Create RSExecRole in master


Reporting Services uses extended stored procedures for SQL Server Agent service to support scheduled
operations. The following steps explain how to grant Execute permissions for the procedures to the RSExecRole
role.
To create RSExecRole in the master system database using Management Studio
1. Start SQL Server Management Studio and connect to the Database Engine instance that hosts the report
server database.
2. Open Databases .
3. Open System Databases .
4. Open Master .
5. Open Security .
6. Open Roles .
7. Right-click Database Roles , and select New Database Role . The Database Role - New page appears.
8. In Role name , type RSExecRole .
9. In Owner , type dbo .
10. Select page Securables .
11. Click Search . The Add Objects dialog box appears. The Specific Objects option is selected by default.
12. Click OK . The Select Objects dialog box appears.
13. Click Object Types .
14. Click Extended Stored Procedures .
15. Click OK .
16. Click Browse .
17. Scroll down the list of extended stored procedures and select the following:
a. xp_sqlagent_enum_jobs
b. xp_sqlagent_is_starting
c. xp_sqlagent_notify
18. Click OK , and the click OK again.
19. In the Execute row, in the Grant column, select the check box.
20. Repeat for each of the remaining stored procedures. RSExecRole must be granted Execute permissions
for all three stored procedures.
21. Select OK to finish.
Create RSExecRole in MSDB
Reporting Services uses stored procedures for SQL Server Agent service and retrieves job information from
system tables to support scheduled operations. The following steps explain how to grant Execute permissions
for the procedures and Select permissions on the tables to the RSExecRole.
To create RSExecRole in the MSDB system database
1. Repeat similar steps for granting permissions to stored procedures and tables in MSDB. To simplify the
steps, you will provision the stored procedures and tables separately.
2. Open MSDB .
3. Open Security .
4. Open Roles .
5. Right-click Database Roles , and select New Database Role . The General page appears.
6. In Role name, type RSExecRole .
7. In Owner, type dbo .
8. Select the Securables page.
9. Click Search . The Add Objects dialog box appears. The Specify Objects option is selected by default.
10. Click OK .
11. Click Object Types .
12. Click Stored Procedures.
13. Click OK .
14. Click Browse .
15. Scroll down the list of items and select the following:
a. sp_add_category
b. sp_add_job
c. sp_add_jobschedule
d. sp_add_jobserver
e. sp_add_jobstep
f. sp_delete_job
g. sp_help_category
h. sp_help_job
i. sp_help_jobschedule
j. sp_verify_job_identifiers
16. Click OK , and then click OK again.
17. Select the first stored procedure: sp_add_category.
18. In the Execute row, in the Grant column, click the checkbox.
19. Repeat for each of the remaining stored procedures. RSExecRole must be granted Execute permissions for
all ten stored procedures.
20. Still on the Securables page, click Search again. The Add Objects dialog box appears. The Specify
Objects option is selected by default.
21. Click OK .
22. Click Object Types .
23. Click Tables.
24. Click OK .
25. Click Browse .
26. Scroll down the list of items and select the following:
a. syscategories
b. sysjobs
27. Click OK , and the click OK again.
28. Select the first table: syscategories.
29. In the Select row, in the Grant column, click the checkbox.
30. Repeat for the sysjobs table. RSExecRole must be granted Select permissions for both tables.
31. Select OK to finish.

Move the Report Server database


After you create the roles, you can move the report server database to new SQL Server instance. For more
information, see Moving the Report Server Databases to Another Computer.
If you are upgrading the Database Engine to SQL Server 2016 or later, you can upgrade it either before or after
moving the database.
The report server database will be upgraded automatically when the report server connects to it. There are no
specific steps required for upgrading the database.

Restore encryption keys and verify your work


If you have attached the report server databases, you should now be able to complete the following steps to
verify your work.
To verify report server operability after a database move
1. Start the Reporting Services Configuration tool and connect to the report server.
2. Click Database .
3. Click Change Database .
4. Click Choose an existing repor t ser ver database .
5. Enter the server name of the Database Engine. If you attached the report server databases to a named
instance, you must type the instance name in this format: <servername>\<instancename>.
6. Click Test Connection . You should see a dialog box that states, "Test Connection Succeeded."
7. Select Ok to close the dialog box and then select Next .
8. On the Database, select the report server database.
9. Click Next and complete the wizard.
10. Click Encr yption Keys .
11. Click Restore .
12. Select the strong file (.snk) that has the backup copy of the symmetric key used to decrypt stored
credentials and connection information in the report server database.
13. Enter the password and click OK .
14. Click Web Por tal URL .
15. Click the link to open the web portal. You should see the report server items from the report server
database.

Creating the RSExecRole Role and permissions using T-SQL


The role can also be created, and applicable permissions granted, on the system databases using the following
T-SQL script:
USE master;
GO
IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE [type] = 'R' AND [name] = 'RSExecRole') BEGIN
CREATE ROLE [RSExecRole];
END
GRANT EXECUTE ON dbo.xp_sqlagent_enum_jobs TO [RSExecRole];
GRANT EXECUTE ON dbo.xp_sqlagent_is_starting TO [RSExecRole];
GRANT EXECUTE ON dbo.xp_sqlagent_notify TO [RSExecRole];
GO
USE msdb;
GO
IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE [type] = 'R' AND [name] = 'RSExecRole') BEGIN
CREATE ROLE [RSExecRole];
END
GRANT EXECUTE ON dbo.sp_add_category TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_add_job TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_add_jobschedule TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_add_jobserver TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_add_jobstep TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_delete_job TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_help_category TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_help_job TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_help_jobschedule TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_verify_job_identifiers TO [RSExecRole];
GRANT SELECT ON dbo.syscategories TO [RSExecRole];
GRANT SELECT ON dbo.sysjobs TO [RSExecRole];
GO

Next steps
Moving the Report Server Databases to Another Computer (SSRS Native Mode)
Create a Native Mode Report Server Database (Report Server Configuration Manager)
Report Server Configuration Manager (Native Mode)
Back Up and Restore Reporting Services Encryption Keys
More questions? Try asking the Reporting Services forum
Role Definitions
11/2/2020 • 3 minutes to read • Edit Online

In Reporting Services, a role definition is a named collection of tasks that define the operations available on a
report server. Role definitions provide the rules used by the report server to enforce security. When a user
attempts to perform a task, such as publishing a report, the report server checks the user's role assignment to
determine whether the task is included in their role definition. If the task is included in the role definition, the
request is submitted.

Using Roles to Authorize Access to a Report Server


A role becomes operative only when it is used in a role assignment. For more information about how roles
provide security, see Role Assignments.

Types of Role Definitions


Role definitions are either item-level or system-level definitions. An item-level role definition describes tasks
that relate to items that are stored and managed on a report server, such as reports, folder, and models. Manage
reports, View folders, and Manage individual subscriptions are examples of tasks you can include in an item-
level role definitions. A system role definition includes tasks that apply to the site as a whole. View report server
properties is an example of a task you might include in a system role.

Predefined Roles
Reporting Services includes predefined roles that correspond to different levels of user interaction. The
following list contains the predefined roles you can use:
Content Manager, Publisher, Browser, Report Builder, and My Reports are item-level role definitions that
you can use when creating role assignments for accessing report server content.
System Administrator and System User are system-level role definitions that you can use to authorize
access to site operations.
For more information, see Predefined Roles.

Creating a Role Definition


To create a role, you use Management Studio to specify a name and tasks it contains. You must create separate
role definitions for item and system tasks. Roles can include item-level tasks or system-level tasks, but not both.
Creating a role definition consists of providing a name and choosing a set of tasks for the definition. To create a
role definition, you must have permission to do so. The "Set security for individual items" task provides these
permissions. By default, administrators and users who are assigned to the predefined Content Manager role
can perform this task.
A role must have a unique name. To be valid, the role definition must contain at least one task. For more
information, see Tasks and Permissions.
To create a role definition, use SQL Server Management Studio. For more information, see Create, Delete, or
Modify a Role (Management Studio).
After you create a role definition, you can use it by selecting it in a role assignment. For more information, see
Grant User Access to a Report Server (Report Manager).
Customize or Delete a Role Definition
Predefined roles can be modified or replaced with custom roles. To modify a role, you add to or remove tasks
from the role definition. You cannot rename a role. Any changes you make are applied immediately to all role
assignments that include the role definition.
You can delete a role definition if you are no longer using it. You cannot delete the role definition that is selected
for the My Reports feature as long as that feature is enabled. Before you can delete the role definition used for
My Reports, you must first disable the feature or select a different role definition to use with it.

See Also
Tasks and Permissions
Granting Permissions on a Native Mode Report Server
Create, Delete, or Modify a Role (Management Studio)
Grant User Access to a Report Server (Report Manager)
Modify or Delete a Role Assignment (Report Manager)
Set Permissions for Report Server Items on a SharePoint Site (Reporting Services in SharePoint Integrated
Mode)
Role Definitions - Create, Delete, or Modify
11/2/2020 • 2 minutes to read • Edit Online

Reporting Services provides predefined roles that define levels of access to the report server. Each user or group
who requires access to the report server, is assigned a role that defines the allowed tasks. Roles are defined for
the report server as a whole. You must be consistent in how a role is defined and used throughout all areas of
the report server.
To create, modify, or delete roles, you can use SQL Server Management Studio. You can only delete roles that
aren't in use.
To assign users and groups to the roles that you create, use the SSRS web portal. For more information, see
Grant User Access to a Report Server.

NOTE
If the report server is configured for SharePoint integrated mode, and you connected to the SharePoint site that the
report server is integrated with, you can view and modify the permission levels that control access to report server
content and operations.

To create a role definition


1. In Object Explorer, expand a report server node.
2. Expand the Security folder.
3. If you're creating an item-level role definition, right-click Roles > New Role .
Or, if you're creating a system-level role definition, right-click System Roles > New System Role .
4. Type a unique name for the role. A name must contain at least one character. It can also include spaces
and certain symbols, but not the following characters [; : \ / @ & = + , $ / * < > | "] .
5. Optionally type a description. In Management Studio, this description is visible only on this page. Users
who view this item through the web portal can see this description in that tool.
6. Select the tasks that members of this role can do.
7. Select Ok .
To delete or modify a role definition
1. In Object Explorer, expand a report server node.
2. Expand the Security folder.
3. To delete or modify an item-level role definition, expand the Roles folder, then do one of the following
actions:
a. To delete a role definition, right-click the item > Delete . The Delete Catalog Items dialog box is
displayed. Select OK to delete the role.
b. To modify a role definition, right-click the item > Proper ties . The General page of the User Role
Proper ties dialog box is displayed.
Select the tasks that members of this role can do, and then select OK .
4. To delete or modify a system-level role definition, expand the System Roles folder. Do one of the
following actions:
To delete a system role definition, right-click the item and select Delete . The Delete Catalog Items
dialog box is displayed. Select OK to delete the role.
To modify a system role definition, right-click the item and select Proper ties . The General page of the
System Role Proper ties dialog box is displayed. Select the tasks that members of this role can do, and
select OK to apply the changes.

See also
Connect to a Report Server in Management Studio
Create and Manage Role Assignments
Reporting Services in SQL Server Management Studio (SSRS)
Role definitions - predefined roles
3/5/2021 • 16 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server 2016 Reporting Services and later ✔
️ Power BI Report Server
Reporting Services installs with predefined roles that you can use to grant access to report server operations.
Each predefined role describes a collection of related tasks. You can assign groups and user accounts to
predefined roles to provide immediate access to report server operations.

How to use predefined roles


1. Review the predefined roles to determine whether you can use them as is. If you need to adjust the tasks
or define additional roles, you should do this before you begin assigning users to specific roles. To create
or edit custom roles use SQL Server Management Studio. For more information, see Create, Delete, or
Modify a Role (Management Studio).
2. Identify which users and groups require access to the report server, and at what level. Most users should
be assigned to the Browser role or the Repor t Builder role. A smaller number of users should be
assigned to the Publisher role. Very few users should be assigned to Content Manager .
3. When you are ready to assign user and group accounts to specific roles, use the web portal. For more
information, see Grant User Access to a Report Server.

Predefined role definitions


Predefined roles are defined by the tasks that it supports. You can modify these roles or replace them with
custom roles.
Scope defines the boundaries within which roles are used. Item-level roles provide varying levels of access to
report server items and operations that affect those items. Item-level roles are defined on the root node (Home)
and all items throughout the report server folder hierarchy. System-level roles authorize access at the site level.
Item and system-level roles are mutually exclusive but are used together to provide comprehensive permissions
to report server content and operations.
The following table describes the predefined scope of the roles:

P REDEF IN ED RO L E SC O P E DESC RIP T IO N

Content Manager Role Item May manage content in the Report


Server. This includes folders, reports,
and resources.

Publisher Role Item May publish reports and linked


reports to the Report Server.

Browser Role Item May view folders, reports, and


subscribe to reports.

Report Builder Role Item May view report definitions.


P REDEF IN ED RO L E SC O P E DESC RIP T IO N

My Reports Role Item May publish reports and linked


reports; manage folders, reports, and
resources in a users My Reports folder.

System Administrator Role System View and modify system role


assignments, system role definitions,
system properties, and shared
schedules, in addition to create role
definitions, and manage jobs in
Management Studio.

System User Role System View system properties, shared


schedules, and allow use of Report
Builder or other clients that execute
report definitions.

Content manager role


The Content Manager role is a predefined role that includes tasks that are useful for a user who manages
reports and Web content, but doesn't necessarily author reports or manage a Web server or SQL Server
instance. A content manager deploys reports, manages report models and data source connections, and makes
decisions about how reports are used. All item-level tasks are selected by default for the Content Manager
role definition.
The Content Manager role is often used with the System Administrator role. Together, the two role
definitions provide a complete set of tasks for users who require full access to all items on a report server.
Although the Content Manager role provides full access to reports, report models, folders, and other items
within the folder hierarchy, it doesn't provide access to site-level items or operations. Tasks such as creating and
managing shared schedules, setting server properties, and managing role definitions are system-level tasks that
are included in the System Administrator role. For this reason, we recommend that you create a second role
assignment at the site level that provides access to shared schedules.
Content manager tasks
The following table lists the tasks that are included in the Content Manager role:

TA SK DESC RIP T IO N

Comment on reports Create, view, edit, and delete comments on reports.

Consume reports Reads report definitions.

Create linked reports Create linked reports that are based on a non-linked report.

Manage all subscriptions View, modify, and delete any subscription for reports and
linked reports, regardless of who owns the subscription. This
task supports the creation of data-driven subscriptions. It
also supports the editing and execution of scheduled refresh
for Power BI (.pbix) files in Power BI Report Server.

Manage comments Delete other users' comments on reports.

Manage data sources Create and delete shared data source items, view, and
modify data source properties and content.
TA SK DESC RIP T IO N

Manage folders Create, view, and delete folders, and view and modify folder
properties.

Manage individual subscriptions Create, view, modify, and delete user-owned subscriptions to
reports and linked reports. This task also supports the
editing and execution of scheduled refresh for Power BI
(.pbix) files in Power BI Report Server.

Manage models Create, view, and delete models, and view and modify model
properties.

Manage report history Create, view, and delete report history, view report history
properties, and view, and modify settings that determine
snapshot history limits and how caching works.

Manage reports Add and delete reports, modify report parameters, view and
modify report properties, view and modify data sources that
provide content to the report, view and modify report
definitions, and set security policies at the report level.

Manage resources Create, modify, and delete resources, and view and modify
resource properties.

Set security for individual items Define security policies for reports, linked reports, folders,
resources, and data sources. For more information, see
Securable Items.

View data sources View shared data source items in the folder hierarchy.

View folders View folder contents and navigate through the folder
hierarchy.

View models View models in the folder hierarchy, use models as data
sources for a report, and run queries against the model to
retrieve data.

View reports Run reports and view report properties.

View resources View resources and resource properties.

Customizing the content manager role


This role is intended for trusted users who have overall responsibility for managing and maintaining report
server content. You can remove tasks from this definition, but doing so may introduce ambiguity into what can
be managed. For example, removing the "View reports" task from this role definition would prevent a Content
Manager from viewing report contents and therefore be unable to verify changes to parameter and credential
settings.
The Content Manager role is used in default security.

Publisher role
The Publisher role is a built-in role definition that includes tasks that enable users to add content to a report
server. This role is predefined for your convenience. It is not used until you create role assignments that include
it. This role is intended for users who author reports or models in Report Designer or Model Designer and then
publish those items to a report server.
Cau t i on

Permission to publish items to a report server should be granted only to trusted users. The Publisher role grants
wide-ranging permissions that allow users to upload any type of file to a report server. If an uploaded report or
HTML file contains malicious script, any user who clicks on the report or HTML document will run the script
under his or her credentials.
Report definitions can include script and other elements that are vulnerable to HTML injection attacks when the
report is rendered in HTML at run time. If a published report contains malicious script, any user who runs that
report will accidentally cause the script to run when the report is opened. If the user has elevated permissions,
the script will run with those permissions.
To reduce the risk of users accidentally running malicious scripts, limit the number of users who have
permission to publish content, and make sure that users only publish documents and reports that come from
trusted sources. If you are not sure whether a report definition is safe to publish, you should open the .rdl file in
a text editor and search for script tags. Malicious script can be hidden in expressions and URLs (for example, a
URL in a navigation action).
Publisher tasks
The following table lists the tasks that are included in the Publisher role:

TA SK DESC RIP T IO N

Create linked reports Create linked reports and publish them to a report server
folder.

Manage comments Delete other users' comments on reports.

Manage data sources Create and delete shared data source items, view and modify
data source properties and content.

Manage folders Create, view, and delete folders; view and modify folder
properties.

Manage models Create, view, and delete report models; view and modify
report model properties.

Manage reports Add and delete reports, modify report parameters, view and
modify report properties, view and modify data sources that
provide content to the report, view, and modify report
definitions.

Manage resources Create, modify, and delete resources; view and modify
resource properties.

Customizing the publisher role


You can modify the Publisher role to suit your needs. For example, you can remove the "Create linked reports"
task if you do not want users to be able to create and publish linked reports, or you can add the "View folders"
task so that users can navigate through the folder hierarchy when selecting a location for a new item.
At a minimum, users who publish reports from Report Designer need the "Manage reports" task to be able to
add a report to the report server. If the user must publish reports that use shared data sources or external files,
you should also include "Manage data sources" and "Manage resources." If the user also requires the ability to
create a folder as part of the publishing process, you must also include "Manage folders."
Browser role
The Browser role is a predefined role that includes tasks that are useful for a user who views reports but does
not necessarily author or manage them. This role provides basic capabilities for conventional use of a report
server. Without these tasks, it may be difficult for users to use a report server.
The Browser role should be used with the System User role. Together, the two role definitions provide a
complete set of tasks for users who interact with items on a report server. Although the Browser role provides
view access to reports, report models, folders, and other items within the folder hierarchy, it does not provide
access to site-level items such as shared schedules, which are useful to have when creating subscriptions. For
this reason, we recommend that you create a second role assignment at the site level that provides access to
shared schedules.
Browser tasks
The following table describes the tasks that are included in the Browser role:

TA SK DESC RIP T IO N

Comment on reports Create, view, edit, and delete comments on reports.

Manage individual subscriptions Create, view, modify, and delete user-owned subscriptions to
reports and linked reports, and create schedules in support
of those subscriptions.

View folders View folder contents and navigate the folder hierarchy.

View models View models in the folder hierarchy, use models as data
sources for a report, and run queries against the model to
retrieve data.

View reports Run a report and view report properties.

View resources View resources and resource properties.

Customizing the browser role


You can modify the Browser role to suit your needs. For example, you can remove the "Manage individual
subscriptions" task if you do not want to support subscriptions, or you can remove the "View resources" task if
you do not want users to see collateral documentation or other items that might be uploaded to the report
server.
At a minimum, this role should support both the "View reports" task and the "View folders" tasks to support
viewing and folder navigation. You should not remove the "View folders" task unless you want to eliminate
folder navigation. Likewise, you should not remove the "View reports task" unless you want to prevent users
from seeing reports. These kinds of modifications suggest the need for a custom role definition that is applied
selectively for a specific group of users.

Report Builder role


The Repor t Builder role is a predefined role that includes tasks for loading reports in Report Builder as well as
viewing and navigating the folder hierarchy. To create and modify reports in Report Builder, you must also have
a system role assignment that includes the "Execute report definitions" task, required for processing reports
locally in Report Builder.
Report Builder tasks
The following table describes the tasks that are included in the Repor t Builder role:
TA SK DESC RIP T IO N

Comment on reports Create, view, edit, and delete comments on reports.

Consume reports Reads report definitions.

Manage individual subscriptions Create, view, modify, and delete user-owned subscriptions to
reports and linked reports, and create schedules in support
of those subscriptions.

View folders View folder contents and navigate the folder hierarchy.

View models View models in the folder hierarchy, use models as data
sources for a report, and run queries against the model to
retrieve data.

View reports Run a report and view report properties.

View resources View resources and resource properties.

Customizing the Report Builder role


You can modify the Repor t Builder role to suit your needs. The recommendations are generally the same as for
the Browser role: remove the "Manage individual subscriptions" task if you do not want to support
subscriptions, remove the "View resources" task if you do not want users to see resources, and keep "View
reports" task and the "View folders" tasks to support viewing and folder navigation.
The most important task in this role definition is "Consume reports", which allows a user to load a report
definition from the report server into a local Report Builder instance. If you do not want to support this task, you
can delete this role definition and use the Browser role to support general access to a report server.

My Reports role
The My Repor ts role is a predefined role that includes a set of tasks that are useful for users of the My Reports
feature. This role definition includes tasks that grant administrative permissions to users over the My Reports
folder that they own.
Although you can choose another role to use with the My Reports feature, it is recommended that you choose
one that is used exclusively for My Reports security. For more information, see Secure My Reports.
My Reports tasks
The following table lists tasks that are included in the My Repor ts role:

TA SK DESC RIP T IO N

Comment on reports Create, view, edit, and delete comments on reports.

Create linked reports Create linked reports that are based on reports that are
stored in the user's My Reports folder.

Manage comments Delete other users' comments on reports.

Manage data sources Create and delete shared data source items, view, and
modify data source properties and content.
TA SK DESC RIP T IO N

Manage folders Create, view, and delete folders, and view and modify folder
properties.

Manage individual subscriptions Create, view, modify, and delete subscriptions for reports
and linked reports.

Manage report history Create, view, and delete report history, view report history
properties, and view, and modify settings that determine
snapshot history limits and how caching works.

Manage reports Add and delete reports, modify report parameters, view, and
modify report properties, view and modify data sources that
provide content to the report, view and modify report
definitions, and set security policies at the report level.

Manage resources Create, modify, and delete resources, and view. and modify
resource properties.

View data sources View shared data source items in the folder hierarchy.

View folders View folder contents.

View reports Run reports that are stored in the user's My Reports folder
and view report properties.

View resources View resources and resource properties.

Customizing the My Reports role


You can modify this role to suit your needs. However, it is recommended that you keep the "Manage reports"
task and the "Manage folders" task to enable basic content management. In addition, this role should support all
view-based tasks so that users can see folder contents and run the reports that they manage.
Although the "Set security for individual items" task is not part of the role definition by default, you can add this
task to the My Repor ts role so that users can customize security settings for subfolders and reports.

System administrator role


The System Administrator role is a predefined role that includes tasks that are useful for a report server
administrator who has overall responsibility for a report server, but not necessarily for the content within it.
To create a role assignment that includes this role, use the Site Settings page in the web portal, or use the right-
click commands on the report server node in Management Studio.
The System Administrator role does not convey the same full range of permissions that a local administrator
might have on a computer. Rather, the System Administrator role includes operations that are performed at
the site level, and not the item level. For users who require access to both site-wide operations and items stored
on the report server, create a second role assignment on the Home folder that includes the Content Manager
role. Together, the two role definitions provide a complete set of tasks for users who require full access to all
items on a report server.
System administrator tasks
The following table lists tasks that are included in the System Administrator role:
TA SK DESC RIP T IO N

Execute report definitions Start execution for report definition without publishing it to
a report server.

Manage jobs View and cancel jobs that are running. For more information,
see Manage a Running Process.

Manage report server properties View and modify properties that apply to the report server
and to items that the report server manages.

This task supports renaming the web portal, enabling My


Reports, and setting report history defaults.

Manage report server security View and modify system-wide role assignments

Manage roles Create, view, and modify, and delete role definitions.

Members of the System Administrator role can use the


Site Settings page to manage roles.

Manage shared schedules Create, view, modify, and delete shared schedules that are
used to run or refresh reports.

The System Administrator role is used in default security.

System user role


The System User role is a predefined role that includes tasks that allow users to view basic information about
the report server. It also includes support for loading a report in Report Builder. Report Builder is a client
application that can process a report independently of a report server. The "Execute report definitions" task is
intended for use with Report Builder. If you are not using Reporting Builder, you can remove this task from the
System User role.
The following table lists tasks that are included in the System User role definition:
System user tasks
TA SK DESC RIP T IO N

Execute report definitions Run a report without publishing it to a report server.

View report server properties View properties that apply to the report server, such as the
application name, whether the My Reports setting is
enabled, and report history defaults.

If you remove this task from the System User role, the Site
Settings page is not available. Also, the application title is not
displayed at the top of each page. By default, the title for the
web portal is "SQL Server Reporting Services."

View shared schedules View shared schedules that are used to run reports or
refresh a report.

If you remove this task from the System User role, users
cannot select shared schedules to use with subscriptions and
other scheduled operations.
The System User role can be used to supplement default security. You can include the role in new role
assignments that extend report server access to report users. For more information, see Granting Permissions
on a Native Mode Report Server.

See also
Create, Delete, or Modify a Role (Management Studio)
Grant User Access to a Report Server
Modify or Delete a Role Assignment (SSRS web portal)
Granting Permissions on a Native Mode Report Server
Tasks and Permissions
Role Assignments
11/2/2020 • 2 minutes to read • Edit Online

In Reporting Services, role assignments determine access to stored items and to the report server itself. A role
assignment has the following parts:
A securable item for which you want to control access. Examples of securable items include folders,
reports, and resources.
A user or group account that can be authenticated by Windows security or another authentication
mechanism.
Role definitions define a set of permissible tasks and include:
Browser
Content Manager
My Repor ts
Publisher
Repor t Builder
System Administrator
System User
Role assignments are inherited within the folder hierarchy and are automatically inherited by contained:
Repor ts
Shared data sources
Resources
Subfolders
You can override inherited security by defining role assignments for individual items. All parts of the folder
hierarchy must be secured by at least one role assignment. You can't create an unsecured item or manipulate
settings in a way that produces an unsecured item.
The following diagram illustrates a role assignment that maps a group and a specific user to the Publisher role
for Folder B.
Role assignments diagram

System-Level and Item-Level Role Assignments


Role-based security in Reporting Services is organized into the following levels:
Item-level role assignments control access to items in the report server folder hierarchy such as:
reports
folders
report models
shared data sources
other resources
Item-level role assignments are defined when create a role assignment on a specific item, or on the Home
folder.
System role assignments authorize operations that are scoped to the server as a whole. For example, the
ability to manage jobs is a system level operation. A system role assignment isn't the equivalent of a
system administrator. It doesn't confer advanced permissions that grant full control of a report server.
A system role assignment doesn't authorize access to items in the folder hierarchy. System and item security are
mutually exclusive. Sometimes, you might need to create both a system-level and item-level role assignment to
provide sufficient access for a user or group.

Users and Groups in Role Assignments


The users or group accounts that you specify in role assignments are domain accounts. The report server
references, but doesn't create or manage, users and groups from a Microsoft Windows domain (or another
security model if you're using a custom security extension).
Of all the role assignments that apply to any given item, no two can specify the same user or group. If a user
account is also a member of a group account, and you have role assignments for both, the combined set of tasks
for both role assignments are available to the user.
When you add a user to a group that already has a role assignment, you must reset Internet Information
Services (IIS) for the new role assignment to take effect.

Predefined Role Assignments


By default, predefined role assignments are implemented that allow local administrators to manage the report
server. You can add additional role assignments to grant access to other users.
For more information about the predefined role assignments that provide default security, see Predefined Roles.

See Also
Create, Delete, or Modify a Role (Management Studio)
Modify or Delete a Role Assignment ( SSRS web portal )
Set Permissions for Report Server Items on a SharePoint Site (Reporting Services in SharePoint Integrated
Mode)
Granting Permissions on a Native Mode Report Server
Role Assignments - Modify or Delete
11/2/2020 • 2 minutes to read • Edit Online

A role assignment maps a group or user account to a predefined role that defines the tasks that can be done. It
determines the types of tasks that a user does to a folder, report, model, or other content type. To create, modify,
or delete role assignments, you use the SSRS web portal. After you create a role assignment for a particular user
or group, you can modify it later by selecting a different role. If you want to revoke permissions to a report
server, you can delete a role assignment from the report server.
Depending on your objective, alternative approaches might be more appropriate. Examples include customizing
or creating a new role definition, or modifying the membership of a group account in Active Directory.
For example, suppose you have a group of users who need to manage their content, but shouldn't have the full
set of permissions associated with Content Manager. You could create a new role definition called Department
Content Manager. It could include all of the tasks in Content Manager, except Set security policies for items .
Similarly, if you are a system or network administrator, it is probably easier for you to manage Active Directory
group accounts than role assignments in the web portal. You can reduce the overhead of managing role
assignments by creating a single role assignment for a group account. Then you can modify the group
membership when users no longer require access to reports.
If you determine that modifying or deleting a role assignment is the best approach, remember to check for both
system role and item role assignments. Each type of role assignment is configured through different pages in
the web portal.

To modify or delete a system role assignment


1. Access the web portal of a report server (SSRS Native Mode).
2. Select Site Settings > Security . All system-level role assignments currently defined for the server or
scale-out deployment are listed by account name.
3. Find the role assignment that you want to modify or delete.
4. To add or remove the role for a particular user or group, select Edit .
5. To delete a role assignment, select the check box next to the user or group name, then select Delete .
To modify or delete an item role assignment
1. Access the web portal and locate the item for which you want to edit or delete a role assignment.
2. Hover over the item, and select the drop-down arrow.
3. In the drop-down menu, select Security .
4. Find the role assignment that you want to modify or delete.
5. To add or remove the role for a particular user or group, select Edit .
6. To delete a role assignment, select the check box next to the user or group name, then select Delete .

See also
Create and Manage Role Assignments
Role Assignments
Granting Permissions on Report Server Items on a
SharePoint Site
11/2/2020 • 5 minutes to read • Edit Online

Microsoft SharePoint Foundation 2010 provides built-in security features that you can use to grant access to
report server items that you access from SharePoint sites and libraries. If you already assigned permissions to
users, those same users will have access to report server items and operations immediately after you configure
the integration settings between SharePoint Foundation 2010 and a report server. You can use existing
permissions to upload report definitions and other documents, view reports, create subscriptions, and manage
items.
If you have not assigned permissions or if you are not familiar with the security features in SharePoint
Foundation 2010, follow these guidelines:
1. In the product documentation for SharePoint Foundation 2010, read about the default security settings
for the standard SharePoint groups so that you know how to manage permissions and user access.
2. Review the list of permissions that specifically affect access to report server items and operations. For
more information, see Use Built-in Security in Windows SharePoint Services for Report Server Items.
3. Assign user and group accounts to predefined SharePoint groups.
4. Optionally, create new permission levels and groups, or modify existing ones to vary server access
permissions as specific needs arise.
To use SharePoint Foundation 2010 security features with report server items, you must have a report server
that runs in SharePoint integrated mode.

About Permissions, Permission Levels and SharePoint Groups


The following list provides a brief introduction to the security features in SharePoint Foundation 2010. For more
information, see "Windows SharePoint Help and How-to" on your SharePoint site.
Securable objects include sites, lists, libraries, folders, and documents.
A permission is an authorization to perform a specific task. SharePoint Foundation 2010 provides 33
predefined permissions that you can combine into a permission level.
A permission level is a set of permissions that can be granted to users or SharePoint groups on a
securable object such as a site, library, list, folder, item, or document. It is equivalent to a role definition in
Reporting Services. There are five predefined permission levels. You can customize them or create new
ones if needed.
A SharePoint group is a group of users that you can create on a SharePoint site to manage permissions to
the site and to provide an e-mail distribution list for site members. A SharePoint group consists of
Windows user and group accounts, or user logins if you are using Forms authentication. SharePoint
Foundation 2010 provides three groups. You can customize them or create new ones if needed.
Permission inheritance allows subsites, lists and libraries, and items to inherit the security settings of the
parent site. You can use inherited permissions to access report server items that are stored in a
SharePoint library. Using permission inheritance and the predefined SharePoint groups can help simplify
your deployment and provides immediate access to most report server operations.
Who Sets Permissions
The administrator who installs SharePoint Foundation 2010, runs the SharePoint Configuration Wizard, and
creates the portal site becomes the default portal site owner. The site owner can set permissions in Central
Administration for a farm or a stand-alone SharePoint Web application, and can set permission at the top-level
site for each SharePoint Web application. This person can also designate additional site owners.
At the top-level site of a SharePoint Web application, site collection administrators can set permissions for
multiple sites throughout the site hierarchy. Individual site owners can perform the same tasks relative to a
subsite.
A server administrator or a site collection administrator can set options that determine whether other site
owners can set permissions. Depending on the level of permissions you have, you might not be able to create or
customize SharePoint groups or permission levels.

Using Predefined SharePoint Groups and Permission Levels


Recommendations in SharePoint Foundation 2010 product documentation suggest that you use standard
SharePoint groups (which are Site name Owners , Site name Members , and Site name Visitors ) and assign
permissions at the site level. Most users that you assign permissions to should be members of the Site name
Visitors or Site name Members groups. Permissions on the parent site are inherited throughout the site
hierarchy. You can break permission inheritance for specific items that require additional restrictions.
The following SharePoint groups have the following predefined permission levels:
The Owners group has Full Control permissions, which enable group members to change the site
content, pages, or functionality. Full Control access should be limited to site administrators only.
The Members group has Contribute level permissions, which allow group members to view pages, edit
items, submit changes for approval, add, and delete items from a list.
The Visitors group has Read level permissions, which enables group members to view pages, list items,
and documents.
The SharePoint groups have permission levels that provide immediate access to many report server operations.
If you find that the built-in security settings do not provide the level of access that you need, you can create
custom groups or permission levels.
For more information about which report server operations are supported through the default security features,
see Use Built-in Security in Windows SharePoint Services for Report Server Items.
To use the built-in security features, you must assign Windows user or group accounts to the SharePoint groups.
Except for the server administrator and portal site owner who have automatic access to SharePoint Foundation
2010 when the software is installed, all other users must be granted permissions to access the server.

In This Section
Use Built-in Security in Windows SharePoint Services for Report Server Items
Explains how the predefined SharePoint groups and permission levels can be used to access report server items.
SharePoint Site and List Permission Reference for Report Server Items
Provides a reference of all SharePoint product permissions that can be used to access report server operations.
Set Permissions for Report Server Operations in a SharePoint Web Application
Describes permission requirements for ad hoc reporting and suggests approaches for making features
available.
Compare Roles and Tasks in Reporting Services to SharePoint Groups and Permissions
Provides a brief summary of how the SharePoint groups compare with predefined role definitions in Reporting
Services.
Set Permissions for Report Server Items on a SharePoint Site (Reporting Services in SharePoint Integrated
Mode)
Provides instructions for creating new SharePoint groups that have permission to start Report Builder and set
model item security. This topic also contains general guidelines about setting custom permissions for any report
server item or operation.

See Also
Reporting Services Security and Protection
Use Built-in Security in Windows SharePoint
Services for Report Server Items
11/2/2020 • 4 minutes to read • Edit Online

SharePoint provides built-in security features that you can use to access report server items from SharePoint
sites and libraries. If you already assigned site and list permissions to users, those same users will have access to
report server items and operations immediately after you configure the integration settings between SharePoint
and a report server.

Securable Items
Permissions that are defined on the site or library can be used to grant access to report server items. However, if
you want to secure individual items, you can set permissions on the following content types:

F IL E T Y P E DESC RIP T IO N

.rdl A report definition file that defines the report layout and the
commands used to retrieve data. A report definition uses
data source connection information to retrieve data when
the report is processed. If the report definition is an ad hoc
report that was created in Report Builder, the report is
paired with a report model (.smdl) file that sets the scope on
data exploration in the rendered report.

.smdl A report model file that describes data structures and how
they relate. It is used to create and run Report Builder
reports.

.rsds A shared data source file that specifies connection


information to an external data source. It is used by report
definitions (.rdl) and report model (.smdl) files. Report
models always use .rsds files to get connection information
to an underlying data source. Report definitions can use
.rsds files, or connection information that is defined in data
source properties on the report.

.rsc A report part file that defines the layout and structure of a
report item or data region. It is used to publish the report
part to a server so the item can be re-used by other report
authors from the Report Part Gallery.

.rsd A shared dataset file that defines query syntax and


properties for a dataset. Shared datasets can be shared,
stored, processed, and cached external from a report.

Schedules, subscriptions, and report history are not securable items. You can set permissions on the site or
library that determine whether a user can create or use schedules, subscriptions, and report history, but you
cannot secure those items directly.
To secure individual items, select the item in the library, click the down arrow, and select Manage Permissions .
In the Actions menu, select Edit Permissions .
Using built-in groups and permission levels to access report server
items
When you use permission inheritance and standard SharePoint groups, you can access most report server
operations immediately after you configure integration settings on the report server and SharePoint instances.
SharePoint provides standard groups that map to predefined permission levels that determine how you access
documents and pages on a SharePoint site. If you are using standard groups and default permission levels, and
your sites are configured to inherit permissions, you can expect to work with Reporting Services features in the
following ways:

SH A REP O IN T GRO UP S P ERM ISSIO N L EVEL SUM M A RY REP O RT SERVER A C C ESS

Owners Full Control Owners have full Set permissions that control
permissions to create, access to all report server
manage, and secure report items stored in libraries
server items and throughout the site. Set
operations. permissions within a report
model (also referred to as
model item security).
Customize a Report Viewer
Web Part. Add reports and
other items to libraries. Edit
item properties for reports
and other documents.
Delete reports and other
items. View reports,
including reports that use
report models for data
exploration. Set parameters
on reports. Set processing
options on a report.
Generate report models.
Create reports in Report
Builder. Create and manage
shared data sources. Create,
change, and delete
subscriptions that are
owned by any user. Create
and manage shared
schedules used throughout
the site. Create and manage
versions of a document,
including report history.
Download the source file for
a report definition or a
report model. Replace a
report definition, report
model, shared data source,
or resource (preserving
item properties and
permissions).
SH A REP O IN T GRO UP S P ERM ISSIO N L EVEL SUM M A RY REP O RT SERVER A C C ESS

Members Contribute Members can create new Add reports and other
items and publish items items to libraries. Edit item
reports and models from properties for reports and
design tools to a SharePoint other documents. Delete
library. reports and other items.
View reports, including
reports that use report
models for data exploration.
View past versions of a
document, including report
history snapshots (requires
that a user also has
permission to open the
report for which report
history was created). Set
parameters on reports. Set
processing options on a
report. Generate report
models. Create reports in
Report Builder. Create and
manage shared data
sources. Create, change,
and delete subscriptions
that are owned by the user.
Use shared schedules with a
subscription. Create and
manage versions of a
document, including report
history. Download the
source file for a report
definition or a report
model. Replace a report
definition, report model,
shared data source, or
resource (preserving item
properties and
permissions).

Visitors and Viewers Read Visitors can view reports View reports, including
reports that use report
models for data exploration.

If you are not using the built-in groups and permission levels, you must include specific permissions in order to
access Reporting Services features. For more information, see Set Permissions for Report Server Operations in a
SharePoint Web Application.

See Also
Granting Permissions on Report Server Items on a SharePoint Site
Compare Roles and Tasks in Reporting Services to SharePoint Groups and Permissions
Set Permissions for Report Server Operations in a SharePoint Web Application
Granting Permissions on Report Server Items on a SharePoint Site
Reporting Services Roles-Tasks vs. SharePoint
Groups-Permissions
11/2/2020 • 5 minutes to read • Edit Online

This topic compares role and task based authorization features in Reporting Services native mode to the
security features in SharePoint products. This topic compares terminology and characteristics of roles, tasks,
SharePoint groups, permission levels, and permissions.
Applies to:
Reporting Services SharePoint mode
SharePoint 2010 and SharePoint 2013
Reporting Services Native mode
In this topic:
Compare Permission Tools and Terminology
Compare Native mode Roles and SharePoint Groups
Comparing Native Mode Tasks and SharePoint Permissions

Compare Permission Tools and Terminology


Native mode: The Reporting Services native mode permission objects (roles and tasks) are created in SQL
Server Management Studio and configured for individual users in Report Manager.
SharePoint mode: Reporting Services SharePoint mode utilizes the SharePoint permission features.
SharePoint groups and permissions are managed from the following the Site Settings page.
The following table compares permission related objects and concepts between Reporting Services native mode
and SharePoint.

REP O RT IN G SERVIC ES N AT IVE M O DE SH A REP O IN T

Role: For example "Content Manager". Group: For example the default "Viewers" group.

--- Permission level group: For example "View Only" for the
"Viewers" group.

Tasks: for example "Manage Reports". Permissions: For example, within the "View Only" group
there are list related permissions of view items, view
versions, and view application pages.

For more information on SharePoint permissions, see Permission levels and permissions and Determine
permission levels and groups in SharePoint 2013.

Compare Native mode Roles and SharePoint Groups


The following table compares the predefined role definitions in Reporting Services in native mode to standard
SharePoint groups. If the SharePoint groups do not match the specific role that you want, you can create a
custom group and assign permission levels in SharePoint.
Note : The default SharePoint groups available depend on the site template used to create the SharePoint site.

REP O RT IN G SERVIC ES RO L E SH A REP O IN T GRO UP S

Browser Use the Visitors group to grant permissions to view


reports. The Visitors group has Read level permissions,
View which enables group members to view pages, list items, and
documents.

Content Manager Use the Owners group to grant full control over managing
report server items on a SharePoint site. The Owners group
Full permissions to all items and item-level operations, has Full Control permissions, which enable group members
including permissions to set security. to make changes to the site content, pages, or functionality.
Full Control access should be limited to site administrators
only.

My Repor ts There is no equivalent group. My Repor ts is not supported


for a report server that runs in SharePoint mode. You can
use the My Site features in Windows SharePoint Services if
you want to use equivalent functionality.

Publisher Use the Members group to grant permissions to add items,


edit items, and update references to dependent items on a
Add, update, view, and delete reports, report models, shared SharePoint site. The Members group has Contribute level
data sources, and resources. permissions, which allow group members to view pages, add
and update items, and submit changes for approval.

Repor t Builder There is no predefined out of the box permission level or


SharePoint group that is equivalent to the Report Builder
View reports, self-manage individual subscription, and open report definition. By default, users who belong to the
reports in Report Builder. Members group or Owners group have permission to use
Report Builder. If you want to make Report Builder available
to more users, you should create custom security settings to
provide a level of permission that is similar to what the
Report Builder role provides. For more information, see Set
Permissions for Report Server Items on a SharePoint Site
(Reporting Services in SharePoint Integrated Mode).

- Use the Viewers group to grant permissions to view


rendered reports. The Viewers group cannot download or
view the contents of report items.

Note: Starting in SQL Server 2012 Reporting Services, the


Viewers group does not have permissions to create
subscriptions.

System User and System Administrator These roles are not necessary for a report server that runs in
SharePoint mode. System User and System
Administrator correspond to SharePoint farm or Web
application level permissions. The report server does not
provide any functionality that requires authorization at that
level.

Comparing Native Mode Tasks and SharePoint Permissions


The following table compares Reporting Services Native mode tasks to SharePoint permissions. The Type
column indicates if the Native mode task is related to a system role or standard role and items. System roles
manage permissions on a system level, for example shared schedules.
EQ UIVA L EN T SH A REP O IN T
N AT IVE M O DE TA SK RO L E T Y P E P ERM ISSIO N

Consume reports Item Edit Items, View Items.

Create linked reports Item Not supported.

Manage all subscriptions Item Manage Alerts.

Manage data sources Item Add items, Edit Items, Delete Items,
View Items.

Manage folders Item Add items, Edit Items, Delete Items,


View Items.

Manage individual subscriptions Item Edit Items

Prior to SQL Server 2012 (11.x), the


required permission level was Create
alerts.

Manage models Item Add items, Edit Items, Delete Items,


View Items.

Manage report history Item Edit Items, View Versions, Delete


Versions.

Manage reports Item Add items, Edit Items, Delete Items,


View Items.

Manage resources Item Add items, Edit Items, Delete Items,


View Items.

Set security for individual items Item Manage permissions

View data sources Item View Items.

View folders Item View Items.

View models Item View Items.

View reports Item View Items.

View resources Item View Items.

Execute report definitions System View items.

Generate events System Manage Web Site.

Manage jobs System None (not supported).


EQ UIVA L EN T SH A REP O IN T
N AT IVE M O DE TA SK RO L E T Y P E P ERM ISSIO N

Manage report server properties System None (not applicable). The report
server does not control whether a user
has permission to view integration
settings in Central Administration.

Manage roles System Manage Permissions.

Manage shared schedules System Manage Web Site, Open.

Manage report server security System None (not applicable). The report
server does not use system-level role
assignments on a server that runs in
SharePoint integrated mode.

View report server properties System None (not applicable). The report
server does not control whether a user
has permission to view integration
settings in Central Administration.

View shared schedules System Open Items.

See Also
Set Permissions for Report Server Items on a SharePoint Site (Reporting Services in SharePoint Integrated
Mode)
Set Permissions for Report Server Operations in a SharePoint Web Application
Granting Permissions on Report Server Items on a SharePoint Site
Role Definitions
Predefined Roles
SharePoint Site and List Permission Reference for
Report Server Items
11/2/2020 • 5 minutes to read • Edit Online

This topic provides a reference of the permissions in SharePoint that can be used to grant access to report
server operations for a report server that runs in SharePoint integrated mode. If you are creating custom
permission levels, this topic can help you choose which permissions to use.
SharePoint provides thirty-three permissions that you can use to control access to content and operations.
Some but not all of those permissions apply to documents and operations that involve a Reporting Services
report server. You can use the permission reference tables in this article to find out which permissions support
specific reporting tasks.
Each table starts with a list of SharePoint permissions and a description. The table includes three columns that
indicate how a permission is used in predefined permission levels. The predefined permission levels include the
following:

P ERM ISSIO N L EVEL A B B REVIAT IO N

Full Control F

Contribute C

Visitor V

Permissions that do not affect a report server are not listed. All personalization permissions are excluded from
this reference article. Although you can include report server items in a personalized Web site, the report server
does not directly handle personalization requests or operations.
Applies to:
Reporting Services SharePoint mode
SharePoint 2010 and SharePoint 2013

List Permissions
Permissions that you set on the library that contains report server items determine how users access those
items.

REP O RT SERVER
P ERM ISSIO N DESC RIP T IO N F C V O P ERAT IO N
REP O RT SERVER
P ERM ISSIO N DESC RIP T IO N F C V O P ERAT IO N

Manage Lists Create and X Create a folder in


delete lists, add a SharePoint
or remove library during a
columns in a list, publish
and add or operation from
remove public an authoring
views of a list. tool. This
permission is
also required for
managing report
history.

Add Items Add items to X X Add reports,


lists, add report models,
documents to shared data
document sources, and
libraries, and add resources
Web discussion (external image
comments. files) to
SharePoint
libraries. Create
shared data
sources.
Generate report
models from
shared data
sources. Start
Report Builder
and create a new
report or load a
model into
Report Builder.

Edit Items Edit items in lists, X X View past


edit documents versions of a
in document document,
libraries, edit including report
Web discussion history
comments in snapshots. Edit
documents, and item properties
customize Web for reports and
Part Pages in other
document documents. Set
libraries. report
processing
Create options. Set
subscriptions parameters on a
and edit report. Edit data
subscriptions source
you created. properties.
Create report
history
snapshots. Open
a report model
or a model-
based report in
Report Builder
and save your
changes to the
file. Assign
clickthrough
REP O RT SERVER
P ERM ISSIO N DESC RIP T IO N F C V reports
O P ERAT to
IO N
entities in a
model. Replace a
report definition,
shared data
source, report
model, or
resource with a
newer version
(replace file,
preserve
metadata).
Manage
dependent items
that are
referenced in a
report or model.
Customize the
Report Viewer
Web Part relative
to a specific
report.

Create, change
and delete
subscriptions
that use the
Reporting
Services delivery
extensions to
deliver reports to
target locations.
Only the
subscription
owner and users
who have
Manage Alerts
permission can
perform these
actions.
Delete Items Delete items X X Delete reports,
from a list, report models,
documents from shared data
a document sources, and
library, and Web other documents
discussion from a library.
comments in
documents.

View Items View items in X X X Open a report,


lists, documents report model,
in document and other
libraries, and document and
Web discussion have it processed
comments. on the report
server.
REP O RT SERVER
P ERM ISSIO N DESC RIP T IO N F C V O P ERAT IO N

Open Items View the source X X X View a list of


of documents shared data
with server-side sources.
file handlers. Download a copy
of the source file
for a report
definition or
report model.
View
clickthrough
reports that use
a report model
as a data source.

View Versions View past X X X View past


versions of a list versions of a
item or document and
document. report
snapshots.

Delete Versions Delete past X X Delete past


versions of a list versions of a
item or document and
document. report
snapshots.

NOTE
Other list permissions include Override Checkout, Approve Items, and View Application Pages. Those permissions are not
evaluated by the report server. The report server does not handle those operations.

Site Permissions
Site permissions determine access to report server operations that are not directly related to items stored in a
specific library. Examples include creating and managing shared schedules, which can be used by items in
multiple libraries, and configuring the Report Viewer Web Part, which can be used throughout a site.

REP O RT SERVER
P ERM ISSIO N DESC RIP T IO N F C V O P ERAT IO N

Manage Create and X You can change


Permissions change permissions for
permission levels all report server
on the Web site items and
and assign operations. You
permissions to can set model
users and item security.
groups.

Manage Web Perform all X Create, change,


Site administration and delete
tasks for the shared
Web site as well schedules.
as manage
content.
REP O RT SERVER
P ERM ISSIO N DESC RIP T IO N F C V O P ERAT IO N

Add and Add, change, or X Add or remove a


Customize Pages delete HTML Report Viewer
pages or Web Web Part.
Part pages, and
edit the Web site
using a Windows
SharePoint
Services-
compatible
editor.

Browse User View information X X X Browse for


Information about the users reports and
of the Web site. other items
across different
sites, libraries,
and folders.
Publish reports
and other items
to a library.

Enumerate Enumerate X Read permissions


Permissions permissions on for all report
the Web site, list, server items.
folder, View a
document, or list clickthrough
item. report that uses
a report model
that contains
model item
security settings.

Manage Alerts Manage alerts X Create, change,


for all users of and delete any
the Web site. subscription on a
site.

Use Remote Use SOAP, Web X X X Used to call the


Interfaces DAV, or URL proxy
SharePoint endpoint to the
Designer report server.
interfaces to
access the Web
site.

Open Open a Web site, X X X Read schedules


list, or folder to and item
access items properties.
inside that
container.

See Also
Compare Roles and Tasks in Reporting Services to SharePoint Groups and Permissions
Granting Permissions on Report Server Items on a SharePoint Site
Set Permissions for Report Server Operations in a
SharePoint Web Application
11/2/2020 • 9 minutes to read • Edit Online

For a report server that runs in SharePoint integrated mode, the security settings defined on the SharePoint site
determine how you view and manage reports, report models, and shared data sources. If you are using the
default SharePoint groups, permission levels, and permission assignments, you can work with reports and other
documents using the current security settings.
If default security settings do not provide the level of access that you want, you can use the information
provided in the following sections to learn which permissions are necessary for specific operations:
Permissions for viewing and managing reports
Permissions for creating reports and using Report Builder
Permissions for creating and managing shared schedules
Permissions for creating and managing subscriptions
Permissions for creating and managing shared data sources and report models
A few key permissions are required to complete almost any operation on a SharePoint site. These permissions
are not listed in the task and permission tables below, but you must include them if you are creating custom
permission levels:
Browse User Information
Use Remote Interfaces
Open
View Application Pages
If you are using predefined permission levels, no action is required because the above permissions are already
included in Full Control, Design, Contribute, Read, and Limited Access. However, if you are using custom
permission levels or editing the permissions assigned to a particular user or group, you must add the
permission manually.
"Browse User Information" permission allows the report server to return information about the creator of the
item and the user who last modified the item. Without this permission, the report server will return the
following errors. For browse operations, the error is: "Report Server has encountered a SharePoint error. --->
System.UnauthorizedAccessException: Access is denied." For publish operations, the error is: "The permissions
granted to user '<domain>\<user>' are insufficient for performing this operation."

Permissions for viewing and managing reports


Report definition permissions are defined through List permissions on the library that contains the report, but
you can set permissions on individual reports if you want to restrict access. The following table provides a list of
tasks and permissions that support each one.
TA SK P ERM ISSIO N

View a report. View Items on the library that contains the files or on the
individual report.

View a clickthrough report that uses a report model as a View Items on the library that contains the report and the
data source. report model, or on the individual report and model. If you
do not have view permissions on the model, you can still
open the report but you cannot perform ad hoc exploration
on the data.

If the report model uses model item security, the user must
also have Enumerate Permissions permission on the
report model.

View snapshots in report history. Edit Items on the library that contains the files or on the
individual report. For a specific report, you can view all or
none of report history. It is not possible to set permissions
on individual snapshots in report history.

Upload or publish a report to library. Add Items on the library that will contain the report.

Set properties on a report, including data source connection Edit Items on the library that contains the report or on the
information, processing options, and parameter properties. individual report. You must also have view permissions on a
shared data source (.rsds) to select it for use with the report.

Schedule report processing. To select a shared schedule, you must have Open on the
site that contains the library that contains the report. To
schedule data processing or cache expiration, you must have
Edit Items on the library that contains the report or on the
individual report.

Delete a report. Delete Items on the library that contains the report or on
the individual report.

Replace report definition (without affecting properties, Edit Items on the library that contains the report or on the
permissions, history, or subscriptions) with a newer version. individual report.

Create snapshots in report history. Add Items on the library that contains the report for which
you are creating report history.

Create snapshots in report history. Add Items on the library that contains the report for which
you are creating report history.

Delete snapshots in report history, and delete specific Delete Versions on the library that contains the report for
versions of report definitions that have been checked out which you are deleting report history.
and modified over time.

View snapshots in report history, and view specific versions Views Versions on the library that contains the report.
of report definitions that have been checked out and
modified over time.

Permissions for creating reports and using Report Builder


Report Builder is a report authoring tool that you can use to create ad hoc reports. Report Builder uses report
models as a data source to support ad hoc data exploration. You can load a model in Report Builder to create a
report, run it, click through data in the model, and optionally save the report to a library. Users who have
sufficient permission can subsequently open the same report and also perform ad hoc data exploration.

NOTE
Access to Report Builder can be determined by factors other than permissions. A site administrator can disable ad hoc
reporting by setting server properties or limit the availability of Report Builder by not adding the Report Builder Report
content type, which prevents users from creating new reports from the New menu on a library. In addition, a report
server administrator can make Report Builder unavailable by setting properties on the report server. If any of these
conditions are true for your server, you cannot use Report Builder even if you have the necessary permissions.

The following table provides a list of tasks for creating reports and using Report Builder, and permissions that
support each one:

TA SK P ERM ISSIO N

Start Report Builder. There are no permissions that are explicitly used to control
access to use Report Builder. Report Builder is available if
report server integration is configured and you have
permission to add items to a library. To start Report Builder
from the New menu in library, you must register the Report
Builder content type. For more information, see Add
Reporting Services Content Types to a SharePoint Library.

Upload a model or shared data source. Add Items on the library that will contain the files.

View a model or dependent shared data source. View Items on the library that contains the files.

If the model contains model item security settings, the user


must also have Enumerate Permissions permission on the
model.

Generate a model from a shared data source. Add Items on the library that contains the shared data
source (.rsds) file from which you are generating the model.

Set permissions within a model on specific model items. Manage Permissions on the site that contains the library
and report model (.smdl) file.

Load a model in Report Builder. Edit Items on the report model (.smdl) file.

Create a report definition in Report Builder and save a Add Items to save the file to a library.
report to a library.

Edit a report in Report Builder. Edit Items on the report definition file.

Permissions to create and use subscriptions, report history, and set report or data processing options on a
Report Builder report are the same as those used for performing identical actions on standard report definition
files.

Permissions for creating and managing shared schedules


Shared schedules are not documents stored in a library. For this reason, creating and managing these schedules
requires site permissions. You cannot restrict access to specific shared schedules. Any shared schedule that you
create will be available to any user who has Open permission throughout the site.
The following table provides a list of tasks and permissions for creating, managing, and using shared schedules:
TA SK P ERM ISSIO N

Create, edit, or delete a shared schedule. Manage Web Site on the site.

Select a shared schedule for subscription processing or data Open on the site that contains the library.
retrieval.

Permissions for creating and managing subscriptions


SharePoint enforces a dependency between subscription and view permissions. You cannot subscribe to a report
that you do not have permission to view. If you grant permissions to subscribe to a report, view permissions are
granted automatically.
The following table provides a list of tasks and permissions for creating, managing, and using subscriptions:

TA SK P ERM ISSIO N

Create, edit, or delete a user-owned subscription to a specific Edit Items on the library that contains the report or on the
report. report itself. View Items is a dependent permission and will
be included in the permission level automatically. Users who
can create a subscription can also create custom schedules
to run that subscription.

Select a shared schedule to use with the subscription. Open on the site that contains the library.

Create, edit, or delete any subscription throughout a site. Manage Aler ts on the site.

Permissions for creating and managing shared data sources and


report models
A shared data source (.rsds) file contains data source connection information that can be used by multiple
reports and models. For standard reports, using an .rsds file to specify data source connection information is
optional. For model-driven reports, using an .rsds file is required. A report model always uses an .rsds file to
connect to external data sources.
You can set properties on shared data sources that determine whether individual users can view or manage
shared data sources. Permissions to view or manage a shared data source is different from report viewing
permissions; you can view a report that uses a .rsds file without having view permission on the .rsds file itself.

TA SK S P ERM ISSIO N

Create a shared data source. Add Items on the library that contains the shared data
source. You can create new shared data sources from the
New menu in a library. To do this, you must register the
Report Data Source content type with the library. For more
information, see Add Reporting Services Content Types to a
SharePoint Library.

Edit a shared data source. Edit Items on the library that contains the shared data
source or on the shared data source itself.

Delete a shared data source. Delete Items on the library that contains the shared data
source or on the shared data source itself.
TA SK S P ERM ISSIO N

Use a shared data source (.rsds) with a report. Edit Items on the report, or on the library that contains
the report. Selecting a shared data source is part of setting
data source properties on a report.

Generate a report model from a shared data source. Add Items on the library that will contain the report model.

Delete a report model. Delete Items on the library that contains the report model
or on the report model itself.

Set permissions within a model on specific model items. Manage Permissions on the site that contains the library
and report model (.smdl) file.

NOTE
There are no permissions for editing report models. Although you can generate or delete report models, you cannot edit
them from within a SharePoint site. Editing report models requires the Model Designer, a client authoring tool that is not
affected by permissions you set in SharePoint.

See Also
Granting Permissions on Report Server Items on a SharePoint Site
Compare Roles and Tasks in Reporting Services to SharePoint Groups and Permissions
Granting Permissions on Report Server Items on a SharePoint Site
Use Built-in Security in Windows SharePoint Services for Report Server Items
Set Permissions for Report Server Items on a
SharePoint Site
11/2/2020 • 3 minutes to read • Edit Online

If default security settings do not provide the level of access that you require, you can create new permission
levels to provide access to specific report server items or operations. Custom security settings can be useful if
you want to restrict access to a particular report.
You must be a site owner to create permission levels and groups. Permission levels are used globally throughout
a site. If you create a new permission level, it will be available to other site owners.
Most permissions are inherited from a parent site. If you assign permissions on a specific library or item, you
break permission inheritance and incur additional overhead in how manage permissions for that branch of your
site hierarchy.
You can set permissions on report definition (.rdl), model (.smdl), and shared data source (.rsds) files. You cannot
combine inherited and managed permissions on the same item. If you choose to manage permissions directly,
inherited permissions will have no effect on the current item. If you want to resume permission inheritance later,
you can select Inherit Permissions on the Actions menu.
To set permissions on entities and perspectives in a model, you must have Full Control level of permission for
the model. Full Control includes "Manage Permissions", which is a site level permission that is granted to site
owners and other SharePoint groups who have Full Control level of permission. If you want to offer specific
users the ability to set model item security, you must break permission inheritance and grant elevated
permissions (such as Full Control) to the user or group on the model file. When you grant Full Control on an
item such as a file in the library, the permissions are scoped to that item and do not extend to the parent or to
other items within the same library. After the user has Manage Permissions permission on the model, he or she
can use set model item security via the SharePoint site or Model Designer.
To set permissions on an individual report, model, or data source
1. If the library is not already open, click its name on the Quick Launch. If the name of your library does not
appear, click View All Site Content , and then click the name of your library.
2. Point to the report, report model, or shared data source file.
3. Click the down arrow, and on the menu, click Manage Permissions .
4. On the Actions menu, click Edit Permissions , and then click OK to confirm the action.
5. To give permissions to a user or group that does not yet have permissions to use the file, click New , and
then click Add Users .
6. To remove or modify permissions for an existing user or group, click the check box next to the user or
group, click Actions , and then click Remove User Permissions or Edit User Permissions .
To set permissions that enable model item security
1. Log in to the SharePoint site using an account that has Manage Permissions permission on the site.
2. Open the library that contains the model.
3. Point to the model.
4. Click the down arrow next to the model, and click Manage Permissions .
5. Click Actions .
6. Click Edit Permissions . Click OK .
7. Click New .
8. Click Add Users .
9. In Users/Groups, enter the user account.
10. Select Give users permission directly .
11. Click Full Control .
12. Click OK . Once a user has the ability to manage permissions for a specific model, he or she can open the
model to edit permissions within the model.

See Also
Use Built-in Security in Windows SharePoint Services for Report Server Items
Set Permissions for Report Server Operations in a SharePoint Web Application
Compare Roles and Tasks in Reporting Services to SharePoint Groups and Permissions
SharePoint Site and List Permission Reference for Report Server Items
Granting Permissions on Report Server Items on a SharePoint Site
Configure TLS connections on a native mode report
server
3/5/2021 • 6 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server 2016 Reporting Services and later ✔
️ Power BI Report Server
Reporting Services Native mode uses the HTTP SSL (Secure Sockets Layer) service to establish encrypted
connections to a report server. Transport Layer Security (TLS) was previously known as Secure Sockets Layer
(SSL). If you have certificate (.cer) file installed in a local certificate store on the report server computer, you can
bind the certificate to a Reporting Services URL reservation to support report server connections through an
encrypted channel.

TIP
If you are using Reporting Services SharePoint mode, see SharePoint documentation for more information. For example
How to enable TLS on a SharePoint 2010 web application.

Because Internet Information Services (IIS) also uses HTTP SSL, there are significant interoperability issues that
you must account for if you run IIS and Reporting Services on the same computer. Be sure to review the
Interoperability Issues with IIS section for guidance on how to address these issues.

Server certificate requirements


You must have a server certificate installed on the computer (client certificates are not supported). Reporting
Services does not provide functionality for requesting, generating, downloading, or installing a certificate.
Windows Server 2012 and later provide a Certificates snap-in that you can use to request a certificate from a
trusted certificate authority.
For testing purposes, you can generate a certificate locally. If you use the MakeCer t utility and the sample
command as a template, be sure to specify your server name as the host and remove all line breaks before
running the command. If you run the command in a DOS window, you might need to increase the buffer size of
the window to accommodate the entire command.
If you are running IIS and Reporting Services together on the same computer, you can use the IIS Manager
console application to get the certificate installed on your computer. IIS Manager includes options for creating
and packaging a certificate request (.crt) file for subsequent processing by a trusted certificate authority. The
certificate authority that you are using will generate a certificate (.cer) file and send it back to you. You can use
IIS Management console to install the certificate file in the local store. For more information, see Using SSL to
Encrypt Confidential Data on Technet.

Interoperability issues with IIS


The presence of IIS on the same computer as Reporting Services will significantly affect TLS connections to a
report server:
If IIS is installed, the World Wide Web (W3SVC) service must always be running. The HTTP SSL service
will make a dependency on IIS if it detects that IIS is running. This means that the World Wide Web
service (W3SVC) must be running whenever IIS and Reporting Services are installed on the same
computer and you are configuring report server URLs for TLS connections.
Uninstalling IIS can temporarily disrupt service to a TLS-bound report server URL. For this reason, it is
recommended that you restart the computer after you uninstall IIS.
Rebooting the computer is necessary to clear all TLS sessions from cache. Some operating systems cache
TLS sessions up to 10 hours, causing an https:// URL to continue to work even after the TLS binding has
been removed from the URL reservation in HTTP.SYS. Rebooting the computer closes any open
connections that use the channel.

Bind TLS to a reporting services URL reservation


The following steps do not include instructions for requesting, generating, downloading, or installing a
certificate. You must have a certificate installed and available to use. The certificate properties that you specify,
the certificate authority you obtain it from, and the tools and utilities you use to request and install the
certificate are up to you.
You can use the Reporting Services Configuration tool to bind the certificate. If the certificate is installed
correctly in the local computer store, the Reporting Services Configuration tool will detect it and display it in the
SSL Cer tificates list on the Web Ser vice URL and Web Por tal URL pages.
To configure a report server URL for TLS
1. Start the Reporting Services Configuration tool and connect to the report server.
2. Select Web Ser vice URL .
3. Expand the list of TLS/SSL Certificates. Reporting Services detects server authentication certificates in the
local store. If you installed a certificate and you do not see it in the list, you might need to restart the
service. You can use the Stop and Star t buttons on the Repor t Ser ver Status page in the Reporting
Services Configuration tool to restart the service (top page).
4. Select the certificate.
5. Click Apply .
6. Click the URL to verify it works.
Report server database configuration is a requirement for testing the URL. If you have not yet created the report
server database, do so before testing the URL.
URL reservations for Web Portal URL and the Report Server Web Services URL are configured independently. If
you want to also configure the web portal access through a TLS-encrypted channel, continue with the following
steps:
1. Access the Web Por tal URL .
2. Select Advanced .
3. In Multiple HTTPS Identities for the currently Repor ting Ser vice feature , select Add .
4. Select the certificate, select OK , and then select Apply .
5. Test the URL to verify it works.

How certificate bindings are stored


Certificate bindings will be stored in HTTP.SYS. A representation of the bindings you defined will also be stored
in the URLReser vations section of the RSReportServer.config file. The settings in the configuration file are only
a representation of actual values that are specified elsewhere. Do not modify the values in the configuration file
directly. The configuration settings will appear in the file only after you use the Reporting Services Configuration
tool or the Report Server Windows Management Instrumentation (WMI) provider to bind a certificate.
NOTE
If you configure a binding with a TLS/SSL certificate in Reporting Services and you later want to remove the certificate
from the computer, make sure to remove the binding from Reporting Services before you remove the certificate from the
computer. Otherwise, you will be unable to remove the binding by using the Reporting Services Configuration tool or
WMI and you will receive an "Invalid parameter" error. If you have already removed the certificate from the computer, you
can use the Httpcfg.exe tool to remove the binding from HTTP.SYS. For more information about Httpcfg.exe, see the
Windows product documentation.

TLS bindings are a shared resource in Microsoft Windows. Changes made by Reporting Services Configuration
Manager or other tools like IIS Manager can impact other applications on the same computer. It is a best practice
to use the same tool to edit bindings that you used to create the bindings. For example if you created TLS
bindings using Configuration Manager, then it is recommended you use Configuration Manager to manage the
life cycle of the bindings. If you use IIS manager to create bindings, then it is recommended you use IIS manager
to manage the life cycle of the bindings. If IIS is installed on the computer before Reporting Services is installed,
it is a good practice to review the TLS configuration in IIS before configuring Reporting Services.
If you remove TLS bindings for Reporting Services using the Report Server Configuration Manager, TLS may no
longer work for Web sites on a server that is running Internet Information Services (IIS) or on another HTTP.SYS
server. Reporting Services Configuration Manager removes the following registry key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Ser vices\HTTP\Parameters\SslBindingInfo\0.0
.0.0:443 When this registry key is removed, the TLS binding for IIS is also removed. Without this binding, TLS is
not provided for the HTTPS protocol. To diagnose this issue, use IIS Manager or the HTTPCFG.exe command line
utility. To resolve the issue, restore the TLS binding for your web sites using IIS Manager. To prevent this issue in
the future, use IIS Manager to remove the TLS bindings and then use IIS Manager to restore the binding for the
desired Web sites. For more information, see the knowledge base article SSL no longer works after you remove
an SSL binding (https://support.microsoft.com/kb/956209/n).

See also
Authentication with the Report Server
Configure and Administer a Report Server (SSRS Native Mode)
RsReportServer.config Configuration File
Configure Report Server URLs (Report Server Configuration Manager)
Configure Reporting Services to use a Subject
Alternative Name (SAN)
7/2/2021 • 3 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server 2016 Reporting Services and later ✔
️ Power BI Report Server
This topic explains how to configure Reporting Services (SSRS) and Power BI Report Server to use a Subject
Alternative Name (SAN), by modifying the rsreportserver.config file and using the Netsh.exe tool.
The instructions apply to the Web Service URL as well as the Web Portal URL in the Report Server Configuration
Manager tool.
To use a SAN, the TLS/SSL certificate must be registered on the server, signed, and have the private key. You
cannot use a self-signed certificate.
URLs in Reporting Services and Power BI Report Server can be configured to use a TLS/SSL certificate. A
certificate normally has just a subject name, which allows only one URL for a Transport Layer Security (TLS),
previously known as Secure Sockets Layer (SSL), session. The SAN is an additional field in the certificate that
allows a TLS service to listen for many URLs, and to share the TLS port with other applications. For example, a
SAN could look something like www.myreports.com .
For more information about TLS settings for Reporting Services, see Configure TLS Connections on a Native
Mode Report Server.

Configure to use a Subject Alternative Name for Web Service URL


1. Start Report Server Configuration Manager.
For more information, see Report Server Configuration Manager (Native Mode).
2. On the Web Ser vice URL page, select a TLS/SSL port and TLS/SSL Certificate.

The configuration manager registers the TLS/SSL certificate for the port.
3. Open the rsreportserver.config file.
For SSRS 2016 Native mode, the file is located by default in the following folder:

\Program Files\Microsoft SQL Server\MSRS13.MSSQLSERVER\Reporting Services\ReportServer

For SSRS 2017 and later, the file is located by default in the following folder:

\Program Files\Microsoft SQL Server Reporting Services\SSRS\ReportServer

For Power BI Report Server, the file is located by default in the following folder:

\Program Files\Microsoft Power BI Report Server\PBIRS\ReportServer

4. Copy the URL section for the Repor tSer verWebSer vice application.
For example, the following original URL section is:

<URL>
<UrlString>https://+:443</UrlString>
<AccountSid>S-1-5-80-2885764129-887777008-271615777-1616004480-2722851051</AccountSid>
<AccountName>NT Service\ReportServer</AccountName>
</URL>

The following modified URL section is:

<URL>
<UrlString>https://+:443</UrlString>
<AccountSid>S-1-5-80-2885764129-887777008-271615777-1616004480-2722851051</AccountSid>
<AccountName>NT Service\ReportServer</AccountName>
</URL>
<URL>
<UrlString>https://www.myreports.com:443</UrlString>
<AccountSid>S-1-5-80-2885764129-887777008-271615777-1616004480-2722851051/AccountSid>
<AccountName>NT Service\ReportServer</AccountName>
</URL>

TIP
For SSRS 2017 and later, the AccountSid value is
S-1-5-80-4050220999-2730734961-1537482082-519850261-379003301 and the AccountName value is
NT SERVICE\SQLServerReportingServices .
For Power BI Report Server, the AccountSid value is
S-1-5-80-1730998386-2757299892-37364343-1607169425-3512908663 and the AccountName value is
NT SERVICE\PowerBIReportServer .

5. Repeat this process for the Repor tSer verWebApp URL section.
6. Save the rsreportserver.config file.
7. Start a command prompt using Run as Administrator .
8. Show the existing urlacls by typing the following:
Netsh http show urlacl

An entry such as the following appears.

Reserved URL : https://+:443/ReportServer/


User: NT SERVICE\ReportServer
Listen: Yes
Delegate: No
SDDL: D:(A;;GX;;;S-1-5-80-2885764129-887777008-271615777-1616004480-2722851051)

An urlacl is a DACL (Discretionary Access Control List) for a reserved URL.


9. Create a new entry for the Subject Alternative Name, with the same user and SDDL as the existing entry,
by typing the following:

netsh http add urlacl url=https://www.myreports.com:443/ReportServer


user="NT Service\ReportServer" sddl=D:(A;;GX;;;S-1-5-80-2885764129-887777008-271615777-1616004480-
2722851051)

TIP
If you copy the code to Notepad to edit, rather than typing it manually, remove the CRLF before pasting the code
into the command prompt.

10. For the Web Por tal URL , create a new entry for the Subject Alternative Name by typing the following:

netsh http add urlacl url=https://www.myreports.com:443/Reports


user="NT Service\ReportServer" sddl=D:(A;;GX;;;S-1-5-80-2885764129-887777008-271615777-1616004480-
2722851051)

TIP
For SSRS 2017 and later, the user value is NT SERVICE\SQLServerReportingServices and the sddl value
is D:(A;;GX;;;S-1-5-80-4050220999-2730734961-1537482082-519850261-379003301) .
For Power BI Report Server, the user value is NT SERVICE\PowerBIReportServer and the sddl value is
S-1-5-80-1730998386-2757299892-37364343-1607169425-3512908663

NOTE
For Power BI Report Server, you need to create two additional entries for the Subject Alternative Name by typing
the following:
add urlacl url=https://www.myreports.com:443/PowerBI user="NT SERVICE\PowerBIReportServer"
sddl=D:(A;;GX;;;S-1-5-80-1730998386-2757299892-37364343-1607169425-3512908663)
add urlacl url=https://www.myreports.com:443/wopi user="NT SERVICE\PowerBIReportServer" sddl=D:
(A;;GX;;;S-1-5-80-1730998386-2757299892-37364343-1607169425-3512908663)

11. On the Repor t Ser ver Status page of the Report Server Configuration Manager, Click Stop and then
click Star t to restart the report server.
See also
RsReportServer.config configuration file
Report Server Configuration Manager
Modify a Reporting Services configuration file
Configure Report Server URLs
More questions? Try asking the Reporting Services forum
Schedules
4/6/2020 • 10 minutes to read • Edit Online

Reporting Services provides shared schedules and repor t-specific schedules to help you control
processing and distribution of reports. The difference between the two types of schedules is how they are
defined, stored, and managed. The internal construction of the two types of schedules is the same. All schedules
specify a type of recurrence: monthly, weekly, or daily. Within the recurrence type, you set the intervals and
range for how often an event is to occur. The type of recurrence pattern and how those patterns are specified is
the same whether you create a shared schedule or a report-specific schedule.
Shared schedules are created as separate items. After they are created, you reference them when defining
a subscription or some other scheduled operation.
Report-specific schedules are created when you define a subscription or set report execution properties;
filling out schedule information is part of defining a subscription or setting properties. To define a report-
specific schedule, you open the report or subscription that uses it.
A shared schedule contains schedule and recurrence information that can be used by any number of published
reports and subscriptions that run on a Reporting Services report server. If you have many reports and
subscriptions that run at the same time, you can create a shared schedule for those jobs. If you want to
subsequently change the recurrence pattern or the end date, you can make the change in one place.
Shared schedules are easier to maintain and give you more flexibility in managing scheduled operations. For
example, you can pause and resume shared schedules. Also, if you find that too many scheduled operations are
running at the same time, you can create multiple shared schedules that run at different times and then adjust
the schedule information until the processing load evens out across the report server.

What you can do with Schedules


You can use the Reporting Services Web portal and SQL Server Management Studio in Native mode and
SharePoint site administration pages in SharePoint mode to create and manage your schedules. You can:
Schedule report delivery in a standard or data-driven subscription.
Schedule report history so that new snapshots are added to report history at regular intervals.
Schedule when to refresh the data of a report snapshot.
Schedule when to refresh the data of a shared dataset
Schedule the expiration of a cached report or shared dataset to occur at a predefined time so that it can
be subsequently refreshed.
You can create a shared schedule if you want to use the same schedule information for many reports or
subscriptions. Shared schedules are defined separately, and then referenced in reports, shared datasets, and
subscriptions that need schedule information.
When you create a schedule, the report saves the schedule information in the report server database or for
SharePoint mode, the service application database. The report server also creates a SQL Server Agent job that is
used to trigger the schedule. Schedule processing is based on the local time of the report server that contains
the schedule. The time format follows the Microsoft Windows operating system standard.
For details on how to create and manage schedules, see Create, Modify, and Delete Schedules.
NOTE
Schedule operations are not available in every edition of SQL Server. For a list of features that are supported by the
editions of SQL Server, see Editions and supported features of SQL Server 2017.

Comparing Shared and Report-Specific Schedules


Both types of schedules yield the same output:.
Shared schedules are portable, multipurpose items that contain ready-to-use schedule information.
Because shared schedules are system-level items, creating a shared schedule requires system-level
permissions. For this reason, a report server administrator or content manager typically creates the
shared schedules that are available on your report server. Shared schedules are stored and managed on
the report server by using the Web portal or SharePoint site settings.
In contrast with specific schedules that you define through report, shared dataset, or subscription
properties, shared schedules are easier to manage and maintain for the following reasons:
Shared schedules can be managed from a central location, making it easier to compare schedule
properties and adjust frequency and recurrence patterns if scheduled operations are running too
close together or conflicting with other processes on your server.
Allows you to quickly adapt to changes in the computing environment. For example, suppose you
have a set of reports that run at 4:00 A.M. after a data warehouse is refreshed. If the data refresh
operation is rescheduled or is delayed, you can easily accommodate that change by updating the
schedule information in a single shared schedule.
If you use only shared schedules, you know precisely when scheduled operations occur. This
makes it easier to anticipate and accommodate server loads before performance issues occur. For
example, if you decide to schedule computer backups at a specific hour, you can adjust shared
schedules to run at different times.
Repor t-specific schedules are defined in the context of an individual report, subscription, or report
execution operation to determine cache expiration or snapshot updates. These schedules are created
inline when you define a subscription or set report execution properties. You can create a report-specific
schedule if a shared schedule does not provide the frequency or recurrence pattern that you need. To
prevent a report from running, you must edit a report-specific schedule manually. Report-specific
schedules can be created by individual users.

Configure the Data Sources


Before you can schedule data or subscription processing for a report, you must configure the report data source
to use stored credentials or the unattended report processing account. If you use stored credentials, you can
only store one set of credentials, and they will be used by all users who run the report. The credentials can be a
Windows user account or a database user account.
The unattended report processing account is a special-purpose account that is configured on the report server. It
is used by the report server to connect to remote computers when a scheduled operation requires the retrieval
of an external file or processing. If you configure the account, you can use it to connect to external data sources
that provide data to a report.
To specify stored credentials or the unattended report processing account, edit the data source properties of the
report. If the report uses a shared data source, edit the shared data source instead.

Store Credentials and Processing accounts


How you work with a schedule depends on tasks that are part of your role assignment. If you are using
predefined roles, users who are Content Managers and System Administrators can create and manage any
schedule. If you use custom role assignments, the role assignment must include tasks that support scheduled
operations.

N AT IVE M O DE P REDEF IN ED SH A REP O IN T M O DE


TO DO T H IS IN C L UDE T H IS TA SK RO L ES GRO UP S

Create, modify, or delete Manage shared schedules System Administrator Owners


shared schedules

Select shared schedules View shared schedules System User Members

Create, modify, or delete Manage individual Browser, Report Builder, My Visitors, Members
report-specific schedules in subscriptions Reports, Content Manager
a user-defined subscription

Create, modify, or delete Manage report history, Content Manager Owners


report-specific schedules for manage all subscriptions,
all other scheduled manage reports
operations

For more information about security in Native mode Reporting Services, see Predefined Roles, Granting
Permissions on a Native Mode Report Server and Tasks and Permissions. For SharePoint mode, see Compare
Roles and Tasks in Reporting Services to SharePoint Groups and Permissions

How Scheduling and Delivery Processing Works


The Scheduling and Delivery Processor provides the following functionality:
Maintains a queue of events and notifications in the report server database. In a scale-out deployment,
the queue is shared across all of the report servers in the deployment.
Calls the Report Processor to execute reports, process subscriptions, or clear a cached report. All report
processing that occurs as a result of a schedule event is performed as a background process. SharePoint
mode utilizes timer jobs to .
Calls the delivery extension that is specified in a subscription so that the report can be delivered.
Other aspects of a scheduling and delivery operation are handled by other components and services that work
with the Scheduling and Delivery Processor. Specifically, the Scheduling and Delivery Processor runs in the
Report Server service and uses SQL Server Agent as a timer to generate scheduled events. The following step-
by-step description explains how the scheduled operations work in a Reporting Services deployment:
1. A scheduled operation is defined when a user creates a schedule. The schedule defines a date and time
that will be used to trigger a subscription for report delivery, refresh a snapshot, or expire a cache.
2. The report server saves the schedule information in the report server database.
3. The report server creates a corresponding job in SQL Server Agent that includes the schedule
information provided. The jobs are created through a stored procedure, using the existing open
connection to the report server database.
4. SQL Server Agent runs the job on the date and time specified in the schedule. The job creates an event
that is added to a queue maintained by Reporting Services.
5. The event causes a report or subscription process to occur. Events are processed when they are detected
in the queue, and the report is processed or delivered accordingly.
Before the events are processed, the Scheduling and Delivery Processor performs an authentication step
to verify that the subscription owner has permission to view the report.
Reporting Services maintains an event queue for all scheduled operations. It polls the queue at regular intervals
to check for new events. By default, the queue is scanned at 10 second intervals. You can change the interval by
modifying the PollingInter val , IsNotificationSer vice , and IsEventSer vice configuration settings in the
RSReportServer.config file. SharePoint mode also uses the RSreporserver.config for these settings and the
values apply to all Reporting Services service applications. For more information, see RsReportServer.config
Configuration File.

Server Dependencies
The Scheduling and Delivery Processor requires that the Report Server service and SQL Server Agent are
started. The Schedule and Delivery Processing feature must be enabled through the
ScheduleEventsAndRepor tDeliver yEnabled property of the Surface Area Configuration for Repor ting
Ser vices facet in Policy-Based Management. Both SQL Server Agent and the Report Server service must
running in order for scheduled operations to occur.

NOTE
You can use the Surface Area Configuration for Repor ting Ser vices facet to stop scheduled operations on a
temporary or permanent basis. Although you can create and deploy custom delivery extensions, by itself the Scheduling
and Delivery Processor is not extensible. You cannot change how it manages events and notifications. For more
information about turn off features, see the Scheduled Events and Deliver y section of Turn Reporting Services
Features On or Off.

Effects of Stopping the SQL Server Agent


Scheduled report processing uses SQL Server Agent by default. If you stop the service, no new processing
requests are added to the queue unless you add them programmatically through the FireEvent method. When
you restart the service, the jobs that create report processing requests are resumed. The report server does not
try to recreate report processing jobs that might have occurred in the past, while SQL Server Agent was offline.
If you stop SQL Server Agent for a week, all scheduled operations are lost for that week.

NOTE
The functionality that SQL Server Agent provides to Reporting Services can be replaced with custom code that uses the
FireEvent method to add schedule events to the queue.

Effects of Stopping the Report Server Service


If you stop the Report Server service, SQL Server Agent continues to add report processing requests to the
queue. Status information from SQL Server Agent indicates that the job succeeded. However, because the Report
Server service is stopped, no report processing actually occurs. The requests will continue to accumulate in the
queue until you restart the Report Server service. Once you restart the Report Server service, all report
processing requests that are in the queue are processed in order.

See Also
Create, Modify, and Delete Snapshots in Report History
Subscriptions and Delivery (Reporting Services)
Data-Driven Subscriptions
Caching Reports (SSRS)
Report Server Content Management (SSRS Native Mode)
Cache Shared Datasets (SSRS)
Create, Modify, and Delete Schedules
4/6/2020 • 8 minutes to read • Edit Online

Use this article to learn about how to create, modify, and delete Reporting Services shared schedules. To manage
shared schedules for native mode, use the Schedules page in the web portal or the shared schedules folder in
Management Studio. For SharePoint mode use, the management pages for the Reporting Services service
application.
Use one of the following methods to determine if a shared schedule is actively used:
Web por tal: On the Schedules tab of the Site Settings , review the values in the Last Run date, Next
Run date, and Status fields. If a schedule no longer runs because it has expired, the expiration date
appears in the Status field. For more information, see Web portal (SSRS Native Mode).
SQL Ser ver Management Studio: Viewing the Repor ts page of a given shared schedule. This page
lists all reports and shared datasets that use the shared schedule. For more information, see Reporting
Services in SQL Server Management Studio.
Logs: Viewing the report execution log files or trace logs to determine whether reports have been run at
the times specified by the schedule. For more information, see Reporting Services Log Files and Sources.

When you delete a shared schedule


Shared schedules must be deleted manually using the Schedules page in the web portal or the Shared
Schedules folder in Management Studio. If you delete a shared schedule that is in use, all references to it are
replaced with report-specific schedules.
If you delete a shared schedule that is used by multiple reports and subscriptions, the report server will create
individual schedules for each report and subscription that previously used the shared schedule. Each new
individual schedule will contain the date, time, and recurrence pattern that was specified in the shared schedule.
Note that Reporting Services does not provide central management of individual schedules. If you delete a
shared schedule, you will now have to maintain the schedule information for each individual item.
Note: If you are not sure if a shared schedule is used, consider deleting it in Management Studio instead of the
Web portal. Management Studio provides the same shared schedule management features as Report Manager,
but it provides an additional Reports page that shows you the name of each report that uses the schedule.
Deleting a schedule and causing it to expire are different. An expiration date is used to stop a schedule but does
not delete it. Because schedules are used to automate so many features, they are never deleted automatically.
Expired schedules provide evidence to report server administrators as to why an automated process has
suddenly stopped. Without the presence of the expired schedule, a report server administrator can misdiagnose
the problem or spend unnecessary time trying to troubleshoot a fully functional process.

When you delete a report specific schedule


Report and subscription-specific schedules are deleted when you delete the report or subscription, or when you
choose a different approach to run the report or subscription. For example, choosing Always run this repor t
with the most recent data will delete a report-specific schedule that you created to run a report as a report
execution snapshot.
A report-specific schedule that has expired remains attached to the report. You can determine if a schedule has
expired by checking its end date. An expired shared schedules remains in the Shared Schedules list. The Status
field indicates whether the schedule has expired. You can reinstate the schedule by extending the end date, or
you can remove the schedule reference if you no longer need it.

Create, delete, or modify a shared schedule (web portal)


Creating and modifying a schedule consists of setting frequency options that determine when the schedule runs.
You can create or modify a schedule at any time. However, if a schedule starts to run before you have completed
your modifications, the earlier version of the schedule is used. The revised schedule does not take effect until
you save it.
If you are modifying a shared schedule, you can pause it before you make changes. The changes take effect
when you resume the schedule.

1. In the web portal, select Settings in the toolbar.

NOTE
If Settings is not available, you do not have permission to access site settings.

2. Select Site settings from the dropdown menu.


3. Select the Schedules tab.
4. Select + New schedule . (To modify an existing schedule, select the name of the schedule.)
5. Type a descriptive name for the schedule.
6. Select Hour , Day , Week , or Month . Click Once to create a schedule that runs one time only. Additional
options appear when you specify the basis of your schedule.
7. Optionally select a date to start the schedule. The default is the current day. You can postpone the
schedule start time by choosing a later date.
8. Optionally, select a date to end the schedule. The schedule stops running on this date, but is not deleted.
9. Select a time for the schedule to run.
10. Select OK .
To delete a shared schedule (web portal)
1. In the web portal, select Settings in the toolbar.
2. Select Site settings from the dropdown menu.
3. Select the Schedules tab.
4. Select the check box next to the shared schedule you want to delete, and then select Delete .
Create, delete, or modify a shared schedule ( Management Studio )
A shared schedule contains schedule and recurrence information that can be used by any number of published
reports and subscriptions that run on a Reporting Services report server. If you have many reports and
subscriptions that run at the same time, you can create a shared schedule for those jobs. If you want to
subsequently change the recurrence pattern or the end date, you can make the change in one place.
Shared schedules are easier to maintain and give you more flexibility in managing scheduled operations. For
example, you can pause and resume shared schedules. Also, if you find that too many scheduled operations are
running at the same time, you can create multiple shared schedules that run at different times and then adjust
the schedule information until the processing load evens out across the report server.
To create or modify a shared schedule (Management Studio)
1. Start SQL Server Management Studio and connect to a report server instance.
2. In Object Explorer, expand a report server node.
3. Right-click the Shared Schedules folder, and then click New Schedule . The General page of the New
Shared Schedule dialog box is displayed.
To modify an existing shared schedule, expand the Shared Schedules folder, right-click the schedule you
want to modify, and then click Proper ties .
4. Type a descriptive name for the schedule.
5. Optionally select a date to start the schedule. The default is the current day.
6. Optionally select a date to end the schedule. The schedule stops running on this date, but is not deleted.
7. To configure a recurring schedule, select Hour , Day , Week , or Month . Additional options are displayed.
Use these additional options to configure schedule frequency, based on your preferred hour, day, week, or
month.
Or, to specify a one-time (non-recurring) schedule, select Once , and then specify a Star t time .
8. Select OK .
To d e l e t e a sh a r e d sc h e d u l e (M a n a g e m e n t St u d i o )

1. In Object Explorer, expand a report server node.


2. To verify the shared schedule is not currently used by reports, Expand the Shared Schedules folder, right-click
the schedule and click Proper ties .
3. click the Repor ts tab to view the list of reports currently using the schedule. click Cancel
4. Expand the Shared Schedules folder, right-click the schedule you want to delete, and then click Delete . The
Delete Catalog Items dialog box appears.
5. Select OK .
If you delete a shared schedule that is used by multiple reports and subscriptions, the report server will create
individual schedules for each report and subscription that previously used the shared schedule. Each new
individual schedule will contain the date, time, and recurrence pattern that was specified in the shared schedule.

Create and manage shared schedules (SharePoint Mode)


You must be a site administrator to create, modify, or delete shared schedules on a SharePoint site.
You can identify a specific schedule by its descriptive name. If a name is not specified, a default name is created
based on facts about the schedule, such as its recurrence pattern or dates and times when it runs.

NOTE
Creating shared schedules requires SQL Server Agent service.

Create Shared Schedules (SharePoint mode )


1. Click Site Actions .
2. Click Site Settings .
3. In the Reporting Services section, click Manage Shared Schedules .
4. Click Add Schedule to open the Schedule Properties page.
5. Enter a descriptive name for the schedule. On the application pages used to work with Reporting Services
reports, this name will appear in drop-down lists in schedule definition pages throughout the site. Avoid long
names that are hard to read. Do follow a naming convention that puts the most description information at
the beginning of the name.
6. Choose a frequency. Depending on the frequency you choose, the schedule options that appear on the page
might change to support that frequency (for example, if you choose Month , the name of each month will
appear on the page).
7. Define the schedule. Not all schedule combinations can be supported in a single schedule.
8. Set a start and end date.
9. Click OK .
Delete Shared Schedules (SharePoint mode )
All schedules, whether shared or report specific, must be deleted manually. If you delete a shared schedule that
is in use, all references to it are replaced with unspecified custom schedules (that is, a custom schedule that does
not have date or time information).
1. Click Site Actions .
2. Click Site Settings .
3. In the Reporting Services section, click Manage Shared Schedules .
4. Select the schedule, and click Delete .

See also
Schedules
Pause and Resume Shared Schedules
Caching Reports (SSRS)
Create, Modify, and Delete Snapshots in Report History
Pause and Resume Shared Schedules
4/6/2020 • 2 minutes to read • Edit Online

You can pause and resume a shared schedule that is in use. Pausing a shared schedule provides a way to
temporarily freeze a schedule that is used to trigger report processing and subscriptions. Only shared schedules
can be paused and resumed. You cannot pause report-specific schedules.
You cannot pause and resume report processing that is in progress. You can only pause and resume schedules
that are in the scheduling queue of SQL Server Agent service. A job that is in progress is outside the scope of
the scheduling engine. For more information, see Manage a Running Process
While a shared schedule is paused, any operations that would have occurred are allowed to lapse. After you
resume a shared schedule, report and subscription processing occurs at the next scheduled time, using the local
time of the server. The native mode report server or SharePoint service applications, do not make up scheduled
operations that would have occurred had the schedule not been paused.
In this Topic:
Pause and Resume Shared Schedules (Native Mode)
Pause and Resume Shared Schedules (SharePoint mode)

Pause and Resume Shared Schedules (Native Mode)


To pause and resume a shared schedule, use the Schedules page in Report Manager. You cannot use SQL Server
Management Studio; it does not provide options for pausing and resuming schedules. For more information, see
Create, Modify, and Delete Schedules.
To pause or resume a shared schedule
1. From Report Manager Click, Site Settings .
2. Click Schedules .
3. Select the schedule, and click Pause or Resume in the ribbon. If a Schedule is currently paused, the
Status column will contain Paused .

Pause and Resume Shared Schedules (SharePoint mode)


To pause and resume a shared schedule, use the Site Settings page or PowerShell. Schedules are managed per
SharePoint site.
To pause or resume a shared schedule
1. Click Site Actions .
2. Click Site Settings .
3. In the Reporting Services section, click Manage Shared Schedules .
4. Select the schedule, and click Pause Selected Schedules or Run Selected Schedules . If a Schedule is
currently paused, the Status column will contain Paused .

See Also
Schedules
Create, Modify, and Delete Schedules
Change Time Zones and Clock Settings on a Report Server
Manage a Running Process
Change Time Zones and Clock Settings on a Report
Server
11/2/2020 • 2 minutes to read • Edit Online

A report server always uses the local time of the computer on which it is installed. You cannot configure it to use
a different time zone. If a client application points to a report server in a different time zone, the report server
time zone is used to execute a scheduled operation. In Report Manager and SharePoint management pages, the
time zone is indicated on each scheduling page so that you know exactly when a scheduled operation will occur.
For example, the page for creating custom schedules will note "Times are expressed in (UTC-08:00) Pacific time
(US and Canada)." The report server creates a SQL Server Agent job that is used to trigger the schedule. When
the Report Server and the SQL Server Agent are located on separate servers, the time zone must be the same
on all servers.

Changing the Time Zone (Native Mode)


If you change the time zone on a computer hosting a report server, you must restart the Report Server service
in order for the time zone change to take effect.
Timestamp values of existing report history snapshots are synchronized to the new time zone setting. If you
generated a report history snapshot at 9:00 A.M., and then reset the time zone ahead one time zone, the
timestamp on the generated snapshot will change from 9:00 A.M. to 10:00 A.M.
Schedules retain existing settings, except that they are mapped to the new time zone. For example, if a schedule
runs at 2:00 A.M. Pacific Standard Time and you change the time zone to East Australia Standard Time, the
schedule runs at 2:00 A.M. East Australia Standard Time.
Property timestamp values (for example, the time at which a folder or linked report item is created) are not
synchronized to a new time zone setting. If you create an item on June 25 at 9:00 A.M., and then reset the time
zone or clock, the timestamp remains June 25 at 9:00 A.M.

Changing the Time Zone (SharePoint Mode)


The time zone configuration for Reporting Services SharePoint mode is managed as part of the SharePoint
regional settings. For more information, see Regional settings (SharePoint Server 2010 (/previous-
versions/office/sharepoint-server-2010/cc824907(v=office.14)).

Changing the Clock Settings


Changing the computer clock has no effect on existing timestamp values (for example, if you move the clock
forward an hour, the timestamps of report history snapshots do not change). There may be a delay of 10
seconds before the Scheduling and Delivery Processor uses the new setting. The actual delay may vary if you
modified polling interval settings in the configuration files.

See Also
Start and Stop the Report Server Service
Schedules
Manage a Running Process
11/2/2020 • 5 minutes to read • Edit Online

SQL Server Reporting Services monitors the status of jobs that are running on the report server. At regular
intervals, the report server does a scan of in-progress jobs and writes the status information to the report
server database or the service application databases for SharePoint mode. A job is in progress if any of the
following processes are underway: query execution on a remote or local database server, report processing, and
report rendering.
You can manage both user jobs and system jobs.
User jobs are initiated by an individual user or subscription. This includes running a report on demand,
requesting a report history snapshot, manually creating a report snapshot, and processing a standard
subscription.
System jobs are initiated by the report server. System jobs include scheduled report execution snapshots,
scheduled report history snapshots, and data-driven subscriptions.
Report processing time and resource use varies considerably depending on the report, the query complexity, the
amount of data, and the rendering format that is specified for the report. Reports that have simple queries
against a local data source will often complete in milliseconds and never require management or tuning. In
contrast, a large report that is rendered in PDF or Excel might require significant processing time depending on
hardware resources, delivery options, and whether other processes are running concurrently. On a report server,
most long-running processes are report rendering operations and processes that are waiting for query
processing to conclude. Occasionally, you might need to cancel a report process if you want to take a computer
offline, or stop a running job that is taking too long to complete.
The following processes can be cancelled:
On-demand report processing.
Scheduled report processing.
Standard subscriptions owned by individual users.
Canceling a job only cancels the processes that are running on the report server. Because the report server does
not manage data processing that occurs on other computers, you must manually cancel query processes that
are subsequently orphaned on other systems. Consider specifying query time-out values to automatically shut
down queries that are taking too long to execute. For more information, see Setting Time-out Values for Report
and Shared Dataset Processing (SSRS). For more information about temporarily pausing a report, see Disable or
Pause Report and Subscription Processing.

NOTE
In rare circumstances, you may need to restart the server to cancel a process. For SharePoint mode, you may need to
restart the application pool hosting the Reporting Services service application. For more information, see Start and Stop
the Report Server Service.

In this Topic:
View and Cancel Jobs (Native Mode)
View and Cancel Jobs (SharePoint Mode)
Managing Jobs Programmatically

View and Cancel Jobs (Native Mode)


You can use SQL Server Management Studio to view or cancel a job that is running on the report server. You
must refresh the page to retrieve a list of jobs that are currently running or to get up-to-date job status from the
report server database. When you connect to a report server in Management Studio, you can open a Jobs folder
to view a list of reports that are currently processing on the report server computer. Status information for each
job is displayed in the Job Properties page. You can view status information for all jobs by opening the Cancel
Report Server Jobs dialog box.
You can use SQL Server Management Studio to view or cancel a job that is running on the report server. You
must refresh the page to retrieve a list of jobs that are currently running or to get up-to-date job status from the
report server database. When you connect to a report server in Management Studio, you can open a Jobs folder
to view a list of reports that are currently processing on the report server computer. Status information for each
job is displayed in the Job Properties page. You can view status information for all jobs by opening the Cancel
Report Server Jobs dialog box.
You cannot use Management Studio to list or cancel model generation, model processing, or data-driven
subscriptions. Reporting a Services does not provide a way to cancel model generation or processing. However,
you can cancel data-driven subscriptions using the instructions provided in this topic.
How to Cancel Report Processing or Subscription
1. In Management Studio, connect to the report server. For instructions, see Connect to a Report Server in
Management Studio.
2. Open the Jobs folder.
3. Right-click the report and then click Cancel Jobs .
How to Cancel a Data-driven Subscription
1. Open the RSReportServer.config file in a text editor.
2. Find IsNotificationSer vice .
3. Set it to False .
4. Save the file.
5. In Report Manager, delete the data-driven subscription from the Subscriptions tab of the report or from
My Subscriptions .
6. After you delete the subscription, in the RSReportServer.config file, find IsNotificationSer vice and set it
to True .
7. Save the file.
Configuring Frequency Settings for Retrieving Job Status
A running job is stored in the report server temporary database. You can modify configuration settings in the
RSReportServer.config file to control how often the report server scans for in-progress jobs and the interval
after which the status of a running job changes from new to running. The RunningRequestsDbCycle setting
specifies how often the report server scans for running processes. By default, status information is recorded
every 60 seconds. The RunningRequestsAge setting specifies the interval at which a job is transitioned from
new to running.

View and Cancel Jobs (SharePoint Mode)


Management of jobs in a SharePoint mode deployment is completed using SharePoint Central Administration,
for each Reporting Services service application.
To manage jobs in SharePoint mode
1. In SharePoint Central Administration, click Manage ser vice applications .
2. Find and click the name of your Reporting Services service application to open the manage application
page.
3. Click Manage Jobs
4. Click the Job Id to see the details of the job.
5. Or click the box for your job and click Delete to cancel the job. Deleting the job does not delete the
subscription.

Managing Jobs Programmatically


You can manage jobs programmatically or by using a script. For more information, see ListJobs, CancelJob.

See Also
Cancel Report Server Jobs (Management Studio)
Job Properties (Management Studio)
Modify a Reporting Services Configuration File (RSreportserver.config)
RsReportServer.config Configuration File
Report Manager (SSRS Native Mode)
Monitoring Report Server Performance
Subscriptions and Delivery (Reporting Services)
11/2/2020 • 12 minutes to read • Edit Online

A Reporting Services subscription is a configuration that delivers a report at a specific time or in response to an
event, and in a file format that you specify. For example, every Wednesday, save the MonthlySales.rdl report as a
Microsoft Word document to a file share. Subscriptions can be used to schedule and automate the delivery of a
report and with a specific set of report parameter values.
You can create multiple subscriptions for a single report to vary the subscription options; for example, you can
specify different parameter values to produce three versions of a report, such as a Western region sales report,
Eastern region sales, and all sales.

Subscriptions are not available in every edition of SQL Server. For a list of features that are supported by the
editions of SQL Server, see Editions and supported features of SQL Server 2017.
In this topic:
Subscription and delivery scenarios
Standard and data-driven subscriptions
Subscription requirements
Delivery extensions
Parts of a subscription
How subscriptions are processed
Programmatic control of subscriptions
Topics In this section:
E-Mail Delivery in Reporting Services Describes report server e-mail delivery operation and
configuration.
Create and Manage Subscriptions for Native Mode Report Servers Detailed steps for creating
subscriptions with a Native mode report server.
Create and Manage Subscriptions for SharePoint Mode Report Servers Detailed steps for creating
subscriptions with a SharePoint mode report server.
File Share Delivery in Reporting Services Describes report server file share delivery operation and
configuration.
Disable or Pause Report and Subscription Processing.
SharePoint Library Delivery in Reporting Services Describes subscription delivery to a SharePoint library.
Data-Driven Subscriptions Provides information about using data-driven subscriptions to customize
report output at run time.
Monitor Reporting Services Subscriptions
Use PowerShell to Change and List Reporting Services Subscription Owners and Run a Subscription

Subscription and delivery scenarios


For each subscription, you configure delivery options and the available options are determined by the delivery
extension you choose. A delivery extension is a module that supports some manner of distribution. Reporting
Services includes several delivery extensions and delivery extension may be available through third-party
vendors.
If you are a developer, you can create custom delivery extensions to support additional scenarios. For more
information, see Implementing a Delivery Extension.
The following table describes the common Reporting Services subscription scenarios.

SC EN A RIO DESC RIP T IO N

E-mail Reports E-mail reports to individual users and groups. Create a


subscription and specify a group alias or e-mail alias to
receive a report that you want to distribute. You can have
Reporting Services determine the subscription data at run
time. If you want to send the same report to a group that
has a changing list of members, you can use a query to
derive the subscription list at run time.

View Reports off-line Users can select one of the following formats for
subscription output:

- XML file with report data


- CSV (comma delimited)
- PDF
- MHTML (web archive)
- Microsoft Excel
- TIFF file
- Microsoft Word

Reports that you want to archive can be sent directly to a


shared folder that you back up on a nightly schedule. Large
reports that take too long to load in a browser can be sent
to a shared folder in a format that can be viewed in a
desktop application.

Pre-load cache If you have multiple instances of a parameterized report or a


large number of report users who view reports, you can
preload reports in the cache to reduce processing time
required to display the report.
SC EN A RIO DESC RIP T IO N

Data-driven reports Use data-driven subscriptions to customize report output,


delivery options, and report parameter settings at run time.
The subscription uses a query to get input values from a
data source at run time. You can use data-driven
subscriptions to perform a mail-merge operation that sends
a report to a list of subscribers that is determined at the
time the subscription is processed.

Standard and data-driven subscriptions


Reporting Services supports two kinds of subscriptions: standard and data-driven . Standard subscriptions are
created and managed by individual users. A standard subscription consists of static values that cannot be varied
during subscription processing. For each standard subscription, there is exactly one set of report presentation
options, delivery options, and report parameters.
Data-driven subscriptions get subscription information at run time by querying an external data source that
provides values used to specify a recipient, report parameters, or application format. You might use data-driven
subscriptions if you have a very large recipient list or if you want to vary report output for each recipient. To use
data-driven subscriptions, you must have expertise in building queries and an understanding of how
parameters are used. Report server administrators typically create and manage these subscriptions. For more
information, see the following:
Data-Driven Subscriptions
Create a Data-Driven Subscription (SSRS Tutorial)

Subscription requirements
Before you can create a subscription to a report, the following prerequisites must be met:

REQ UIREM EN T DESC RIP T IO N

Permissions You must have access to the report. Before you can
subscribe to a report, you must have permission to view it.

For Native mode report servers, the following role


assignments affect subscriptions:

- The "Manage individual subscriptions" task allows users to


create, modify, and delete subscriptions for a specific report.
In the predefined roles, this task is part of Browser and
Report Builder roles. Role assignments that include this task
allow a user to manage only those subscriptions that he or
she creates.
- The "Manage all subscriptions" task allows users to access
and modify all subscriptions. This task is required to create
data-driven subscriptions. In predefined roles, only the
Content Manager role includes this task.
REQ UIREM EN T DESC RIP T IO N

Stored credentials To create a subscription, the report must use stored


credentials or no credentials to retrieve data at run time. You
cannot subscribe to a report that is configured to use the
impersonated or delegated credentials of the current user to
connect to an external data source. The stored credentials
can be a Windows account or a database user account. For
more information, see Specify Credential and Connection
Information for Report Data Sources

You must have permission to view the report and create


individual subscriptions. Scheduled Events and Repor t
Deliver y must be enabled on the report server. For more
information, see old_Create and Manage Subscriptions for
Native Mode Report Servers.

User dependent values in a report For standard subscriptions only, you can create subscriptions
to reports that incorporate user account information in a
filter or as text that appears on the report. In the report, the
user account name is specified through a User!UserID
expression that resolves to the current user. When you
create a subscription, the user who creates the subscription
is the considered the current user.

No model item security You cannot subscribe to a Report Builder report that uses a
model as a data source if the model contains model item
security settings. Only reports that use model item security
are included in this restriction.

Parameter values If the report uses parameters, a parameter value must be


specified with the report itself, or in the subscription you
define. If default values have been defined in the report, you
can set the parameter value to use the default.

Delivery extensions
Subscriptions are processed on the report server and are distributed through delivery extensions that are
deployed on the server. By default, you can create subscriptions that send reports to a shared folder or to an e-
mail address. If the report server is configured for SharePoint integrated mode, you can also send a report to a
SharePoint library.
When a user creates a subscription, he or she can choose one of the available delivery extensions to determine
how the report is delivered. Reporting Services includes the following delivery extensions.

DEL IVERY EXT EN SIO N DESC RIP T IO N

Windows File Share Delivers a report as a static application file to a shared folder
that is accessible on the network.

E-mail Delivers a notification or a report as an e-mail attachment or


URL link.

SharePoint library Delivers a report as a static application file to a SharePoint


library that is accessible from a SharePoint site. The site must
be integrated with a report server that runs in SharePoint
integrated mode.
DEL IVERY EXT EN SIO N DESC RIP T IO N

Null The null delivery provider is a highly specialized delivery


extension that is used to preload a cache with ready-to-view
parameterized reports This method is not available to users
in individual subscriptions. Null delivery is used by
administrators in data-driven subscriptions to improve
report server performance by preloading the cache.

NOTE
Report delivery is an extensible part of Reporting Services architecture. Third-party vendors can create custom delivery
extensions to route reports to different locations or devices. For more information about custom delivery extensions, see
Implementing a Delivery Extension.

Parts of a subscription
A subscription definition consists of the following parts:
A pointer to a report that can run unattended (that is, a report that uses stored credentials or no
credentials).
A delivery method (for example, e-mail) and settings for the mode of delivery (such as an e-mail
address).
A rendering extension to present the report in a specific format.
Conditions for processing the subscription, which is expressed as an event.
Usually, the conditions for running a report are time-based. For example, you may want to run a
particular report every Tuesday at 3:00 P.M. UTC. However, if the report runs as a snapshot, you can
specify that the subscription runs whenever the snapshot is refreshed.
Parameters used when running the report.
Parameters are optional and are specified only for reports that accept parameter values. Because a
subscription is typically user-owned, the parameter values that are specified vary from subscription to
subscription. For example, sales managers for different divisions will use parameters that return data for
their division. All parameters must have a value explicitly defined, or have a valid default value.
Subscription information is stored with individual reports in a report server database. You cannot manage
subscriptions separately from the report to which they are associated. Note that subscriptions cannot be
extended to include descriptions, other custom text, or other elements. Subscriptions can contain only the items
listed earlier.

How subscriptions are processed


Reporting Services includes a scheduling and delivery processor, which provides functionality for scheduling
reports and delivering them to users. The report server responds to events that it monitors on an ongoing basis.
When an event occurs that matches the conditions defined for a subscription, the report server reads the
subscription to determine how to process and deliver the report. The report server requests the delivery
extension that is specified in the subscription. After the delivery extension is running, the report server extracts
delivery information from the subscription and passes it to the delivery extension for processing.
The delivery extension renders the report in the format defined in the subscription and then delivers the report
or notification to the specified destination. If a report cannot be delivered, an entry is logged to the report server
log file. If you want to support retry operations, you can configure the report server to re-attempt the delivery if
the first attempt fails.
Processing a standard subscription
Standard subscriptions produce one instance of a report. The report is delivered to a single shared folder or to
the e-mail addresses specified in the subscription. The report layout and data do not vary. If the report uses
parameters, a standard subscription is processed with a single value for each parameter in the report.
Processing a data-driven subscription
Data-driven subscriptions can produce many report instances that are delivered to multiple destinations. The
report layout does not vary, but the data in a report can vary if parameter values are passed in from a
subscriber result set. Delivery options that affect how the report is rendered and whether the report is attached
or linked to the e-mail can also vary from subscriber to subscriber when the values are passed in from the row
set.
Data-driven subscriptions can produce a large number of deliveries. The report server creates a delivery for
each row in the row set that is returned from the subscription query.
Report delivery characteristics
Reports that are delivered through standard subscriptions are typically rendered as static reports. These reports
are either based on the most recent report execution snapshot, or generated as a static report for the purpose of
completing a delivery. If you choose the Include Link option in a subscription to a report that runs on demand,
the report server runs the report when you click the hyperlink.

NOTE
Reports that are delivered through a URL remain connected to the report server and can be updated or deleted between
viewings. The delivery options you choose for your subscription determine whether the report is delivered as a URL,
embedded within the body of an e-mail message, or sent as an attachment.

Reports that are delivered through a data-driven subscription may be regenerated while the subscription is
being processed. The report server does not lock in a specific instance of a report or its dataset to complete a
data-driven subscription. If the subscription uses different parameter values for different subscribers, the report
server regenerates the report to produce the required result. If the underlying data is updated after the first
report copy is created and delivered, users who get reports later in the process may see data that is based on
different result set. You can use a report that runs as a snapshot to ensure that the same report instance is
delivered to all subscribers. However, if a scheduled update to the snapshot occurs while the subscription is
processing, users may still get different data in their reports.
Triggering subscription processing
The report server uses two kinds of events to trigger subscription processing: a time-driven event that is
specified in a schedule or a snapshot update event.
A time-driven trigger uses a report-specific schedule or a shared schedule to specify when a subscription runs.
For on-demand and cached reports, schedules are the only trigger option.
A snapshot update event uses the scheduled update of a report snapshot to trigger a subscription. You can
define a subscription that is triggered whenever the report is updated with new data, based on report execution
properties that are set on the report.

Programmatic control of subscriptions


The Reporting Services object model allows you to programmatically audit and control subscriptions and
subscriptions processing. See the following for examples and getting started:
Use PowerShell to Change and List Reporting Services Subscription Owners and Run a Subscription
For examples of how to use PowerShell to enable and disable subscriptions, see Disable or Pause Report
and Subscription Processing.
ChangeSubscriptionOwner
For an example PowerShell script to list all Reporting Services subscriptions that are configured to use
the File share account see Subscription Settings and a File Share Account (Configuration Manager).

See Also
Create a Data-Driven Subscription (SSRS Tutorial)
Schedules
Reporting Services Report Server (Native Mode)
Monitor Reporting Services Subscriptions
E-Mail Delivery in Reporting Services
4/18/2020 • 4 minutes to read • Edit Online

SQL Server Reporting Services includes an e-mail delivery extension that provides a way to e-mail a report to
individual users or groups. To distribute a report by e-mail, you 1) configure the report server for e-mail
delivery and 2) define either a standard subscription or a data-driven subscription. A single subscription cannot
deliver multiple reports in a single e-mail message. However you can create multiple subscriptions.
The report server connects with an e-mail server through a standard connection. It does not use communication
that has been encrypted using Transport Layer Security (TLS), previously known as Secure Sockets Layer (SSL).
The e-mail server must be a remote or local Simple Mail Transport Protocol (SMTP) server on the same network
as the report server.
For detailed steps that walk you through creating a subscription, see the following:
Create and Manage Subscriptions for Native Mode Report Servers
Create and Manage Subscriptions for SharePoint Mode Report Servers

Applies to: Reporting Services SharePoint mode | Reporting Services Native mode

E-Mail Delivery Options


Report server e-mail delivery can deliver reports in the following way
Send a notification and a hyperlink to the generated report.
Send a notification in the Subject: line of an e-mail message. By default, the Subject: line in the
subscription definition includes the following variables that are replaced by report-specific information
when the subscription is processed:
@Repor tName specifies the name of the report.
@ExecutionTime specifies when the report was executed.
You can combine these variables with static text or modify the text in the Subject: line for each
subscription.
Send an embedded or attached report. The rendering format and browser determine whether the report
is embedded or attached.
If your browser supports HTML 4.0 and MHTML, and you choose the Web archive rendering format, the
report is embedded as part of the message. All other rendering formats (CSV, PDF, and so on) deliver
reports as attachments. For native mode report servers you can disable this functionality in the
RSReportServer.config configuration file.
Reporting Services does not check the size of the attachment or message before sending the report. If the
attachment or message exceeds the maximum limit allowed by your mail server, the report is not
delivered. Choose one of the other delivery options (such as URL or notification) if for large reports.
You set delivery options that determine how a report is delivered when you create the subscription. For
example, if you select Include Link in the subscription, the e-mail message includes a hyperlink to the report.
Native mode role-based e-Mail Settings
In a Native mode report server environment, the e-mail delivery settings you work with vary depending on
whether your role includes the "Manage individual subscriptions" task or the "Manage all subscriptions" task.

TA SK AVA IL A B L E SET T IN GS

Manage individual subscriptions Shows fields that enable a user to automate and deliver a
report to himself or herself. In this mode, fields that accept
e-mail aliases are not available.

Manage all subscriptions Shows fields that support wider distribution, including To:,
Cc:, Bcc:, and Reply-To: fields, providing more ways to route a
report to more subscribers. The availability of e-mail alias
fields is defined through the RSReportServer configuration
file settings.

Specifying E-Mail Addresses in a Subscription


If you are distributing reports within an intranet and you are using an SMTP gateway to a Microsoft Exchange
server, type the e-mail alias (as if you were sending e-mail to a coworker). If delivery is to an external e-mail
account, type the full e-mail address. If you specify more e-mail addresses to add others to your subscription,
subscribers get an exact copy of the report that is produced from this subscription.
The report server does not validate e-mail addresses or obtain e-mail addresses from an e-mail server. You
must know in advance which e-mail addresses you want to use. By default, you can e-mail reports to any valid
e-mail account within or outside of your organization. Configuration settings can be used, however, to restrict e-
mail delivery to mail server hosts that you identify by name. You can specify additional hosts if you want to
support e-mail delivery to people that are not members of your organization.
The e-mail message used to deliver the report must be sent from an e-mail account that is defined on the e-mail
server. A configuration setting specifies the e-mail account. The e-mail account is used for all reports delivered
by the e-mail delivery extension; you cannot specify multiple accounts or vary the account for individual reports.

Controlling E-Mail Delivery


You can configure a report server to limit e-mail distribution to specific host domains. For example, you can
prevent a Native report server from delivering a report to all domains except those listed in the
RSRepor tSer ver.config configuration file.
You can also set configuration settings to hide the To field in a subscription. In this case, reports are delivered
only to the user defining the subscription. However, after a report is sent to a user, you cannot explicitly prevent
it from being forwarded.
The most effective way to control report distribution is to configure a report server to send only a report server
URL. The report server uses Windows Authentication and a role-based authorization model to control access to
a report. If a user accidentally receives through e-mail a report that he or she is not authorized to view, the
report server will not display the report. For more information about subscriptions, see the following.

E-Mail Server Configuration


For a Native mode report server, the e-mail delivery extension is configured through the Native mode Reporting
Services Configuration Manager and by editing the Reporting Services configuration files. For a SharePoint
mode report server, the e-mail delivery extension is configured in SharePoint management pages and
PowerShell scripts.
For information on how to configure a native mode report server, see email settings - Reporting Services Native
mode (Configuration Manager)
For information on how to configure a SharePoint mode report server, see the following:

See Also
Tasks and Permissions
Subscriptions and Delivery (Reporting Services)
Data-Driven Subscriptions
Role Assignments
Create and Manage Subscriptions for SharePoint
Mode Report Servers
11/2/2020 • 8 minutes to read • Edit Online

You can create Reporting Services subscriptions to deliver reports from a SharePoint Web application that is
integrated with a SharePoint mode report server. Subscriptions can deliver reports to a document library, file
folder, or as e-mail. This topic summarizes the requirements and steps for creating a Reporting Services
subscription.

Applies to:

Reporting Services SharePoint mode | SharePoint 2010 and SharePoint 2013

When you create a subscription, there are three ways to specify its delivery:
Document librar y : You can create a subscription that delivers a document based on the original report
to a library within the same SharePoint site as the original report. You cannot deliver the document to a
library on another server or another site within the same site collection. To deliver the document, you
must have Add Items permission on the library to which the report is delivered.
File folder : You can deliver a document based on the original report to a shared folder on the file
system. You must select an existing folder that is accessible over a network connection.
E-mail: If the report server is configured to use the Report Server E-mail delivery extension, you can
create a subscription that sends a report or an exported report file (saved in an output format) to your in-
box. To receive just the notification without the report or report URL, clear the Include a link to this
repor t and the Show repor t inside message checkboxes.
In this topic:
General Requirements for Subscriptions
To create a subscription to deliver a report to a SharePoint library
To create a subscription to deliver a report to a SharePoint library
To create a subscription for report server e-mail delivery
To view or modify a subscription
To delete a subscription

General Requirements for Subscriptions


To create a subscription, the report must use stored credentials and you must have permission to view the
report and create alerts.
When you create a subscription, you can select an output file format. Not every report works well in every
format. Before you select a format in a subscription, open the report and export it to different formats to verify
that it appears as expected.
Users require Edit Items list permission in SharePoint if they want to be able to create Reporting Services
subscriptions. For more information, see SharePoint Site and List Permission Reference for Report Server Items

IMPORTANT
A subscription that delivers a report to a library or to a shared folder creates a new, static file that is based on the original
report, but it is not a true report definition that runs in the Report Viewer Web Part. If the original report has interactive
features (such as drillthrough links) or dynamic content, those features will not be available in the static file that is
delivered to the target location. If you select a "Web Page" you can preserve some interactivity, but because the document
is not an .rdl file that runs in the Report Viewer, clicking through a report creates new pages in the browser session that
you must scroll through to return to the site.

You cannot rename the file name extension of an exported report to .rdl and have it run in the Report Viewer
Web Part. If you want to create a subscription that provides an actual report, use the Report Server E-mail
delivery extension and set options to include a link to the report.
Version settings on the library that contains the delivered document determine whether a new version of the
document is created with each delivery. By default, version settings are enabled for each library. Unless you
specifically choose No versioning , a new major version of the document will be created upon delivery. Only
major versions of the document are created; minor versions are never created as a result of subscription
delivery, even if you select a versioning option that allows minor versions. If you limit the number of major
versions that are retained, older deliveries will be replaced by newer ones when the maximum limit is reached.
Output formats that you select for a subscription are based on rendering extensions that are installed on the
report server. You can only select output formats that are supported by the rendering extensions on the report
server.
To create a subscription to deliver a report to a SharePoint library
1. Browse to a SharePoint library that contains your report.
2. Click the down arrow next to the report and then select Manage Subscriptions .
3. Click Add Subscription .
4. In Deliver y Extension , select SharePoint Document Librar y .
5. In Document Librar y , select a library within the same site.
6. In File Options , specify the file name and title for the document that will be created by the subscription.
7. In Output Format , select the application format.
Web archive (MHTML) is the default because it produces a self-contained HTML file, but it will not
preserve interactive report features that might be in the original report.
8. In Over write Options , specify an option that determines whether subsequent deliveries overwrite a file.
If you want to preserve previous deliveries, you can select Create a file with a unique name . A
number will be appended to new files to create a unique file name.
9. In Deliver y Event , specify a schedule or event that causes the subscription to run. You can create a
custom schedule, select a shared schedule if one is available, or run the subscription whenever the data is
refreshed for a report that runs with snapshot data. For more information about schedules and data
processing, see Set Processing Options (Reporting Services in SharePoint Integrated Mode).
10. In Parameters , if you are creating a subscription to a parameterized report, specify the values that you
want to use with the report when the subscription is processed. The parameters section is not visible on
this page if the report you select does not contain parameters. For more information about parameters,
see Set Parameters on a Published Report (Reporting Services in SharePoint Integrated Mode).
To create a subscription for shared folder delivery
1. Browse to a SharePoint library that contains your report.
2. Click the down arrow next to the report and then select Manage Subscriptions .
3. Click Add Subscription .
4. In Deliver y Extension , select Windows File Share .
5. In File Name , enter the name of the file that will be created in the shared folder.
6. In Path , enter a folder path in Uniform Naming Convention (UNC) format that includes the computer's
network name. Do not include trailing backslashes in the folder path. An example path might be
\\ComputerName01\Public\MyReports , where Public and MyReports are shared folders.

7. In Render Format , select the application format for the report.


8. In Write Mode , choose between None , Autoincrement , or Over write . These options determine
whether subsequent deliveries overwrite a file. If you want to preserve previous deliveries, you can
choose Autoincrement . A number will be appended to new files to create a unique file name. If you
choose None , no delivery will occur if a file of the same name already exists in the target location.
9. In File Extension , choose True to add a file name extension that corresponds to the application file
format, or False to create the file without an extension.
10. In User Name and Password , enter credentials that have write permissions on the shared folder.
11. In Deliver y Event , specify a schedule or event that causes the subscription to run. You can create a
custom schedule, select a shared schedule if one is available, or run the subscription whenever the data is
refreshed for a report that runs with snapshot data. For more information about schedules and data
processing, see Set Processing Options (Reporting Services in SharePoint Integrated Mode).
12. In Parameters , if you are creating a subscription to a parameterized report, specify the values that you
want to use with the report when the subscription is processed. For more information about parameters,
see Set Parameters on a Published Report (Reporting Services in SharePoint Integrated Mode).
To create a subscription for report server e -mail delivery
1. Browse to a SharePoint library that contains your report.
2. Click the down arrow next to the report and then select Manage Subscriptions .
3. Click Add Subscription .
4. In Deliver y Extension , select E-mail .
5. In Deliver y options , specify an e-mail address to send the report to.
6. Optionally, you can modify the Subject line. The Subject line uses built-in parameters that capture the
report name and time when it was processed. These are the only built-in parameters that can be used.
The parameters are placeholders that customize the text that appears in the Subject line, but you can
replace it with static text.
7. Choose Include a link to this repor t if you want to embed a report URL in the body of the message.
8. In Repor t Contents , specify whether you want to embed the actual report in the body of the message.
The rendering format and browser determine whether the report is embedded or attached. If your
browser supports HTML 4.0 and MHTML, and you select the Web archive rendering format, the report is
embedded as part of the message. All other rendering formats (CSV, PDF, and so on) deliver reports as
attachments. Reporting Services does not check the size of the attachment or message before sending
the report. If the attachment or message exceeds the maximum limit allowed by your mail server, the
report will not be delivered. Choose one of the other delivery options (such as URL or notification) for
large reports.
9. In Deliver y Event , specify a schedule or event that causes the subscription to run. You can create a
custom schedule, select a shared schedule if one is available, or run the subscription whenever the data is
refreshed for a report that runs with snapshot data. For more information about schedules and data
processing, see Set Processing Options (Reporting Services in SharePoint Integrated Mode).
10. In Parameters , if you are creating a subscription to a parameterized report, specify the values that you
want to use with the report when the subscription is processed. For more information about parameters,
see Set Parameters on a Published Report (Reporting Services in SharePoint Integrated Mode).
To view or modify a subscription
1. Browse to a SharePoint library that contains your report.
2. Click the down arrow next to the report and then click Manage Subscriptions .
3. Each subscription is identified by the type of delivery. Click the subscription type to view and change the
existing properties.
To delete a subscription
1. Browse to a SharePoint library that contains your report.
2. Click the down arrow next to the report and then click Manage Subscriptions .
3. Click the checkbox next to the subscription, and click Delete .

See Also
Subscriptions and Delivery (Reporting Services)
E-Mail Delivery in Reporting Services
File Share Delivery in Reporting Services
SharePoint Library Delivery in Reporting Services
Configure a Report Server for E-Mail Delivery (Report Server Configuration Manager)
SharePoint Library Delivery in Reporting Services
4/6/2020 • 4 minutes to read • Edit Online

A report server that is configured for SharePoint integration includes a delivery extension that you can use to
send a report to a SharePoint library.
To use the SharePoint delivery extension, you must create a subscription from an application page on a
SharePoint site, and then select SharePoint document librar y as the delivery type. You cannot use the
SharePoint delivery extension for subscriptions that you create in SQL Server Management Studio or Report
Manager.

NOTE
The delivery extension does not support the delivery of reports to a SharePoint site if the report server is running in
native mode. If you attempt to call the delivery extension programmatically for a native mode report server, the server
will return the rsDeliver yExtensionNotFound error and log the rsOperationNotSuppor tedSharePointMode error
in the report server log files.

Requirements
Requirements for delivering rendered reports to a library include the following:
The report server must be configured for SharePoint integration mode.
The report server must have the SharePoint delivery extension installed and configured.
The report must be a report definition (.rdl) file. You cannot deliver other report server content types,
such as models or resources, through a subscription. You cannot subscribe to ad hoc reports that use
models as a data source.
The report must use stored credentials. This is a prerequisite for creating any subscription on a report,
regardless of the delivery type.
The destination must be a SharePoint library. When choosing a target library, you must choose one that is
on the same SharePoint site. You cannot deliver a report to a library on another server or another site
within the same site collection.
Properties and metadata are not part of report delivery. When the report is delivered for the first time, it inherits
the security settings of the folder or list that contains it. If you subsequently modify security settings or set
report properties, those settings are retained. The subscription just refreshes the report that is stored at the
specified location.

SharePoint Permissions
To create the subscription, you must have View Items permission on the report. To deliver the report, you must
have Add Items permission on the library to which the report is delivered.

How to Create, Modify and Delete Subscriptions


1. Go to the SharePoint site from which you access the report.
2. Select the report, click the down arrow next to the report, and select Manage Subscriptions .
3. Click Create , Edit , or Delete .
A Status message on the Manage Subscriptions list displays current information about the subscription,
including whether it succeeded and the date and time the subscription last ran.

Setting Delivery Options


You can set the following delivery options on a subscription that delivers a report to a SharePoint library.
Render output format
Specify the application format in which you want the report delivered. The report is rendered in this format
before delivery. The output format you select will determine the default file extension.
The list of output formats you can select from is the set of rendering extensions that are installed on the report
server.
Note that you cannot specify output formats that are for internal use only, or that are not supported for report
servers that run in SharePoint integrated mode. These formats include Null, RGDI and HTMLOWC.
File name and extension
Specify the file name and extension of the report as you want it to appear in the target library. If you do not
specify a file extension, the report server will create one based on the report output format. This value is
required. The file name must not include the following characters: : \ / * ? " < > | # { } %
Title
Specifies an optional Title property for the report in the target library. This is a standard property for all items
stored in a library. Users can specify whether to show or hide this property when viewing library contents on a
SharePoint site.
Path
Specifies a fully qualified URL to the SharePoint library, including the SharePoint Web application and site. For
example: https://mySharePointWeb/MySite/MyDocLib ; where https://mySharePointWeb indicates the Web
application, "MySite" is the SharePoint site, and "MyDocLib" is the SharePoint library where the report will be
delivered.
You cannot specify a page, site, or list. The target container must be a library in the same site or farm.
Overwrite options
Specifies whether a file with the same name and extension is replaced by a newer version when the subscription
is processed. Choose Over write if you want to replace an existing file with a newer version. Choose None if
you do not want the subscription to replace a file. In this case, no delivery will occur if a file exists with the target
name and extension. Choose Autoincrement if you want to add successive versions of the same file by
appending a number at the end of the file name.
Autocopy
If you are using the Autocopy feature to automatically copy the latest version of a file to multiple locations, the
file will be copied if Over write is enabled. If you used Autoincrement or None , the delivery will fail and the
rsDeliver yError error will occur.

See Also
Create and Manage Subscriptions for SharePoint Mode Report Servers
Subscriptions and Delivery (Reporting Services)
Specify Credential and Connection Information for Report Data Sources
Create and Manage Subscriptions for Native Mode
Report Servers
4/6/2020 • 8 minutes to read • Edit Online

A standard subscription is one that is created by individual users who want to have a report delivered through
e-mail or to a shared folder. This topic provides information about standard subscriptions that are created and
managed by individual users. Data-driven subscriptions have different requirements and steps, and are
discussed in a separate topic. For more information, see Create, Modify, and Delete Data-Driven Subscriptions
In this ar ticle:
General requirements for subscriptions
To create a file share subscription
To create an e-mail subscription
To modify a subscription
To delete a subscription

General requirements for subscriptions


The content in this article explains how to create subscriptions on a native mode report server using the web
portal in Reporting Services. After you define a subscription, you can access it in web portal through the My
Subscriptions page or the Subscriptions tab of a specific report.
Create and Manage Subscriptions for SharePoint Mode Report Servers explains how to use the application
pages in a SharePoint site to subscribe to reports on a SharePoint mode report server.
To use e-mail delivery, the report server must be configured for an SMTP server or gateway connection
before you create the subscription. For more information, see E-Mail Delivery in Reporting Services.
To use file share delivery, you must have a target folder already defined. For more information, see
Subscription Settings and a File Share Account (Configuration Manager).
Before you can subscribe to a report, the report data source must be configured to use stored credentials or no
credentials. For more information, see Store Credentials in a Reporting Services Data Source. If it isn't, the New
Subscription button is not available.
This article does not explain how to create a data-driven subscription. For instructions on how to create a data-
driven subscription, see Create a Data-Driven Subscription (SSRS Tutorial).

To create a file share subscription


1. Browse the web portal of a report server (SSRS Native Mode).
2. Navigate to the desired report. Right-click the report and select Subscribe .
3. Description : Type a description for the report subscription, maximum 512 characters.
4. Owner : The owner field defaults to the current user and cannot be edited when you create the
subscription. However, after the subscription is saved, you can change the subscription properties
including the owner and description.
5. Under Type of subscription , select the Standard subscription radio button.
6. Under the Schedule section, select either:
Shared schedule .
Repor t specific schedule .
For more information on scheduling, see Schedules.
7. Under Destination , select Windows File Share .
8. Under Deliver y options (Windows File Share) , specify:
File Name : Type a file name for the report.
Add a file extension when the file is created : This option adds a three-character file extension
to the file name. The file extension is determined by the report output format you select.
Path : Type a Universal Naming Convention (UNC) path to an existing folder where you want to
deliver the reports (for example, \<servername><myreports>). Include double backslash
characters at the beginning of the path. Do not specify a trailing backslash.

Render Format : Select a report output format for file delivery. Choose a format that corresponds
to the desktop application that will be used to open the report. Avoid formats that do not render a
report in a single stream or that introduce interactivity that cannot be supported in a static file (for
example, HTML 4.0).
Credentials : Select to use either the File share account or a specific Windows user credentials. The
Use file share account is disabled if your report administrator has not configured a file share
account. For more information, see Subscription Settings and a File Share Account (Configuration
Manager). In the User name and Password text boxes, specify the credentials required to access
the file share, using the format <domain>\<user name> for the user name.
Over write options :
Over write an existing file with a newer version .
Do not over write the file if a previous version exists , the delivery will not occur if an
existing file is detected.
Increment file names as newer versions are added , the report server appends a number
to the file name to distinguish it from existing files of the same name.
9. For parameterized reports, specify parameters to use for the report for this subscription. The parameters
can be different from those used to run the report on demand or in other scheduled operations.
The report is delivered as a static file. If the report includes interactive features (for example, links to additional
rows and columns), those features are not available.

To create an e-mail subscription


1. Browse the web portal of a report server (SSRS Native Mode).
2. Navigate to the desired report. Right-click the report and select Subscribe .
3. Description : Type a description for the report subscription, maximum 512 characters.
4. Owner : The owner field defaults to the current user and cannot be edited when you create the
subscription. However, after the subscription is saved, you can change the subscription properties
including the owner and description.
5. Under Type of subscription , select the Standard subscription radio button.
6. Under the Schedule section, select either:
Shared schedule .
Repor t specific schedule .
For more information on scheduling, see Schedules.
7. Under Destination , select E-Mail . If the E-Mail option is not available, your report server has not been
configured for e-mail subscriptions. See Configure E-mail for a Reporting Services Service Application.
8. Under Deliver y options (E-Mail) , specify:
To : The recipient name in the To: field is self-addressed using your domain user account. Verify the
format is [user name]@[domain.com]. Report server configuration settings determine whether the
To field is self-addressed with your user account. For more information about changing the
configuration settings e-mail addresses, see Configure E-mail for a Reporting Services Service
Application

NOTE
Depending on your permissions, you might be able to type the e-mail address you want the report
delivered to. To specify multiple e-mail addresses, separate them with a semicolon (;). You can also type
additional e-mail addresses in the Cc, Bcc, and Reply-To text boxes. This requires that you have
permission to manage all subscriptions.

Subject : Defaults to "@ReportName was executed at @ExecutionTime". You can edit the subject
but note that the @ReportName and @ExecutionTime are the only global variables supported in
the Subject field.
Include Repor t : Select this option to embed or attach a copy of the report. The format of the
report is determined by the rendering format you select. Do not choose this option if you think the
report size will exceed the limit defined for your e-mail system.
Include Link : Select this option to include a URL link to the report in the body of the e-mail
message.

NOTE
If you clear both of these options, only the notification text in the Subject line is sent.

Choose a rendering format from the Render Format list box. This option is available if you select
Include Repor t to embed or attach a copy of the report.
To embed the report in the body of the e-mail message, select MHTML (web archive) .
To send the report as an attachment, choose any of the other rendering formats.
Select a priority from the Priority list box. In Microsoft Exchange, this setting sets a flag for the
importance level of the e-mail message.
Enter a Comment if desired.
9. For parameterized reports, specify parameters to use for the report for this subscription. The parameters
that you specify can be different from those used to run the report on demand or in other scheduled
operations.

To modify a subscription
You can modify a subscription at any time. If you modify a subscription while it is being processed, the updated
settings are used if they are saved to the report server before the delivery extension receives the subscription
data. Otherwise, the existing settings are used.
A user who creates a subscription owns that subscription. Each user can modify or delete the subscriptions that
he or she owns. You can change the owner of the report from the subscription properties page or you can
change the ownership programmatically. For more information, see the following:
Use PowerShell to Change and List Reporting Services Subscription Owners and Run a Subscription
ChangeSubscriptionOwner
To locate a subscription, use the My Subscriptions page or view the subscription definitions that are
associated with a report. You cannot search for subscriptions directly, nor can you search for a subscription
based on owner name, trigger information, status information, and so forth.
Subscriptions can also be modified or deleted by report server administrators.

NOTE
A report server administrator cannot manage from one place all the individual subscriptions that are in use on a given
report server. However, report server administrators can access each individual subscription to modify or delete it.

To delete a subscription
To delete a subscription:
1. Browse the web portal of a report server (SSRS Native Mode).
2. In the web portal, select My Subscriptions on the toolbar and navigate to the subscription you want to
modify or delete.
3. Right-click the report and select Delete .
To cancel a subscription that is currently processing on the report server, see Manage a Running Process.
If you want to end a subscription and you cannot locate the subscription, make a note of the report you are
receiving and search for it by name. Once you access the report, you can remove yourself from the subscription.
If you cannot locate the subscription, the subscription may be a data-driven subscription. For more information,
see your report server administrator.
A subscription is deleted automatically if the underlying report is deleted. If you delete a subscription while it is
being processed, the subscription stops if the delete operation occurs before the delivery extension receives
subscription data. Otherwise, the subscription continues to be processed.

See also
Create and Manage Subscriptions for SharePoint Mode Report Servers
Use PowerShell to Change and List Reporting Services Subscription Owners and Run a Subscription
Data-Driven Subscriptions
Subscriptions and Delivery (Reporting Services)
The web portal of a report server (SSRS Native Mode)
Use My Subscriptions (Native Mode Report Server)
Use My Subscriptions (Native Mode Report Server)
11/2/2020 • 2 minutes to read • Edit Online

The Reporting Services Web portal includes a My Subscriptions page that organizes all of your subscriptions
into one place. You can use My Subscriptions to view, modify, enable, disable, and delete existing subscriptions.
However, you cannot use it to create subscriptions. My Subscriptions shows only the subscriptions that you
create. It does not list subscriptions that are owned by other users, even if you are added as a subscriber to
those subscriptions, nor does it show data-driven subscriptions.

Applies to: Reporting Services Native mode

The search field will dynamically filter the list of subscriptions as youYou cannot search for subscriptions by
name, nor can you search for subscriptions based on trigger information, status information, and so forth. For
more information, see Create and Manage Subscriptions for Native Mode Report Servers.

To open the My Subscriptions page


1. Open the Reporting Services Web portal.
2. Click settings in the toolbar.
3. Click My Subscriptions .
For more information, see Web portal (SSRS Native Mode).

Use Windows PowerShell to list MySubscriptions

The following PowerShell script will return the list of subscriptions and subscription properties for the current
user. For more information, see ReportingService2010.ListMySubscriptions Method.

#server - all subscriptions of the current user at the given server or site
$server="[server name]/reportserver"
$rs2010 = New-WebServiceProxy -Uri "https://$server/ReportService2010.asmx" -Namespace
SSRS.ReportingService2010 -UseDefaultCredential;

$subscriptions=ListMySubscriptions(ItemPathOrSiteURL)
$subscriptions | select Path, report, Description, Owner, SubscriptionID, lastexecuted,Status
#uncomment the following to list all the subscription properties
#$subscriptions

See Also
Data-Driven Subscriptions
Subscriptions and Delivery (Reporting Services)
old_Create and Manage Subscriptions for Native Mode Report Servers
File Share Delivery in Reporting Services
4/6/2020 • 4 minutes to read • Edit Online

SQL Server Reporting Services includes a file share delivery extension so that you can deliver a report to a
folder. The file share delivery extension is available by default and requires no additional configuration. In order
for file delivery to succeed, you must set write access permissions on the shared folder. The account that
requires writer permissions can either be credentials configured in the subscription or a File share account
configured for the report server. For more information on the file share account, see Subscription Settings and a
File Share Account (Configuration Manager). In addition, users who require access to the reports must have read
permissions on the shared folder.
To distribute a report to a file share, you define either a standard subscription or a data-driven subscription. To
learn how to use file share delivery in a data-driven subscription, see Create a Data-Driven Subscription (SSRS
Tutorial). Additionally, the account that runs remote file share subscriptions requires rights to log on locally on
the Reporting Services computer.

Applies to: Reporting Services Native mode | Reporting Services SharePoint mode

In this topic:
Characteristics reports delivered to shared folders
Target folders
File Formats
File Options

Characteristics reports delivered to shared folders


Unlike reports that are hosted and managed by a report server, reports that are delivered to a shared
folder are static files.
Interactive features that are defined for the report do not work for reports that are stored as files on the
file system. Interaction features are represented as static elements. For example, if you deliver a matrix
report, the resulting file shows the top-level view of the report; you cannot expand rows and columns to
view supporting data.
If the report includes charts, the default presentation is used. If the report links through to another report,
the link is rendered as static text.
If you want to retain interactive features in a delivered report, use e-mail delivery instead. The e-mail
contains a link to the report on the report server and users can use the interactive features. For more
information, see E-Mail Delivery in Reporting Services.

Target folders
When defining a subscription that uses file share delivery, you must specify an existing folder as the target
folder. The report server does not create folders on the file system. The folder that you specify must be
accessible over a network connection.
Verify that users who will view the reports in the shared folder have Read permission.
When specifying the target folder in a subscription, use Uniform Naming Convention (UNC) format that
includes the computer's network name. Do not include trailing backslashes in the folder path. The following
example illustrates a UNC path:

\\<servername>\reportarchive\operations\2014

When you create the folder, consider the connection limits you require. The report server requires two
connections, but you must include enough connections to accommodate additional users who want to open
reports on the shared folder.

File Formats
Reports can be rendered in a variety of file formats, such as HTML, DOCX, and Excel. To save the report in a
specific file format, select that rendering format when creating your subscription. For example, choosing Excel
saves the report as a Microsoft Excel file. Although you can choose from any supported rendering format, some
formats work better than others when rendering to a file.
For file share delivery, choose a format that delivers the report in a single file, where all images and related
content are included in the report. Suitable formats include Web archive, PDF, TIFF, and Excel. Avoid HTML4.0. If
your report includes images, the HTML 4.0 formats will not include them in the file.

File Options
When you create a file share subscription, you can configure how the file name is created and if the file
overwrites previous versions of the report. A fully qualified file name has three parts: a name, an extension, and
text or a number that is appended to the file to create a unique file name
File Name: The default file name is based on the source report name, but you can provide a custom name in
the subscription. The extension is optional, but if you specify it, the report server will create an extension that
corresponds to the rendering format.
Over write: You can specify overwrite options to reuse the same file name for each report delivery or to create
a new file. To overwrite the file, you must use the same file name and extension.
An alternative approach to creating unique files for every delivery is to include a timestamp in the file name. To
do this, add the @timestamp variable to the file name (for example, CompanySales@timestamp). With this
approach, the file name is unique by definition, so it will never be overwritten.
The following image is an example of the settings for a subscription configured for file share delivery.
See Also
Create and Manage Subscriptions for Native Mode Report Servers
Subscription Settings and a File Share Account (Configuration Manager)
Disable or Pause Report and Subscription
Processing
11/2/2020 • 6 minutes to read • Edit Online

There are several approaches you can use to disable or pause Reporting Services report and subscription
processing. The approaches in this article range from disabling a subscription to interrupting the data source
connection. Not all approaches are possible with both Reporting Services server modes. The following table
summarizes the methods and supported Reporting Services server modes:

In this article
A P P RO A C H SUP P O RT ED SERVER M O DE

Enable and disable subscriptions Native mode

Pause a shared schedule Native and SharePoint mode

Disable a shared data source Native and SharePoint mode

Modify role assignments to prevent access to a report Native mode


(Native mode)

Remove manage subscription permissions from role (Native Native mode


mode)

Disable delivery extensions Native and SharePoint mode

Enable and disable subscriptions


TIP
New in SQL 2016 Reporting Services, enable and disable subscriptions. New user interface options allow you to quickly
enable and disable subscriptions. The disabled subscriptions maintain their other configuration properties such as
schedule and can be easily re-enabled. You can also programmatically enable and disable subscriptions, or audit which
subscriptions are disabled.

In the web portal, browse to the subscription from either the My Subscriptions page or the Subscriptions
page of an individual subscription. Select one or more subscriptions and then click either the disable button or
enable button on the ribbon (see above image). The status column will change to either "Disabled" or "Enabled"
respectively.
Reporting Services writes a row in the Reporting Services log when a subscription is either enabled or disabled.
For example, in report server log file:
C:\Program Files\Microsoft SQL Server Reporting Services\SSRS\LogFiles\RSPortal_2019_06_20_00_49_22.log

you see rows similar to the following:


RSPortal!subscription!RSPortal.exe!93!06/20/2019-01:16:47:: i INFO: Subscription 2b409d66-d4ea-408a-918c-
0f9e41ce49ca disabled at 06/20/2019 01:16:47

RSPortal!subscription!RSPortal.exe!93!06/20/2019-01:16:51:: i INFO: Subscription 2b409d66-d4ea-408a-918c-


0f9e41ce49ca enabled at 06/20/2019 01:16:51

: Use Windows PowerShell to disable a single subscription: Use the following


PowerShell script to disable a specific subscription. Update the server name and subscription ID in the script.

#disable specific subscription


$rs2010 = New-WebServiceProxy -Uri "https://SERVERNAME/ReportServer/ReportService2010.asmx" -Namespace
SSRS.ReportingService2010 -UseDefaultCredential;
$subscriptionID = "subscription guid";
$rs2010.DisableSubscription($subscriptionID);

You can use the following script to list all subscriptions with their IDs. Update the server name.

#list all subscriptions


$rs2010 = New-WebServiceProxy -Uri "https://SERVERNAME /ReportServer/ReportService2010.asmx" -Namespace
SSRS.ReportingService2010 -UseDefaultCredential;
$subscriptions = $rs2010.ListSubscriptions("/");
$subscriptions | select subscriptionid, report, status, path

Use Windows PowerShell to list all disabled subscriptions: Use the following
PowerShell script to list all of the disabled subscriptions on the current Native mode report server. Update the
server name.

#list all disabled subscriptions


$rs2010 = New-WebServiceProxy -Uri "https://uetestb03/ReportServer/ReportService2010.asmx" -Namespace
SSRS.ReportingService2010 -UseDefaultCredential;
$subscriptions = $rs2010.ListSubscriptions("/");
Write-Host "--- Disabled Subscriptions ---";
Write-Host "----------------------------------- ";
$subscriptions | Where-Object {$_.Active.DisabledByUserSpecified -and $_.Active.DisabledByUser } | select
subscriptionid, report, status, lastexecuted,path | format-table -auto

Use Windows PowerShell to enable all disabled subscriptions: Use the


following PowerShell script to enable all subscriptions that are currently disabled. Update the server name.

#enable all subscriptions


$rs2010 = New-WebServiceProxy -Uri "https://SERVERNAME/ReportServer/ReportService2010.asmx" -Namespace
SSRS.ReportingService2010 -UseDefaultCredential;
$subscriptions = $rs2010.ListSubscriptions("/") | Where-Object {$_.status -eq "disabled" } ;
ForEach ($subscription in $subscriptions)
{
$rs2010.EnableSubscription($subscription.SubscriptionID);
$subscription | select subscriptionid, report, path
}
Use Windows PowerShell to DISABLE all subscriptions: Use the following
PowerShell script to list disable ALL subscriptions.

#DISABLE all subscriptions


$rs2010 = New-WebServiceProxy -Uri "https://SERVERNAME/ReportServer/ReportService2010.asmx" -Namespace
SSRS.ReportingService2010 -UseDefaultCredential;
$subscriptions = $rs2010.ListSubscriptions("/") ;
ForEach ($subscription in $subscriptions)
{
$rs2010.DisableSubscription($subscription.SubscriptionID);
$subscription | select subscriptionid, report, path
}

Pause a shared schedule


If a report or subscription runs from a shared schedule, you can pause the schedule to prevent processing. All
report and subscription processing driven by the schedule is deferred until the schedule is resumed.
SharePoint mode: In Site settings , select Manage shared schedules . Select the
schedule and click Pause selected schedules .

Native mode: In the web portal, select the Settings button from the menu bar at the top of the
web portal screen, and select Site Settings from the drop-down menu. Select the Schedules tab to
display the schedules page. Select the checkbox(es) next to the schedule(s) you want to enable or disable,
and then select the Enable or Disable button respectively to perform the desired action. The status
column will update to "Disabled" or "Enabled" accordingly.

Disable a shared data source


One advantage to using shared data sources is that you can disable it to prevent a report or data-driven
subscription from running. Disabling a shared data source disconnects the report from its external source. While
it is disabled, the data source is unavailable to all reports and subscriptions that use it.
Note the report still loads even if the data source is unavailable. The report does not contain data, but users with
appropriate permissions can access the property pages, security settings, report history, and subscription
information associated with the report.
SharePoint mode: To disable a shared data source in a SharePoint mode report server, browse to the
document library that contains the data source. Click the data source and then clear the Enable this
data source check box.
Native mode: To disable a shared data source on a native mode report server, open the data source in
the web portal, and clear the Enable this data source check box.

Modify role assignments to prevent access to a report (native mode)


One way to make a report unavailable is to temporarily remove the role assignment that provides access to the
report. This approach can be used on all reports regardless of how the data source connection is made. This
approach targets only the report, without affecting the operation of other reports or items.
To remove the role assignment, open the Security page of the report in the web portal. If the report inherits
security from a parent, you can select Customize security and then select Confirm in the Item security
dialog box to create a restrictive security policy that omits role assignments that provide widespread access (for
example, you can remove a role assignment that provides access to Everyone, and keep the role assignment that
provides access to a small group of users, such as Administrators).
Remove manage subscription permissions from role (native mode)
To prevent users from creating subscriptions, clear the Manage individual subscriptions task from the role.
When you remove this task, the Subscription pages are not available. In the web portal, the My Subscriptions
page appears to be empty (it cannot be deleted), even if it previously contained subscriptions. Removing
subscription-related tasks prevents users from creating and modifying subscriptions, but does not delete
existing subscriptions. Existing subscriptions continue to execute until you delete them. To remove the
permission:
1. Open SQL Server Management Studio.
2. Connect to the Reporting Services report server.
3. Expand the Security node.
4. Expand the Roles node and select the desired role.
5. Right-click the role and select Proper ties .
6. Clear the Manage individual subscriptions and the Manage all subscriptions tasks.
7. Select OK to apply the changes.

Disable delivery extensions


All delivery extensions installed on a report server are available to any user who has permission to create a
subscription to a given report. The following delivery extensions are available and configured automatically:
Windows File Share
SharePoint Library (available only from a SharePoint site that is integrated with a SharePoint integrated
mode report server)
E-mail delivery must be configured before it can be used. If you do not configure it, it is not available. For more
information, see E-Mail Settings - Reporting Services Native mode (Configuration Manager).
If you want to turn off specific extensions, you can remove extension entries in the RSRepor tSer ver.config file.
For more information, see Reporting Services Configuration Files and E-Mail Settings - Reporting Services
Native mode (Configuration Manager).
After you remove a delivery extension, it is no longer available in the web portal or a SharePoint site. Removing
a delivery extension can result in inactive subscriptions. Be sure to delete the subscriptions or configure them to
use a different delivery extension before removing an extension.

See also
Subscriptions and Delivery (Reporting Services)
Reporting Services Configuration Files
Configure the web portal
Reporting Services Report Server (Native Mode)
The web portal of a report server (SSRS Native Mode)
Securable Items
Data-Driven Subscriptions
4/6/2020 • 2 minutes to read • Edit Online

A data-driven subscription provides a way to use dynamic subscription data that is retrieved from an external
data source at run time. A data-driven subscription can also use static text and default values that you specify
when the subscription is defined. You can use data-driven subscriptions to do the following:
Distribute a report to a fluctuating list of subscribers. For example, you can use data-driven subscriptions
to distribute a report throughout a large organization where subscribers vary from one month to the
next, or use other criteria that determines group membership from an existing set of users.
Filter the report output using report parameter values that are retrieved at run time.
Vary report output formats and delivery options for each report delivery.
A data-driven subscription is composed of multiple parts. The fixed aspects of a data-driven subscription are
defined when you create the subscription, and these include the following:
The report for which the subscription is defined (a subscription is always associated with a single report).
The delivery extension used to distribute the report. You can specify report server e-mail delivery, file
share delivery, the null delivery provider used for preloading the cache, or a custom delivery extension.
You can't specify multiple delivery extensions within a single subscription.
The subscriber data source. You must specify a connection string to the data source that contains
subscriber data when you define the subscription. The subscriber data source cannot be specified
dynamically at run time.
The query that you use to select subscriber data must be specified when you define the subscription. You
cannot change the query at run time.
Dynamic values used in a data-driven subscription are obtained when the subscription is processed. Examples of
variable data that you might use in a subscription include the subscriber name, e-mail address, preferred report
output format, or any value that is valid for a report parameter. To use dynamic values in a data-driven
subscription, you define a mapping between the fields that are returned in the query to specific delivery options
and to report parameters. Variable data is retrieved from a subscriber data source each time the subscription is
processed.

Requirements for using Data-Driven Subscriptions


Data-driven subscription functionality is not available in all editions. There are also limitations on the kinds of
data sources that you can use to retrieve subscription data at run time. The following list provides more
information about the requirements:
For more information about the editions of SQL Server that support Data-driven subscription
functionality, see SQL Server Reporting Services features supported by its editions.
For subscription data, choose a data source that can provide schema information to the report server.
Examples of supported data source types include SQL Server relational data, Oracle, Analysis Services
databases, SQL Server Integration Services package data, ODBC data sources, and OLE DB data sources.
For more information about subscriber data source requirements, see Use an External Data Source for
Subscriber Data (Data-Driven Subscription).
Working with Data-Driven Subscriptions
The following topics provide more information about data-driven subscriptions.

TO P IC S DESC RIP T IO N

Create, Modify, and Delete Data-Driven Subscriptions Explains how to create, modify, or delete a data-driven
subscription.

Use an External Data Source for Subscriber Data (Data- Provides information about the data sources that you can
Driven Subscription) use for a data-driven subscription.

Create a Data-Driven Subscription (SSRS Tutorial) Provides step-by-step instruction for learning how to create
a data-driven subscription.

Caching Reports (SSRS) Describes how to use the Null Delivery Provider with a data-
driven subscription to preload the cache.

See also
Subscriptions and Delivery (Reporting Services)
Preload the Cache (Web Portal)
Create, Modify, and Delete Data-Driven
Subscriptions
4/6/2020 • 5 minutes to read • Edit Online

A data-driven subscription is a query-based subscription that gets the data values used for processing the
subscription at run time. When the subscription is triggered, a query is processed to get up-to-date information
about recipients, report delivery options, rendering formats, and parameter settings. The query results are
combined with the subscription definition to create a dynamic subscription that uses data you already maintain
in an employee database, a customer database, or any other database that contains information that can be
used as subscriber data.
To create a new data-driven subscription or modify an existing subscription, use the Manage > Subscriptions
page in the web portal. The Subscriptions page walks you through each step of creating or modifying a
subscription. To access a subscription after it is created, use the My Subscriptions page or the Subscriptions
list of a report. To learn how to create a data-driven subscription, see Create a Data-Driven Subscription (SSRS
Tutorial).
In this article:
Managing and deleting a data-driven subscription
Creating and modifying a data-driven subscription
Defining a query that retrieves subscription information
Running the subscription

Managing and deleting a data-driven subscription


A data-driven subscription that is in progress cannot be stopped or deleted via the web portal. For this reason, it
is advantageous to use a shared schedule to trigger data-driven subscription. That way, if you want to
temporarily prevent a subscription from processing, you can pause the schedule that triggers the subscription.
For more information, see Create and Manage Subscriptions for Native Mode Report Servers.
To delete a data-driven subscription, select the checkbox next to the report on the Subscriptions page, and
then select Delete .
For instructions on how to cancel a data-driven subscription, see Manage a Running Process.

Creating and modifying a data-driven subscription


To create a data-driven subscription, select a report that uses stored credentials or no credentials. When you
create the data-driven subscription, consider using a naming convention for the description field so you can
easily differentiate standard subscriptions from data-driven subscriptions.
To create a data-driven subscription (Native Mode )
1. In the web portal, navigate to the folder containing the report, right-click the report, and select Manage
from the dropdown menu.
2. Select the Subscriptions tab.
3. Select + New subscription on the Subscriptions page.
To create a data-driven subscription (SharePoint Mode )
1. In the SharePoint document library, hover over the report, open the options menu and Click Manage
Subscriptions .
2. Click Add Data-Driven Subscription .
To modify an existing data-driven subscription (Native Mode )
1. In the web portal, navigate to the folder containing the report, right-click the report, and select Manage
from the dropdown menu.
2. Select the Subscriptions tab.
3. Select the checkbox next to the subscription you want to modify, and select Edit . Data-driven
subscriptions will have the value "Data-driven" in the Type column.
To modify an existing data-driven subscription (SharePoint Mode )
1. In the SharePoint document library, hover over the report, open the options menu and Click Manage
Subscriptions .
2. Select the subscription you want to modify.

NOTE
You can modify any value that is already specified. All values are presented as they were first created, except for
the password that is used to access the subscriber data store. You must retype the password every time you
modify values on the second page or any subsequent page.

Before you can create a data-driven subscription, ensure that you satisfy the following requirements:
Repor t requirements . The report must use stored credentials or no credentials to retrieve data at run
time. You cannot subscribe to a report that uses impersonated or delegated credentials to connect to an
external data source; the credentials of the user who creates or owns the subscription will not be available
when the subscription is processed. The stored credentials can be a Windows account or a database user
account. For more information, see Specify Credential and Connection Information for Report Data
Sources.
You cannot subscribe to a Report Builder report that uses a model as a data source and the model
contains model item security settings. Only reports that use model item security are included in this
restriction.
You cannot create a data-driven subscription on a report that contains the User!UserID expression.
Data requirements . You must have an accessible external data source that contains subscriber data.
User requirements . The author of the subscription must have permission to "Manage reports" and
"Manage all subscriptions." For more information about item-level task permissions, see Tasks and
Permissions. The author must also have the necessary credentials to access the external data source that
contains subscriber data.

Defining a query that retrieves subscription information


A data-driven subscription must specify a query or command that retrieves subscriber data. The query should
produce one row for each subscriber. If you are using the e-mail delivery extension, the query should return a
valid e-mail alias for each subscriber. The number of deliveries that are made is based on the number of rows
returned by the query. If the row set consists of 10,000 rows, the subscription delivers 10,000 reports.
If executing the query is time-consuming, you can increase the time-out value to accommodate additional
processing.
For this step, the query must be validated before you continue. Validation does not process the query, but it
does return a list of all columns that are in the row set so that you can reference the columns in subsequent
selections. If the query fails to validate, you cannot continue. A query fails to validate if the query syntax is
incorrect or if the connection to the data source is not valid. Use the Back button to make corrections to the data
source.

Running the subscription


You must specify conditions for processing the subscription. You can specify a schedule, or you can trigger the
subscription to coincide with updates to a report execution snapshot. Processing for data-driven subscriptions is
the same as processing for standard subscriptions.

See also
Create and Manage Subscriptions for Native Mode Report Servers
Subscriptions and Delivery (Reporting Services)
The web portal of a report server (SSRS Native Mode)
Create and Manage Subscriptions for Native Mode Report Servers
Working with subscriptions (web portal) Use My Subscriptions (Native Mode Report Server)
Use an External Data Source for Subscriber Data
(Data-Driven Subscription)
4/6/2020 • 3 minutes to read • Edit Online

In a data-driven subscription, dynamic subscription data is provided by a query or command that retrieves data
from an external data source. Subscription data can be retrieved from any supported data source that meets the
requirements for data-driven subscription processing. The query or command syntax must be valid for a data
processing extension installed with your report server.

Data Processing Requirements


Reporting Services uses data processing extensions to retrieve subscription data. Recommended data source
types include the following:
SQL Server relational databases
Oracle databases
Analysis Services multidimensional and data mining data sources
XML data sources
When using the XML data processing extension for subscriber data, be sure to increase the query timeout
settings in the subscription. The XML data processing extension uses milliseconds rather than seconds for
query timeout values. If you do not increase the timeout value, the subscription might fail due to
insufficient processing time.
Avoid using the Credentials are not required option when configuring the connection to the
subscriber data source. Stored credentials are recommended when using the XML data processing
extension to retrieve subscription data at run time.
You might be able to use other supported data source types, but not all of them are guaranteed to work. For
example, the following data source types cannot be used for subscriber data:
SAP Netweaver BI databases
report models
If you have a custom data processing extension that you want to use in data-driven subscriptions, it must
implement the IDbCommand and the IDataReader interfaces. The data processing extension must support a
schema-only query execution. This query is used to retrieve column metadata at design-time so that users can
map columns to delivery options and report parameters in the subscription definition. Schema-only query
execution occurs at an early stage when the user is defining the subscription.

Query Requirements
When creating query that retrieves subscription data, keep the following points in mind:
You can only create one query for the subscription.
The query must return all of the values that you want to use for delivery options and for specifying
report parameters.
The report server will create a report delivery for every row in the result set. If the result set consists of
three hundred rows, the report server will attempt to deliver three hundred reports.

Setting Delivery Options Using Variable Data from a Subscriber


Database
You can use data in the subscriber database to customize delivery options for each recipient. The kind of
delivery extension you are using determines which options are available. If you are using the report server e-
mail delivery extension, the query should contain an e-mail alias for each subscriber. If you are using file share
delivery, the subscriber data should include values that can be used to create subscriber-specific report files or
to provide a destination for the delivery. For more information, see E-Mail Delivery in Reporting Services.

Passing Parameter Values from the Subscriber Database to the Report


If you are creating a data-driven subscription for a parameterized report, you can use variable parameter values
to customize the output of each report. For example, the subscriber database might contain employee
identification numbers, hire dates, job titles, and office location information that can be used to filter report data.
If the report accepts parameters that are based on these or other available column data, you can map the
parameter to the appropriate column.
When mapping subscriber fields to report parameters, make sure that the data types and column lengths are
compatible. If there is a data type mismatch, an error will occur during subscription processing. To learn more
about using subscriber data in a parameterized report, see Create a Data-Driven Subscription (SSRS Tutorial).

Modifying the Subscriber Data Source


The following modifications to the subscriber data source can prevent the subscription from running:
Removing columns that are referenced in the subscription.
Modifying the table structure of the data source.
Changing data type and other column properties.
If you make any of these changes, you must update the subscription.

See Also
Create, Modify, and Delete Data-Driven Subscriptions
Data-Driven Subscriptions
Subscriptions and Delivery (Reporting Services)
Monitor Reporting Services Subscriptions
11/2/2020 • 6 minutes to read • Edit Online

You can monitor Reporting Services subscriptions from the user interface, Windows PowerShell, or log files. The
options available to you for monitoring depend on what mode of report server you are running.
Applies to:
Reporting Services Native mode
Reporting Services SharePoint mode
In this ar ticle:
Native mode user interface
SharePoint mode
Use PowerShell to monitor subscriptions
Managing inactive subscriptions

Native mode user interface


Individual Reporting Services users can monitor the status of a subscription using the My Subscriptions page
or the Subscriptions tab in the web portal. Subscription pages include columns that indicate when the
subscription was last run and the status of the subscription. Status messages are updated when the subscription
is scheduled to process. If the trigger never occurs (for example, a report execution snapshot is never refreshed
or a schedule never runs), the status message will not be updated.
The following table describes the possible values for the Status column.

STAT US DESC RIP T IO N

New subscription Appears when you first create the subscription.

Inactive Appears when a subscription can't be processed. For more


information, see "Managing Inactive Subscriptions" later in
this article.

Done: <number> processed of <number> total; <number> Shows the status of a data-driven subscription execution;
errors. this message is from the Scheduling and Delivery Processor.

<number> processed The number of notifications that the Scheduling and Delivery
Processor successfully delivered or is no longer attempting
to deliver. When a data-driven delivery completes, the
number of processed notifications should equal the total
number of generated notifications.

<number> total The total number of notifications generated for the last
delivery for the subscription.
STAT US DESC RIP T IO N

<number> error The number of notifications that the Scheduling and Delivery
Processor could not deliver or is no longer attempting to
deliver.

Failure sending mail: the transport failed to connect to the Indicates that the report server did not connect to the mail
server. server; this message is from the e-mail delivery extension.

File <filename> was written to <path>. Indicates that the delivery to the file share location was
successful; this message is from the file share delivery
extension.

An unknown error occurred when writing file. Indicates that the delivery to the file share location did not
succeed; this message is from the file share delivery
extension.

Failure connecting to the destination folder, <path>. Verify Indicates that the folder you specified could not be found;
the destination folder or file share exists. this message is from the file share delivery extension.

The file <filename> could not be written to <path>. Indicates that the file could not be updated with a newer
Attempting to retry. version; this message is from the file share delivery
extension.

Failure writing file <filename>: <message> Indicates that the delivery to the file share location did not
succeed; this message is from the file share delivery
extension.

<custom status messages> Status messages about delivery success and failure, provided
by delivery extensions. If you are using a third-party or
custom delivery extension, additional status messages may
be provided.

Report server administrators can also monitor standard subscriptions that are currently processing. Data-driven
subscriptions cannot be monitored. For more information, see Manage a Running Process.
If a subscription cannot be delivered (for example, if the mail server is unavailable), the delivery extension retries
the delivery. A configuration setting specifies the number of attempts to make. The default value is no retries. In
some cases, the report might have been processed without data (for example, if the data source is offline), in
which case text to that effect is provided in the body of the message.
Native mode log files
If an error occurs during delivery, an entry is made in the report server trace log.
Report server administrators can review the Repor tSer verSer vice_*.log files to determine subscription
delivery status. For e-mail delivery, report server log files include a record of processing and deliveries to
specific e-mail accounts. The following is the default location of the log files:
C:\Program Files\Microsoft SQL Server Reporting Services\SSRS\LogFiles

The following is an example log filename:


ReportServerService__05_21_2019_00_05_07.log

The following is a trace log file example error message related to subscriptions:
library!WindowsService_7!b60!05/20/2019-22:34:36 i INFO: Initializing EnableExecutionLogging to 'True' as
specified in Server system properties.emailextension!WindowsService_7!b60!05/20/2019-22:34:41 ERROR:
Error sending email . Exception: System.Net.Mail.SmtpException: The SMTP server requires a secure
connection or the client was not authenticated. The server response was: 5.7.1 Client was not authenticated at
System.Net.Mail.MailCommand.CheckResponse(SmtpStatusCode statusCode, String response)
The log file does not include information about whether the report was opened, or whether the delivery actually
succeeded. Successful delivery means that there were no errors generated by the Scheduling and Delivery
Processor, and that the report server connected to the mail server. If the e-mail resulted in an undeliverable
message error in the user mailbox, that information will not be included in the log file. For more information
about log files, see Reporting Services Log Files and Sources.

SharePoint mode
To monitor a subscription in SharePoint mode: the subscription status can be monitored from the Manage
Subscriptions page.
1. browse to the document library that contains the report
2. Open the context menu of the report (...).
3. Select the expanded menu option (...).
4. Select Manage Subscriptions
SharePoint ULS Log files
Subscription related information is written to the SharePoint ULS log. For more information on configuring
Reporting Services events for the ULS log, see Turn on Reporting Services events for the SharePoint trace log
(ULS). The following is an example ULS log entry related to Reporting Services subscriptions.

C O RREL AT IO
DAT E P RO C ESS A REA C AT EGO RY L EVEL N M ESSA GE
C O RREL AT IO
DAT E P RO C ESS A REA C AT EGO RY L EVEL N M ESSA GE

5/21/2019 App Pool: SQL Server Report Server Unexpected (empty) Error
14:34:06:15 a0ba0393322 Reporting Email sending
94f40bc4a81 Services Extension email.
544afde01d Exception:
System.Net.M
ail.SmtpExcept
ion: Mailbox
unavailable.
The server
response was:
5.7.1 Client
does not have
permissions
to send as
this sender at
System.Net.M
ail.DataStopC
ommand.Che
ckResponse(S
mtpStatusCod
e statusCode,
String
serverRespon
se) at
System.Net.M
ail.DataStopC
ommand.Sen
d(SmtpConne
ction conn) at
System.Net.M
ail.SmtpClient.
Send(MailMes
sage
message) at
Microsoft.Rep
ortingServices
.EmailDelivery
Provider.Email
Provider.Deliv
er(Notification
notification)

Use PowerShell to monitor subscriptions


For example PowerShell scripts you can use to check the status of native mode or SharePoint mode
subscriptions, see Manage Subscription Owners and Run Subscription - PowerShell.

Managing inactive subscriptions


If a subscription becomes inactive, you should either delete it or reactivate it by resolving the underlying
conditions that prevent it from being processed. Subscriptions can become inactive if conditions occur that
prevent processing. These conditions include:
Removing or uninstalling the delivery extension specified in the subscription.
Changing credential settings from stored to integrated or prompted values.
Changing a parameter name or data type in the report definition and then republishing a report. If a
subscription includes a parameter that is no longer valid, the subscription becomes inactive.
Changing the execution mode of a report (for example, modifying an on-demand report so that it runs as
a report execution snapshot). For more information, see Set Report Processing Properties.
An inactive subscription is indicated by a message in the subscription itself. The message includes information
about the cause and what steps you should take to reactivate the subscription.
When conditions cause the subscription to become inactive, the subscription reflects this fact when the report
server runs the subscription. If a subscription is scheduled to deliver a report every Friday at 2:00 A.M., and the
delivery extension it uses was uninstalled on Monday at 9:00 A.M., the subscription will not reflect its inactive
state until Friday at 2:00 A.M.

See also
Create and Manage Subscriptions for Native Mode Report Servers
Subscriptions and Delivery (Reporting Services)
Change the Default Reporting Services Delivery
Extension
4/6/2020 • 2 minutes to read • Edit Online

You can modify Reporting Services configuration settings to change the default delivery extension that appears
in the Delivered by list of a subscription definition page. For example you can modify the configuration so that
when users create a new subscription, file share delivery is selected by default instead of e-mail delivery. You
can also change the order the delivery extensions are listed in the user interface.
Applies to: Reporting Services Native mode | Reporting Services SharePoint mode
Reporting Services includes E-mail and Windows File Share delivery are extensions. Your report server might
have additional delivery extensions if you have deployed custom or third-party extensions to support custom
delivery. The availability of a delivery extension depends on whether it is deployed on a report server.

Default Native mode report server configuration


The order of a delivery extension appears in Report Manager in the Delivered by list is based on the order of
the delivery extension entries in the RSRepor tSer ver.config file. For example the following image shows e-
mail first in the list and it is selected by default.

The following is the default section of RSRepor tSer ver.config that controls the default delivery extension and
the order they are displayed in Report Manager. Note that email appears first in the file and it is set as the
default.

<DeliveryUI>
<Extension Name="Report Server Email"
Type="Microsoft.ReportingServices.EmailDeliveryProvider.EmailDeliveryProviderControl,ReportingServicesEmailD
eliveryProvider">
<DefaultDeliveryExtension>True</DefaultDeliveryExtension>
<Configuration>
<RSEmailDPConfiguration>
<DefaultRenderingExtension>MHTML</DefaultRenderingExtension>
</RSEmailDPConfiguration>
</Configuration>
</Extension>
<Extension Name="Report Server FileShare"
Type="Microsoft.ReportingServices.FileShareDeliveryProvider.FileShareUIControl,ReportingServicesFileShareDel
iveryProvider"/>
</DeliveryUI>

Configure File Share Delivery as the default delivery extension in Report Manager
1. The steps in this procedure modify the configuration so that file share delivery is listed as the first option
in the UI and it is the default selection.
Open the RSReportServer.config file in a text editor. For more information on the configuration file, see
RsReportServer.config Configuration File. After the configuration changes, the UI will look like the
following image:
2. Modify the DeliveryUI section to look like the following sample and note the key changes of:
a. The FileShare extension is before the email extension. This will change the order the extensions are
listed in Report Manager.
b. The File share extension contains DefaultExtension tag
<DefaultDeliveryExtension>True</DefaultDeliveryExtension> and the extension end tag was added
</Extension> .
c. The email extension is no longer configured as the default.
<DefaultDeliveryExtension>False</DefaultDeliveryExtension>

<DeliveryUI>
<Extension Name="Report Server FileShare"
Type="Microsoft.ReportingServices.FileShareDeliveryProvider.FileShareUIControl,ReportingServicesFileS
hareDeliveryProvider">
<DefaultDeliveryExtension>True</DefaultDeliveryExtension>
</Extension>
<Extension Name="Report Server Email"
Type="Microsoft.ReportingServices.EmailDeliveryProvider.EmailDeliveryProviderControl,ReportingService
sEmailDeliveryProvider">
<DefaultDeliveryExtension>False</DefaultDeliveryExtension>
<Configuration>
<RSEmailDPConfiguration>
<DefaultRenderingExtension>MHTML</DefaultRenderingExtension>
</RSEmailDPConfiguration>
</Configuration>
</Extension>
</DeliveryUI>

3. Save the configuration file.


4. Within a few minutes the report server will reload the configuration file and the new settings will take
effect. You can restart the report server service to force the loading of the configuration file.
The following event is written to the windows event log when the configuration is read.
Event ID: 109
Source: Report Server Windows Service (instance name)
The RSReportServer.config file has been modified

SharePoint mode report servers


Reporting Services SharePoint mode stores extensions information in the SharePoint service application
databases and not in the RsrReportServer.config file. In SharePoint mode, delivery extension configuration is
modified using PowerShell.
Configure the default delivery extension
1. Open the SharePoint Management Shell .
2. You can skip this step if you already know the name of your Reporting Services service application. Use
the following PowerShell to list the Reporting Services service applications in your SharePoint farm.

get-sprsserviceapplication | format-list *
3. Run the following PowerShell to verify the current default delivery extension for the Reporting Services
service application "ssrsapp".

$app=get-sprsserviceapplication | where {$_.name -like "ssrsapp*"};Get-SPRSExtension -identity $app |


where{$_.ServerDirectivesXML -like "<DefaultDelivery*"} | format-list *

See Also
RsReportServer.config Configuration File
RsReportServer.config Configuration File
File Share Delivery in Reporting Services
E-Mail Delivery in Reporting Services
Manage Subscription Owners and Run Subscription
- PowerShell
11/2/2020 • 7 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server 2016 Reporting Services and later ✔
️ SharePoint
Starting with SQL Server 2008 R2Reporting Services you can programmatically transfer the ownership of a
Reporting Services subscription from one user to another. This topic provides several Windows PowerShell
scripts you can use to change or simply list subscription ownership. Each sample includes sample syntax for
both Native mode and SharePoint mode. After you change the subscription owner, the subscription will then
execute in the security context of the new owner, and the User!UserID field in the report will display the value of
new owner. For more information on the object model the PowerShell samples call, see
ChangeSubscriptionOwner

In this topic:
How to use the scripts
Script: List the ownership of all subscriptions
Script: List all subscriptions owned by a specific user
Script: Change ownership for all subscriptions owned by a specific user
Script: List all subscriptions associated with a specific report
Script: Change ownership of a specific subscription
Script: Run (fire) a single subscription

How to use the scripts


Permissions
This section summarizes the permission levels required to use each of the methods for both Native and
SharePoint mode Reporting Services. The scripts in this topic use the following Reporting Services methods:
ReportingService2010.ListSubscriptions Method
ReportingService2010.ChangeSubscriptionOwner Method
ReportingService2010.ListChildren
The method ReportingService2010.FireEvent is only used in the last script to trigger a specific
subscription to run. If you don't plan to use that script, you can ignore the permission requirements for
the FireEvent method.
Native mode:
List Subscriptions: ReportOperation Enumeration on the report AND the user is the subscription owner)
OR ReadAnySubscription.
Change Subscriptions: The user must be a member of the BUILTIN\Administrators group
List Children: ReadProperties on Item
Fire Event: GenerateEvents (System)
SharePoint mode:
List Subscriptions: ManageAlerts OR CreateAlerts on the report AND the user is the subscription owner
and the subscription is a timed subscription).
Change Subscriptions: ManageWeb
List Children: ViewListItems
Fire Event: ManageWeb
For more information, see Compare Roles and Tasks in Reporting Services to SharePoint Groups and
Permissions.
Script usage
Create Script files (.ps1)
1. Create a folder named c:\scripts . If you choose a different folder, then modify the folder name used in
the example command-line syntax statements.
2. Create a text file for each script and save the files to the c:\scripts folder. When you create the .ps1 files,
use the name from each example command-line syntax.
3. Open a command prompt with administrative privileges.
4. Run each script file, using the sample command-line syntax provided with each example.
Tested environments
The scripts in this topic were tested on PowerShell version 3 and with the following versions of Reporting
Services:
SQL Server 2014 (12.x)
SQL Server 2012 (11.x)
SQL Server 2008 R2

Script: List the ownership of all subscriptions


This script lists all of the subscriptions on a site. You can use this script to test your connection or to verify the
report path and subscription ID for use in the other scripts. This is also a useful script to simply audit what
subscriptions exist and who owns them.
Native mode syntax:

powershell c:\scripts\ListAll_SSRS_Subscriptions.ps1 "[server]/reportserver" "/"

SharePoint mode syntax:

powershell c:\scripts\ListAll_SSRS_Subscriptions.ps1 "[server]/_vti_bin/reportserver" "https://[server]"

Script:
# Parameters
# server - server and instance name (e.g. myserver/reportserver or myserver/reportserver_db2)

Param(
[string]$server,
[string]$site
)

$rs2010 += New-WebServiceProxy -Uri "https://$server/ReportService2010.asmx" -Namespace


SSRS.ReportingService2010 -UseDefaultCredential ;
$subscriptions += $rs2010.ListSubscriptions($site); # use "/" for default native mode site

Write-Host " "


Write-Host "----- $server's Subscriptions: "
$subscriptions | select Path, report, Description, Owner, SubscriptionID, lastexecuted, Status

TIP
To verify site URLS in SharePoint mode, use the SharePoint cmdlet Get-SPSite . For more information, see Get-SPSite.

Script: List all subscriptions owned by a specific user


This script lists all of the subscriptions owned by a specific user. You can use this script to test your connection or
to verify the report path and subscription ID for use in the other scripts. This script is useful when someone in
your organization leaves and you want to verify what subscriptions they owned, so you can change the owner
or delete the subscription.
Native mode syntax:

powershell c:\scripts\ListAll_SSRS_Subscriptions4User.ps1 "[Domain]\[user]" "[server]/reportserver" "/"

SharePoint mode syntax:

powershell c:\scripts\ListAll_SSRS_Subscriptions4User.ps1 "[Domain]\[user]" "


[server]/_vti_bin/reportserver" "https://[server]"

Script:

# Parameters:
# currentOwner - DOMAIN\USER that owns the subscriptions you wish to change
# server - server and instance name (e.g. myserver/reportserver or myserver/reportserver_db2)
# site - use "/" for default native mode site
Param(
[string]$currentOwner,
[string]$server,
[string]$site
)

$rs2010 = New-WebServiceProxy -Uri "https://$server/ReportService2010.asmx" -Namespace


SSRS.ReportingService2010 -UseDefaultCredential ;
$subscriptions += $rs2010.ListSubscriptions($site);

Write-Host " "


Write-Host " "
Write-Host "----- $currentOwner's Subscriptions: "
$subscriptions | select Path, report, Description, Owner, SubscriptionID, lastexecuted,Status | where
{$_.owner -eq $currentOwner}
Script: Change ownership for all subscriptions owned by a specific
user
This script changes the ownership for all subscriptions owned by a specific user to the new owner parameter.
Native mode syntax:

powershell c:\scripts\ChangeALL_SSRS_SubscriptionOwner.ps1 "[Domain]\current owner]" "[Domain]\[new owner]"


"[server]/reportserver"

SharePoint mode syntax:

powershell c:\scripts\ChangeALL_SSRS_SubscriptionOwner.ps1 "[Domain]\{current owner]" "[Domain]\[new owner]"


"[server]/_vti_bin/reportserver"

Script:
# Parameters:
# currentOwner - DOMAIN\USER that owns the subscriptions you wish to change
# newOwner - DOMAIN\USER that will own the subscriptions you wish to change
# server - server and instance name (e.g. myserver/reportserver, myserver/reportserver_db2,
myserver/_vti_bin/reportserver)

Param(
[string]$currentOwner,
[string]$newOwner,
[string]$server
)

$rs2010 = New-WebServiceProxy -Uri "https://$server/ReportService2010.asmx" -Namespace


SSRS.ReportingService2010 -UseDefaultCredential ;
$items = $rs2010.ListChildren("/", $true);

$subscriptions = @();

ForEach ($item in $items)


{
if ($item.TypeName -eq "Report")
{
$curRepSubs = $rs2010.ListSubscriptions($item.Path);
ForEach ($curRepSub in $curRepSubs)
{
if ($curRepSub.Owner -eq $currentOwner)
{
$subscriptions += $curRepSub;
}
}
}
}

Write-Host " "


Write-Host " "
Write-Host -foregroundcolor "green" "----- $currentOwner's Subscriptions changing ownership to $newOwner :
"
$subscriptions | select SubscriptionID, Owner, Path, Description, Status | format-table -AutoSize

ForEach ($sub in $subscriptions)


{
$rs2010.ChangeSubscriptionOwner($sub.SubscriptionID, $newOwner);
}

$subs2 = @();

ForEach ($item in $items)


{
if ($item.TypeName -eq "Report")
{
$subs2 += $rs2010.ListSubscriptions($item.Path);
}
}

Script: List all subscriptions associated with a specific report


This script lists all of the subscriptions associated with a specific report. The report path syntax is different
SharePoint mode, which requires a full URL. In the syntax examples, the report name used is "title only", which
contains a space and therefore requires the single quotes around the report name.
Native mode syntax:
powershell c:\scripts\List_SSRS_One_Reports_Subscriptions.ps1 "[server]/reportserver" "'/reports/title
only'" "/"

SharePoint mode syntax:

powershell c:\scripts\List_SSRS_One_Reports_Subscriptions.ps1 "[server]/_vti_bin/reportserver"


"'https://[server]/shared documents/title only.rdl'" "https://[server]"

Script:

# Parameters:
# server - server and instance name (e.g. myserver/reportserver or myserver/reportserver_db2)
# reportpath - path to report in the report server, including report name e.g. /reports/test report >>
pass in "'/reports/title only'"
# site - use "/" for default native mode site
Param
(
[string]$server,
[string]$reportpath,
[string]$site
)

$rs2010 = New-WebServiceProxy -Uri "https://$server/ReportService2010.asmx" -Namespace


SSRS.ReportingService2010 -UseDefaultCredential ;
$subscriptions += $rs2010.ListSubscriptions($site);

Write-Host " "


Write-Host " "
Write-Host "----- $reportpath 's Subscriptions: "
$subscriptions | select Path, report, Description, Owner, SubscriptionID, lastexecuted,Status | where
{$_.path -eq $reportpath}

Script: Change ownership of a specific subscription


This script changes the ownership for a specific subscription. The subscription is identified by the SubscriptionID
that you pass into the script. You can use one of the list subscription scripts to determine the correct
SubscriptionID.
Native mode syntax:

powershell c:\scripts\Change_SSRS_Owner_One_Subscription.ps1 "[Domain]\[new owner]" "[server]/reportserver"


"/" "ac5637a1-9982-4d89-9d69-a72a9c3b3150"

SharePoint mode syntax:

powershell c:\scripts\Change_SSRS_Owner_One_Subscription.ps1 "[Domain]\[new owner]" "


[server]/_vti_bin/reportserver" "https://[server]" "9660674b-f020-453f-b1e3-d9ba37624519"

Script:
# Parameters:
# newOwner - DOMAIN\USER that will own the subscriptions you wish to change
# server - server and instance name (e.g. myserver/reportserver or myserver/reportserver_db2)
# site - use "/" for default native mode site
# subscriptionID - guid for the single subscription to change

Param(
[string]$newOwner,
[string]$server,
[string]$site,
[string]$subscriptionid
)
$rs2010 = New-WebServiceProxy -Uri "https://$server/ReportService2010.asmx" -Namespace
SSRS.ReportingService2010 -UseDefaultCredential;

$subscription += $rs2010.ListSubscriptions($site) | where {$_.SubscriptionID -eq $subscriptionid};

Write-Host " "


Write-Host "----- $subscriptionid's Subscription properties: "
$subscription | select Path, report, Description, SubscriptionID, Owner, Status

$rs2010.ChangeSubscriptionOwner($subscription.SubscriptionID, $newOwner)

#refresh the list


$subscription = $rs2010.ListSubscriptions($site) | where {$_.SubscriptionID -eq $subscriptionid}; # use "/"
for default native mode site
Write-Host "----- $subscriptionid's Subscription properties: "
$subscription | select Path, report, Description, SubscriptionID, Owner, Status

Script: Run (fire) a single subscription


This script will run a specific subscription using the FireEvent method. The script will immediately run the
subscription regardless of the schedule configured for the subscription. The EventType is matched against the
known set of events that are defined in the report server configuration file rsrepor tser ver.config The script
uses the following event type for standard subscriptions:
<Event>

<Type>TimedSubscription</Type>

</Event>

For more information on the configuration file, see RsReportServer.config Configuration File.
The script includes delay logic " Start-Sleep -s 6 " so there is time after the event fires, for the updated status to
be available with the ListSubscription method.
Native mode syntax:

powershell c:\scripts\FireSubscription.ps1 "[server]/reportserver" $null "70366e82-2d3c-4edd-a216-


b97e51e26de9"

SharePoint mode syntax:

powershell c:\scripts\FireSubscription.ps1 "[server]/_vti_bin/reportserver" "https://[server]" "c3425c72-


580d-423e-805a-41cf9799fd25"

Script:
# Parameters
# server - server and instance name (e.g. myserver/reportserver or myserver/reportserver_db2)
# site - use $null for a native mode server
# subscriptionid - subscription guid

Param(
[string]$server,
[string]$site,
[string]$subscriptionid
)

$rs2010 = New-WebServiceProxy -Uri "https://$server/ReportService2010.asmx" -Namespace


SSRS.ReportingService2010 -UseDefaultCredential ;
#event type is case sensative to what is in the rsreportserver.config
$rs2010.FireEvent("TimedSubscription",$subscriptionid,$site)

Write-Host " "


Write-Host "----- Subscription ($subscriptionid) status: "
#get list of subscriptions and filter to the specific ID to see the Status and LastExecuted
Start-Sleep -s 6 # slight delay in processing so ListSubscription returns the updated Status and
LastExecuted
$subscriptions = $rs2010.ListSubscriptions($site);
$subscriptions | select Status, Path, report, Description, Owner, SubscriptionID, EventType, lastexecuted |
where {$_.SubscriptionID -eq $subscriptionid}

See also
ReportingService2010.ListSubscriptions Method
ReportingService2010.ChangeSubscriptionOwner Method
ReportingService2010.ListChildren
ReportingService2010.FireEvent
Reporting Services Tools
11/2/2020 • 5 minutes to read • Edit Online

SQL Server Reporting Services contains a set of graphical and scripting tools that support the development and
use of rich reports in a managed environment. The tool set includes development tools, configuration and
administration tools, and report viewing tools. This article gives a brief overview of each tool in Reporting
Services and how it can be accessed.
To find a tool right away, see Tutorial: How to Locate and Start Reporting Services Tools (SSRS).

Tools for report authoring


The following table lists the available tools for report authoring in SQL Server Reporting Services.

TO O L DESC RIP T IO N H O W TO A C C ESS

SQL Server Mobile Report Publisher With Mobile Report Publisher, you can Download the SQL Server Mobile
create mobile reports that dynamically Report Publisher
adjust the content to fit your screen or
browser window and scale well to any
screen size.

Create mobile reports on a design


surface with adjustable grid rows and
columns, and flexible mobile report
elements.

For more information, see Create


mobile reports with SQL Server Mobile
Report Publisher.

Power View An interactive data exploration and Reporting Services in SharePoint mode.
visual presentation experience Browser with Silverlight.
designed to let you create and interact
with reports based on Analysis
Services tabular models.
TO O L DESC RIP T IO N H O W TO A C C ESS

Report Designer Use this tool to design reports. SQL Server Data Tools (SSDT)
Includes the following features:

Deploy to a native mode or SharePoint


mode report server.

Hosted in SQL Server Data Tools


(SSDT)

Report Data pane to organize data


used in your report

Tabbed views for Design and Preview


for interactive report design

Query designers to help specify which


data to retrieve from data sources and
that are associated with data source
types in the RSReportDesigner
Configuration File

Expression editor with IntelliSense to


build Visual Basic expressions that
customize report content and
appearance

Supports custom report items and


custom query designers

For more information, see Reporting


Services in SQL Server Data Tools
(SSDT).

Report Builder Use this tool to design reports. Download the standalone version of
Includes the following features: Report Builder

Deploy to a native mode or SharePoint Or open from web portal/SharePoint


mode report server.

Microsoft Office-like authoring


environmentSQL Server Mobile Report
Publisher

Ability to save report items as report


parts

A wizard for creating maps

Aggregates of aggregates

Enhanced support for expressions

Query designers to help specify which


data to retrieve from a selection of
built-in data sources types

For more information, see Report


Builder in SQL Server.
Tools for Report Server administration
A set of graphical and scripting tools are available for administering the report server in SQL Server Reporting
Services. The tools that you use depend on the deployment mode of your report server.
Native mode
The following table lists the available tools for administering the report server that is deployed in native mode.

TO O L DESC RIP T IO N H O W TO A C C ESS

Report Server Configuration Manager Use this tool to configure a Reporting Start menu
Services installation. Available tasks
include:

Configuring the Report Server service


account.

Creating and configuring one or more


Web service URL.

Configuring the web portal URL

Creating and configuring the report


server database.

Configuring a scale-out deployment.

Backup, restoring, or replacing the


symmetric key that is used to encrypt
stored connection strings and
credentials.

Configuring the unattended execution


account.

Configuring Subscription settings.

Configuring an SMTP server for e-mail


delivery.

Configuring the Power BI Service


(cloud).

Note: The Report Server Configuration


Manager does not help you manage
report server content, enable
additional features, or grant access to
the server.

For more information, see Report


Server Configuration Manager (Native
Mode).
TO O L DESC RIP T IO N H O W TO A C C ESS

SQL Server Management Studio Use this tool to manage one or more Start menu
report server instances in a single
environment, including:

Managing both local and remote


report server instances

Setting report server properties

Modifying role definitions

Turning off report server features you


are not using

Managing jobs

Managing shared schedules

Rsconfig Utility Use this tool to configure and manage Command prompt
a report server connection to the
report server database. You can also
use it to specify a user account to use
for unattended report processing.

For more information, see Report


Server Command Prompt Utilities
(SSRS).

Rskeymgmt Utility Use this tool to: Command prompt

Extract, restore, create, and delete the


symmetric key used to encrypt report
server data

Join report server instances in a scale-


out deployment

For more information, see Report


Server Command Prompt Utilities
(SSRS).

Windows Management Use these classes to automate the Visual Basic script
Instrumentation (WMI) Classes configuration tasks in Report Server
Configuration Manager without the
need to use the graphical user
interface.

For more information, see Accessing


the WMI Provider Programmatically.

SharePoint integrated mode


In SharePoint mode, the Reporting Services is a service application in the SharePoint architecture, and is
administered directly through SharePoint
TO O L DESC RIP T IO N H O W TO A C C ESS

SharePoint Central Administration Use SharePoint Central Administration Browser to the SharePoint site URL for
to create, query, and manage the Central Administration
shared service applications for
Reporting Services.

For more information, see


Configuration and Administration of a
Report Server (Reporting Services
SharePoint Mode).

PowerShell Cmdlets Use PowerShell cmdlets to create, SharePoint 2010 Management Shell
query, and manage the shared service
applications for Reporting Services.

For more information, see PowerShell


cmdlets for Reporting Services
SharePoint Mode.

Tools for report content management


A set of graphical and scripting tools are available for managing content in SQL Server Reporting Services. The
tools that you use depend on the deployment mode of your report server.

TO O L DESC RIP T IO N H O W TO A C C ESS

Report Server Web service URL Use this tool to browse content in the Browser
report catalog in a generic item
navigation page.

For more information, see Report


Server Web Service.
TO O L DESC RIP T IO N H O W TO A C C ESS

Web Portal (Native mode only) Use this tool to Browser


administer a single report server
instance from a remote location over
an HTTP connection. You can do the
following:

View, search, print, and subscribe to


reports.

Create, secure, and maintain the folder


hierarchy to organize items on the
server.

Configure role-based security that


determines access to items and
operations.

Configure report execution properties,


report history, and report parameters.

Create report models that connect to


and retrieve data from a Microsoft SQL
Server Analysis Services data source or
from a SQL Server relational data
source.

Set model item security to allow access


to specific entities in the model, or
map entities to predefined
clickthrough reports that you create in
advance.

Create shared schedules and shared


data sources to make schedules and
data source connections more
manageable.

Create data-driven subscriptions that


roll out reports to a large recipient list.

Create linked reports to reuse and


repurpose an existing report in
different ways.

Launch Report Builder to create


reports that you can save and run on
the report server. For more
information, see The web portal of a
report server (SSRS Native Mode).

RS Utility This tool is a script host that you can Command prompt
use to perform scripted operations.
Use this tool to run Visual Basic scripts
that copy data between report server
databases, publish reports, create
items in a report server database, and
more. For more information, see
Report Server Command Prompt
Utilities (SSRS).
See also
Reporting Services Report Server
Reporting Services Concepts (SSRS)
What is SQL Server Reporting Services (SSRS)
Reporting Services in SQL Server Data Tools (SSDT)
3/5/2021 • 17 minutes to read • Edit Online

SQL Server Data Tools (SSDT) is a Microsoft Visual Studio environment for creating business intelligence
solutions. SSDT features the Report Designer authoring environment, where you can open, modify, preview,
save, and deploy Reporting Services paginated report definitions, shared data sources, shared datasets, and
report parts. SQL Server Data Tools (SSDT) is not included with SQL Server. Download SQL Server Data Tools.
This topic describes SQL Server Data Tools solutions, projects, project templates, and configurations used for
Reporting Services, and the views, menus, toolbars, and shortcuts that you can use in Report Designer.
To get started designing reports, see Design Reports with Report Designer (SSRS).

Solutions and Projects


A report project acts as a container for report definitions and resources. Every file in the report project is
published to the report server when the project is deployed. When you create a project for the first time, a
solution is also created as a container for the project. You can add multiple projects to a single solution.

Configurations
To create multiple sets of project properties for deployment variations such as enterprise test and production
report servers, use the Configuration Manager. For more information, see Deployment and Version Support in
SQL Server Data Tools (SSRS).

Report Server Projects


When you install Reporting Services, the following project templates are made available in SQL Server Data
Tools (SSDT):
Repor t Ser ver Project. When you select a Report Server Project, Report Designer opens. A Report
Server Project is a Business Intelligence Projects template installed by Visual Studio that is available from
the New Project dialog box. For more information, see Add a New or Existing Report to a Report Project
(SSRS).Report Server project properties apply to all reports and all shared data sources in a SQL Server
Data Tools (SSDT) project. These properties include the URL for the report server and the folder names
for reports and shared data sources. Use the Project Proper ty Pages dialog box to view the current
property values. To open this dialog box, on the Project menu, click Proper ties .
Repor t Ser ver Project Wizard. When you select a Report Server Wizard Project, a report server
project is automatically created, and the Report Wizard opens. In the wizard, you can create a report by
following instructions on each page to create a connection string to a data source, set data source
credentials, design a query, add a table or matrix data region, specify report data and groups, pick a font
and color style, publish the report to a report server, and preview the report locally. After you create a
report with the wizard, you can change the report data and the report designer by using Report Designer
in the Report Server project.

Report Designer Windows and Panes


Report Designer supports two views: Design to define the report data and report layout, and Preview to
display a rendered view of the report. In each view, you can display multiple windows to help you design or view
a rendered report.
Report Data Pane
The Report Data pane displays built-in fields, data sources, datasets, field collections, report parameters, and
images.
Use the Report Data pane to view:
Built-in Fields Predefined report information such as the report name or the time the report was
processed.
Data sources A data source represents a name and connection to a source of data.
Datasets Each dataset includes a query that specifies which data to retrieve from the data source. Expand
the dataset to view the collection of fields specified by the dataset query.
In some query designers for multidimensional datasets, you can specify filters in the Filters pane and
indicate whether to create report parameters. If you specify the report parameter option, a special dataset
is automatically created to populate the parameter's valid values list. By default, the dataset does not
appear in the Report Data Pane. For more information, see Show Hidden Datasets for Parameter Values
for Multidimensional Data (Report Builder and SSRS).
Repor t parameters The list of report parameters. Parameters can be created manually or automatically
when a dataset query includes query parameters.
Images The list of images that are available to include as an Image report item in a report.
Data sources and datasets in the Report Data pane represent the elements in the report definition. The Report
Data pane is a feature supported by multiple report authoring environments. In Report Builder, it is the only
pane available for managing data sources and datasets. In Report Designer, the Report Data pane works with
Solution Explorer, which lists shared data sources and shared datasets as files. Shared data sources and shared
datasets in the Report Data pane must point to their corresponding Shared Data Sources and Shared Datasets in
Solution Explorer. The Report Data pane elements then contain a reference to the data files in Solution Explorer.
The project properties determine whether the shared data sources and shared datasets are deployed to the
report server or SharePoint site. For more information, see Convert Data Sources (Report Builder and SSRS).

NOTE
If you do not see the Report Data pane, click in the Design area and then on the View menu, click Repor t Data . If the
Report Data pane is floating, you can anchor it. For more information, see Dock the Report Data Pane in Report Designer
(SSRS).

Grouping Pane
Use the Grouping pane to define groups for a tablix data region. You can define row groups and detail groups
for tables and row and column groups for matrices. You cannot use the Grouping pane to define groups for
Charts or other data regions. For more information, see Understanding Groups (Report Builder and SSRS).
The Grouping pane has two modes:
Default. Use the Default mode to display all row and column groups in a hierarchical format that shows
the relationship of parent groups, child groups, adjacent groups, and detail groups. A child group appears
under and at the next indent level compared to its parent group. An adjacent group appears at the same
indent level as its peer or sibling groups.
Use default mode to add, edit, or delete groups. For groups based a single dataset field, drag the field to
the Row Groups or Column Groups pane. You can insert the group above or below an existing group. To
add an adjacent group, right-click the sibling group, and use the shortcut menu. To display which tablix
cells belong to a group, select the group in the Grouping pane.
Advanced. Use the Advanced mode to display static and dynamic row and column group members of
the selected tablix data region. You must use group members to set properties that control the visibility of
the rows and columns associated with a group or group member, or the rules that renderers use to try to
keep groups together on a page. Group members appear on the design surface as cells in the row group
and column group areas.

NOTE
To toggle between Default and Advanced modes, right-click the down arrow to the right of the Column Groups icon.

For more information, see Grouping Pane.


Toolbox
The Toolbox contains report items that you can drag to the design surface. Data regions are report items that
you use to organize data on the report. Table, Matrix, List, Chart, Gauge, Data Bar, Sparkline, and Indicator are
data regions. Other report items include Map, Text Box, Rectangle, Line, Image, and Subreport. Custom report
items might also appear on this list if they have been installed and registered by your system administrator.
Properties Pane
The Properties pane is a standard Visual Studio window that shows property names and values for the currently
selected report item on the design surface. In most cases, property names correspond to elements and
attributes in the Report Definition Language (RDL) file. The most commonly used properties can be set by using
the Properties dialog box for the selected item. To open the corresponding dialog box, click the Proper ty Pages
button on the Properties pane toolbar. Advanced users can set property values directly in the Properties pane.
Use the Properties pane to:
Set properties for the currently selected item on the design surface. Some properties provide a drop-
down list of values. You can also type the value directly in the cell. Some properties contain a collection of
values, indicated by the value (Collection) . Most properties can accept an expression; complex
expressions are indicated by the value <Expression> . Click <Expression> to open the Expression
dialog box. For more information, see Expression Dialog Box.
Use the Properties pane toolbar buttons to change the grid from category view to alphabetical view. In
category view, you may need to expand a category to see all the properties under it. To open an item's
Properties dialog box, click the Proper ty Pages button on the toolbar or by right-click the item and click
Proper ties .
Set properties for the currently selected group member in the Grouping pane. Group member properties
help control how static group header and footer rows repeat for each group instance. For more
information, see Display Headers and Footers with a Group (Report Builder and SSRS).
To display the Properties pane, from the View menu, click Proper ties Window . You can undock this pane and
move it to another area of the SQL Server Data Toolswindow, or display it as a tabbed view on the design
surface.
Solution Explorer
Solution Explorer is a standard Visual Studio component that displays all the items in your project. For a Report
Server project, this includes folders to organize shared data sources, shared datasets, reports and resources.
Folder items are automatically alphabetized when you open the solution file. To view item properties in the
Properties pane, select the item.
Output
The Output window displays processing errors when you preview a report, and publishing errors when you
deploy a report or a shared data source.
Use the Output and the Document Outline windows to help debug errors in expressions.
Document Outline
The Document Outline window displays a hierarchical list of all report items in the report definition. To open the
Document Outline pane, from the View menu, point to Other Windows and click Document Window .
Use the Document Outline pane to help identify text boxes and other report items by name. When you select an
item in the Document Outline, the item is also selected on the Design Surface.
Task List
The Task List window displays build errors for unsupported features when you import a report from another
application, such as Microsoft Access.

Report Designer Design View


By default, when you create a Report Server project, Report Designer opens in Design view and displays the
design surface. By default, the design surface displays the report body and the report background.
The shortcut menu on the background provides options to add a page header and page footer, and from the
View menu, display a ruler and the Grouping pane.
Use the zoom control to increase or decrease the magnification of the report.
To design a report, drag report items from the Toolbox to the design surface, and then configure their properties
and alter their arrangement on the report.

Report Designer Preview


Use Preview to run the report and view the rendered report in the report viewer. Preview caches report data
locally. You can also set configuration properties to run the report in debug view, using a browser.
When you preview a report, Report Designer connects to the report data sources, runs dataset queries, caches
the data on the local computer, processes the report to combine data and layout, and renders the report. You can
view the report in on the Preview tab or you can set up project properties to view the report in debug mode and
view it directly in a browser.
Previewing Parameterized Repor ts. When you preview a report, the report is processed
automatically if all report parameters have valid default values. If one or more report parameters do not
have a valid default value, you must choose a value for each unassigned parameter, and then, on the
report toolbar, click View Repor t .
Understanding the Local Data Cache When you preview a report, the report processor runs all the
queries for datasets in the report using the current parameter defaults, and saves the results as a local
data cache (.rdl.data) file. You can continue to design your report without incurring the overhead of
retrieving this data again if you make no changes to either the report dataset queries or the report
parameters.
Previewing the Repor t using Configuration Manager and Debug. In SQL Server Data Tools
(SSDT), project properties define how you want to deploy and debug your reports. These properties
apply to all reports and shared data sources in the project. To set the project properties, from the Project
menu, click Proper ties . Use these settings to test your reports and publish them to the report server.
Monitoring the Output Pane for Error Messages. When you preview a report and the report
processor detects a problem, it writes error messages to the Output pane.

Report Designer Menus


When a Report Designer project is active in SQL Server Data Tools (SSDT), the following toolbars are added to
the main toolbar. The Report Designer menus are visible only when in Design view.
Format Menu
When you select an item on the design surface, the Format menu contains the following options:
Foreground Color Select a text color. Black is the default text color.
Background Color Select a background color for your text boxes and data regions.
Font Specify whether the text is bold, italic, or underlined.
Justify Specify whether the text is right-aligned, centered, or left-aligned.
Align Specify how the selected objects are aligned in relation to one another within the report.
Make Same Size Adjust the size of the selected objects within the report.
Horizontal Spacing Adjust the horizontal spacing between the selected objects within the report.
Ver tical Spacing Adjust the vertical spacing between the selected objects within the report.
Center in Form Center the selected object vertically and horizontally in relation to the Report Designer
window.
Order Move selected objects into the background or foreground.
Report Menu
When the report design surface has focus, the Repor t menu contains the following options:
Repor t Proper ties Select to open the Repor t Proper ties dialog box. In this dialog box, you can assign
general report properties, such as author name and grid spacing, and specify properties for the report
layout, such as the number of columns and page size. You can also include custom code, references to
assemblies and classes, and the names of data output elements, data transforms, and data schemas.
View Switch between the two Report Designer tabs: Design and Preview.
Page Header Add or delete a page header to the report. When you delete a page header, all items in the
page header are deleted.
Page Footer Add or delete a page footer to the report. When you delete a page footer, all items in the
page footer are deleted.
Grouping Pane Show or hide the Grouping pane.
View Menu
Use the View menu to display Report Designer windows and toolbars
Error List Use this option to display errors detected when publishing or previewing a report.
Output Use this option to display errors detected when publishing or processing a report, or for more
information about expression errors when a report displays the text "#Error".
Proper ties Window Use this option to display the property values for the currently selected report item
on the design surface. To see properties for nested report items, you must click a report item multiple
times to cycle through the hierarchy for a report item and its nested members. Check the name of the
item that appears at the top of the Properties pane to see which report item's properties are displayed.
Toolbox Use this option to display the Toolbox.
Other Windows Use this option to display the following pane:
Document Outline Use this option to display a hierarchical view of report items and their collections
of text boxes in a report.
Toolbars Use this option to display toolbars that support Report Designer features, including Repor t
Borders and Repor t Formatting . For more information, see Report Designer Toolbars.
Repor t Data Use this option to display the Report Data pane, where you can add report parameters,
data sources, datasets, images.
Project Menu
Use the Project menu to manage shared data sources and reports in a project. When you add or remove items
from the project, the hierarchical display of project items in Solution Explorer is automatically updated.
Add New Item Add a new shared data source or new report to the project.
Add Existing Item Add an existing shared data source or an existing report to the project.
Impor t Repor ts Import reports from another application, for example, Microsoft Access.
Exclude from Project Exclude items from the project. This option does not delete the item from your
file system.
Show All Files Show all files in a project.
Refresh Project Toolbox Items Refresh the toolbox cache when you install new custom report items in
your project.
Proper ties Open the Proper ty Pages dialog box for this project. For more information, see Project
Property Pages Dialog Box.

Report Designer Toolbars


Report Designer provides the following specialized toolbars to use when designing reports:
Repor t Add a page header or page footer, set report properties, toggle the ruler or Grouping pane, or
use zoom to change your view of the report.
Repor t Borders Set the color, style, and width for all selected lines and the borders of all selected report
items.
Repor t Formatting Set the format of selected report items. For text boxes, the following types of
formatting can be changed using the toolbar: font properties and text color, background color, and text
justification.
Layout Set the drawing order of report items and merging cells within a data region.
Standard Open or save projects, display windows, and select the Debug configuration.
Use the View menu to control whether to display these toolbars. Other Visual Studio toolbars may be disabled if
their functionality does not apply to Report Designer features.

Source Control
SQL Server Data Tools can integrate with source plug-ins. Use the Projects and Solutions pages in the Options
dialog box to specify the plug-in and configure properties.
Custom Report Templates
To use custom reports as templates for new reports, you simply copy them to the ReportProject folder on the
computer on which SQL Server Data Tools is installed. By default, this folder is in the following location:
<drive>:\Program Files\Microsoft Visual Studio 14.0\Common7\IDE\Private Assemblies\ProjectItems\ReportProject
. When you add a new item to the report project, your custom report appears in the Templates pane.
You can also add custom styles to the report wizard.

Command Line Support for SQL Server Data Tools


SQL Server Data Tools is based on Microsoft Visual Studio and the underlying devenv.exe application. Before
you can use these options, you must set valid values for following two items:
Project properties for OverwriteDataSources, TargetDataSourceFolder, TargetReportFolder, and
TargetServerURL.
At least one set of configuration properties, for example, Debug or Release.
For more information, see Publishing Data Sources and Reports.
For a report server project, you can specify the following options from the command line:
/deploy Deploy reports by using the project properties specified in a configuration file. For example, the
following command deploys the reports specified by the solution file Reports.sln by using the Release
configuration settings that are specified in the project properties:

devenv.exe "C:\Users\MyUser\Documents\Visual Studio 2015\Projects\Reports\Reports.sln" /deploy


"Release"

/build Build the solution file, but do not deploy it. For example, the following command builds the
reports specified by the solution file Reports.sln by using the Debug configuration settings that are
specified in the project properties:

devenv.exe "C:\Users\MyUser\Documents\Visual Studio 2015\Projects\Reports\Reports.sln" /build "Debug"

/out Redirect the output generated by building a solution to the specified file. For example, the following
command redirects the output from the build in the previous example to a file named mybuildlog.txt.

devenv.exe "C:\Users\MyUser\Documents\Visual Studio 2015\Projects\Reports\Reports.sln" /build "Debug"


/out mybuildlog.txt

Keyboard Shortcuts in Reporting Services


Use keyboard shortcuts to:
Control windows and modes in SQL Server Data Tools:

DESC RIP T IO N K EY C O M B IN AT IO N

Build the selected project CTRL+SHIFT+B

Display Properties window F4


DESC RIP T IO N K EY C O M B IN AT IO N

Display Data window CTRL+Alt+D

Start debugging F5

Move from one open window to the next F6

Control items on the report design surface:

DESC RIP T IO N K EY C O M B IN AT IO N

Move focus from one report item to the next report TAB
item

Move selected report item Arrow keys

Nudge selected report item CTRL+Arrow keys

Increase or decrease the size of the selected report item CTRL+SHIFT+Arrow keys

In a text box, move cursor to the beginning of the CTRL+HOME


display text that is visible

In a text box, move cursor to the end of the display text CTRL+END
that is visible

In a text box, select text from the current cursor position SHIFT+HOME
to the beginning of the display text that is visible

In a text box, select text from the current cursor position SHIFT+END
to the end of the display text that is visible

In a text box, select text from the current cursor position CTRL+SHIFT+HOME
to the beginning of the expression

In a text box, select text from the current cursor position CTRL+SHIFT+END
to the end of the expression

Open the shortcut menu for the selected report item SHIFT+F10+Property Key on newer keyboards

Next steps
Download SQL Server Data Tools Solution Explorer
Reporting Services Reports
Report Definition Language
Deployment and Version Support in SQL Server Data Tools
More questions? Try asking the Reporting Services forum
Design Reporting Services Paginated Reports with
Report Designer (SSRS)
3/5/2021 • 13 minutes to read • Edit Online

Use Report Designer to create full-featured Reporting Services paginated reports and reporting solutions.
Report Designer provides a graphical interface in which you can define data sources, datasets and queries,
report layout positions for data regions and fields, and interactive features such as parameters and sets of
reports that work together.
Report Designer is a feature of SQL Server Data Tools (SSDT), a Microsoft Visual Studio environment for creating
business intelligence solutions. SQL Server Data Tools (SSDT) is not included with SQL Server. Download SQL
Server Data Tools.

Benefits of Report Projects


Report projects act as containers for report definitions and resources. Use projects to:
Organize reports and related items in one container.
Test report solutions that include reports and related items locally.
Deploy related items together. Use project properties and configuration management to deploy to
multiple environments.
Preserve a set of master copies for reports and related items. After deployment, published reports can be
accidentally modified.
Use the information in this topic to design paginated reports and related items for a single reporting project in a
SQL Server Data Tools (SSDT) solution. For more information about solutions and multiple projects in SQL
Server Data Tools, see Reporting Services in SQL Server Data Tools.

Shared Data Sources


Use SQL Server Data Tools to define and deploy shared data sources for a reporting solution. Shared data
sources can be deployed independently from other items in a project by using the Over writeDataSources and
TargetDataSourceFolder properties. For more information, see Set Deployment Properties (Reporting
Services).
In Report Designer, you work in both the Report Data pane and in Solution Explorer to define the data sources
used in a report. For more information, see Report Data Pane. You cannot use SQL Server Data Tools to open
data sources that are published to a report server or SharePoint site, but not included in the SQL Server Data
Tools solution. For that feature, use Report Builder authoring environment (SSRS).
SQL Server Data Tools is a client tool. You can test your reporting solution locally on your computer, deploy it to
a test environment for testing the server solution, and then deploy it to a production environment. After
deployment, verify that the data source processing extensions and data source credentials are configured for the
report server environment. You can use Configuration Manager to help manage the properties for different
deployments. For more information, see Reporting Services in SQL Server Data Tools (SSDT).
For more information, see Create data connection strings - Report Builder & SSRS.
Shared Datasets
Use SQL Server Data Tools to define and deploy shared datasets for a reporting solution. Shared datasets can be
deployed independently from other items in a project by using the Over writeDatasets and
TargetDatasetFolder properties. For more information, see Set Deployment Properties (Reporting Services).
In Report Designer, you work in both the Report Data pane and in Solution Explorer to define shared datasets
used in a report. For more information, see Report Data Pane. You cannot use SQL Server Data Tools to open
published datasets directly from a report server or SharePoint site. For that feature, use Report Builder
authoring environment (SSRS) in Shared Dataset mode.
SQL Server Data Tools is a client tool. You can use query designers to help create and test your query results
locally in Preview. After deployment, you can manage shared datasets independently from the shared data
sources and reports that they depend on. For more information, see Report Embedded Datasets and Shared
Datasets (Report Builder and SSRS), Query Design Tools (SSRS), and Manage Shared Datasets.

Paginated Reports
Paginated reports are files that are stored in a report project. Reports can be used as stand-alone reports,
subreports, or the targets for drillthrough actions from main reports. Reports can be deployed independently
from other items in a project by using TargetRepor tFolder and other properties. For more information, see
Set Deployment Properties (Reporting Services).

NOTE
If you are publishing to a report server in SharePoint mode, some report solution features cannot be tested in the Report
Designer project. References to reports, subreports, and drillthrough reports must use fully-qualified URLs that can be
tested only after you deploy the report project. For more information, see URL Examples for Published Report Items on a
Report Server in SharePoint Mode (SSRS).

You can add reports to a project in the following ways:


Add a new repor t project. By default, a blank report opens in Report Designer. For more information,
see Add a New or Existing Report to a Report Project (SSRS).
Add a Repor t Wizard project. You create a report in a guided step-by-step manner. The Report Wizard
simplifies data definition and report design into a series of steps that give you a finished report. You can
add styles to customize the wizard for your own organization. For more information, see Add a New or
Existing Report to a Report Project (SSRS).
Add a new item of type Repor t. A blank report opens in Report Designer.
Add an existing item. An existing report definition (.rdl) opens in Report Designer. Opening a report or
project from an earlier version of Reporting Services might automatically upgrade the project to the
current version and the report to the current schema. For more information, see Upgrade Reports.
Impor t a Microsoft Access repor t. Import all reports from an Access database (.mdb, .accdb) or
project (.adp) file. Report Designer converts each report in a database or project file to RDL and saves it in
the report project. Not all of the functionality of an Access report transfers to a report definition (.rdl) file.
For more information, see Import Reports from Microsoft Access (Reporting Services) and Supported
Access Report Features (SSRS).
NOTE
You must have Access 2002 or a later version installed on the same computer that Report Designer is installed on
in order to use the import feature. The data source for the Access reports must be available when the reports are
imported.

Work directly in RDL. When you write a report in Report Designer, the report is saved in XML format
as a Report Definition Language (RDL) file. You can edit this file in Report Designer, a text editor, or any
tool in which you can edit XML.
When you edit the report definition source in Report Designer, you are working in the current RDL
schema for the version of SQL Server from which you installed the development tools. When you build a
project, the schema version might change depending on your deployment properties. For more
information, see Deployment and Version Support in SQL Server Data Tools (SSRS).
Editing RDL directly can result in a report that cannot be published to the report server or cannot run. As
with any XML file, ensure that XML-specific characters used within elements are properly encoded. When
you publish the report, the report server uses the schema to validate the XML contained within the RDL
file.
To include elements that are not part of the RDL schema, place them in the Custom Element. The Custom
element can be read by custom rendering extensions, but is ignored by the rendering extensions
provided with Reporting Services. For example, you can use the Custom element to store comments in
the report.
For more information, see Report Definition Language (SSRS).

Report Parts
In Report Designer, after you create tables, charts, and other paginated report items in a project, you can publish
them as report parts to a report server or SharePoint site integrated with a report server so that you and others
can reuse them in other reports. For more information, see Report Parts in Report Designer (SSRS).
Report parts can be deployed independently from other items in a project by using TargetRepor tPar tFolder
and other properties. For more information, see Set Deployment Properties (Reporting Services).

Resources
You can add files to your project that are related to your report but not processed by the report server. For
example, you can add images for pictures or ESRI shapefiles for spatial data. For more information, see
Resources.

Paginated Report Layout


To create the report layout, drag report items and data regions from the Toolbox to the design surface and
arrange them. Drag dataset fields to the items on the design surface to add data to the report. To organize data
in groups in a tablix data region, drag dataset fields to the Grouping pane. Because report authoring tools are
essentially a way to create report definitions, the approach to report design is quite similar between Report
Builder and Report Designer.

Preview a Paginated Report


Use Preview to verify the report data and layout design. When you preview a report, the report processor
validates the report definition schema and expression syntax and lists issues in the Output window.
NOTE
When you preview a report, the data for the report is cached to a file on the local computer. When you preview the same
report again using the same query, parameters, and credentials, Report Designer retrieves the cached copy rather than
rerunning the query. The data file is saved as <reportname>.rdl.data in the same directory as the report definition file.
The file is not deleted when you close Report Designer.

You can preview a report in the following ways:


Preview view. Click the Preview tab. The report runs locally, using the same report processing and
rendering functionality that is provided with the report server. The report that is displayed is an
interactive image; you can select parameters, click links, view the document map, and expand and
collapse hidden areas of the report. You can also export the report to any of the installed rendering
formats.
Standalone Preview. Run the local report in a browser. By using a debug configuration, you can also
use this mode to debug custom assemblies that you write. There are three ways to run a project in Debug
mode:
On the Debug menu, click Star t Debugging .
On the Visual Studio standard toolbar, click the Star t button.
Press F5.
If you use a project configuration that builds the report but does not deploy it, the report that is specified
in the Star tItem property of the current configuration opens in a separate preview window.

NOTE
To use Debug mode, you must set a start item. In Solution Explorer, right-click the report project, click
Proper ties , and in Star tItem , select the name of the report to display.

If you wish to preview a particular report that is not the start item for the project, select a configuration
that builds the report but does not deploy it (for example, the DebugLocal configuration), right-click the
report, and then click Run . You must choose a configuration that does not deploy the report; otherwise,
the report will be published to the report server instead of displayed locally in a preview window.
Print Preview.
When you first view a report on in Preview mode or in the preview window, the view of the report
resembles a report produced by the HTML rendering extension. The preview is not HTML, but the layout
and pagination of the report is similar to HTML output.
You can change the view to represent a printed report by switching to print preview mode. Click the Print
Preview button on the preview toolbar. The report will display as though it were on a physical page. This
view resembles the output produced by the Image and PDF rendering extensions. Print preview is not an
image or PDF file, but the layout and pagination of the report is similar the output in those formats. You
can choose the size of the report image, for example, set the width of the page.
Print preview helps you identify many of rendering problems you might encounter were you to print the
report. Common rendering problems include:
Extra blank pages because the report is too wide to fit on the paper size you specified for the
report.
Extra blank pages because the report contains a matrix that dynamically expands to exceed the
width of the paper specified.
Page breaks between groups do not work the way you want.
Headers and footers do not display as expected.
Report layout needs modification to read better in a printed format.

Save and Deploy Paginated Reports


In Report Designer, you can save reports and other project files locally, or deploy them to a report server or
SharePoint site. Shared data sources, shared datasets, reports, report resources, and report parts can be
deployed independently or together depending on project deployment properties that you configure. For more
information, see Configuration and Deployment Properties.
In Report Designer, it is important to understand that you design a report using the report definition schema
that is supported by the current version of Reporting Services in SQL Server Data Tools (SSDT). When you set
project deployment properties for a specific report server or SharePoint site, and then save the report, Report
Designer saves the report definition to the build directory in the schema that matches the version on the target
report server. To create reports that can be published on a down-level report server, Report Designer drops
report items that do not exist in the target schema. This occurs automatically and without prompting. When this
happens, the original report definition is preserved in the project folder. The modified report definition that is
deployed is in the build folder.

NOTE
For debugging expressions and deployment errors, you must view the report definition in the build folder. Do not use
View Source . View Source displays the report definition source from the project folder.

For more information, see Deployment and Version Support in SQL Server Data Tools (SSRS).
Save a Report Locally
When you work on report or other project items in Report Designer, the files are saved to your local computer
or a share on another computer that you have access to.
If you are using source control software, you might be checking your reports into the source control server
when you save the report. For more information, see Source Control.
Deploy or Publish Paginated Reports
From SQL Server Data Tools, you can deploy reports or other project items to multiple versions of Reporting
Services report servers. Use project configurations to control the upgrade of report definitions to schema
versions compatible with target report servers. The properties controlled by project configurations include the
target report server, the folder where the build process temporarily stores report definitions for preview and
deployment, and error levels. For more information, see Configuration and Deployment Properties and Set
Deployment Properties (Reporting Services).
Export a Paginated Report to a Different File Format
Reports can be exported to a variety of formats and these formats affect how some report layout and
interactivity features function. For more information about design considerations for various output formats, see
Export Reports (Report Builder and SSRS).

Report Validation and Error Levels


Reports are validated before preview and during deployment. A number of build issues can occur when reports
are built. Reports might contain strings such as expressions or queries that are incompatible with the version of
Reporting Services that the project configuration specifies, for example.
Use the ErrorLevel property to manage the build warnings and errors. The ErrorLevel property can contain a
value from 0 to 4 inclusive. The value determines which build issues are reported as errors and which are
reported as warnings. The default value is 2. The warnings and errors are written to the SQL Server Data Tools
(SSDT)Output window.
Issues with severity levels less than or equal to the value of ErrorLevel are reported as errors; otherwise, they
are reported as warnings.
The following table lists the error levels.

ERRO R L EVEL DESC RIP T IO N

0 Most severe and unavoidable build issues that prevent


preview and deployment of reports.

1 Severe build issues that change the report layout drastically.

2 Less severe build issues that change report layout in


significantly.

3 Minor build issues that change the report layout in minor


ways that might not be noticeable.

4 Used only for publishing warnings.

When you attempt to preview or deploy a report that contains report items new in SQL Server 2016 Reporting
Services or later (SSRS), those report items can be removed from the report. By default, the ErrorLevel property
of the configuration is set to 2, which would cause the build of the report to fail when the map is removed.
However, if you change the value of the ErrorLevel property to 0 or 1, the map is dropped, a warning issued, and
the build process continues.

Next steps
Download SQL Server Data Tools
Reporting Services in SQL Server Data Tools
Query Design Tools
Deployment and Version Support in SQL Server Data Tools
More questions? Try asking the Reporting Services forum
Add a New or Existing Report to a Report Project
(SSRS)
11/2/2020 • 2 minutes to read • Edit Online

In SQL Server Data Tools (SSDT), you can add a new Reporting Services paginated report by using the Report
Wizard or by adding a new blank report to your project. You can also add an existing report. After you add a
report, you can see the report name listed under the Repor ts folder in your project.

NOTE
To preview a report with existing data sources, you must have permissions to the data source from your report authoring
client. For more information, see Data Connections, Data Sources, and Connection Strings.

After you add a report, you can define data sources, datasets, and design a report layout. To get started, see
Create a Basic Table Report (SSRS Tutorial) or Tables (Report Builder and SSRS).

To add a new report using the Report Wizard


1. In Solution Explorer, right-click the Reports folder, and then click Add New Repor t . The Repor t Wizard
dialog box opens.
The wizard steps you through creating a data source, creating a dataset with a query, defining groups,
specifying a layout and creating the report. The steps include:
Select a Data Source. The first step in creating a report is to define a data source. Report Wizard
provides a list of all shared data sources in the report project, in addition to an option to create a
new data source.
Design a Quer y. The next step is to design a query. You can type the query string, build it using
Query Designer, or import a query from another report. For information about Query Designers,
see Reporting Services Query Designers.
Choose a Repor t Type. The next step is to select the type of report you want. You can choose a
tabular or matrix report. A tabular report has a fixed number of columns. A matrix, or crosstab,
report has a variable number of columns based on the results of the query. A map report displays
analytical against a geographic background.
Name the Repor t. The final step is to name the report and verify the fields that will be included
in the report. When all steps are completed, Report Designer creates the report and adds it to the
report server project.

To add a new blank report


1. From the Project menu, click Add New Item .
2. In Templates , click Repor t .
3. Click Add .
A new blank report is added to the project and displayed on the design surface.
To add an existing report
1. From the Project menu, click Add , and then Existing Item .
2. Navigate to the location of the .rdl file, select it, and then click Add .
The report is added to the project under the Repor ts folder. When you close and re-open the project,
reports are sorted alphabetically.

See Also
Reporting Services Tutorials (SSRS)
More questions? Try the Reporting Services forum
Deployment and Version Support in SQL Server
Data Tools (SSDT)
3/5/2021 • 3 minutes to read • Edit Online

SQL Server Data Tools supports the following scenarios:


Open report definitions (*.rdl) and report server projects (*.rptproj).
Build report definitions.
Preview reports in Report Designer.
Deploy reports to report servers.

Configuration and Deployment Properties


SQL Server Data Tools (SSDT) supports project configurations. A project configuration consists of a set of
properties that specify locations and behaviors when a project is built either as a step in previewing or
deploying reports. To learn more about project configurations, see the Visual Studio documentation.
Use project configurations to control the upgrade of report definitions to schema versions compatible with
target report servers. The properties controlled by project configurations include the target report server, the
folder where the build process temporarily stores report definitions for preview and deployment, and error
levels.
Reports are built before they are rendered as previews in Report Designer or deployed to the report server.
You set the configuration properties in the SQL Server Data Tools (SSDT) Project Proper ty dialog box.
The build and deployment properties include:
OutputPath is a build property that identifies the path of folders to store the report definition used in
build verification, deployment, and preview of reports.
ErrorLevel is a build property that identifies the severity of the build issues that are reported as errors.
Issues with severity levels less than or equal to the value of ErrorLevel are reported as errors; otherwise,
the issues are reported as warnings. For more information, see The "Report Validation and Error Levels"
section in Design Reports with Report Designer (SSRS).
TargetServerVersion is a deployment property that identifies the expected version of SQL Server
Reporting Services that is installed on the target report server specified in the TargetServerURL property.
When you specify the earlier version of SQL Server Reporting Services in the Project Proper ty dialog box, the
reports are not reverted automatically to the earlier version. As such, a Report Server project can contain
reports from the two different versions of SQL Server. When the Report Server project is deployed, all reports in
the project are converted to the version specified in TargetServerVersion.
You can add more than one project configuration to a project; each one is used for a different scenario, such as
deploying to different versions of report servers. For more information, see Set Deployment Properties
(Reporting Services) and Project Property Pages Dialog Box.

Supported Versions
NOTE
SQL Server Data Tools (SSDT), the 32-bit development environment for Report Server projects, is not designed to run on
Itanium-based computers and is not installed on Itanium-based servers. However, support for SQL Server Data Tools is
available for x64-based computers.

The following table describes the supported versions for authoring and publishing reports in SQL Server Data
Tools (SSDT).

NOTE
The schema has not changed since SQL Server 2008.

P RO JEC T O R F IL E
TYPE VERSIO N A UT H O R REP O RT S P UB L ISH REP O RT S N OT ES

Report Server Project SQL Server 2016 2016 RDL schema SQL Server 2016
Reporting Services or Reporting Services or
or later (SSRS) later (SSRS)

Report Server Wizard


Project

Report Server Project SQL Server 2014 2014 RDL schema SQL Server 2014
(12.x) (12.x) Reporting
or Services

Report Server Wizard


Project

Report Server Project SQL Server 2012 2012 RDL schema SQL Server 2012
(11.x) (11.x) Reporting
or Services

Report Server Wizard


Project

Report Server Project SQL Server 2008 R2 2008 R2 RDL schema SQL Server 2008 R2
Reporting Services
or

Report Server Wizard


Project

Report Server Project SQL Server 2008 2008 RDL schema SQL Server 2008 Upgrades 2003 RDL
Reporting Services and 2005 RDL to the
or report server only 2008 RDL schema
locally.
Report Server Wizard
Project

For more information about opening reports in a previous version of the report definition schema, see Upgrade
Reports. For more information about specific report definition schemas, see Report Definition Language
Specification.

See Also
Publishing Data Sources and Reports
URL Examples for Items on a Report Server -
SharePoint Mode
11/2/2020 • 10 minutes to read • Edit Online

To publish reports and related items to a SharePoint library, you can either publish the content using the
Reporting Services authoring tools such as Report Designer or you can upload the content by using SharePoint
site actions.
SharePoint sites use different Web addresses than a Reporting Services report server in native mode. A
SharePoint site Web hierarchy includes the SharePoint Web application, a top-level site, optional subsites, and
libraries. You must know how to create a URL address that specifies the SharePoint server as well as the location
in the SharePoint site hierarchy where you want to publish a report or related items.
Items related to a report include shared data sources, subreports, drillthrough reports, and resources such as
Web-based image files. A report that has been published to a SharePoint library must specify these related
items by their location in the SharePoint library.
Use the examples in this topic to help create URLs to reports and related items in your reporting solutions.

Site Hierarchy
When you configure a report server to run in SharePoint integrated mode, the SharePoint Web hierarchy is used
to address items that are processed and managed on a report server.
The following elements of the Web hierarchy can be used to access and secure report server content. Other
objects such as lists and pages are not used to access report server content and therefore are not described in
the following table.

O B JEC T DESC RIP T IO N

SharePoint Web application A SharePoint Web application can be installed as a stand-


alone server or under a farm that contains a collection of
virtual servers. A Web application has a URL (for example,
http:*//servername* ) and can contain multiple sites.

Site A site is either a parent site for a Web application or a


subsite.

SharePoint library A library contains documents or folders. A library or folder in


a library is the only site object that can store reports, report
models, shared data sources, and external images.

Item Report server items that you can reference in a URL include
a report definition for a report or subreport, a report model,
a shared data source, or an external image.

URL Syntax and Rules


Each report server item in a library is identified by a fully qualified URL that includes a protocol prefix, server
name, site, library, file name, and file name extension for the file type.
URL for a SharePoint Server
You must use a URL to the SharePoint server when you deploy a Report Server or Report Model project from
SQL Server Data Tools (SSDT) to the report server.
To find the name of the server to use, open a browser and locate the SharePoint library where you want to
publish a report. The server name appears immediately after the protocol prefix, for example,
http:*//servername* .

Using the Reporting Services URL proxy endpoint is not supported. A proxy endpoint includes a port number,
for example, http:*//servername:8080/reportserver* .
URL for a SharePoint Server Site or Subsite
When you deploy a report or report data source, you must use a URL to a SharePoint site and subsite, if there is
one. In the URL, the site name appears immediately after the server name., for example,
https://*servername/site* or https://*servername/site/subsite* .

On a Microsoft Office SharePoint Server 2007 or SharePoint Server 2010 Web application, the site and subsite
frequently correspond to the tabs on the main site. To find the site name or subsite name, click Home , and then
All Site Content . Scroll to the bottom and look for Sites and Workspaces . The list of sites appears in this
section.
URL for a SharePoint Library
When you deploy a report or related item to a SharePoint library, you must use a URL to the SharePoint library.
The URL to use for a library differs depending on the version of SharePoint you are using.
On Microsoft Windows SharePoint Services 3.0 or SharePoint Foundation 2010, the library appears after the
server name, for example, https://*servername/*Shared Documents .
On Office SharePoint Server 2007 or SharePoint Server 2010, the library appears after the site and subsite. For
example, https://*servername/site/*Documents .
To find the path information for a new SharePoint library or for an unfamiliar site, open a browser and locate the
SharePoint library where you want to publish your reports. If the library is empty, upload any file. Right-click the
file and select Proper ties to open the Proper ties window. The address of the file contains the URL values that
you need for a publish operation.
Fully qualified URLs for Items on a SharePoint Site
Items that are stored in a SharePoint library are always addressed through a fully qualified URL that starts with
the Web application ( https://*server* ) as the root node, and concludes with the name of the file that you are
referencing.
File names in the URL must include a file name extension.
You cannot use relative URLs for dependent items in reports that you publish to a SharePoint site. For example,
you cannot use a relative URL to reference a shared data source, report model, or subreport. You must always
specify the fully qualified URL to a SharePoint library for each item. There is no way to predict where a
dependent file might be located as there is no predefined hierarchy to the sites that you can use to parse a URL
format.
When you publish or upload a report that contains dependent items, you must set the references to the
dependent items after the report is published. References that worked correctly in Preview mode in Report
Designer are not guaranteed to work after the report is published. For more information, see Publishing from an
Authoring Tool to a SharePoint Library in this topic.
URLs for External Images
A report definition can include an image file that is stored as an external file. You can reference that file in the
report definition by setting a fully qualified URL to the image file. It can be stored on a SharePoint site or on a
remote computer.
IMPORTANT
If the external URL is for an image on a SharePoint site, the broken image icon will appear when you preview the report in
Report Builder. When you upload the report to the SharePoint site, and render the report in connected mode, the broken
image icon will appear if you have only View Items permissions.

Regardless of the report server mode, references to an external image file in a report must be a fully qualified
URL. Also, referencing an external image file typically requires that you configure the unattended report
processing account.
Specifying Subreports and Drillthrough Reports
Subreports must reside in the same folder as the main report. You cannot specify a relative folder.
To specify drillthrough reports, include the URL in an expression. For example, to specify the report that is
named SalesDetails as a drillthrough report, in the Action for the text box or placeholder text, set ReportName to
the following expression:

="https://site/subsite/documentlibrary/SalesDetails.rdl"

Reserved Names on SharePoint Sites


If you are creating or constructing a URL to an item that is located on a SharePoint site, know that the words
Personal and Sites are both reserved names under the default site.

Examples of URLs
When publishing items to a SharePoint library, you must specify fully qualified URLs to the target library. A fully
qualified SharePoint URL includes the SharePoint Web application, site, library, folder (optional), file, and file
name extension. The following examples provide several illustrations of the syntax you should use.

TA RGET EXA M P L E URL

A SharePoint server. https://TestServer

A SharePoint server site or subsite. https://TestServer/toplevelsite/subsite

The Company Sales sample report in Shared Documents https://TestServer/TestSite/Shared%20Documents/Company%20Sales.rdl


on a Windows SharePoint Services or SharePoint Foundation
2010 deployment.

The Company Sales sample report in Documents/Doc https://TestServer/TestSite/Documents/Doc/Company%20Sales.rdl


folder on a Office SharePoint Server or SharePoint Server
2010 instance.

The Company Sales sample report in Repor t Center on an https://TestServer/TestSite/Reports/Doc/Company%20Sales.rdl


Office SharePoint Server or SharePoint Server 2010 instance.

Publishing from an Authoring Tool to a SharePoint Library


When you use a report authoring tool to publish reports and related files to a library, the files are validated
before they are added. If you upload reports and related files by using the Upload action on a SharePoint
library, no validation check occurs. You will not know whether the file is valid until you access the report by
managing, editing, or running it.
NOTE
In order to publish reports to a SharePoint site from SQL Server Data Tools (SSDT), you might need to add the SharePoint
site to your list of trusted locations in the Internet Explorer browser.

Shared Data Sources


When you publish a shared data source from a report authoring tool, you set the project property
TargetDataSourceFolder . The target data source folder must be a URL to a SharePoint library. Unlike in
Reporting Services native mode, you cannot specify a relative folder; relative paths are not valid. If a folder in
the Document Library path does not exist, one will be created.
When you publish a shared data source (.rds) file to a SharePoint site, this changes the data source file to an
.rsds file name extension. The .rsds file cannot be saved locally from a SharePoint site and imported into an
existing Reporting Services project. Shared data sources with file name extensions .rds and .rsds are not
interchangeable.
Shared Data Sources from Report Designer
If you are publishing shared data sources from a Report Designer project, you can either use a URL that specifies
the target library or you can leave the property blank. Unlike in Reporting Services native mode, you cannot
specify a relative folder; relative paths are not valid. If a folder in the Document Library path does not exist, one
will be created. If you leave the target data source folder blank, the data source will be published in the target
report folder.
File Names
File names in a URL for report items must include a file name extension. The file name extension determines the
file type. When you publish report items from a report authoring tool, the file name extension is included
automatically. If you upload a report item to a SharePoint library, you must include a file name extension.
If you do not specify a file name extension for items that you upload to a SharePoint site, the
rsInvalidDataSourceReference error will occur. File names may not include characters that are not
recognized as valid file name characters by SharePoint applications. Do not include the following characters: # %
& * : < > ? / { | }.

Differences Between Uploading and Publishing


When you use Report Designer or Report Builder to publish reports and related files to a library, the files are
validated before they are added. If you upload reports and related files by using the Upload action on a
SharePoint library, no validation check occurs. You will not know whether the file is valid until you access the
report by managing, editing, or running it.

Updating a Published Item


After you have published or uploaded an item to a SharePoint library, you should check the item out of the
library before updating it. While the report is checked out to you, you will be the only user who has permission
to change the report. When you are finished, check it back in.
If you upload or publish a report without checking the document out first (for example, by uploading an item
that has the same name as an existing item), the report server will check it out for you, add the updated report
as a new version of the existing item, and then check the document back in.

External Images as Resources


A report server that runs in native mode supports the concept of a resource, which is defined as any file that is
stored and secured on the report server, but is not processed by the report server. In native mode, it can be any
kind of file.
When a report server runs in SharePoint integrated mode, the concept of a resource has a narrower definition.
The report server retains the concept of a resource for storing reports that reference an external image. This
applies if the report is a snapshot or a copy that is kept for internal use.

See Also
Publish a Report to a SharePoint Library
Publish a Shared Data Source to a SharePoint Library
Project Property Pages Dialog Box
Set Deployment Properties (Reporting Services)
11/2/2020 • 5 minutes to read • Edit Online

In SQL Server Data Tools (SSDT) or Visual Studio, you must specify the report server and optionally the folders
for reports and shared data sources so that you can publish the items in a Report Server project to a report
server. The properties and values that SQL Server Data Tools (SSDT) or Visual Studio need to build, preview, and
deploy reports are stored in project configurations of the Report Server project. You can create multiple named
sets for these project properties, so that you can conveniently switch between property sets. Each set of
properties is a configuration. For example, you can have a configuration for publishing reports to a test server
and a different configuration for publishing reports to a production server.
Use Configuration Manager to create and manage sets of project properties in project configurations.
Configuration Manager is a feature supported by Visual Studio, on which SQL Server Data Tools is based.

NOTE
Do not confuse this feature with the Report Server Configuration Manager, which is used to configure Reporting Services
after installation. For more information, see Configure and Administer a Report Server (SSRS Native Mode).

NOTE
In SQL Server Data Tools, the action of publishing reports from a Report Server project or solution is known as deploying
reports.

To set deployment properties


1. Right-click the report project, and then click Proper ties .
2. In the Proper ty Pages dialog box for the project, select a configuration to edit from the Configuration
list. Common configurations are DebugLocal , Debug , and Release .

NOTE
You can use multiple configurations to switch quickly between different report servers or settings.

3. In the OutputPath textbox, type or paste the path in your local file system to store the report definition
used in build verification, deployment, and preview of reports. The path must be different than the path
that you use for the project and a relative path that is a child folder under the path of the project.
4. In the ErrorLevel text box, type the severity of the build issues that are reported as errors. Issues
occurring when building reports, data sources, or other project resources with severity levels less than or
equal to the value of ErrorLevel are reported as errors; otherwise, the issues are reported as warnings.
Any error will cause the build task to fail. The valid severity levels are 0 through 4 inclusive. The default
value is 2.
ErrorLevel can be used to increase or decrease the sensitivity of the build. For example, when a report
with a map is built during deployment to a SQL Server 2008 report server an error displays by default
and building the report fails. If you lower ErrorLevel the map is removed from the report, a warning
displays, and building the report continues.
5. In the Star tItem list, select a report to display in the preview window or in a browser window when the
report project is run.
6. In the Over writeDataSources list, select True to overwrite the shared data source on the server each
time shared data sources are published, or select False to keep the data source on the server.
7. In the TargetSer verVersion list, select SQL Server 2016 version of Reporting Services or select Detect
Version to automatically determine the version installed on the server identified by the TargetSer ver
URL property. The default value is SQL Ser ver 2016 or later .
Use TargetSer verVersion to customize the built reports, placed in the path specified in OutputPath, for
the version of the report server specified in TargetSer ver URL .
8. In the TargetDataSourceFolder text box, type the folder on the report server in which to place the
published shared data sources. The default value for TargetDataSourceFolder is Data Sources. If you
leave this value blank, the data sources will be published to the location specified in
TargetRepor tFolder .
9. In the TargetRepor tFolder text box, type the folder on the report server in which to place the published
reports. The default value for TargetRepor tFolder is the name of the report project.

NOTE
For a report server running in native mode, you must have Publish permissions on the target folder to publish
reports to that folder. Publish permissions are provided through a role assignment that maps your user account
to a role that includes publish operations. For more information, see Create and Manage Role Assignments. For a
report server running in SharePoint integrated mode, you must have Member or Owner permission on the
SharePoint site. For more information, see SharePoint Site and List Permission Reference for Report Server Items.

10. In the TargetSer verURL text box, type the URL of the target report server. Before you publish a report,
you must set this property to a valid report server URL. When publishing to a report server running in
native mode, use the URL of the virtual directory of the report server (for example,
http://server/reportserver or https://server/reportserver). This is the virtual directory of the report
server, not the web portal.
When publishing to a report server running in SharePoint integrated mode, use a URL to a SharePoint
top-level site or subsite. If you do not specify a site, the default top-level site is used, (for example,
https://*servername* , https://*servername*/*site* , or https://*servername*/*site*/*subsite* ).

To set Configuration Manager properties


1. Right-click the report project, and then click Proper ties .
2. In the Proper ty Pages dialog box for the project, click Configuration Manager .
3. In the Configuration Manager dialog box, select the configuration to edit. The currently active
configuration is displayed as Active( <configuration>) .
4. In Project Contexts , for each project in the solution, select or clear Build or Deploy .

NOTE
If Build is selected, Report Designer builds the report project and checks for errors before previewing or
publishing to a report server. If Deploy is selected, Report Designer publishes the reports to the report server as
defined in deployment properties. If Deploy is not selected, Report Designer displays the report specified in the
Star tItem property in a local preview window.
See also
Publishing Data Sources and Reports
Previewing Reports
Report Designer F1 Help
URL Examples for Published Report Items on a Report Server in SharePoint Mode (SSRS)
Project Property Pages Dialog Box
Publishing Reports to a Report Server
Dock the Report Data Pane in Report Designer
(SSRS)
11/2/2020 • 2 minutes to read • Edit Online

In Reporting Services Report Designer in SQL Server Data Tools (SSDT), the Report Data pane displays a
hierarchical view of data objects that you can use in a report, including data sources, datasets, fields, parameters,
and images. Data sources in this view can be embedded or references to shared data sources that are displayed
in Solution Explorer.
To display the Report Data pane
In Design view, on the View menu, select Repor t Data , or use CTRL+ALT+D.
To dock the Report Data pane
1. Grab the title bar of the Report Data pane and start to drag the pane. Docking arrows appear on the
design surface.
2. Drop the Report Data pane onto one of the arrows to dock the pane.
To change the Report Data pane from a docked window to a tabbed window
Right-click the title bar of the Report Data pane and then click Dock as Tabbed Document .
To change the Report Data pane from a tabbed window to a docked window
Right-click the Report Data tab and then click Dock .
To toggle between the last two display states, double-click the title bar of the Report Data pane.

See Also
Report Data Pane
Create data connection strings - Report Builder & SSRS
Report Designer F1 Help
11/2/2020 • 2 minutes to read • Edit Online

This section provides F1 Help for the SQL Server Reporting Services Report Designer wizards, views, and dialog
boxes in SQL Server Data Tools (SSDT). Alternatively, you can open the F1 Help while working with the dialog
box by pressing F1 or by clicking the Help button displayed in the dialog box.

See Also
Install SQL Server Data Tools - Business Intelligence for Visual Studio
Feature Refernce (Reporting Services)
Reporting Services Reports (SSRS)
Document Outline
11/2/2020 • 2 minutes to read • Edit Online

Use the Document Outline window to view the hierarchy of report items in a report. Tablix data regions display
all the text boxes and other report items that are contained in Tablix cells. When you select a report item on the
design surface, the corresponding report item is selected in the Document Outline window. Use this view to
locate report items on the design surface. For example, when you preview a report with expression errors, the
Output window displays a message for each error. The message includes the name of the text box that contains
the expression with the error. You can click the name of the text box in the Document Outline window, see it
selected on the design surface, and view the expression that contained the error.
If the Document Outline window is not visible, on the View menu, click Other Windows , and then click
Document Outline . Or use CTRL+ALT+T.

Options
Expand All
Click to expand all nodes in the hierarchy.
Collapse All
Click to collapse all nodes in the hierarchy.
Design View
11/2/2020 • 2 minutes to read • Edit Online

In Reporting Services Report Designer, use Design view to arrange report items in the report. Design view is
sometimes called the design surface or layout view.

Report Design Surface


The design surface consists of three sections:
report body
page header
page footer
Use the Toolbox to select items to place in any of these three sections. Use the Report Data pane to view images,
parameters, data sources, and datasets, including dataset queries and field lists. After you add report items to
the design surface, drag dataset fields from the Repor t Data pane onto data regions such as table, matrix, or
list. Each item on the report design surface contains properties that can be managed using a properties dialog
box or the Properties pane.

Toolbox
The Toolbox lists data regions and other report items that are available for your report. To add report items from
the Toolbox, double-click the item or drag it to the design surface. You can then change the shape and size by
using the object handles.

Report Data Pane


To view the Report Data pane, on the View menu, click Repor t Data . Use this pane to define parameters,
images, data sources, and datasets, and to reference built-in fields such as ReportName. To add a new item, click
the New menu and select an item. To add calculated fields to an existing dataset, click Dataset , and in the
Dataset Proper ties dialog box, select Fields . Select an item and click Edit to open the Proper ties dialog box.
You can also right-click items in the Report Data pane to add items or update their properties.
Drag items from the Report Data pane to data regions and text boxes on the design surface to add data and
images to a report.
For more information, see Report Data Pane.

Grouping Pane
Groups are used to organize your report data into a visual hierarchy and to calculate totals. Use the Grouping
pane to view the groups defined for a table, matrix, or list data region. By default, the Grouping pane displays all
the groups for the selected data region as a flattened list. The Grouping pane is disabled for Chart and Gauge
data regions.
To see the groups in relationship to one another, toggle the Grouping pane to Advanced mode. This mode
displays the hierarchy of group members, a visual display of cells in the data region that correspond to each
group.
For more information, see Grouping Pane.

Page Header and Page Footer


A page header and page footer run along the top and bottom of each page, respectively. Headers and footers
can contain static text, images, lines, rectangles, borders, background color, and background images. To add
report items to the header or footer, right-click the design surface and select Header or Footer. Header and
footer sections appear on the design surface.

Properties Pane
Use the Properties pane to view properties for the currently selected report item on the design surface or the
currently selected group in the Grouping pane. Alternatively, you can right-click on a selected report item or
group and then click Proper ties to open the corresponding Proper ties dialog box for the report item or
group.

See Also
Page Headers and Footers (Report Builder and SSRS)
Report Design Tips (Report Builder and SSRS)
Preview View
11/2/2020 • 2 minutes to read • Edit Online

In Reporting Services Report Designer, use Preview view to display the rendered report. When a report is
previewed, Report Designer runs the report locally and displays it in the Preview view. In preview mode, the
report is processed in full. If the report has a complex query or has a large amount of data, preview might take
several minutes to complete the first time you view it. For subsequent changes that affect only the format of the
report, preview uses cached data.

Options
Use the toolbar to manage preview functions.

(1) First Page


Choose this option to go to the first page of the report.
(2) Previous Page
Choose this option to go to the previous page of the report.
(3) Current Page
Displays the current page of the report.
(4) Total Pages
Displays the total number of pages in the report.
(5) Next Page
Choose this option to go to the next page of the report.
(6) Last Page
Choose this option to go to the last page of the report.
(7) Back to Parent Repor t
Choose this option to go to the parent report. This option is used to navigate drillthrough reports.
(8) Stop Rendering
Choose this option to stop the rendering process.
(9) Refresh
Choose this option to refresh the data cache and run the report again.
(10) Print
Choose this option to print the report.
(11) Print Layout
Choose this option to toggle between the preview report and the view of the report as it will appear on the
printed page.
(12) Page Setup
Choose this option to conveniently change page and print properties. Use Print Layout to view changes before
printing.
(13) Expor t
Choose this option to export the rendered report in a specific format.
(14) Zoom
Select a zoom factor to zoom in or out on the report.
(15) Find Text in repor t
Type text to search for a match within the report. You cannot use search operators. Click Find to search for the
first instance.
(16) Show or Hide Parameter Area
Choose this option to show or hide the parameters boxes for reports with parameters.
(17) Find
Choose this option to begin searching the report for the search text.
(18) Find Next
Choose this option to search for the next instance of the search text.

See Also
Previewing Reports
Report Designer F1 Help
Grouping Pane
11/2/2020 • 4 minutes to read • Edit Online

When designing Reporting Services reports, the Grouping pane displays the row groups and column groups for
the currently selected Tablix data region. The Grouping pane is not available for the Chart or Gauge data regions.
The Grouping pane consists of a Row Groups pane and a Column Groups pane. The Grouping pane has two
modes: default and Advanced. Default mode displays a hierarchical view of the dynamic members for row and
column groups. Advanced mode displays both dynamic and static members for row and column groups. A
group is a named set of data from a report dataset that is displayed on a data region. Groups are organized into
hierarchies that include static and dynamic members. For more information, see Understanding Groups (Report
Builder and SSRS).
If you do not see the Grouping pane, on the Repor t menu, click Grouping .
Cells in the row and column group areas can be static or dynamic members of a group. Static members repeat
once per group and typically contain labels or totals. Dynamic members repeat once per group instance and
typically contain the unique values of the group expression. As you select Tablix cells in the row group area or
column group area, the corresponding group member is selected in the Row Groups or Column Groups pane.
Conversely, if you select groups in the Grouping pane, the corresponding cell associated with the group member
is selected on the design surface. For more information about Tablix row and column group areas, see Tablix
Data Region Areas (Report Builder and SSRS).
The Grouping pane supports the following modes:
Default. Use the default mode to add, edit, or delete groups. You can add parent, child, and detail groups
by dragging fields from the Report Data pane and inserting them in the group hierarchy. To add an
adjacent group, you must use the Add Group shortcut. For more information, see Add or Delete a Group
in a Data Region (Report Builder and SSRS).
Advanced . Use the Advanced mode to view all members of row and column groups, and to set
properties on static members. When you create groups or add totals, the properties that control how the
Tablix data region renders rows and columns on each report page are set automatically. To manually
adjust these properties, you must set them on the Tablix member. For more information, see Controlling
the Tablix Data Region Display on a Report Page (Report Builder and SSRS).

Default Mode
In default mode, the Row Groups pane and the Column Groups pane display a hierarchical view for all parent
groups, child groups, and adjacent groups. A child group appears indented under its parent group. An adjacent
group appears at the same indent level as its sibling groups. The following figure shows a Tablix data region
with nested row groups and nested and adjacent column groups.

The Grouping pane displays the corresponding row and column groups. In the following figure, the group based
on subcategory has been selected in the Row Groups pane, and the [Subcat] grouping cell is selected in the
Tablix data region:
In the Row Groups pane, the group based on subcategory is a child of the group based on category. In the
Column Groups pane, the country/region group is a child of the geography group. The year group and the
country/region groups are adjacent groups.
For more information, see Tablix Data Region Cells, Rows, and Columns (Report Builder) and SSRS.

Advanced Mode
In Advanced mode, you can view all static and dynamic members of a group. When you select a member, the
Properties window displays properties for the currently selected Tablix member .
To toggle Advanced mode , right-click the down arrow at the side of the Column Groups pane,
and then click Advanced Mode .
In most cases, properties that control the display of static and dynamic group rows and group columns are set
automatically when you create a group or add totals.
To edit the default values, you must select the group member in the Row or Column Groups pane, and change
the property values in the Properties window. If the properties pane is not visible, in the View menu, click
Proper ties or press F4 . The following properties are available:
FixedData . Boolean. For outer row and column headers. Freeze the row group area when scrolling
vertically or the column group area when scrolling horizontally in a renderer such as HTML.
HideIfNoRows . Boolean. For static members only. If set, Hidden and ToggleItem are ignored. Hide this
member if the Tablix data region contains no rows of data.
KeepTogether .
KeepWithGroup . Boolean. For static row members only. Where possible, keep this row with the
previous or following sibling dynamic member, if it is not hidden.
RepeatOnNewPage . Boolean. For static row members only and where KeepWithGroup is not None.
Where possible, repeat this static row on every page that has at least one instance of the dynamic
member specified by KeepWithGroup.
Hidden . Boolean. Indicates whether the row or column should be initially hidden.
ToggleItem. String. The name of the text box to which to add the toggle image. The text box must be in
the same group scope or a containing scope.
For more information about how this behavior can be controlled on a Tablix data region, see Controlling the
Tablix Data Region Display on a Report Page (Report Builder and SSRS).
Not every static member has a header that corresponds to a cell on the design surface. In the Grouping pane,
the following convention indicates whether a static member has no header:
Static Indicates a static member with a header cell.
(Static) Indicates a static member with no header cell, known as a hidden static.

See Also
Tables, Matrices, and Lists (Report Builder and SSRS)
Expressions (Report Builder and SSRS)
Filter, Group, and Sort Data (Report Builder and SSRS)
Project Property Pages Dialog Box
11/2/2020 • 3 minutes to read • Edit Online

Use the project property pages to configure deployment properties for a Report Server project. To open this
dialog box, from the Project menu, click <Report Project Name>Proper ties .
After you define configuration properties, you can select a configuration from the Solution Configurations
drop-down list on the toolbar.

Options
Configuration
Select the configuration to edit. Initially, the following configurations are available: Debug , DebugLocal , and
Release . The active configuration appears first, for example, Active(Debug) .
To see properties for more than one configuration at the same time, select All Configurations or Multiple
Configurations .
To create additional configurations, click Configuration Manager on the toolbar.
Configuration Manager
Manage configurations for the entire solution or to add additional configurations. For more information, see the
Microsoft Visual Studio documentation.
OutputPath
Type or paste the path to store the report definition used in build verification, deployment, and preview of
reports. The path must be different than the path that you use for the project and a relative path that is a child
folder under the path of the project.

NOTE
You can use multiple configurations to switch among paths depending on the task you perform.
ErrorLevel
Type the severity of the build issues that are reported as errors. Issues with severity levels less than or equal to
the value of ErrorLevel are reported as errors; otherwise, the issues are reported as warnings. Any error will
cause the build task to fail. The valid severity levels are 0 through 4 inclusively. The default value is 2.
Star tItem
Select the report that is displayed in the Web browser after the project is published to the report server or in the
preview window when the project is run locally. A start item is required for configurations that build but do not
deploy the project and for using the Debug command (F5 ). It is required for configurations that deploy the
project.
Over writeDataSources
Select True to overwrite the data source on the server with the data source in the project when the reports are
published. Select False to leave the existing data source on the server.
TargetSer verVersion
Select either the appropriate version of Reporting Services or select Detect Version to automatically determine
the version installed on the server identified by the TargetSer ver URL property. The default value is SQL
Ser ver 2017 .
TargetDataSourceFolder
The name of the folder in which to store the published shared data sources. If you do not specify a folder, the
data source is published to the same folder as the report. If the folder does not exist on the report server, Report
Designer creates the folder when the reports are published.
When publishing to a report server running in native mode, specify the full path of the folder hierarchy starting
at the root. For example, Folder1/Folder2/Folder3.
When publishing to a report server running in SharePoint integrated mode, use a URL to the SharePoint library.
For example, http:\\<servername>\<site>\Documents\MyFolder .
TargetRepor tFolder
The name of the folder in which to store the published reports. By default, this is the name of the report project.
If the folder does not exist on the report server, Report Designer creates the folder when the reports are
published.
When publishing to a report server running in native mode, specify the full path of the folder hierarchy starting
at the root. If a folder is located within another folder, include a path to the folder starting at the root, such as
Folder1/Folder2/Folder3.
When publishing to a report server running in SharePoint integrated mode, use a URL to SharePoint library. For
example, http:\\<servername>\\<site>\Documents\MyFolder .
TargetSer verURL
The URL of the target report server. Before you publish a report, you must set this property to a valid report
server URL.
When publishing to a report server running in native mode, use the URL of the virtual directory of the report
server. For example, http:\\<server>\reportserver . This is the virtual directory of the report server, not Report
Manager. By default, the report server is installed in a virtual directory named "reportserver".
When publishing to a report server running in SharePoint integrated mode, use a URL to a SharePoint top-level
site or subsite. If you do not specify a site, the default top-level site is used. For example:
http:\\<servername> ,
http:\\<servername\<site>
http:\\<servername>\<site>\<subsite> .
Next steps
Publish Reports
Publish a Report to a SharePoint Library
Set Deployment Properties (Reporting Services)
Report Designer F1 Help
More questions? Try asking the Reporting Services forum
Reporting Services Login Dialog Box (SSRS)
11/2/2020 • 2 minutes to read • Edit Online

Use the Repor ting Ser vices Login dialog box to provide credentials to publish reports to the report server.
Note If this is the first time you have published a report to a report server since set you set the deployment
property TargetSer verURL for a project, verify that the server name includes ser ver and not repor ts . For
example, https://localhost/reportserver , and not https://localhost/reports . Specifying the reports
directory on the local server instead of the reportserver directory indirectly causes this dialog box to open.
For more information about setting TargetSer verURL , see Set Deployment Properties (Reporting Services).

Options
Ser ver
Displays the name of the report server. For example, https://localhost/reportserver . For report servers that
use a different port than default port 80, include the port number. For example,
https://localhost:81/reportserver .

User name
Type the user name to log in to the Web service.
Password
Type the password to log in to the Web service.

See Also
Create data connection strings - Report Builder & SSRS
Specify Credential and Connection Information for Report Data Sources
Report Designer F1 Help
Reporting Services in SQL Server Management
Studio (SSRS)
11/2/2020 • 2 minutes to read • Edit Online

Report server administrators can use SQL Server Management Studio to:
Enable features, set server defaults, and manage running jobs.
View custom reports. In Object Explorer, most nodes display a custom reports option. You must have
administrator permissions. The schema of a custom report must match the schema of the installed
reports. For more information, see Custom Reports in Management Studio and Find the Report Definition
Schema Version (SSRS).
The next section contains links to articles that contain step-by-step instructions for performing various reporting
tasks using Management Studio. You can also create and manage shared schedules in the web portal.

In this section
Connect to a Report Server in Management Studio
Set Report Server Properties (Management Studio)
Create, Delete, or Modify a Role (Management Studio)
Cancel Report Server Jobs (Management Studio)

See also
Report Server in Management Studio F1 Help
SQL Server Management Studio (SSMS)
Set Report Server Properties (Management Studio)
11/2/2020 • 2 minutes to read • Edit Online

You can set report server system properties in SQL Server Management Studio to enable features or set server
defaults.
To open the Advanced Server Properties page
1. Start Management Studio and connect to a report server instance.
2. Right-click the report server node, and select Proper ties . Click Advanced to open the properties page.
See Server Properties (Advanced Page) - Reporting Services for a description of each property.

See Also
Connect to a Report Server in Management Studio
Report Server System Properties
Connect to a Report Server in Management Studio
11/2/2020 • 5 minutes to read • Edit Online

SQL Server Management Studio provides Object Explorer, which allows you to connect to any server in the SQL
Server family and graphically browse its contents. For Reporting Services, you can use Object Explorer to do the
following tasks:
Enable report server features.
Set server defaults and configure role definitions.
Manage jobs that are running.
Manage job schedules.
You can connect to a native mode report server or a report server that runs in SharePoint integrated mode.
Connection syntax and the types of operations that you can do depend on the server mode of the report server
and your permissions. If you can't connect to the report server, or have problems doing specific tasks, you
probably don't have sufficient permissions, or you specified the name of the report server incorrectly. For more
information about permissions and connection syntax, see the table at the end of this article.
You can't use Object Explorer to view or manage report server content. Content management is performed
through the web portal if the report server runs in native mode or through a SharePoint site if the report server
runs in SharePoint integrated mode.
Object Explorer allows you to open connections to multiple server instances in the same workspace as along as
the servers are registered in the same server group. Before you can connect to a report server instance in
Management Studio, the server must be registered. If the report server is already registered, you can skip this
step. Instructions for registering report servers are provided at the end of this article.
To connect to a native mode report server
1. If Object Explorer isn't already open it, select it from the View menu.
2. Select Connect to view the list of server types, and then select Repor ting Ser vices .
3. In the Connect to Ser ver dialog box, enter the name of the report server instance. Report server
instance names are based on SQL Server instance names. By default, the instance name of a local report
server instance is just the computer name. If you installed the report server as a named instance, use this
syntax to specify the server: <servername>[\<instancename>].
4. Select the Authentication type . If you are using Windows Authentication, you connect using your
credentials. If you select Basic authentication or Forms authentication, type the account and password.
5. Select Connect . The report server appears in Object Explorer.
6. Right-click the server node to set system properties and server defaults. For more information, see Set
Report Server Properties (Management Studio).
To connect to a SharePoint integrated mode report server
1. If Object Explorer isn't already open it, select it from the View menu.
2. Select Connect to view the list of server types, and then select Repor ting Ser vices .
3. In the Connect to Ser ver dialog box, enter a URL to a SharePoint site. The following example illustrates
the syntax: https://<web server>/sites/<site> .
4. Select the Authentication type . If you are using Windows Authentication, you must connect using your
credentials. If you select Basic authentication or Forms authentication, type the account and password.
5. Select Connect . The report server appears in Object Explorer.
6. Right-click the server node to set system properties and server defaults. For more information, see Set
Report Server Properties (Management Studio).
To register a report server
1. If you can't connect to a report server, you either don't have permission to access it, or the server isn't
registered. To register the server, select View menu > Registered Ser vers .
2. Select the Repor ting Ser vices icon.
3. Right-click Repor ting Ser vices , > New > Ser ver Registration . The New Ser ver Registration dialog
box is displayed.
4. For Ser ver name , enter a value. You specify the value depending on the server mode:
For a native mode report server, type the name of the report server instance. Report server
instance names are based on SQL Server instance names. By default, the instance name of a local
report server instance is just the computer name. If you installed the report server as a named
instance, use this syntax to specify the server: <servername>[\<instancename>].
For a report server that runs in SharePoint integrated mode, the server to connect to is the
SharePoint site with which the report server is connected. Connect to the SharePoint site so that
you can view the permission levels. The permissions control access to report server content and
operations. You can specify any site in the site collection. The following example illustrates the
syntax: https://mysharepointsite .
5. For Authentication , select the authentication mode that the report server is already using.
If you're using default security, choose Windows Authentication .
If you installed and deployed a custom security extension, choose Forms Authentication .
If you configured the report server to use Basic authentication, choose Basic Authentication .
If the report server is configured for SharePoint integrated mode, choose Windows Authentication .
6. Select Test to verify the connection.
7. When prompted, select OK , and then Save .

Connection Syntax and Permissions


The following table summarizes the connection syntax, steps, and permissions required to perform specific
tasks.
When you specify Reporting Services as the Server Type in the Connect to Ser ver dialog box, you can specify
either a report server name or an endpoint to the Web service.

C O N N EC T TO TA SK S P ERM ISSIO N S
C O N N EC T TO TA SK S P ERM ISSIO N S

Native mode report server, connected View and set server properties and Assigned to the System Administrator
as the default, or named instance: defaults. role.

<server name><_instance> View and cancel jobs.

The connection to the report server is Create and manage shared schedules.
made through the Report Server WMI
provider. Create, modify, or delete role
definitions.

Native mode report server, connected View and set server properties and Assigned to the System Administrator
as the default, or named instance, defaults. role.
through the endpoint to the Report
Server Web service: View and cancel jobs.

https://<servername>/reportserver Create and manage shared schedules.

Specifying a URL to the report server Create, modify, or delete role


provides an alternate way to connect definitions.
to the report server.

SharePoint integrated mode report View and set server properties and Full Control level of permission on the
server, connected through the defaults. SharePoint site to which you're
SharePoint site: connected.
View and cancel jobs.
https://<webserver>/<SharePointSite>
Create and manage shared schedules
defined for the site to which you're
connected.

View the permission levels defined for


the site to which you're connected.

SharePoint integrated mode report View and set server properties and Full Control level of permission on the
server, connected through the name defaults. SharePoint site that is integrated with
of the report server instance: the report server.
View and cancel jobs.
<server name><_instance> Notice that when you connect to the
report server rather than the
SharePoint site, the number of tasks
that you can do is reduced. The reason
is because the report server can only
return application data that is stored
or managed in the report server
database, and not in the SharePoint
configuration and content databases.

See also
Configure a Report Server Database Connection (Report Server Configuration Manager)
Reporting Services in SQL Server Management Studio (SSRS)
Delete an Item (Management Studio)
11/2/2020 • 2 minutes to read • Edit Online

When connected to a report server instance in SQL Server Management Studio, you can delete role definitions
and shared schedules. You cannot delete reports, models, or other items on a report server. To delete report
server content, use Report Manager instead. Or, if the report server is configured for SharePoint integrated
mode, use the item management features in the SharePoint library that contains your content.
To delete an item in the report server folder namespace
1. In ObjectExplorer, expand a report server node. Navigate to the folder containing the item you want to
delete.
2. Expand the folder.
3. Right-click the item, and click Delete .
4. When prompted, Click OK .

See Also
Connect to a Report Server in Management Studio
Delete Catalog Items (Management Studio)
Reporting Services in SQL Server Management Studio (SSRS)
Report Server in Management Studio F1 Help
11/2/2020 • 2 minutes to read • Edit Online

This section includes topics about the dialog boxes in SQL Server Management Studio that can be used to
manage report servers.

In This Section
Cancel Report Server Jobs
Delete Catalog Items
Job Properties Page
New Shared Schedule
New System Role
New User Role
Schedule Properties (General Page)
Schedule Properties (Reports Page)
Server Properties (General Page)
Server Properties (Execution Page)
Server Properties (History Page)
Server Properties (Logging Page)
Server Properties (Security Page)
Server Properties (Advanced Page)
System Role Properties
User Role Properties

See Also
Feature Reference (Reporting Services)
Use SQL Server Management Studio
Cancel Report Server Jobs (Management Studio)
11/2/2020 • 2 minutes to read • Edit Online

Use the Cancel Repor t Ser ver Jobs dialog box to view or cancel in-progress reports. This dialog box shows
all jobs that are currently running on the report server. Although you cannot pause or restart jobs that are
currently processing, you can cancel all jobs or individual jobs if they are taking too long to complete.
You can cancel user jobs and system jobs.
A user job is any job that is initiated by an individual user. This includes running a report on-demand,
manually creating a report history snapshot, or manually creating report execution snapshot. An in-
progress standard subscription is also a user job.
A system job is one that is initiated by the report server. System jobs include scheduled report
processing.
To open this page, start SQL Server Management Studio, connect to a report server, right-click Jobs , and then
click Cancel All Jobs . You can also open Jobs , right-click a job that is running on the report server, and select
Cancel Job(s) .
Before cancelling a job, you can view its properties to determine when the job started. For more information,
see Job Properties (Management Studio).

NOTE
This feature is not supported in SQL Server Express with Advanced Services. The page does not appear when you are
running SQL Server Express.

Options
Name
Shows the name of the report. Subscriptions are identified by their descriptions.
Type
Valid values are User and System .
Star t Time
Shows when the job started.
User Name
For jobs that are initiated by a user, this column shows the name of the user.
Status
Shows the status of the job. Valid values are New and Running . Status is always New when the job begins.
After 60 seconds, status changes to Running . You must refresh the page to pick up the change.
OK
Cancel a single job or multiple jobs. The jobs are cancelled immediately and cannot be resumed. If you
mistakenly cancel a job, you must request the report or subscription again to start a new job.

See Also
Report Server in Management Studio F1 Help
Connect to a Report Server in Management Studio
Manage a Running Process
Delete Catalog Items (Management Studio)
11/2/2020 • 2 minutes to read • Edit Online

Use this page to delete shared schedules and role definitions.


If you delete a shared schedule that is used by multiple reports and subscriptions, the report server will create
individual schedules for each report and subscription that previously used the shared schedule. Each new
individual schedule will contain the date, time, and recurrence pattern that was specified in the shared schedule.
Note that Reporting Services does not provide central management of individual schedules. If you delete a
shared schedule, you will now need to maintain the schedule information for each individual item. Before
deleting a shared schedule, use the Reports page to determine which reports are currently using the shared
schedule.
For role definitions, you can only delete those that are not actively used in a role assignment. If you try to delete
a role that is currently in use, the report server will not delete the role and you will see an error message to that
effect. If this page contains a single role definition that is not currently in use, it will be deleted when you click
OK . If this page contains multiple roles, you cannot select which roles to keep or remove. All unused role
definitions will be deleted when you click OK .
You cannot undo a delete operation. If you want to recover an item that you deleted, you must either recreate it
or restore a backup copy of the report server database.

Options
Name
Specifies the name of the item you are deleting.
Type
Shows the type of item you are deleting.
Owner
Shows the name of the owner. In most cases, this is System.
Status
Shows progress information for a delete operation.
Error
Displays an error code if an error occurs while deleting an item.

See Also
Delete an Item (Management Studio)
Report Server in Management Studio F1 Help
Create, Modify, and Delete Schedules
Job Properties (Management Studio)
11/2/2020 • 2 minutes to read • Edit Online

Use the Job Proper ties page to view information about an in-progress report or subscription before you
cancel it.
To open this page, start SQL Server Management Studio, connect to a report server, and open the Jobs folder.
Right-click a job that is running, and then click Proper ties .

NOTE
This feature is not supported in SQL Server Express with Advanced Services. The page does not appear when you are
running SQL Server Express.

Tasks
Before you can view information about a job, refresh the page to retrieve information about jobs that are
currently running on the report server:
1. Open the report server folder.
2. Right-click Jobs , and then click Refresh .
3. If a job is listed, right-click the job, and then click Proper ties .

Options
Job ID
A GUID that is assigned to a job while it is processing. The value is randomly generated each time a report or
subscription runs.
Job Status
Valid values are New and Running . Status is always New when the job begins. After 60 seconds, status
changes to Running . You must refresh the page to pick up the change.
Job Type
Valid values are User and System . A user job is any job that is initiated by an individual user. This includes
running a report on-demand, manually generating a report history snapshot, or manually creating a report
execution snapshot. An in-progress standard subscription is also a user job. A system job is one that is initiated
by the report server. System jobs include report processing that is triggered by a schedule.
Job Action
For reports, this column shows which report execution processes are underway. This value is always Render .
Job Description
Reporting Services does not provide job descriptions by default.
Ser ver Name
Shows the name of the report server that is processing the job. If you configured a scale-out deployment, this
value will show which server is processing the job.
Repor t Name
Shows the name of the report. Subscriptions are identified by their descriptions.
Repor t Path
Shows the path of the report in the report server folder hierarchy.
Star t Time
Shows when the process started.
User Name
For processes initiated by a user, this column shows the name of the user. For system jobs, this is the name of
the report server.

See Also
Report Server in Management Studio F1 Help
Connect to a Report Server in Management Studio
Manage a Running Process
New Shared Schedule (Management Studio)
3/5/2021 • 2 minutes to read • Edit Online

Use this page to create a shared schedule to run published reports and subscriptions. Shared schedules can be
used in place of report-specific or subscription-specific schedules. Centralized schedule information and the
ability to pause and resume scheduled operations are two key features that distinguish shared schedules from
item-specific schedules.
Not all frequency combinations can be supported in a single schedule. For example, if you want to run a report
at 12:00 P.M. and 4:00 P.M. every Friday, you must create two daily schedules that specify a Friday run date, one
with a start time of 12:00 P.M. and another with a start time of 4:00 P.M.
Schedule processing is based on the local time of the report server that hosts and processes the schedule.
To open this page, start SQL Server Management Studio, connect to a report server, right-click Shared
Schedule , and select New Schedule . To save the schedule, SQL Server Agent service must be running.

NOTE
This feature is not available in every edition of SQL Server. For a list of features that are supported by the editions of SQL
Server, see Features Supported by the Editions of SQL Server 2012 (https://go.microsoft.com/fwlink/?linkid=232473).

Options
Name
Type a name for the shared schedule. This name appears in drop-down lists when users select a shared schedule
for reports and subscriptions. Be sure to provide a descriptive name that fits easily within a list and that easily
distinguishes one shared schedule from another. A name must contain at least one alphanumeric character. It
can also include spaces and some symbols. Do not use the following characters when specifying a name:
;?:@&=+,$/*<>
"/
Begin running this schedule on
Specify a start date for this schedule.
Stop this schedule on
Specify an expiration date for this schedule.
Type
Specifies whether the recurrence pattern is based primarily on hours, days, weeks, or months.
Hour (Recurrence Pattern)
Select options to run a scheduled operation in intervals of an hour (for example, to run a report every 6 hours).
You can specify the interval in hours and minutes.
Day (Recurrence Pattern)
Select options to run a scheduled operation in intervals of days (for example, to run a report every 2 days). You
can specify the interval in days and at the hour and minute you want the schedule to run.
Week (Recurrence Pattern)
Select options to run a scheduled operation in intervals of a week or when the pattern that you want to repeat is
based on weeks (for example, to run a report every other week). You can specify a weekly schedule to the day,
hour, and minute that you want the schedule to run.
Month (Recurrence Pattern)
Select options to run a scheduled operation in intervals of a month or when the pattern that you want to repeat
is based on months. You can specify a monthly schedule to the day, hour, and minute that you want the schedule
to run. You can omit specific months from the schedule.
Once
Select this option to create a schedule that runs only once, on a specific date and time.

See Also
Report Server in Management Studio F1 Help
Connect to a Report Server in Management Studio
Create, Modify, and Delete Schedules
Schedules
Report Server in Management Studio F1 Help
New System Role (Management Studio)
11/2/2020 • 2 minutes to read • Edit Online

Use this page to create a system-level role definition. A system role definition specifies a set of system-level
tasks that apply to a report server as whole.

NOTE
Role definitions are used only on a report server that runs in native mode. If the report server is configured for SharePoint
integration, this page is not available.

Options
Name
Type the name of the role definition. A role definition name must be unique within the report server namespace.
A name must contain at least one alphanumeric character. It can also include spaces and some symbols. Do not
use the following characters when specifying a name:
;?:@&=+,$/*<>
"/
Description
Provide a description that explains how to use the role and enumerates what the role supports.
Task
Select the system-level tasks that can be performed through this role. You cannot create new tasks or modify the
existing tasks that are supported by Reporting Services. You cannot choose item-level tasks for a system role
definition.
Task Description
Shows a description of the task that enumerates the operations or permissions that the task supports.

See Also
Report Server in Management Studio F1 Help
Role Definitions
New User Role (Management Studio)
11/2/2020 • 2 minutes to read • Edit Online

Use this page to create an item-level role definition. An item-level role definition is a named collection of tasks
that enumerate the tasks a user can perform in relation to folders, reports, models, resources, and shared data
sources. An example of an item-level role definition is the predefined Browser role that identifies the kinds of
actions a report end user might require for navigating folders and viewing reports.
Role definitions are intended to be few in number. Most organizations only require a few role definitions.
However, if the predefined role definitions are insufficient, you can vary them or create new ones.

NOTE
Role definitions are used only on a report server that runs in native mode. If the report server is configured for SharePoint
integration, this page is not available.

Options
Name
Type the name of the role definition. A role definition name must be unique within the report server namespace.
A name must contain at least one alphanumeric character. It can also include spaces and some symbols. Do not
use the following characters when specifying a name:
;?:@&=+,$/*<>
"/
Description
Type a description that explains how to use the role and enumerates what the role supports.
Task
Select the tasks that can be performed through this role. You cannot create new tasks or modify the existing
tasks that are supported by Reporting Services. Only item-level tasks can be used in an item-level role
definition.
Task Description
Shows a description of the task that enumerates the operations or permissions that the task supports.

See Also
Report Server in Management Studio F1 Help
Role Definitions
Schedule Properties (General Page)
11/2/2020 • 2 minutes to read • Edit Online

Use the Reporting Services page in SQL Server Management Studio to view or modify a shared schedule.
Shared schedules can be used in place of report-specific or subscription-specific schedules. Changes to the
schedule are applied after you save the schedule. Editing a schedule has no effect on jobs that are currently in
progress. If you edit a schedule while it is being used, all currently processing reports and subscriptions
triggered from that schedule will be allowed to finish.
Not all frequency combinations can be supported in a single schedule. For example, if you want to run a report
at 12:00 P.M. and 4:00 P.M. every Friday, you must create two daily schedules that specify a Friday run date, one
with a start time of 12:00 P.M. and another with a start time of 4:00 P.M.
Schedule processing is based on the local time of the report server that hosts and processes the schedule.
To open this page:
1. Start SQL Server Management Studio.
2. Connect to a report server.
3. Expand the Shared Schedules folder.
4. Right-click a shared schedule, and select Proper ties .

NOTE
This feature is not available in every edition of SQL Server and this page does not appear when you are running an
edition which does not have this feature. For a list of features that are supported by the editions of SQL Server, see
Editions and supported features of SQL Server 2017.

Options
Name
Specifies the name for the shared schedule.
Begin running this schedule on
Specifies a start date for this schedule.
Stop this schedule on
Specifies an expiration date for this schedule.
Type
Specifies whether the recurrence pattern is based primarily on hours, days, weeks, months, or only runs once.
Hour (Recurrence Pattern)
Specifies options for running a scheduled operation in intervals of an hour (for example, to run a report every 6
hours). You can specify the interval in hours and minutes.
Day (Recurrence Pattern)
Specifies options for running a scheduled operation in intervals of days (for example, to run a report every 2
days). You can specify the interval in days and at the hour and minute you want the schedule to run.
Week (Recurrence Pattern)
Specifies options for running a scheduled operation in intervals of a week or when the pattern that you want to
repeat is based on weeks (for example, to run a report every other week). You can specify a weekly schedule to
the day, hour, and minute that you want the schedule to run.
Month (Recurrence Pattern)
Specifies options for running a scheduled operation in intervals of a month or when the pattern that you want
to repeat is based on months. You can specify a monthly schedule to the day, hour, and minute that you want the
schedule to run. You can omit specific months from the schedule.
Once
Specifies a schedule that runs only once, on a specific date and time.

See Also
Report Server in Management Studio F1 Help
Connect to a Report Server in Management Studio
Create, Modify, and Delete Schedules
Schedules
Schedule Properties (Reports Page)
11/2/2020 • 2 minutes to read • Edit Online

Use the Reporting Services schedule properties page in SQL Server Management Studio to view a list of all
reports that use the specific shared schedule. Schedules can be used to refresh report snapshots, generate
report history, trigger a subscription, or expire a cached copy of the report. To find out how the schedule is used,
view the property and subscription information of the report.
Although this page shows each report that uses the shared schedule, it does not indicate how many times the
shared schedule is used within that single report. For example, suppose 20 different subscribers to the Company
Sales report all use the same shared schedule to trigger subscription processing. In this case, the Company Sales
report will only appear once in this list, even though the report has 20 references to the shared schedule.
To open the schedule properties page:
1. Start SQL Server Management Studio.
2. Connect to a report server.
3. Open the Shared Schedules folder.
4. Right-click a shared schedule, select Proper ties .
5. click Repor ts .
You can also manage shared schedules from the Site Settings of the Reporting Services Web Portal.

NOTE
This feature is not available in every edition of SQL Server. For a list of features that are supported by the editions of SQL
Server, see Editions and supported features of SQL Server 2017.

Options
Folder
Specifies the path of the report.
Repor t
Specifies the name of the report that uses the schedule.

See Also
Create, Modify, and Delete Schedules
Schedules
Report Server in Management Studio F1 Help
Connect to a Report Server in Management Studio
Configure General Properties for a Report (Report Manager)
Report Server Properties (General Page)
11/2/2020 • 2 minutes to read • Edit Online

Use this page to view or modify the title used in Report Manager, enable or disable My Reports, select a role
definition for My Reports security, and enable or disable the client print control.
To open this page:
1. Start SQL Server Management Studio
2. Connect to a report server instance.
3. Right-click the report server name, and then select Proper ties .
The server mode determines which server properties you can set. If you are managing a report server that is
configured for SharePoint integrated mode, you cannot enable My Reports or set the title for the web portal.

Options
Name
Type a name that appears on top of the web portal. By default, this value is SQL Server Reporting Services. The
name that you specify appears only in Report Manager.
Version
This property is read-only. Specifies the version of SQL Server Reporting Services that you are using.
Edition
This property is read-only. Specifies the current report server instance. Report Manager is not available in every
edition of MicrosoftSQL Server. For a list of features that are supported by the editions of SQL Server, see
Editions and supported features of SQL Server 2017.
Authentication Mode
This property is read-only. It identifies the types of authentication requests accepted by the report server
instance. To change the authentication mode, you must edit the RSRepor tSer ver.config file. For more
information, see Authentication with the Report Server.
URL
This property is read-only. Specifies the URL to the Report Server Web service. This value is specified in the
Reporting Services Configuration tool. For more information, see Configure a URL (Report Server Configuration
Manager).
Enable a My Repor ts folder for each user
Make My Repor ts available to users. This option is only available for native mode report servers.
Select the role to apply to each My Repor ts folder
Specify a role definition to use for My Reports security. The role definition identifies the set of tasks that are
supported in each My Reports folder.

See Also
Set Report Server Properties (Management Studio)
Connect to a Report Server in Management Studio
Enable and Disable My Reports
Report Server in Management Studio F1 Help
Secure My Reports
Server Properties (Execution Page)
11/2/2020 • 2 minutes to read • Edit Online

Use this page to set a timeout value for report execution. This value applies to all reports that are processed by
the current report server instance. You can override this value for individual reports. The value you specify must
accommodate all report processing that occurs on the report server, plus query processing performed on the
database server when the report server retrieves data that is used in the report.
To open this page, start SQL Server Management Studio, connect to a report server instance, right-click the
report server name, and select Proper ties . Click Execution to open this page.

Options
Do not timeout repor t execution
Allow a report server unlimited time to complete report processing.
Limit repor t execution to the following number of seconds
Set a time constraint on report execution. The time period starts when the report is requested. If the time period
ends before the report is fully processed, the report server cancels the process and any in-process queries to
external data sources.

See Also
Set Report Server Properties (Management Studio)
Connect to a Report Server in Management Studio
Set Report Processing Properties
Setting Time-out Values for Report and Shared Dataset Processing (SSRS)
Report Server in Management Studio F1 Help
Server Properties (History Page)
11/2/2020 • 2 minutes to read • Edit Online

Use this Reporting Services page in SQL Server Management Studio to set a default value for the number of
copies of report history to retain. The default value provides an initial setting that establishes report history
limits for all reports. You can vary these settings for individual reports.
Report history is a collection of report snapshots that include report data and layout that is current for the
report at the time the snapshot is created. You can use report history to keep a copy of a report as it was on a
specific date or time. You can create and manage report history for individual reports that run on a native mode
report server or a report server that is configured for SharePoint integrated mode.
Report history snapshots are stored in the report server database. If you keep an unlimited number of
snapshots, be sure to periodically check the database size to ensure it is not growing too fast or consuming too
much disk space.
To open this page:
1. Start SQL Server Management Studio.
2. Connect to a report server instance.
3. Right-click the report server name, and select Proper ties .
4. Click Histor y to open this page.

Options
Keep an unlimited number of snapshots in repor t histor y
Retain all report history snapshots. You must manually delete snapshots to reduce the size of report history.
Limit the copies of repor t histor y
Retain a set number of report history snapshots. When the limit is reached, older copies are removed from
report history to make room for newer copies.
If you limit report history later, when the existing report history exceeds the limit you specify, the report server
reduces the existing report history to the new limit. The oldest report snapshots are deleted first. If report
history is empty or below the limit, new report snapshots are added. When the limit is reached, the oldest
snapshot is deleted when a new report snapshot is added.

See Also
Set Report Server Properties (Management Studio)
Connect to a Report Server in Management Studio
Report Server in Management Studio F1 Help
Server Properties (Logging Page)
11/2/2020 • 2 minutes to read • Edit Online

Use this Reporting Services page in SQL Server Management Studio to set limits on the report execution data
that is collected by a report server. Execution data is stored internally in the report server database. You can
track report activity for report server that runs in native mode or SharePoint integrated mode. If the report
server is part of a scale-out deployment, the report execution log maintains a record of all report activity for the
entire deployment in a single log file.
To open this page:
1. Start SQL Server Management Studio
2. Connect to a report server.
3. Right-click the report server name and select Proper ties .
4. Click Logging to open this page.

Options
Enable repor t execution logging
Click to create and store information about report activity on the server. If this option is enabled, the report
server will track which reports are used, the frequency of report processing, the type of report operation that
was performed, the output format, and who ran the report. For more information about additional data points
that are captured in the log, see Report Server ExecutionLog and the ExecutionLog3 View.
Remove log entries older than this number of days
Specify the number of days after which log entries will be trimmed from the report execution log. The default
value is 60 days.

See Also
Set Report Server Properties (Management Studio)
Connect to a Report Server in Management Studio
Reporting Services Log Files and Sources
Report Server in Management Studio F1 Help
Report Server ExecutionLog and the ExecutionLog3 View
Server Properties (Security Page) - Reporting
Services
11/2/2020 • 2 minutes to read • Edit Online

Use this Reporting Services page in SQL Server Management Studio to turn off features that can potentially
compromise a report server. Turning off these features limits some functionality, but can improve the overall
security of the report server by mitigating specific threats.
To open this page:
1. Start SQL Server Management Studio.
2. Connect to a report server instance.
3. Right-click the report server name, and select Proper ties .
4. Click Security to open this page.

Options
Enable Windows-Integrated Security for report data sources
Specify whether a connection to a report data source is using the Windows security token of the user who
requested the report.
If you turn off the feature, the Windows-Integrated Security feature in the report data source property pages
becomes unavailable. If your report data sources are configured for Windows-integrated security and you
subsequently turn off this feature, the report server immediately updates all your data source connection
properties to prompt for credentials.
Enable Ad Hoc Reporting
Specify whether users can perform ad hoc queries from a Report Builder report, where new reports are
automatically generated when a user clicks data of interest.
Setting this option determines whether the EnableLoadRepor tDefinition property on the report server is set
to True or False . If you clear this option, the property is set to False and report server doesn't generate
clickthrough reports that are created during data exploration. All calls to the LoadRepor tDefinition method
are blocked.
Turning off this option mitigates a threat whereby a malicious user launches a denial of service attack by
overloading the report server with LoadRepor tDefinition requests.

See Also
Set Report Server Properties (Management Studio) Connect to a Report Server in Management Studio Specify
Credential and Connection Information for Report Data Sources Report Server in Management Studio F1 Help
Server Properties Advanced Page - Power BI
Report Server & Reporting Services
3/5/2021 • 10 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server 2016 Reporting Services and later ✔
️ Power BI Report Server
Use this page to set system properties on the report server. There are a number of ways to set system
properties. This tool provides a graphical user interface so that you can set properties without having to write
code.
To open this page, start SQL Server Management Studio, connect to a report server instance, right-click the
report server name, and select Proper ties . Select Advanced to open this page.

Options
AccessControlAllowCredentials
(Power BI Report Server, Reporting Services 2017 and later only) Indicates whether the response to the client
request can be exposed when the credentials flag is set to true. The default value is false .
AccessControlAllowHeaders
(Power BI Report Server, Reporting Services 2017 and later only) A comma-separated list of headers that the
server will allow when a client makes a request. This property can be an empty string, specifying * will allow all
headers.
AccessControlAllowMethods
(Power BI Report Server, Reporting Services 2017 and later only) A comma-separated list of HTTP methods that
the server will allow when a client makes a request. The default values are (GET, PUT, POST, PATCH, DELETE),
specifying * will allow all methods.
AccessControlAllowOrigin
(Power BI Report Server, Reporting Services 2017 and later only) A comma-separated list of origins that the
server will allow when a client makes a request. The default value is blank, which prevents all requests,
specifying * will allow all origins when credentials are not set; if credentials are specified an explicit list of origins
must be specified.
AccessControlExposeHeaders
(Power BI Report Server, Reporting Services 2017 and later only) A comma-separated list of headers that the
server will expose to clients. The default value is blank.
AccessControlMaxAge
(Power BI Report Server, Reporting Services 2017 and later only) Specifies the number of seconds the results of
the preflight request can be cached. The default value is 600 (10 minutes).
AllowedResourceExtensionsForUpload
(Power BI Report Server, Reporting Services 2017 and later only) Set extensions of resources that can be
uploaded to the report server. Extensions for built-in file types like *.rdl and *.pbix are not required to be
included. Default is “*, *.xml, *.xsd, *.xsl, *.png, *.gif, *.jpg, *.tif, *.jpeg, *.tiff, *.bmp, *.pdf, *.svg, *.rtf, *.txt, *.doc,
*.docx, *.pps, *.ppt, *.pptx”.
CustomHeaders
(Power BI Report Server January 2020, Reporting Services 2019 and later only)
Sets header values for all URLs matching the specified regex pattern. Users can update the CustomHeaders
value with valid XML to set header values for selected request URLs. Admins can add any number of headers in
the XML. By default in Reporting Services 2019, there are no custom headers and the value is blank. By default
in Power BI Report Server January 2020 and later, the value is this:

<CustomHeaders>
<Header>
<Name>X-Frame-Options</Name>
<Pattern>(?(?=.*api.*|.*rs:embed=true.*|.*rc:toolbar=false.*)(^((?!(.+)((\/api)|(\/(.+)
(rs:embed=true|rc:toolbar=false)))).*$))|(^(?!(http|https):\/\/([^\/]+)\/powerbi.*$)))</Pattern>
<Value>SAMEORIGIN</Value>
</Header>
</CustomHeaders>

NOTE
Too many headers may impact performance.

We recommend validating the configuration of your topology to ensure the set of headers is compatible with
your deployment of Reporting Services. It's possible to choose settings that cause errors in browsers if the
browsers don't also have the appropriate settings. For example, you shouldn't add a HSTS configuration if your
server isn't configured for https. Incompatible headers may result in browser rendering errors.
CustomHeaders XML format

<CustomHeaders>
<Header>
<Name>{Name of the header}</Name>
<Pattern>{Regex pattern to match URLs}</Pattern>
<Value>{Value of the header}</Value>
</Header>
</CustomHeaders>

Setting the CustomHeaders property


You can set it using SetSystemProperties SOAP endpoint passing CustomHeaders property as parameter.
You can use REST endpoint UpdateSystemProperties: /System/Properties passing CustomHeaders property
Example
The below example shows how to set the HSTS and other custom headers for URLs with matching regex pattern.

<CustomHeaders>
<Header>
<Name>Strict-Transport-Security</Name>
<Pattern>(.+)\/Reports\/mobilereport(.+)</Pattern>
<Value>max-age=86400; includeSubDomains=true</Value>
</Header>
<Header>
<Name>Embed</Name>
<Pattern>(.+)(/reports/)(.+)(rs:embed=true)</Pattern>
<Value>True</Value>
</Header>
</CustomHeaders>

The first header in the above XML adds Strict-Transport-Security: max-age=86400; includeSubDomains=true
header to the matched requests.
http://adventureworks/Reports/mobilereport/New%20Mobile%20Report - Regex matched and will set HSTS
header
http://adventureworks/ReportServer/mobilereport/New%20Mobile%20Report – Match Failed
The second header in above XML adds Embed: True header for URL which contains /reports/ and
rs:embed=true query parameter.

https://adventureworks/reports/mobilereport/New%20Mobile%20Report?rs:embed=true - Match
https://adventureworks/reports/mobilereport/New%20Mobile%20Report?rs:embed=false - Fail to Match
EditSessionCacheLimit
Specifies the number of data cache entries that can be active in a report edit session. The default number is 5.
EditSessionTimeout
Specifies the number of seconds until a report edit session times out. The default value is 7200 seconds (two
hours).
EnableCDNVisuals
(Power BI Report Server only) When enabled, Power BI reports load the latest certified custom visuals from a
content delivery network (CDN) hosted by Microsoft. If your server doesn't have access to internet resources,
you can turn off this option. In that case, custom visuals are loaded from the report that was published to the
server. Default is True .
EnableClientPrinting
Determines whether the RSClientPrint ActiveX control is available for download from the report server. The valid
values are true and false . The default value is true . For more information about additional settings that are
required for this control, see Enable and Disable Client-Side Printing for Reporting Services.
EnableCustomVisuals
(Power BI Report Server only) To enable the display of Power BI custom visuals. Values are True/False. Default is
True.
EnableExecutionLogging
Indicates whether report execution logging is enabled. The default value is true . For more information about the
report server execution log, see Report Server ExecutionLog and the ExecutionLog3 View.
EnableIntegratedSecurity
Determines whether Windows-integrated security is supported for report data source connections. The default
is True . The valid values are as follows:

VA L UES DESC RIP T IO N

True Windows-integrated security is enabled.

False Windows-integrated security is not enabled. Report data


sources that are configured to use Windows-integrated
security will not run.

EnableLoadReportDefinition
Select this option to specify whether users can perform an unplanned report execution from a Report Builder
report. Setting this option determines the value of the EnableLoadRepor tDefinition property on the report
server.
If you clear this option, the property is set to False. Report server won't generate clickthrough reports for
reports that use a report model as a data source. Any calls to the LoadReportDefinition method are blocked.
Turning off this option mitigates a threat whereby a malicious user launches a denial of service attack by
overloading the report server with LoadReportDefinition requests.
EnableMyReports
Indicates whether the My Reports feature is enabled. A value of true indicates that the feature is enabled.
EnablePowerBIReportExportData
(Power BI Report Server only) Enable Power BI Report Server data export from Power BI visuals. Values are True,
False. Default is True.
EnablePowerBIReportExportUnderlyingData
(Power BI Report Server only) Indicates whether or not a customer can export underlying data from Power BI
visuals on Power BI Report Server. A value of True indicates that the feature is enabled.
EnableRemoteErrors
Includes external error information (for example, error information about report data sources) with the error
messages that are returned for users who request reports from remote computers. Valid values are true and
false . The default value is false . For more information, see Enable Remote Errors (Reporting Services).
EnableTestConnectionDetailedErrors
Indicates whether to send detailed error messages to the client computer when users test data source
connections using the report server. The default value is true . If the option is set to false , only generic error
messages are sent.
ExecutionLogDaysKept
The number of days to keep report execution information in the execution log. Valid values for this property
include -1 through 2 ,147 ,483 ,647 . If the value is -1 , entries are not deleted from the Execution Log table. The
default value is 60 .

NOTE
Setting a value of 0 deletes all entries from the execution log. A value of -1 keeps the entries of the execution log and
doesn't delete them.

ExecutionLogLevel
Set the Execution Log Level. Default is Normal.
ExternalImagesTimeout
Determines the length of time within which an external image file must be retrieved before the connection is
timed out. The default is 600 seconds.
InterProcessTimeoutMinutes
(Power BI Report Server, Reporting Services 2019 and later only) Set the process timeout in minutes. Default is
30.
MaxFileSizeMb
Set the max file size of the report in MB. Default is 1000. Max is 2000.
ModelCleanupCycleMinutes
(Power BI Report Server only) Set the frequency to check for unused models in memory in minutes. Default is
15.
ModelExpirationMinutes
(Power BI Report Server only) Set the frequency when unused models are evicted from memory in minutes.
Default is 60.
MyReportsRole
The name of the role used when creating security policies on user's My Reports folders. The default value is My
Repor ts Role .
OfficeAccessTokenExpirationSeconds
(Power BI Report Server, Reporting Services 2019 and later only) Set for how long you want the office access
token to expire in seconds. Default is 60.
OfficeOnlineDiscoveryURL
(Power BI Report Server only) Set the address of your Office Online Server instance for viewing Excel
Workbooks.
RDLXReportTimetout
RDLX report (Power View reports in a SharePoint Server) processing timeout value, in seconds, for all reports
managed in the report server namespace. This value can be overridden at the report level. If this property is set,
the report server attempts to stop the processing of a report when the specified time has expired. Valid values
are -1 through 2 ,147 ,483 ,647 . If the value is -1 , reports in the namespace do not time out during processing.
The default value is 1800 .
RequireIntune
(Power BI Report Server, Reporting Services 2017 and later only) Requires Intune to access your organization's
reports via the Power BI mobile app. Default is False.
RestrictedResourceMimeTypeForUpload
(Power BI Report Server January 2019, Reporting Services 2017 and later only) Set of mime types users aren't
allowed to upload content with. Any resources that are already stored with a restricted mime type can only be
downloaded as an application/octet-stream instead of being opened/executed by the browser. By default, there
are no restricted items in this list, but we recommended that organizations populate this to provide the most
secure experience.
ScheduleRefreshTimeoutMinutes
(Power BI Report Server only) Data refresh timeout in minutes for scheduled refresh on Power BI reports with
embedded AS models. Default is 120 minutes.
SessionTimeout
The length of time, in seconds, that a session remains active. The default value is 600 .
SharePointIntegratedMode
This read-only property indicates the server mode. If this value is False, the report server runs in native mode.
ShowDownloadMenu
(Power BI Report Server, Reporting Services 2017 and later only) Enables the client tools download menu.
Default is true.
SiteName
The name of the report server site displayed in the page title of the web portal. The default value is SQL Server
Reporting Services. This property can be an empty string. The maximum length is 8,000 characters.
SnapshotCompression
Defines how snapshots are compressed. The default value is SQL . The valid values are as follows:
VA L UES DESC RIP T IO N

SQL Snapshots are compressed when stored in the report server


database. This compression is the current behavior.

None Snapshots are not compressed.

All Snapshots are compressed for all storage options, which


include the report server database or the file system.

StoredParametersLifetime
Specifies the maximum number of days that a stored parameter can be stored. Valid values are -1 , +1 through
2,147,483,647 . The default value is 180 days.
StoredParametersThreshold
Specifies the maximum number of parameter values that can be stored by the report server. Valid values are -1 ,
+1 through 2,147,483,647 . The default value is 1500 .
SupportedHyperlinkSchemes
(Power BI Report Server January 2019, Reporting Services 2019 and later only) Sets a comma separated list of
the URI schemes allowed to be defined on Hyperlink actions that are allowed to be rendered or “*” to enable all
hyperlink schemes. For example, setting “http,https” would allow hyperlinks to “https://www. contoso.com”, but
would remove hyperlinks to “mailto:bill@contoso.com” or “javascript:window.open(‘www.contoso.com’,
‘_blank’)”. Default is “*”.
SystemReportTimeout
The default report processing timeout value, in seconds, for all reports managed in the report server
namespace. This value can be overridden at the report level. If this property is set, the report server attempts to
stop the processing of a report when the specified time has expired. Valid values are -1 through
2 ,147 ,483 ,647 . If the value is -1 , reports in the namespace do not time out during processing. The default
value is 1800 .
SystemSnapshotLimit
The maximum number of snapshots that are stored for a report. Valid values are -1 through 2 ,147 ,483 ,647 . If
the value is -1 , there is no snapshot limit.
TimerInitialDelaySeconds
(Power BI Report Server, Reporting Services 2017 and later only) Set for how long you want the initial time to be
delayed in seconds. Default is 60.
TrustedFileFormat
(Power BI Report Server, Reporting Services 2017 and later only) Set all the external file formats that open
within the browser under the Reporting Services portal site. External file formats not listed prompts to
download the option in the browser. The default values are jpg, jpeg, jpe, wav, bmp, pdf, img, gif, json, mp4, web,
png.
UseSessionCookies
Indicates whether the report server should use session cookies when communicating with client browsers. The
default value is true .

See Also
Set Report Server Properties (Management Studio)
Connect to a Report Server in Management Studio
Reporting Services Properties
Report Server in Management Studio F1 Help
Report Server System Properties
Script Deployment and Administrative Tasks
Enable and Disable My Reports
More questions? Try asking the Reporting Services forum
System Role Properties (Management Studio)
11/2/2020 • 2 minutes to read • Edit Online

Use the System Roles page to view the system role definitions that are currently defined for the report server. A
system role definition contains a named collection of tasks that are performed relative to the entire site, instead
of an individual item. Role definitions are assigned to a user or groups to create a resulting role assignment. The
tasks in the role definition specify what the user or group can do.
Reporting Services has two predefined system role definitions: System Administrator and System User . You
can modify these role definitions by changing the task list, or you can create a new system role that supports a
different combination of tasks. Editing a role definition affects all role assignments that include the role
definition.

NOTE
System role assignments are used only on a report server that runs in native mode. If the report server is configured for
SharePoint integration, this page is not available.

Options
Name
Specifies the name of the system role definition.
Description
Shows a description of the system role definition. In SQL Server Management Studio, this description is only
visible in this page. Users who view this item through Report Manager may see this description when browsing
the folder hierarchy.
Task
Lists all system-level tasks that can be selected for this role definition. You can add or remove items from the
predefined task list to define how users access a given item through this role. You cannot create new tasks, and
you cannot modify existing tasks.
Description
Provides information about each task. You cannot modify task descriptions.

See Also
Report Server in Management Studio F1 Help
System-Level Tasks
Tasks and Permissions
Predefined Roles
User Role Properties (Management Studio)
11/2/2020 • 2 minutes to read • Edit Online

Use this page to view which tasks are included in an item-level role definition. You can also use this page to
change the task list or modify a role description.
An item-level role definition is a named collection of tasks that users perform relative to a specific item (that is, a
folder, report, resource, or shared data source). Role definitions are assigned to a user or group to create a role
assignment in Report Manager. The tasks in the role definition describe what the user or group can do.
Reporting Services includes a number of predefined item-level role definitions that you can work with. You can
modify the role definitions by changing the task list of each one. Editing a role definition affects all role
assignments that include the role definition.

NOTE
User role assignments are used only on a report server that runs in native mode. If the report server is configured for
SharePoint integration, this page displays read-only information about the roles and permission levels that are defined on
the SharePoint site.

Options
Name
Specifies the name of the role definition.
Description
Shows a description of the role definition. In SQL Server Management Studio, this description is only visible in
this page. In Report Manager, this description helps users decide whether to use the role in a role assignment.
Task
Lists all item-level tasks that can be selected for this role definition. You can add or remove items from the
predefined task list to define how users access a given item through this role. You cannot create new tasks, and
you cannot modify existing tasks. The task list of a role definition appears only in SQL Server Management
Studio.
Task Description
Provides information about each task. You cannot modify task descriptions.

See Also
Item-Level Tasks
Role Definitions
Report Server in Management Studio F1 Help
Tasks and Permissions
Predefined Roles
Report Builder authoring environment (SSRS)
11/2/2020 • 2 minutes to read • Edit Online

Report Builder is a stand-alone authoring environment for creating Reporting Services paginated reports
outside of Visual Studio. When you design a report, you specify where to get the data, which data to get, and
how to display the data. When you run the report, the report processor takes all the information you have
specified, retrieves the data, and combines it with the report layout to generate the report. You can install it from
the Reporting Services web portal or from the Microsoft Download Center.
Install Report Builder from the Microsoft Download Center.

Benefits of Report Builder


Report Builder enables you to:
Use the Report Builder ribbon to quickly add items your reports, launch table, chart, and map wizards,
and format report data.
Add data from built-in data providers by using query designers that help you specify which data to
include in your report.
Create and use report parameters and other interactive features that enable your report readers to
customize data and vary report presentation.
Create expressions from built-in fields, collections, operators, and functions.
Open reports directly from a report server.
Preview reports that use local or published shared data sources and shared datasets.
Preview reports in HTML or print format.
Export reports to other file formats such as Microsoft Excel.
Save your report and related items to a SharePoint library, a report server, or your local computer.
Report Builder and Report Designer share many features. Read more about Report Builder in SQL Server.

See Also
Install Report Builder
Reporting Services Tools
Design Reports with Report Designer (SSRS)
Scripting and PowerShell with Reporting Services
11/2/2020 • 2 minutes to read • Edit Online

Reporting Services supports a wide range of development and management scenarios through script, including
the rs.exe command line utility, PowerShell cmdlets for SharePoint mode report servers, and leveraging the
Reporting Services object model from PowerShell for both Native and SharePoint mode.
Administrators can write script in Microsoft Visual Basic to automate how they deploy and manage a
report server installation. Administrators can also generate and run Transact-SQL scripts that create,
configure, and update a report server database. Administrators can also use the record and playback
script features in SQL Server Management Studio to automate routine maintenance tasks.
Developers can create custom applications that include script. You can run script that makes calls to the
Report Server Web service. Almost any operation that you can write in managed code can also be written
in script.
Reporting Services supports Microsoft Visual Basic .NET script as the script language that can be
processed by the RS.exe utility, a script host that runs on the report server.

Reporting Services SharePoint mode PowerShell cmdlets and samples

Reporting Services SharePoint mode includes Reporting Services cmdlets for report server administration.
PowerShell cmdlets for Reporting Services SharePoint Mode Includes the following examples:
Create a service application and proxy
Review and update a delivery extension
Get and set Properties of the Reporting Service Application Database, for example database
timeout
List Data Extensions

Reporting Services Object model and Powershell samples

PowerShell calling the core object model and for the most part valid for SharePoint and native mode, for
example the migration work, subscription work, and more related samples for subscriptions work in SQL15.
Use PowerShell to Change and List Reporting Services Subscription Owners and Run a Subscription.
Use PowerShell to Create an Azure VM With a Native Mode Report Server.
See the section "Access the WMI classes using PowerShell" in Access the Reporting Services WMI
Provider.

RS.exe scripting samples


Sample Reporting Services rs.exe Script to Copy Content between Report Servers.
For additional script, application, and extension examples, see SQL Server Reporting Services Product
Samples.

See Also
RS.exe Utility (SSRS)
Script Deployment and Administrative Tasks
Script with the rs.exe Utility and the Web Service
Script with the rs.exe Utility and the Web Service
11/2/2020 • 2 minutes to read • Edit Online

Developers and report server administrators can perform operations on a report server through the use of the
rs utility (RS.exe). Using this utility, you can programmatically administer a report server using scripts written
with Microsoft Visual Basic.
Reporting Services scripts can be used to run any of the Report Server Web service operations. Scripting can be
used to copy security to multiple reports on a server, to add and delete items, to copy report server items from
one server to another and more. For more information about the scripting environment, see Run a Reporting
Services Script File. Script files take a certain format and are written in Visual Basic .NET. For more information,
see Format a Reporting Services Script File.
For script samples, see the following:
Sample Reporting Services rs.exe Script to Copy Content between Report Servers.
SQL Server Reporting Services Product Samples.

See Also
Script Deployment and Administrative Tasks
Report Server Web Service
Technical Reference (SSRS)
RS.exe Utility (SSRS)
Format a Reporting Services Script File
11/2/2020 • 2 minutes to read • Edit Online

A Reporting Services script is a Microsoft Visual Basic .NET code file, written against a proxy that is built on Web
Service Description Language (WSDL), which defines the Reporting Services SOAP API. A script file is stored as a
Unicode or UTF-8 text file with the extension .rss.
The script file acts as a Visual Basic module and can contain user-defined procedures and module-level
variables. For the script file to run successfully, it must contain a Main procedure. The Main procedure is the first
procedure that is accessed when your script file runs. Main is where you can add your Web service operations
and run your user defined subprocedures. The following code creates a Main procedure:

Public Sub Main()


' Your code goes here.
End Sub

The script environment automatically connects to the report server, creates the Web proxy class, and generates a
reference variable (rs) to the Web service proxy object. Individual statements that you create need only refer to
the rs module-level variable to perform any of the Web service operations that are available in the Web service
library. The following Visual Basic code calls the Web service ListChildren method from within a script file:

Public Sub Main()


Dim items() As CatalogItem
items = rs.ListChildren("/", True)

Dim item As CatalogItem


For Each item In items
Console.WriteLine(item.Name)
Next item
End Sub

IMPORTANT
User credentials are managed by the script environment and passed through command prompt arguments through the
use of RS.exe. Although you can use the rs variable to set the authentication of the Web service, it is recommended that
you use the script environment. You do not need to authenticate the Web service in the script file itself. For more
information about authenticating the script environment, see RS.exe Utility (SSRS).

You do not declare namespaces within the script file. The scripting environment makes several useful Microsoft
.NET Framework namespaces available to you: System.Web.Ser vices , System.Web.Ser vices.Protocols ,
System.Xml , and System.IO .
For script samples, see SQL Server Reporting Services Product Samples.

See Also
Report Server Web Service
Technical Reference (SSRS)
RS.exe Utility (SSRS)
Run a Reporting Services Script File
11/2/2020 • 2 minutes to read • Edit Online

Reporting Services script files are run from the command prompt using the Reporting Services script
environment (RS.exe). RS.exe has many command prompt arguments available for you to use. For more
information about the command prompt options, see RS.exe Utility (SSRS). For more script samples, see SQL
Server Reporting Services Product Samples.

Sample Command Lines


Run Script.rss in the script environment designating the target report server. Windows Authentication is
applied by default:

rs -i Script.rss -s https://servername/reportserver

Run Script.rss in the script environment specifying a user name and password for authenticating the Web
service calls:

rs -i Script.rss -s https://servername/reportserver -u myusername -p mypassword

Run Script.rss in the script environment specifying a server time-out of 30 seconds:

rs -i Script.rss -s https://servername/reportserver -l 30

Run Script.rss in the script environment specifying a global script variable called report.

rs -i Script.rss -s https://servername/reportserver -v report="Company Sales"

Run Script.rss in the script environment specifying that the Web service operations in the script file are
run as a batch.

rs -i Script.rss -s https://servername/reportserver -b

See Also
Technical Reference (SSRS)
Script Deployment and Administrative Tasks
11/2/2020 • 9 minutes to read • Edit Online

Reporting Services supports the use of scripts to automate routine installation, deployment, and administrative
tasks. Deploying a report server is a multi-step process. You must use several tools and processes to configure a
deployment; there is no single program or approach that can be used to automate all the tasks.
Not every step should be automated. In some cases, performing a step manually or through a graphical tool is
the simplest and most effective approach. For example, if you want to deploy a large number of reports and
models, it is better to copy the report server databases rather than write code that recreates report server
environment.
Some steps require custom code. For example, configuring the URLs for the Web service and Report Manager
can be automated, but only if you write custom code that makes calls into the Report Server Windows
Management Instrumentation (WMI) provider. If you do not want to write code, you must use the Reporting
Services Configuration tool to perform the step.
To run script that configures a report server, you must be a local administrator on the computer that you are
configuring. For more information, see Configure a Report Server for Remote Administration.
This topic describes recommended approaches for automating specific steps. Several programs and
programmatic interfaces are mentioned; descriptions of each one are provided later in this topic.

Deployment Tasks and How to Automate Them


The following table summarizes the installation and configuration tasks that are necessary for deploying a
report server. You can use the table to match a specific task to an approach that allows you to automate or
perform the task unattended.

TA SK A P P RO A C H

Install Reporting Services. You can run setup from the command line to perform an
unattended installation.

You can use Setup to both install and configure a report


server, but only if you specify the default configuration
option and your system meets all the requirements for this
installation type. If you cannot install the default
configuration, you must perform a files-only installation.

Configure the service account. The service account is initially configured through Setup. To
automate changes to the service account as a post-Setup
task, you must write custom code that makes calls into the
Report Server WMI provider. There are no command-prompt
utilities or script templates for configuring the service
account programmatically.

If coding requirements prevent you from automating this


step, you can easily configure the account manually by
running the Reporting Services Configuration tool. For more
information, see Configure a Service Account (Report Server
Configuration Manager).
TA SK A P P RO A C H

Configure the Report Server Web service and Report You must write custom code that makes calls into the Report
Manager URLs. Server WMI provider. There are no command line utilities or
script templates for configuring the URLs.

If you want to avoid writing code, you can configure the


URLs manually by running the Reporting Services
Configuration tool. For more information, see Configure a
URL (Report Server Configuration Manager).

Create the report server database. You must write custom code that makes calls into the Report
Server WMI provider. There are no command-prompt
utilities or script templates for creating the report server
databases and RSExecRole.

If you want to avoid writing code, you can create the


database manually by running the Reporting Services
Configuration tool. For more information, see Create a
Native Mode Report Server Database (Report Server
Configuration Manager).

Configure the report server database connection. If you are changing the connection string, account or
password, or the authentication type, run the rsconfig
utility to configure the connection. For more information, see
Configure a Report Server Database Connection (Report
Server Configuration Manager) and rsconfig Utility (SSRS).

You cannot use rsconfig.exe to create or upgrade the


database. The database and RSExecRole must already exist.

Configure a scale-out deployment. Choose from the following approaches to automate scale-
out deployment:

- Run the rskeymgmt.exe utility to join report server


instances to an existing installation. For more information,
see Add and Remove Encryption Keys for Scale-Out
Deployment (Report Server Configuration Manager).
- Write custom code that runs against the Report Server
WMI provider.

Backup encryption keys. Choose from the following approaches to automate


encryption key backup:

- Run the rskeymgmt.exe utility to back up the keys. For


more information, see Back Up and Restore Reporting
Services Encryption Keys.
- Write custom code that runs against the Report Server
WMI provider.
TA SK A P P RO A C H

Configure Report Server E-mail. Write custom code that runs against the Reporting Services
WMI provider. The provider supports a subset of the e-mail
configuration settings.

Although the RSReportServer.config file includes all the


settings, do not use the file in an automated manner.
Specifically, do not use a batch file to copy the file to another
report server. Each configuration file includes values that are
specific to the current instance. Those values will not be valid
on other report server instances.

For more information about the settings, see E-Mail Settings


- Reporting Services Native mode (Configuration Manager).

Configure the unattended execution account. Choose from the following approaches to automate
unattended processing account configuration:

- Run the rsconfig.exe utility to configure the account. For


more information, see Configure the Unattended Execution
Account (Report Server Configuration Manager).
- Write custom code that makes calls into the Report Server
WMI provider.

Deploy existing content on another report server, including The best way to re-create an existing report server
the folder hierarchy, role assignments, reports, subscriptions, environment is to copy the report server database to a new
schedules, data sources, and resources. report server instance.

An alternative approach is to write custom code that


recreates existing report server content programmatically.
However, be aware that subscriptions, report snapshots, and
report history cannot be recreated programmatically.

Some deployments can benefit from using both techniques


together (that is, restore a report server database, and then
run custom code that modifies the report server database
for a specific installation).

For a detailed example, see Sample Reporting Services rs.exe


Script to Copy Content between Report Servers.

For more information about relocating a report server


database, see Moving the Report Server Databases to
Another Computer (SSRS Native Mode). For more
information about creating report serer environment
programmatically, see the section "Using Script to Migrate
Report Server Content and Folders" in this topic.

Tools and Technologies for Automating Server deployment


The following list summarizes the programs and interfaces that can be used to automate deployment and
maintenance tasks:
The Setup program can be run in unattended mode to install and sometimes configure report server
components. You must use the Files-Only installation option to have Setup configure a report server
instance.
The Reporting Services WMI provider and Reporting Services command line utilities can be used for local
and remote server configuration.
The Reporting Services WMI provider exposes classes, properties, and methods that allow you to
configure all aspects of a Reporting Services installation including specifying the service account,
configuring URLs, creating and configuring the report server database, or configuring a report server for
e-mail delivery. You must write custom code or script to use the WMI provider. For more information, see
Access the Reporting Services WMI Provider.
An alternative to writing code is to use the command line utilities (rsconfig.exe and rskeymgmt.exe). You
can write batch files that run the utilities. You can use the utilities to automate some but not all
configuration tasks.
The report server script host tool (rs.exe) can run custom Microsoft Visual Basic code that you might
write to re-create or move existing content from one report server to another. With this approach, you
write script in Visual Basic, save it as an .rss file, and use rs.exe to run the script on the target report
server. The script you write can call the SOAP interface to the Report Server Web service. Deployment
scripts are written using this approach because it allows you to re-create a report server folder
namespace and content, and re-create role-based security.
The SQL Server 2012 release introduced PowerShell cmdlets for SharePoint integrated mode. You can
use PowerShell to configure and administer the SharePoint integration. For more information, see
PowerShell cmdlets for Reporting Services SharePoint Mode.

Use Scripts to Migrate Report Server Content and Folders


You can write scripts that duplicate a report server environment on another report server instance. Deployment
scripts are generally written in Visual Basic and then processed using the report server script host utility.
For a detailed example, see Sample Reporting Services rs.exe Script to Copy Content between Report Servers.
Use scripts to copy folders, shared data sources, resources, reports, role assignments, and settings from one
server to another. You write a script for one report server instance, and then run it on another server to re-create
the report server namespace. If you have multiple report servers in your Reporting Services deployment, you
can run the script on each server individually to configure all servers in the same way.
The following list describes the steps for migrating reports from one server to another.
1. Set your script variable to the URL of the source report server.
2. Use the GetItemDefinition and GetProperties methods to retrieve the report definition and the properties
of the report.
3. Set the URL to point to the destination server.
4. Use CreateCatalogItem method, passing the properties returned from GetProperties and the report
definition returned by GetItemDefinition.
By using a combination of get and create methods, you can perform similar steps to migrate settings, folders,
shared data sources, and resources. For more information about the methods available to you, see Technical
Reference (SSRS).

NOTE
Scripts run under the Microsoft Windows credentials of the user running the script unless credentials are explicitly set.

For more information about how to format and run a script file, see Script with the rs.exe Utility and the Web
Service.
Using Scripts to Set Server Properties
You can write scripts that set system properties on the report server. The following Visual Basic .NET script
shows one way to set properties. This example disables the RSClientPrint ActiveX control, but you can replace
EnableClientPrinting and False with any valid property name and value. To view a complete list of server
properties, see Report Server System Properties.
To use the script, save it to a file that has an .rss extension, and then use the rs.exe command prompt utility to
run the file on the report server. The script is not compiled, so it is not necessary to have an installation of Visual
Basic. This example assumes that you have permissions on the local computer that hosts the report server. If you
are not logged on under an account that has permissions, you must specify account information through
additional command line arguments. For more information, see RS.exe Utility (SSRS).

TIP
For a detailed example, see Sample Reporting Services rs.exe Script to Copy Content between Report Servers.

Public Sub Main()


Dim props(0) As [Property]
Dim setProp As New [Property]
setProp.Name = "EnableClientPrinting"
setProp.Value = "False"
props(0) = setProp
Try
rs.SetSystemProperties(props)
Catch ex As System.Web.Services.Protocols.SoapException
Console.Write(ex.Detail.InnerXml)
Catch e as Exception
Console.Write(e.Message)
End Try
End Sub

Next steps
GenerateDatabaseCreationScript Method (WMI MSReportServer_ConfigurationSetting)
GenerateDatabaseRightsScript Method (WMI MSReportServer_ConfigurationSetting)
GenerateDatabaseUpgradeScript Method (WMI MSReportServer_ConfigurationSetting)
Install SQL Server from the Command Prompt
Install Reporting Services Native Mode Report Server
Reporting Services Report Server (Native Mode)
Report Server Command Prompt Utilities (SSRS)
Browser Support for Reporting Services and Power View
Reporting Services Tools
More questions? Try asking the Reporting Services forum
Sample Reporting Services rs.exe Script to Copy
Content between Report Servers
11/2/2020 • 14 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services (2008 R2 and later) ✔
️ SharePoint ✔
️ Power BI Report Server
This article includes and describes a sample Reporting Services RSS script that copies content items and settings
from one SQL Server Reporting Services report server to another report server, using the RS.exe utility. RS.exe
is installed with Reporting Services, both native and SharePoint mode. The script copies Reporting Services
items, for example reports and subscriptions, from server to another server. The script supports both SharePoint
mode and Native mode report servers.

To Download the ssrs_migration.rss Script


Download the script from the GitHub site Reporting Services RS.exe migration script to a local folder. For more
information, see the section How to use the script in this article.

Supported Scenarios
The script supports both SharePoint mode and Native mode report servers. The script supports the report
server versions SQL Server 2008 R2 and later, and Power BI Report Server.
The script can be used to copy content between report servers of the same mode or different modes. For
example, you can run the script to copy content from a SQL Server 2008 R2 native mode report server to a SQL
Server 2012 SP1 (11.0.3x) SharePoint mode report server. You can run the script from any server where RS.exe
is installed. For example, in the following deployment, you can:
Run RS.exe and the script ON Server A.
To copy content FROM Server B
TO Server C

SERVER N A M E REP O RT SERVER M O DE

Server A Native

Server B SharePoint

Server C SharePoint

For more information on the RS.exe utility, see RS.exe Utility (SSRS).
Items and resources the script migrates
The script won't write over existing content items of the same name. If the script detects items with the same
name on the destination server that are on the source server, the individual items will result in a "failure"
message and the script will continue. The following table lists the types of content and resources the script can
migrate to target report server modes.

IT EM M IGRAT ED SH A REP O IN T DESC RIP T IO N

Passwords No No Passwords are NOT


migrated. After content
items are migrated, update
the credential information
on the destination server.
For example, data sources
with stored credentials.
IT EM M IGRAT ED SH A REP O IN T DESC RIP T IO N

My Reports No No The Native mode "My


Reports" feature is based on
individual user sign-ins
therefore the scripting
service does not have
access to content in "My
Reports" folders for users
other than the -u
parameter used to run the
rss script. Also, "My
Reports" isn't a feature of
Reporting Services
SharePoint mode and items
in the folders cannot be
copied to a SharePoint
environment. Therefore, the
script does not copy report
items that are in the "My
Reports" folders on a source
native mode report server

To migrate the content in


"My Reports" folders with
this script, complete the
following steps:

1. Create new folder(s) in


the web portal. Optionally,
you can create folders or
subfolders for each user.
2. Sign in as one of the
users with "My Reports"
content.
3. In the web portal, select
the My Repor ts folder.
4. Select the Details view
for the folder.
5. Select each report that
you want to copy.
6. Select Move in the web
portal toolbar.
7. Select the desired
destination folder.
8. Repeat steps 2-7 for each
user.
9. Run the script.

History No No

History settings Yes Yes The history settings are


migrated however the
history details are NOT
migrated.

Schedules Yes Yes To migrate schedules, it is


required that SQL Server
Agent is running on the
target server. If SQL Server
Agent isn't running on the
target, you will see an error
message similar to this one:

Migrating schedules: 1 items found. Migrating schedule:


theMondaySchedule ... FAILURE: The SQL Agent service isn't runnin
operation requires the SQL Agent service. --->
Microsoft.ReportingServices.Diagnostics.Utilities.SchedulerNotRes
Exception: The SQL Agent service isn't running. This operation re
the SQL Agent service.
IT EM M IGRAT ED SH A REP O IN T DESC RIP T IO N

Roles and system policies Yes Yes By default the script won't
copy custom permission
schema between servers.
The default behavior is the
items will be copied to the
destination server with the
'inherit parent permissions'
flag set to TRUE. If you
want the script to copy
permissions for individual
items, use the SECURITY
switch.

If the source and target


servers are not the same
repor t ser ver mode , for
example from native mode
to SharePoint mode, and
you use the SECURITY
switch, the script will
attempt to map default
roles and groups based on
the comparison in the
article Compare Roles and
Tasks in Reporting Services
to SharePoint Groups and
Permissions. Custom roles
and groups aren't copied to
the destination server.

When the script is copying


between servers that are
the same mode , and you
use the SECURITY switch,
the script will create new
roles (native mode) or
groups (SharePoint mode)
on the destination server.

If a role already exists on


the destination server, the
script will create a "Failure"
message similar to the
following, and continue
migrating other items. After
the script completes, verify
that the roles on the
destination server are
configured to meet your
needs. the Migrating roles:
8 items found.

Migrating role: Browser ... FAILURE: The role 'Browser' already e


cannot be created. --->
Microsoft.ReportingServices.Diagnostics.Utilities.RoleAlreadyExis
The role 'Browser' already exists and cannot be created.

For more information, see


Grant User Access to a
Report Server

Note: if a user that exists


on the source server does
not exist on the destination
server, the script cannot
apply role assignments on
the destination server, the
script cannot apply role
assignments, even if the
SECURITY switch is used.
IT EM M IGRAT ED SH A REP O IN T DESC RIP T IO N

Shared data source Yes Yes The script won't overwrite


existing items on the target
server. If an item on the
target server already exists
with the same name, you
will see an error message
similar to this one:

Migrating DataSource: /Data Sources/Aworks2012_oltp ... FAILURE:T


'/Data Sources/Aworks2012_oltp' already exists. --->
Microsoft.ReportingServices.Diagnostics.Utilities.ItemAlreadyExis
The item '/Data Source s/Aworks2012_oltp' already exists.

Credentials are NOT copied


over as part of the data
source. After content items
are migrated, update the
credential information on
the destination server.

Shared dataset Yes Yes

Folder Yes Yes The script won't overwrite


existing items on the target
server. If an item on the
target server already exists
with the same name, you
will see an error message
similar to this one:

Migrating Folder: /Reports ... FAILURE: The item '/Reports' alrea


-->
Microsoft.ReportingServices.Diagnostics.Utilities.ItemAlreadyExis
The item '/Reports' already exists.

Report Yes Yes The script won't overwrite


existing items on the target
server. If an item on the
target server already exists
with the same name, you
will see an error message
similar to this one:

Migrating Report: /Reports/testThe item '/Reports/test' already e


Microsoft.ReportingServices.Diagnostics.Utilities.ItemAlreadyExis
The item '/Reports/test' already exists.

Parameters Yes Yes

Subscriptions Yes Yes

History Settings Yes Yes The history settings are


migrated however the
history details are NOT
migrated.

Processing options Yes Yes


IT EM M IGRAT ED SH A REP O IN T DESC RIP T IO N

Cache refresh options Yes Yes Dependent settings are


migrated as part of a
catalog item. The following
is the sample out of the
script as it migrates a
report (.rdl) and related
settings such as cache
refresh options:

- Migrating parameters for


report TitleOnly.rdl 0 items
found.
- Migrating subscriptions
for report TitleOnly.rdl: 1
items found.
- Migrating subscription
Save in
\\server\public\savedreports
as TitleOnly ... SUCCESS
- Migrating history settings
for report TitleOnly.rdl ...
SUCCESS
- Migrating processing
options for report
TitleOnly.rdl ... 0 items
found.
- Migrating cache refresh
options for report
TitleOnly.rdl ... SUCCESS
- Migrating cache refresh
plans for report
TitleOnly.rdl: 1 items found.
- Migrating cache refresh
plan
titleonly_refresh735amM2F
... SUCCESS

Cache refresh plans Yes Yes

Images Yes Yes

Report parts Yes Yes

Required permissions
The permissions required to read or write items and resources isn't the same for all of the methods used in the
script. The following table summarizes the methods used for each item or resource and links to related content.
Navigate to the individual article to see the required permissions. For example the ListChildren method topic
notes the required permissions of:
Native Mode Required Permissions: ReadProperties on Item
SharePoint Mode Required Permissions: ViewListItems

IT EM O R RESO URC E SO URC E TA RGET

Catalog items ListChildren CreateCatalogItem

GetProperties SetItemDataSources

GetItemDataSources GetItemReferences

GetItemReferences CreateDataSource

GetDataSourceContents CreateLinkedItem

GetItemLink CreateFolder

Role ListRoles CreateRole

GetRoleProperties

System Policy GetSystemPolicies SetSystemPolicies

Schedule ListSchedules CreateSchedule


IT EM O R RESO URC E SO URC E TA RGET

Subscription ListSubscriptions CreateSubscription

GetSubscriptionProperties CreateDataDrivenSubscription

GetDataDrivenSubscriptionProperties

Cache refresh plan ListCacheRefreshPlans CreateCacheRefreshPlan

GetCacheRefreshPlanProperties

Parameters GetItemParameters SetItemParameters

Execution options GetExecutionOptions SetExecutionOptions

Cache options GetCacheOptions SetCacheOptions

History settings GetItemHistoryOptions SetItemHistoryOptions

Item Policy GetPolicies SetPolicies

For more information, see Compare Roles and Tasks in Reporting Services to SharePoint Groups and
Permissions.

How to use the script


1. Download the script file to a local folder, for example c:\rss\ssrs_migration.rss .
2. Open a command prompt with administrative privileges .
3. Navigate to the folder containing the ssrs_migration.rss file.
4. Run the command with the parameters appropriate for your scenario.
Basic Example, native mode repor t ser ver to native mode repor t ser ver :
The following example migrates content from the native mode Sourceser ver to the native mode
Targetser ver .
rs.exe -i ssrs_migration.rss -e Mgmt2010 -s https://SourceServer/ReportServer -u Domain\User -p password -v
ts="https://TargetServer/reportserver" -v tu="Domain\Userser" -v tp="password"

Usage notes:
The script runs in two steps.
The first step is an audit, to return a list of items that will be migrated and the second step is the
migration process.
You can cancel the script after step one if you only want to see the possible migration list or you want
to modify the parameters. Dependent settings aren't listed in step one. For example, the cache options of
a report aren't listed but the report itself is.

TIP
If you want to just audit a single server, use the same server for source and destination and cancel after step 1.

A good use of the step 1 audit information is to review existing roles on both the source and target
Native mode server. The following is an example of the step one audit list. Notice the list includes a "roles"
section because the switch-v security="True" was used:
Retrieve and report the list of items that will be migrated. You can cancel the script after
step 1 if you do not want to start the actual migration.

Retrieving roles:

Role: Browser

Role: Content Manager

Role: Model Item Browser

Retrieve and report the list of items that will be migrated. You can cancel the script after
step 1 if you do not want to start the actual migration.

Retrieving roles:

Role: Browser

Role: Content Manager


Role: CustomRole

Role: Model Item Browser

Role: My Reports

Role: Publisher

Role: Report Builder

Role: System Administrator

Role: System User

Retrieving system policies:

Retrieving system policies:

System policy: BUILTIN\Administrators

System policy: domain\user1

System policy: domain\ueser2

Retrieving schedules:

Schedule: theMondaySchedule

Retrieving catalog items. This may take a while.

Folder: /Data Sources

DataSource: /Data Sources/Aworks2012_oltp

Folder: /images

Resource: /images/Boba Fett.png

Resource: /images/R2-D2.png

Folder: /Reports

Report: /Reports/products

Report: /Reports/test

Report: /Reports/TitleOnly

The SOURCE_URL and TARGET_URL must be valid report server URLs that point to the source and target
Reporting Services report server. In native mode, a report server URL looks like this URL:
https://servername/reportserver

In SharePoint mode the URL looks like this URL:


https://servername/_vti_bin/reportserver

The virtual folder structure presented to the user in SharePoint might be different than the underlying
one. Open https://servername/_vti_bin/reportserver or
https://servername/sites/site_name/_vti_bin/reportserver in a browser to see the non-virtual folder
structure. This is helpful for setting source folder and target folder to something other than "/", for a
server in SharePoint mode.
Passwords aren't migrated, and must be re-entered, for example data sources with stored credentials.

Parameter description
PA RA M ET ER DESC RIP T IO N REQ UIRED

-s Source_URL URL of the source report server Yes

-u Domain\password -p password Credentials for source server. OPTIONAL, default credentials are
used if missing

-v st ="SITE" OPTIONAL. This parameter is only


used for SharePoint mode report
servers.

- v f ="SOURCEFOLDER" Set to "/" for migrating everything, or OPTIONAL, default is "/".


to something like "/folder/subfolder"
for partial migration. Everything within
this folder will be copied

-v ts ="TARGET_URL" 'URL of the target RS server"


PA RA M ET ER DESC RIP T IO N REQ UIRED

-v tu ="domain\username" -v 'Credentials for target server. OPTIONAL, default credentials are


tp ="password" used if missing. Note: the user will be
listed as the "creator" of shared
schedules and "modified by" account
for report items, in the target server.

-v tst ="SITE" OPTIONAL. This parameter is only


used for SharePoint mode report
servers.

-v tf ="TARGETFOLDER" 'Set to "/" for migrating into the root OPTIONAL, default is "/".
level. Set to "/folder/subfolder" to copy
into a folder that already exists.
Everything within "SOURCEFOLDER"
will be copied into "TARGETFOLDER.

-v security = "True/False" If set to "False", destination catalog OPTIONAL, default is "False".


items will inherit security setting
according to the settings of the target
system. This setting is recommended
for migrations between different
report server types, for example native
mode to SharePoint mode. If set to
"True", the script attempts to migrate
security settings.

More examples
Native mode report server to native mode report server
The following example migrates content from the native mode Sourceser ver to the native mode
Targetser ver .

rs.exe -i ssrs_migration.rss -e Mgmt2010 -s https://SourceServer/ReportServer -u Domain\User -p password -v


ts="https://TargetServer/reportserver" -v tu="Domain\Userser" -v tp="password"

The following example adds the security switch:

rs.exe -i ssrs_migration.rss -e Mgmt2010 -s https://SourceServer/ReportServer -u Domain\User -p password -v


ts="https://TargetServer/reportserver" -v tu="Domain\Userser" -v tp="password" -v security="True"

Native mode to SharePoint mode - root site


The following example migrates content from a native mode SourceSer ver to the "root site " on a SharePoint
mode server TargetSer ver . The "Reports" and "Data Sources" folders on the native mode server are migrated
as new libraries on the SharePoint deployment.

rs.exe -i ssrs_migration.rss -e Mgmt2010 -s https://SourceServer/ReportServer -u Domain\User -p Password -v


ts="https://TargetServer/_vti_bin/ReportServer" -v tu="Domain\User" -v tp="Password"

Native mode to SharePoint mode -'bi' site collection


The following example migrates content from a native mode server to a SharePoint server that contains a site
collection of "sites/bi" and a shared documents library. The script creates folders in document the destination
library. For example, the script will create a "Reports" and "Data Sources" folders in the target document library.

rs.exe -i ssrs_migration.rss -e Mgmt2010 -s https://SourceServer/ReportServer -u Domain\User -p Password -v


ts="https://TargetServer/sites/bi/_vti_bin/reportserver" -v tst="sites/bi" -v tf="Shared Documents" -v
tu="Domain\User" -v tp="Password"
SharePoint mode to SharePoint Mode -'bi' site collection
The following example migrates content:
From a SharePoint server SourceSer ver that contains a site collection of "sites/bi" and a shared
documents library.
To a TargetSer ver SharePoint server that contains a site collection of "sites/bi" and a shared documents
library.

rs.exe -i ssrs_migration.rss -e Mgmt2010 -s https://SourceServer/_vti_bin/reportserver -v st="sites/bi" -v


f="Shared Documents" -u Domain\User1 -p Password -v ts="https://TargetServer/sites/bi/_vti_bin/reportserver"
-v tst="sites/bi" -v tf="Shared Documents" -v tu="Domain\User" -v tp="Password"

Native mode to native mode - Azure virtual machine


The following example migrates content:
From a Native mode report server SourceSer ver .
To a TargetSer ver Native mode report server running on an Azure virtual machine. The TargetSer ver
isn't joined to the domain of the SourceSer ver and the User2 is an administrator on the Azure virtual
machine TargetSer ver .

rs.exe -i ssrs_migration.rss -e Mgmt2010 -s https://SourceServer/ReportServer -u Domain\user1 -p Password -v


ts="https://ssrsnativeazure.cloudapp.net/ReportServer" -v tu="user2" -v tp="Password2"

TIP
For information on how to use Windows PowerShell to create Reporting Services report servers on Azure virtual
machines, see Use PowerShell to Create an Azure VM With a Native Mode Report Server.

SharePoint mode -'bi' site collection to a native mode server on an


Azure virtual machine.
The following example migrates content:
From a SharePoint mode report server SourceSer ver that contains a site collection of "sites/bi" and a
shared documents library.
To a TargetSer ver Native mode report server running on an Azure virtual machine. The TargetSer ver
isn't joined to the domain of the SourceSer ver and the User2 is an administrator on the Azure virtual
machine TargetSer ver .

rs.exe -i ssrs_migration.rss -e Mgmt2010 -s https://uetesta02/_vti_bin/reportserver -u user1 -p Password -v


ts="https://ssrsnativeazure.cloudapp.net/ReportServer" -v tu="user2" -v tp="Passowrd2"

Verification
The section summarizes some of the steps to take on the destination server to verify content and policies were
successfully migrated.
Schedules
To verify schedules on the target server:
Native Mode
1. Open the web portal on the destination server.
2. Select Site Settings on the top menu.
3. Select Schedules in the left pane.
SharePoint mode:
1. Browse to Site settings .
2. In the Repor ting Ser vices group, click Manage Shared Schedules .
Roles and groups
Native Mode
1. Open SQL Server Management Studio and connect to your native mode report server.
2. In Object Explorer click Security .
3. Click Roles .
Troubleshooting
Use the trace flag -t to receive more information. For example, if you run the script and see a message similar to
the following
Could not connect to server: https://<servername>/ReportServer/ReportService2010.asmx
Run the script again with the -t flag, to see a message similar to this one:
System.Exception: Could not connect to server:
https://<servername>/ReportServer/ReportService2010.asmx ---> System.Net.WebException: The request
failed with HTTP status 401: Unauthorized . at
System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message,
WebResponse response, Stream responseStream, Boolean asyncCall) at
System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters) at
Microsoft.SqlServer.ReportingServices2010.ReportingService2010.IsSSLRequired() at
Microsoft.ReportingServices.ScriptHost.Management2010Endpoint.PingService(String url, String userName,
String password, String domain, Int32 timeout) at
Microsoft.ReportingServices.ScriptHost.ScriptHost.DetermineServerUrlSecurity() --- End of inner exception
stack trace ---

See also
RS.exe Utility (SSRS)
Compare Roles and Tasks in Reporting Services to SharePoint Groups and Permissions
Access the Reporting Services WMI Provider
11/2/2020 • 3 minutes to read • Edit Online

The Reporting Services WMI provider exposes two WMI classes for administration of Native mode report server
instances through scripting:

IMPORTANT
Starting with the SQL Server 2012 (11.x) release, the WMI provider is supported for only native mode report servers.
SharePoint mode report servers can be managed with SharePoint Central Administration pages and PowerShell scripts.

C L A SS N A M ESPA C E DESC RIP T IO N

MSReportServer_Instance root\Microsoft\SqlServer\ReportServer\ Provides basic information required for


RS_<EncodedInstanceName>\v13 a client to connect to an installed
report server.

MSReportServer_ConfigurationSetting root\Microsoft\SqlServer\ReportServer\ Represents the installation and run-


RS_<EncodedInstanceName>\v13\Ad time parameters of a report server
min instance. These parameters are stored
in the configuration file for the report
server.

** Impor tant ** This class is only


accessible with administrative
privileges.

An instance of each of the above classes is created for each report server instance. You can use any Microsoft or
third party tools to access the WMI objects exposed by the report server, including WMI programming
interfaces exposed by the .NET Framework itself. This topic describes how to access and use the WMI class
instances with the PowerShell command Get-WmiObject.

Determine the Instance Name in the Namespace String


The instance name in the namespace path for the Reporting Services WMI classes is an encoding of the instance
names that you specify when installing the named Reporting Services instances. Namely, special characters in
the instance names are encoded. For example, an underline (_) is encoded as "_5f", so an instance name of
"My_Instance" is encoded as "My_5fInstance" in the WMI namespace path.
To list the encoded instance names of your report server instances in the WMI namespace path, use the
following PowerShell command:

PS C:\windows\system32> Get-WmiObject -namespace root\Microsoft\SqlServer\ReportServer -class __Namespace -


ComputerName hostname | select Name

Access the WMI Classes Using PowerShell


To access the WMI classes, run the following command:
PS C:\windows\system32> Get-WmiObject -namespace <namespacename> -class <classname> -ComputerName <hostname>

For example, to access the MSReportServer_ConfigurationSetting class on the default report server instance of
the host myrshost, run the following command. The default report server instance must be installed on
myrshost for this command to succeed.

PS C:\windows\system32> Get-WmiObject -namespace


"root\Microsoft\SqlServer\ReportServer\RS_MSSQLSERER\v11\Admin" -class MSReportServer_ConfigurationSetting -
ComputerName myrshost

This command syntax outputs all class property names and values. Note that all instances of the class
MSReportServer_ConfigurationSetting is returned, even though you are accessing the class in the namespace of
the default report server instance (RS_MSSQLSERVER). For example, if myrshost is installed with the default
report server instance and a named report server instance called SHAREPOINT, this command will return two
WMI objects and output the property names and values for both report server instances.
To return a specific class instance when multiple instances are returned, use the -Filter parameter to filter the
results based on properties with unique values such as InstanceName. For example, to return only the WMI
object for the default report server instance, use the following command:

PS C:\windows\system32> Get-WmiObject -namespace


"root\Microsoft\SqlServer\ReportServer\RS_MSSQLServer\v13\Admin" -class MSReportServer_ConfigurationSetting
-ComputerName myrshost -filter "InstanceName='MSSQLSERVER'"

Query the Available Methods and Properties


To see what methods and properties are available in one of the Reporting Services WMI classes, pipe the results
from Get-WmiObject to the Get-Member command. For example:

PS C:\windows\system32> Get-WmiObject -namespace


"root\Microsoft\SqlServer\ReportServer\RS_MSSQLServer\v13\Admin" -class MSReportServer_ConfigurationSetting
-ComputerName myrshost | Get-Member

Use a WMI Method or Property


Once you have the WMI objects to the Reporting Services classes and know the available methods and
properties, you can use these methods and properties. For example, if you have a named report server instance
in SharePoint integrated mode called SHAREPOINT, use the following command sequence to retrieve the URL
for the SharePoint Central Administration site:

PS C:\windows\system32> $rsconfig = Get-WmiObject -namespace


"root\Microsoft\SqlServer\ReportServer\RS_MSSQLServer\v13\Admin" -class MSReportServer_ConfigurationSetting
-ComputerName myrshost -filter "InstanceName='SHAREPOINT'"
PS C:\windows\system32> $rsconfig.GetAdminSiteUrl()

See Also
Reporting Services WMI Provider Library Reference (SSRS)
RsReportServer.config Configuration File
Report Server Command Prompt Utilities (SSRS)
11/2/2020 • 2 minutes to read • Edit Online

SQL Server Reporting Services includes several command line utilities that you can use to administer a report
server. These utilities are installed automatically when you install a report server.

SUP P O RT ED DEP LO Y M EN T
NAME C O M M A N D F IL E M O DE DESC RIP T IO N

RSS utility rs.exe Native mode and The rs utility is a script host
SharePoint mode. The SQL that you can use to perform
Server 2008 R2 release scripted operations. Use
introduced SharePoint this tool to run
mode support. MicrosoftVisual Basic scripts
that copy data between
report server databases,
publish reports, create
items in a report server
database, and more. To
learn more about using
scripts to administer a
server, see Script
Deployment and
Administrative Tasks.

Powershell cmdlets SharePoint only For a list of the of the


powershell cmdlets, see
PowerShell cmdlets for
Reporting Services
SharePoint Mode.

Rsconfig utility rsconfig.exe Native only The rsconfig utility is used


to configure and manage a
report server connection to
the report server database.
You can also use it to
specify a user account to
use for unattended report
processing. For more
information, see Reporting
Services Report Server
(Native Mode). To learn
more about connection
configuration, see Configure
a Report Server Database
Connection (Report Server
Configuration Manager).
SUP P O RT ED DEP LO Y M EN T
NAME C O M M A N D F IL E M O DE DESC RIP T IO N

Rskeymgmt Utility rskeymgmt.exe Native only The rskeymgmt utility is an


encryption key
management tool. You can
use it to back up, apply,
recreate, and delete
symmetric keys. You can
also use this tool to attach
a report server instance to
a shared report server
database. Rskeymgmt can
be used in database
recovery operations. You
can reuse an existing
database in a new
installation by applying a
back up copy of the
symmetric key. If the keys
cannot be recovered, this
tool provides a way to
delete encrypted content
that you no longer use. To
learn more about key
management and storage
of sensitive data, see Store
Encrypted Report Server
Data (Report Server
Configuration Manager)
and Configure and Manage
Encryption Keys (Report
Server Configuration
Manager).

NOTE
If you prefer to use a tool that has a graphical user interface, you can use the Report Server Configuration Manager
instead of rsconfig and rskeymgmt .

See Also
Report Server Configuration Manager (Native Mode)
Reporting Services Tools
Reporting Services Report Server (Native Mode)
rskeymgmt Utility (SSRS)
11/2/2020 • 7 minutes to read • Edit Online

Extracts, restores, creates, and deletes the symmetric key used to protect sensitive report server data against
unauthorized access. This utility is also used to join report server instances in a scale-out deployment. A report
server scale-out deployment refers to multiple report server instances that share a single report server
database.

Syntax
rskeymgmt {-?}
{-eextract}
{-aapply}
{-ddeleteall}
{-srecreatekey}
{-rremoveinstancekey}
{-jjoinfarm}
{-iinstance}
{-ffile}
{-pencryptionpassword}
{-mremotecomputer}
{-ninstancenameofremotecomputer}
{-uadministratoruseraccount}
{-vadministratorpassword}
{-ttrace}

Arguments
-?
Displays the syntax of rskeymgmt arguments.
-e
Extracts the symmetric key used to encrypt and decrypt data for the report server instance so that you can copy
it to a file.
This argument does not take a value. However, you must include additional arguments on the command line to
complete the extraction. The arguments that you must specify include -f and-p .
-a
Replaces an existing symmetric key with a copy that you provide in a password protected backup file. All
instances of the symmetric key are updated.
This argument does not take a value. However, you must include additional arguments on the command line to
select the file that contains the key to be applied. The arguments that you can specify include -f and-p .
-d
Deletes all symmetric key instances and all encrypted data in a report server database. This argument does not
take a value.
-s
Generates a new symmetric key and re-encrypts all encrypted content using the new key. All instances of the
symmetric key are regenerated.
-j
Configures a remote report server instance to share the report server database that is used by the local report
server instance.
-r installationID
Removes the symmetric key information for a specific report server instance, thereby removing the report
server from a scale-out deployment. The installationID is a GUID value that can be found in the
RSReportserver.config file.
-f file
Specifies a fully qualified path to the file that stores a backup copy of the symmetric keys.
For rskeymgmt -e , the symmetric key is written to the file you specify.
For rskeymgmt -a , the symmetric key value stored in the file is applied to the report server instance.
-p password
(Required for -f ) Specifies the password used to back up or apply a symmetric key. This value cannot be empty.
-i
Specifies a local report server instance. This argument is optional if you installed the report server on the
default SQL Server instance (the default value for -i is MSSQLSERVER). If you installed the report server as a
named instance, -i is required.
-m
Specifies the name of the remote computer that hosts the report server instance you are joining to the report
server scale-out deployment. Use the name of the computer that identifies it on your network.
-n
Specifies the name of the report server instance on a remote computer. This argument is optional if you
installed the report server on the default SQL Server instance (the default value for -n is MSSQLSERVER). If you
installed the report server as a named instance, -n is required.
-u useraccount
Specifies the administrator account on the remote computer that you are joining to the scale-out deployment. If
an account is not specified, the credentials of the current user are used.
-v password
(Required for -u ) Specifies the password of an administrator account on the remote computer that you want to
join to the scale-out deployment.
-t trace
Outputs error messages to the trace log. This argument does not take a value. For more information, see Report
Server Service Trace Log.

Permissions
You must be a local administrator to run the tool, and you must run it locally on the computer that hosts the
report server. The rskeymgmt utility works with the local Report Server Windows instance (the utility cannot
connect to remote instances of the Report Server Windows service so it cannot be used to manage the
encryption keys of a remote report server instance).

NOTE
If you are using the -u and -v arguments, be sure to specify an account that has administrator permissions on the
remote computer.
Examples
The following examples illustrate ways of using rskeymgmt . The following examples show how to extract,
restore, and delete encryption keys, and how to configure a report server scale-out deployment.
Extracting Encryption Keys
This example shows how to create a backup copy of the encryption key and save it to a password-protected file
on a floppy disk. If the report server is installed as a named instance, add the -i argument.

rskeymgmt -e -f a:\backupkey\keys -p <password>

Restoring Encryption Keys


This example shows how to replace the encryption key. You must specify the location of the backup copy of the
key and the password that unlocks the file.

rskeymgmt -a -f a:\backupkey\keys -p <password>

Deleting Encryption Keys and Encrypted Content


This example shows how to delete all encryption keys stored in a report server. If your installation is a report
server scale-out deployment, the encryption keys for all report server instances that are included in the
deployment will be deleted. Deleting an encryption key also deletes any existing encrypted values in the report
server database. For more information about encrypted content, see Store Encrypted Report Server Data
(Report Server Configuration Manager).

rskeymgmt -d

Joining a Remote Report Server Named Instance to a Scale-out Deployment


This example shows how to add a report server instance that is installed on a remote computer to a report
server scale-out deployment. You must run the command on one of the computers that is already configured to
use the shared database. The command arguments specify the remote report server instance you want to join to
the scale-out deployment.

rskeymgmt -j -m <remotecomputer> -n <namedreportserverinstance> -u <administratoraccount> -v


<administratorpassword>

NOTE
A report server scale-out deployment refers to a deployment model where multiple report server instances share the
same report server database. A report server database can be used by any report server instance that stores its
symmetric keys in the database. For example, if a report server database contains key information for three report server
instances, all three instances are considered to members of the same scale-out deployment.

Joining Report Server Instances on the Same Computer


You can create a scale-out deployment from multiple report server instances that are installed on the same
computer. Do not set the -u and -v arguments if you are joining report server instances that are installed locally.
The -u and -v arguments are used only when you are joining an instance from a remote computer. If you specify
the arguments, you will get the following error: "User credentials cannot be used for local connections."
The following example illustrates the syntax for creating a scale-out deployment using multiple local instances.
In this example, <initializedinstance > is the name of an instance that is already initialized to use the report
server database, and <newinstance > is the name of the instance that you want to add to the deployment:
rskeymgmt -j -i <initializedinstance> -m <computer name> -n <newinstance>

Removing Encryption Keys for a Single Report Server in a Scale-out Deployment


This example shows how to remove the encryption keys for a single report server in a report server scale-out
deployment. The keys are removed from the report server database. Once the keys for that report server
instance are removed, that report server instance can no longer access encrypted data in the database,
effectively removing it from the scale-out deployment.
Removing a report server instance from a scale-out deployment requires you to specify an installation ID. The
installation ID is a GUID stored in the RSReportserver.config file of the report server instance for which you want
to remove encryption keys. You must run the following command on the computer that you want to remove
from the scale-out deployment. If the report server is installed as a named instance, use the -i argument to
specify the instance. For more information, see RsReportServer.config Configuration File.

rskeymgmt -r <installationID>

File Location
Rskeymgmt.exe is located at < drive >:\Program Files\Microsoft SQL Ser ver\110\Tools\Binn or at
< drive >:\Program Files (x86)\Microsoft SQL Ser ver\110\Tools\Binn . You can run the utility from any
folder on your file system.

Remarks
A report server encrypts stored credentials and connection information. A public key and a symmetric key are
used to encrypt data. A report server database must have valid keys in order for the report server to run. You
can use rskeymgmt to back up, delete, or restore the keys. If the keys cannot be restored, this tool provides a
way to delete encrypted content that can no longer be used.
The rskeymgmt utility is used to manage the key set that is defined during Setup or during initialization. It
connects to the local Report Server Windows service through a Remote Procedure Call (RPC) endpoint. The
Report Server Windows service must be running in order for this utility to work.
For more information about the encryption keys, see Configure and Manage Encryption Keys (Report Server
Configuration Manager) and Initialize a Report Server (Report Server Configuration Manager).

See Also
Scale-out Deployment - Reporting Services Native mode (Configuration Manager)
Reporting Services Report Server (Native Mode)
Report Server Command Prompt Utilities (SSRS)
Configure and Manage Encryption Keys (Report Server Configuration Manager)
rsconfig Utility (SSRS)
11/2/2020 • 5 minutes to read • Edit Online

The rsconfig.exe utility encrypts and stores connection and account values in the RSReportServer.config file.
Encrypted values include report server database connection information and account values used for
unattended report processing.

Syntax
rsconfig {-?}
{-cconnection}
{-eunattendedaccount}
{-mcomputername}
{-iinstancename}
{-sservername}
{-ddatabasename}
{-aauthmethod}
{-uusername}
{-ppassword}
{-ttrace}

Arguments
T ERM O P T IO N A L / REQ UIRED DEF IN IT IO N

-? Optional. Displays the syntax of Rsconfig.exe


arguments.

-c Required if -e argument is not used. Specifies the connection string,


credentials, and data source values
used to connect a report server to the
report server database.

This argument does not take a value.


However, additional arguments must
be specified with it to provide all of the
required connection values.

Arguments that you can specify with -


c include -m , -s , -i,-d ,-a ,-u ,-p , and-t .

-e Required if -c argument is not used. Specifies the unattended report


execution account.

This argument does not take a value.


However, you must include additional
arguments on the command line to
specify that values that are encrypted
in the configuration file.

Arguments that you can specify with -


e include -u and -p . You can also set -
t.
T ERM O P T IO N A L / REQ UIRED DEF IN IT IO N

-m computername Required if you are configuring a Specifies the name of the computer
remote report server instance. that is hosting the report server. If this
argument is omitted, the default is
localhost .

-s servername Required. Specifies the SQL Server instance that


hosts the report server database.

-i instancename Required if you are using named If you used a named Reporting
instances. Services instance, this value specifies
the name of the Reporting Services
instance.

-d databasename Required. Specifies the name of the report server


database.

-a authmethod Required. Specifies the authentication method


that the report server uses to connect
to the report server database. Valid
values are Windows or SQL (this
argument is not case-sensitive).

Windows specifies that the report


server use Windows Authentication.

SQL specifies that the report server


use SQL Server Authentication.

-u [domain\]username Required with -e Optional with -c. Specifies a user account for the report
server database connection or for the
unattended account.

For rsconfig -e , this argument is


required. It must be a domain user
account.

For rsconfig -c and -a SQL , this


argument must specify a SQL Server
login.

For rsconfig -c and -a Windows ,


this argument may specify a domain
user, a built-in account, or service
account credentials. If you are
specifying a domain account, specify
domain and username in the format
domain\username. If you are using a
built-in account, this argument is
optional. If you want to use service
account credentials, omit this
argument.

-p password Required if -u is specified. Specifies the password to use with the


username argument. You can set this
argument to a blank value if the
account does not require a password.
This value is case-sensitive for domain
accounts.
T ERM O P T IO N A L / REQ UIRED DEF IN IT IO N

-t Optional. Outputs error messages to the trace


log. This argument does not take a
value. For more information, see
Report Server Service Trace Log.

Permissions
You must be a local administrator on the computer that hosts the report server you are configuring.

File Location
Rsconfig.exe is located in \Program Files\Microsoft SQL Ser ver\110\Tools\Binn . You can run the utility
from any folder on your file system.

Remarks
Rsconfig.exe is used for two purposes:
To modify the connection information that a report server uses to connect to a report server database.
To configure a special account that the report server uses to log on to a remote database server when
other credentials are not available.
You can run the rsconfig utility on a local or remote instance of Reporting Services. You cannot use the
rsconfig utility to decrypt and view values that are already set.
Before you can run this utility, Windows Management Instrumentation (WMI) must be installed on the computer
that you are configuring.

Examples
The following examples illustrate ways of using rsconfig .
Specifying a Domain User Account
This example shows how to configure a report server to use a domain user account when connecting to a local
report server database.

rsconfig -c -s <SQLSERVERNAME> -d reportserver -a Windows -u <MYDOMAIN\MYACCOUNT> -p <PASSWORD>

Specifying a SQL Server Database User Account


This example shows how to configure a report server to use SQL Server login to connect to a remote report
server database.

rsconfig -c -m <REMOTECOMPUTERNAME> -s <SQLSERVERNAME> -d reportserver -a SQL -u SA -p <SAPASSWORD>

Specifying a Built-in Account


This example shows how to configure a report server to use a built-in account when connecting to a local report
server database. Notice that -u is not used. Examples of supported built-in account values include NT
AUTHORITY\SYSTEM for Local System and NT AUTHORITY\NETWORKSERVICE for Network Service ( Microsoft
Windows Server 2003 only).
rsconfig -c -s <SQLSERVERNAME> -d reportserver -a Windows "NT AUTHORITY\SYSTEM"

Specifying a Service Account


This example shows how to configure a report server to use the Report Server Windows service account and
Web service account when connecting to a local report server database. Notice that -u is not used and that no
account information is specified. When you eliminate account values from the command, the rsconfig utility
uses integrated security and the service account that each service runs under.

rsconfig -c -s <SQLSERVERNAME> -d reportserver -a Windows

Specifying the Unattended Account on a Local Server


This example shows how to configure the account used for unattended report execution for reports that do not
pass credentials to the external data source. The account must be a Windows domain account. You cannot
specify a SQL Server login for the user name and password. The account is configured on a local report server
instance. Error messages are captured in the trace logs in the ReportingServices\LogFiles folder.

rsconfig -e -u <DOMAIN\ACCOUNT> -p <PASSWORD> -t

Specifying the Unattended Account on a Remote Server


This example shows how to configure the account on a remote report server instance that is the same version
as Rsconfig.exe (for example, the report server and Rsconfig.exe are the SQL Server 2008 R2 version). Error
message information is captured in the trace logs on the remote server.

rsconfig -e -m <REMOTECOMPUTERNAME> -s <SQLSERVERNAME> -u <DOMAIN\ACCOUNT> -p <PASSWORD> -t

See Also
Configure a Report Server Database Connection (Report Server Configuration Manager)
Configure the Unattended Execution Account (Report Server Configuration Manager)
Reporting Services Report Server (Native Mode)
Store Encrypted Report Server Data (Report Server Configuration Manager)
Reporting Services Configuration Files
Report Server Command Prompt Utilities (SSRS)
RsReportServer.config Configuration File
RS.exe Utility (SSRS)
11/2/2020 • 4 minutes to read • Edit Online

The rs.exe utility processes script that you provide in an input file. Use this utility to automate report server
deployment and administration tasks.

NOTE
Beginning with SQL Server 2008 R2, the rs utility is supported against report servers that are configured for SharePoint
integrated mode as well as servers configured in native mode. Previous versions only supported native mode
configurations.

Syntax
rs {-?}
{-i input_file=}
{-s serverURL}
{-u username}
{-p password}
{-e endpoint}
{-l time_out}
{-b batchmode}
{-v globalvars=}
{-t trace}

File Location
RS.exe is located at \Program Files\Microsoft SQL Ser ver\110\Tools\Binn . You can run the utility from
any folder on your file system.

Arguments
-?
(Optional) Displays the syntax of rs arguments.
-i input_file
(Required) Specifies the .rss file to execute. This value can be a relative or fully qualified path to the .rss file.
-s serverURL
(Required) Specifies the Web server name and report server virtual directory name to execute the file against.
An example of a report server URL is https://examplewebserver/reportserver . The prefix http:// or https:// at the
beginning of the server name is optional. If you omit the prefix, the report server script host tries to use https
first, and then uses http if https does not work.
-u [domain\]username
(Optional) Specifies a user account used to connect to the report server. If -u and -p are omitted, the current
Windows user account is used.
-p password
(Required if -u is specified) Specifies the password to use with the -u argument. This value is case-sensitive.
-e
(Optional) Specifies the SOAP endpoint against which the script should run. Valid values are the following:
Mgmt2010
Mgmt2006
Mgmt2005
Exec2005
If a value is not specified, the Mgmt2005 endpoint is used. For more information about the SOAP endpoints, see
Report Server Web Service Endpoints.
-l time_out
(Optional) Specifies the number of seconds that elapse before the connection to the server times out. The
default is 60 seconds. If you do not specify a time-out value, the default is used. A value of 0 specifies that the
connection never times out.
-b
(Optional) Specifies that the commands in the script file run in a batch. If any commands fail, the batch is rolled
back. Some commands cannot be batched, and those run as usual. Only exceptions that are thrown and are not
handled within the script result in a rollback. If the script handles an exception and returns normally from Main ,
the batch is committed. If you omit this parameter, the commands run without creating a batch. For more
information, see Batching Methods.
-v globalvar
(Optional) Specifies global variables that are used in the script. If the script uses global variables, you must
specify this argument. The value that you specify must be valid for global variable defined in the .rss file. You
must specify one global variable for each -v argument.
The -v argument is specified on the command line and is used to set the value for a global variable that is
defined in your script at run time. For example, if your script contains a variable named parentFolder, you can
specify a name for that folder on the command line:
rs.exe -i myScriptFile.rss -s https://myServer/reportserver -v parentFolder="Financial Reports"

Global variables are created with the names given and set to the values supplied. For example, -v a= "1 " -v
b= "2 " results in a variable named a with a value of"1 " and a variable b with a value of "2 ".
Global variables are available to any function in the script. A backslash and quotation mark (\" ) is interpreted as
a double quotation mark. The quotation marks are required only if the string contains a space. Variable names
must be valid for Microsoft Visual Basic; they must start with alphabetical character or underscore and contain
alphabetical characters, digits, or underscores. Reserved words cannot be used as variable names. For more
information about using global variables, see Built-in Collections in Expressions (Report Builder and SSRS).
-t
(Optional) Outputs error messages to the trace log. This argument does not take a value. For more information,
see Report Server Service Trace Log.

Permissions
To run the tool, you must have permission to connect to the report server instance you are running the script
against. You can run scripts to make changes to the local computer or a remote computer. To make changes to a
report server installed on a remote computer, specify the remote computer in the -s argument.

Examples
The following example illustrates how to specify the script file that contains Visual Basic .NET script and Web
service methods that you want to execute.

rs -i c:\scriptfiles\script_copycontent.rss -s https://localhost/reportserver

For a detailed example, see Sample Reporting Services rs.exe Script to Copy Content between Report Servers.
For additional examples, see Run a Reporting Services Script File

Remarks
You can define scripts to set system properties, publish reports, and so forth. The scripts that you create can
include any methods of the Reporting Services API. For more information about the methods and properties
available to you, see Report Server Web Service.
The script must be written in Visual Basic .NET code, and stored in a Unicode or UTF-8 text file with an .rss file
name extension. You cannot debug scripts with the rs utility. To debug a script, run the code within Microsoft
Visual Studio.

TIP
For a detailed example, see Sample Reporting Services rs.exe Script to Copy Content between Report Servers.

See Also
Run a Reporting Services Script File
Script Deployment and Administrative Tasks
Script with the rs.exe Utility and the Web Service
Report Server Command Prompt Utilities (SSRS)
Tutorial: How to Locate and Start Reporting
Services Tools (SSRS)
3/5/2021 • 6 minutes to read • Edit Online

This tutorial introduces the tools used to configure a report server, manage report server content and
operations, and create and publish paginated and mobile Reporting Services reports. If you are already familiar
with the tools, you can move on to other tutorials to learn skills for using Reporting Services. For other tutorials,
see Reporting Services Tutorials (SSRS).

Report Server Configuration Manager (Native Mode)


Use the Native mode configuration manager to complete the following:
Specify the service account.
Create or upgrade the report server database.
Modify the connection properties.
Specify URLs.
Manage encryption keys.
Configure unattended report processing and e-mail report delivery.
Installation: Reporting Services Configuration Manager is installed when you install Reporting Services Native
mode. For more information, see Install Reporting Services Native Mode Report Server.
To start the Report Server Configuration Manager
1. On the Windows start screen, type repor ting and in the Apps search results, click Repor t Ser ver
Configuration Manager .

Or
Click Star t , then click Programs , then click Microsoft SQL Ser ver , then click Configuration Tools ,
and then click Repor t Ser ver Configuration Manager .
The Repor t Ser ver Installation Instance Selection dialog box appears so that you can select the
report server instance you want to configure.
2. In Ser ver Name , specify the name of the computer on which the report server instance is installed. The
name of the local computer is specified by default, but you can also type the name of a remote SQL
Server instance.
If you specify a remote computer, click Find to establish a connection. The report server must be
configured for remote administration in advance. For more information, see Configure a Report Server
for Remote Administration.
3. In Instance Name , choose the SQL Server Reporting Services instance that you want to configure. Only
SQL Server 2008 and later report server instances appear in the list. You cannot configure earlier
versions of Reporting Services.
4. Click Connect .
5. To verify that you launched the tool, compare your results to the following image:

Next Steps: Configure and Administer a Report Server (SSRS Native Mode) and Report Server Configuration
Manager (Native Mode).

Web Portal (Native Mode)


Use Web portal (SSRS Native Mode) to set permissions, manage subscriptions and schedules, and work with
reports. You can also use the Web Portal to view reports.
Installation: The Web Portal is installed when you install Reporting Services Native mode: Install Reporting
Services Native Mode Report Server
Before you can open the Web Portal, you must have sufficient permissions (initially, only members of the local
Administrators group have permissions that provide access to the Web Portal features). The Web Portal
provides different pages and options depending on the role assignments of the current user. Users who have no
permissions will get an empty page. Users with permissions to view reports will get links that they can click to
open the reports. To learn more about permissions, see Roles and Permissions (Reporting Services).
To start The Web Portal
1. Open your browser. For information on supported browsers and browser versions, see Browser Support
for Reporting Services and Power View.
2. In the address bar of the Web browser, type the Web Portal URL. By default, the URL is
https://<serverName>/reports . You can use the Reporting Services Configuration tool to confirm the
server name and URL. For more information about URLs used in Reporting Services, see Configure
Report Server URLs (Report Server Configuration Manager).
3. The Web Portal opens in the browser window. The startup page is the Home folder. Depending on
permissions, you might see additional folders, hyperlinks to reports, and resource files within the startup
page. You might also see additional buttons and commands on the toolbar.
4. If you run the Web Portal on the local report server, see Configure a Native Mode Report Server for Local
Administration (SSRS).

Management Studio
Report server administrators can use Management Studio to manage a report server alongside other SQL
Server component servers. For more information, see the SQL Server Management Studio tutorial.
To Start SQL Server Management Studio
1. From the Windows Start Screen type sql ser ver and in the Apps search results, click SQL Ser ver
Management Studio .

Or
Click Star t , then click All Programs , then click Microsoft SQL Ser ver , and then click SQL Ser ver
Management Studio . The Connect to Ser ver dialog box appears.
2. If the Connect to Ser ver dialog box does not appear, in Object Explorer , click Connect and then
select Repor ting Ser vices .
3. In the Ser ver type list, select Repor ting Ser vices . If Reporting Services is not on the list, it is not
installed.
4. In the Ser ver name list, select a report server instance. Local instances appear in the list. You can also
type the name of a remote SQL Server instance.
5. Click Connect . You can expand the root node to set server properties, modify role definitions, or turn off
report server features.

SQL Server Data Tools with Report Designer and Report Wizard
You have a choice of two different tools for creating SQL Server paginated reports: Report Designer and Report
Builder.
Report Designer is available in SQL Server Data Tools (SSDT) - Visual Studio. The Report Designer design surface
includes tabbed windows, wizards, and menus used to access report authoring features. The report designer
tool becomes available when you choose a Report Server Project or a Report Server Wizard template in SQL
Server Data Tools (SSDT). To learn more, see Reporting Services in SQL Server Data Tools (SSDT).
Download SQL Server Data Tools.
To start Report Designer
1. Open SQL Ser ver Data Tools .
2. On the File menu, point to New , and then click Project .
3. In the Project Types list, click Business Intelligence Projects .
4. In the Templates list, click Repor t Ser ver Project . The following diagram shows how the project
templates appear in the dialog box:
5. Type a name and location for the project, or click Browse and select a location.
6. Click OK . SQL Server Data Tools (SSDT) opens with the Visual Studio start page. Solution Explorer
provides categories for creating reports and data sources. You can use these categories to create new
reports and data sources. Tabbed windows appear when you create a report definition. The tabbed
windows are Data, Layout, and Preview..
To get started on your first report, see Create a Basic Table Report (SSRS Tutorial). To learn more about query
designers you can use within Report Designer, see Query Design Tools (SSRS).

Report Builder
Report Builder in SQL Server is a stand-alone application you can use to create paginated reports outside SQL
Server. You can customize and update all existing reports, regardless of whether they were created in Report
Designer or in previous versions of Report Builder. Install it from the SQL Server web portal or from the
Microsoft Download Center.
When your paginated report is ready, publish it to a report server or save it to the Power BI service.
Download Report Builder from the Microsoft Download Center.
To start Report Builder
1. In the SQL Server web portal, on the New menu, select Paginated Repor t .

2. If Report Builder isn't installed on this computer yet, select Get Repor t Builder .
Or
Download Report Builder from the Microsoft Download Center.
3. Report Builder opens and you can create or open a paginated report.

SQL Server Mobile Report Publisher


Use SQL Server Mobile Report Publisher to create mobile reports you can view in the SQL Server web portal
and in mobile devices such as iPads and iPhones.
You can install it from the SQL Server web portal or from the Microsoft Download Center.
Download SQL Server Mobile Report Publisher from the Microsoft Download Center.
To start Mobile Report Publisher
1. In the SQL Server web portal, on the New menu, select Mobile Repor t .

2. If Mobile Report Publisher isn't installed on this computer yet, select Get Mobile Repor t Publisher .
Or
Download SQL Server Mobile Report Publisher from the Microsoft Download Center.
3. Mobile Report Publisher opens and you can create or open a mobile report.

Next steps
Download SQL Server Mobile Report Publisher
Download Report Builder
Download SQL Server Data Tools
Install Reporting Services SharePoint Mode
Reporting Services Report Server
Query Design Tools
Reporting Services Tutorials
More questions? Try asking the Reporting Services forum
Reporting Services Data Alerts
3/5/2021 • 19 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services (2016) ❌ SQL Server Reporting Services (2017) ✔

SharePoint ❌ Power BI Report Server
For content related to previous versions of SQL Server Reporting Services (SSRS), see SQL Server 2014
Reporting Services.
SQL Server Reporting Services data alerts are a data driven alerting solution that helps you be informed about
report data that is interesting or important to you, and at a relevant time. By using data alerts you no longer
have to seek out information, it comes to you.
Data alert messages are sent by email. Depending on the importance of the information, you can choose to
send messages more or less frequently and only when results change. You can specify multiple email recipients
and this way keep others informed to enhance efficiency and collaboration.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

Data Alerts Architecture and Workflow


The following summarizes the key areas of Reporting Services data alerts:
Define and save data aler t definitions -you run a report, create rules that identify interesting data
values, define a recurrence pattern for sending the data alert message, and specify the recipients of the
alert message.
Run data aler t definitions -Alerting service processes alert definitions at a scheduled time, retrieves
report data, creates data alert instances based on rules in the alert definition.
Deliver data aler t messages to recipients -Alerting service creates an alert instance and sends an
alert message to recipients by email.
In addition, as a data alert owner you can view information about your data alerts and delete and edit your data
alert definitions. An alert has only one owner, the person who created it.
Alerting administrators, users with SharePoint Manage Alerts permission, can manage data alerts at the site
level. They can view lists of alerts by each site user and delete alerts.
Reporting Services data alerts are different from SharePoint alerts. You can define SharePoint alerts on any
document type, including reports. SharePoint alerts are sent when the document changes. For example, you add
a column to a table in a report. In contrast, data alerts are sent when the data shown in a report satisfied rules in
the alert definitions. The rules typically reference the data that displays in a report.
By creating data alerts on reports, you can monitor changes in report data and send data alert messages by
email when report data follow rules that define data of interest to you and others, and at intervals that meet
your business needs. You can also run data alerts on demand. If you have SharePoint Create Alert permission,
you can create alerts on any report that you have permissions to view. You can create multiple alerts on a report
and multiple users can create the same or different alerts on a report. To collaborate with others, you can specify
them as the recipients of alert messages in data alert definitions that you create.
The following diagram shows the workflow of creating and saving a data alert definition, creating a SQL Agent
job to begin processing an instance of the data alert, and sending data alert messages that contain the report
data that triggered the alert to one or more recipients by email.

Reports Supported by Data Alerts


You can create data alerts on all types of professional reports that are written in the report definition language
(RDL) and created in Report Designer or Report Builder. Reports that include data regions such as tables and
charts, reports with subreports, and complex reports with multiple parallel column groups and nested data
regions. The only requirements are the report includes at least one data region of any type and the report data
source is configured to use stored credentials or no credentials. If the report has no data regions, you cannot
create an alert on it.
You cannot create data alerts on reports created with Power View.
When you install Reporting Services in native mode or SharePoint mode or use the standalone version of
Report Builder, you can save reports to a report server, your computer, or a SharePoint library. To create data
alerts on reports, the reports must be saved or uploaded to a SharePoint library. This means that you cannot
create alerts on reports saved to a report server in native mode or your computer. Also, you cannot create alerts
embedded in custom applications.
Reporting Services supports a variety of credential types in reports. You can create data alerts on reports with
data source configured to use stored credentials, or no credentials. You cannot create alerts on reports
configured to use integrated security credentials or prompt for credentials. The report is run as part of
processing the alert definition and the processing fails without credentials. For more information, see the
following:
Specify Credential and Connection Information for Report Data Sources
Roles and Permissions (Reporting Services)
Authentication with the Report Server
Run Reports
The first step in creating a data alert definition is to locate the report you want in the SharePoint library, and
then run the report. If a report contains no data when you run it, you cannot create an alert on the report at that
time.
If the report is parameterized, you specify the parameter values to use when you run the report. The parameter
values will be saved in the data alert definitions that you create on a report. The values are used when the report
is rerun as a step in processing the data alert definition. If you want to change the parameter values you need to
rerun the report with those parameter values and create an alert definition on that version of the report.
Create Data Alert Definitions
The Reporting Services data alerts feature includes the Data Alert Designer, which you use to create data alert
definitions.
To create a data alert definition, you run the report and then open Data Alert Designer from the SharePoint
Report Viewer Actions menu. The report data feeds for the report are generated and the first 100 rows in the
data feed display in a data preview table in Data Alert Designer. All the data feeds from a report are cached as
long you are working on the alert definition in Data Alert Designer. The caching enables you to switch quickly
between data feeds. When you reopen an alert definition in Data Alert Designer, the data feeds are refreshed.
Data alert definitions consist of rules and clauses that report data must satisfy to trigger a data alert message, a
schedule that defines the frequency to send the alert message and optionally the dates to start and stop sending
the alert message, information such the Subject line and a description to include in the alert message, and the
recipients of the message. After you create an alert definition, you save it to the SQL Server alerting database.
Save Data Alert Definitions and Alerting Metadata
When you install Reporting Services in SharePoint mode, the SQL Server alerting database is automatically
created.
Data alert definitions and alerting metadata are saved in the alerting database. By default, this database is
named ReportingServices<GUID>_Alerting.
When you save the data alert definition, alerting creates a SQL Server Agent job for the alert definition. The job
includes a job schedule. The schedule is based on the recurrence pattern you define on the alert definition.
Running the job initiates the processing of the data alert definition.
Process Data Alert Definitions
When the schedule of the SQL Server Agent job starts the processing of the alert definition, the report is run to
refresh the report data feeds. The alerting service reads the data feeds and applies the rules that the data alert
definitions specify to the data values. If one or more data values satisfy the rules, a data alert instance is created
and a data alert message with the alert results is sent to all recipients by email. The results are rows of report
data that satisfied all rules at the time the alert instance was created. To prevent multiple alert messages with the
same results, you can specify that messages are sent only when the results change. In this case, an alert instance
is created and saved to the alerting database, but no alert message is generated. If an error occurs, the alert
instance is also saved to the alerting database and an alert message with the details about the error is sent to
recipients. The Diagnostics and Logging section later in this topic has more information about logging and
troubleshooting.
Send Data Alert Messages
Data alert message are sent by email.
The From line contains a value provided by the Reporting Services email delivery configuration. The To line lists
the recipients that you specified when you created the alert in Data Alert Designer.
Besides the email Subject line, which you specify in Data Alert Designer, the data alert message includes the
following information:
The name of the person who created the data alert definition.
If you provided a description in the alert definition, it displays at the top of the email text.
The alert results, consisting of the rows in the report data feed that satisfy the rules specified in the alert
definition.
A link to the report that the alert definition is built upon.
The rules in the alert definition.
The parameters and values that you used to run the report.
The contextual values from report items that are outside of the report data regions.
If a data alert instance or data alert message cannot be created an error message is sent to all recipients. Instead
of the alert results, the message includes an error description.
For more information, see Data Alert Messages.

Install Data Alerts


The data alerts feature is available only when Reporting Services is installed in SharePoint mode. When you
install Reporting Services in SharePoint mode, setup automatically creates the alerting database that stores data
alert definitions and alerting metadata, and two SharePoint pages for managing alerts and adds Data Alert
Designer to the SharePoint site. There are no special steps to perform or options to set for alerting during
installation.
If you want to learn more about installing Reporting Services in SharePoint mode, including the Reporting
Services shared service that is new in SQL Server 2012 (11.x) and Reporting Services service application that
you must create and configure before you can use Reporting Services features, see Install Reporting Services
SharePoint Mode for SharePoint 2010 in MSDN library.
As the diagram earlier in the topic shows, data alerts use SQL Server Agent jobs. To create the jobs, SQL Server
Agent must be running. You might have configured SQL Server Agent to start automatically when you installed
Reporting Services. If not, you can start SQL Server Agent manually. For more information, see Configure SQL
Server Agent and Start, Stop, Pause, Resume, Restart the Database Engine, SQL Server Agent, or SQL Server
Browser Service.
You can use the Provision Subscriptions and Aler ts page in SharePoint Central Administration to find out
whether SQL Server Agent is running and create and download customized Transact-SQL scripts that you then
run to grant permissions to SQL Server Agent. If can also generate the Transact-SQL scripts by using PowerShell.
For more information, see Provision Subscriptions and Alerts for SSRS Service Applications.

Configure Data Alerts


Starting in SQL Server 2012 (11.x) the settings for Reporting Services features, including data alerts, are
distributed between the report server configuration file (rsreportserver.config) and a SharePoint configuration
database whenever you install Reporting Services in SharePoint mode. When you create the service application
as a step in installing and configuring Reporting Services, the SharePoint configuration database is
automatically created. For more information, see RsReportServer.config Configuration File and Reporting
Services Configuration Files.
The settings for Reporting Services data alerts include the intervals for cleaning up alerting data and metadata
and the number of retries when sending data alert messages by email. You can update the configuration file and
the configuration database to use different values for data alert settings.
You update the report server configuration file directly. You update the SharePoint configuration database by
using Windows PowerShell cmdlets.
The following table lists the configuration elements for data alerts, their default values, descriptions, and
locations.

SET T IN G DEFA ULT VA L UE DESC RIP T IO N LO C AT IO N

AlertingCleanupCycleMinut 20 Number of minutes Report Server Configuration


es between starts of the File
cleanup cycle.

AlertingExecutionLogCleanu 10080 Number of minutes to keep Report Server Configuration


pMinutes execution log entries. File

AlertingDataCleanupMinute 360 Number of minutes to keep Report Server Configuration


s temporary data. File

AlertingMaxDataRetentionD 180 The number of days until Report Server Configuration


ays alert execution metadata, File
alert instances, and
execution results is deleted.

MaxRetries 3 Number of times to retry Service Configuration


processing of data alerts. Database

SecondsBeforeRetry 900 Number of seconds to wait Service Configuration


before each retry. Database

By default, the MaxRetries and SecondsBeforeRetry settings apply to all events that data alerts fire. If you want
more granular control of retries and retry delays, you can add elements for any and all event handlers that
specify different MaxRetries and SecondsBeforeRetry values.
Event Handlers and Retry
The event handlers are:

EVEN T H A N DL ER DESC RIP T IO N

FireAlert You click Run in Data Alert Manager to initiate immediate


processing of an alert definition.

FireSchedule SQL Server Agent launches the job schedule for an alert
definition.

CreateSchedule You create a data alert definition and a SQL Server Agent job
schedule is created based on the frequency interval specified
in the alert definition.

UpdateSchedule You update the frequency interval of the data alert definition
and the SQL Server Agent job schedule is updated.
EVEN T H A N DL ER DESC RIP T IO N

DeleteSchedule You delete the data alert definition and its SQL Server Agent
job is deleted.

GenerateAlert The alerting runtime processes the report data feed, applies
the rules specified in the data alert definition, determines
whether to create an instance of the data alert, and if
needed creates an instance of the data alert.

DeliverAlert The runtime creates the data alert message and sends it to
all recipients by email.

The following table summarizes the event handlers and when retry will fire:

ERRO R
C AT EGO RY
/ EVEN T F IRESC H ED C REAT ESC UP DAT ESC DEL ET ESC H GEN ERAT E DEL IVERA L
TYPE F IREA L ERT UL E H EDUL E H EDUL E EDUL E A L ERT ERT

Out of X X X X X X X
memory

Thread X X X X X X X
abort

SQL Agent X X X X
is not
running

Transient. X X X X X X X
Mostly due
to
connection
s problems,
timeouts,
and locks.

IOExceptio X
n

WebExcepti X
on

SocketExce X
ption

SMTPExcep X
tion (*)

(*) SMTP errors that will trigger a retry:


SmtpStatusCode.ServiceNotAvailable
SmtpStatusCode.MailboxBusy
SmtpStatusCode.MailboxUnavailable
Disable Data Alerts
If you want to disable the data alert feature, you update the Service section of the configuration file. The
following code shows Service section of the configuration file.
<Service>

<IsSchedulingService>True</IsSchedulingService>

<IsNotificationService>True</IsNotificationService>

<IsEventService>True</IsEventService>

<IsAlertingService>True</IsAlertingService>

...

</Service>

To disable alerting, change True to False in <IsAlertingService>True</IsAlertingService> .

Permissions for Data Alerts


Before you can create data alerts on reports, you must have permission to run the report and create alerts on
the SharePoint site. To learn more about report permissions, see the following.
Generating Data Feeds from Reports (Report Builder and SSRS)
Set Permissions for Report Server Items on a SharePoint Site (Reporting Services in SharePoint
Integrated Mode)
Reporting Services data alerts support two permission levels: information worker and alerting administrator.
The following table lists the related SharePoint permissions and user tasks.

USER T Y P E SH A REP O IN T P ERM ISSIO N TA SK DESC RIP T IO N

Information worker View Items View items such as reports and create
data alerts on the reports. Edit and
Create Alerts delete alerts.

Alerting administrator Manage Alerts View a list of all data alerts saved on
the SharePoint site and delete alerts.

Diagnostics and Logging


Data alerts provides a number of ways to help information workers and administrators keep track of alerts and
understand why alerts failed and help administrators make use of logs to learn which alert messages were sent
to whom, number of alert instances sent, and so forth.
Data Alert Manager
Data Alert Manager lists alert definitions and error information that help information workers and alerting
administrators understand why the failure occurred. Some common reasons for failure include:
The report data feed changed and columns that are used in the data alert definition rules are no longer
included in the data feed.
Permission to view the report was revoked.
The data type in the underlying data source changed and the alert definition is no longer valid.
Logs
Reporting Services provides a number of logs that can help you learn more the reports that are run when
processing data alert definitions, the data alert instances that are created and so forth. Three logs are
particularly useful: the alerting execution log, the report server execution log, and the report server trace log.
For information about other Reporting Services logs, see Reporting Services Log Files and Sources.
Alerting Execution Log
The alerting runtime service writes entries in the ExecutionLogView table in the alerting database. You can query
the table or run the following stored procedures to get richer diagnostic information about the data alerts saved
to the alerting database.
ReadAlertData
ReadAlertHistory
ReadAlertInstances
ReadEventHistory
ReadFeedPollHistory
ReadFeedPools
ReadPollData
ReadSentAlerts
You can use SQL Agent to run the stored procedure on a schedule. For more information, see SQL Server Agent.
Report Server Execution Log
Reports are run to generate the data feeds that data alert definitions are built upon. The report server execution
log in the report server database captures information each time the report is run. You can query the
ExecutionLog2 view in the database for detailed information. For more information, see Report Server
ExecutionLog and the ExecutionLog3 View.
Report Server Trace Log
The report server trace log contains highly detailed information for report server service operations, including
operations performed by the report server Web service and background processing. Trace log information
might be useful if you are debugging an application that includes a report server, or investigating a specific
problem that was written to the event log or execution log. For more information, see Report Server Service
Trace Log.

Performance Counters
Data alerts provide their own performance counters. All but one performance counter is related to an event that
is part of the alerting runtime service. The performance counter related to the event queue tells the length of the
queue of all active events.

EVEN T O R EVEN T Q UEUE P ERF O RM A N C E C O UN T ER

ALERTINGQUEUESIZE Alerting: event queue length

FireAlert Alerting: events processed - FireAlert

FireSchedule Alerting: events processed - FireSchedule

CreateSchedule Alerting: events processed - CreateSchedule


EVEN T O R EVEN T Q UEUE P ERF O RM A N C E C O UN T ER

UpdateSchedule Alerting: events processed - UpdateSchedule

DeleteSchedule Alerting: events processed - DeleteSchedule

GenerateAlert Alerting: events processed - GenerateAlert

DeliverAlert Alerting: events processed - DeliverAlert

Reporting Services provides performance counters for other Reporting Services features. For more information,
see Performance Counters for the ReportServer:Service and ReportServerSharePoint:Service Performance
Objects, Performance Counters for the MSRS 2011 Web Service and MSRS 2011 Windows Service Performance
Objects (Native Mode), and Performance Counters for the MSRS 2011 Web Service SharePoint Mode and MSRS
2011 Windows Service SharePoint Mode Performance Objects (SharePoint Mode).

Support for TLS


Reporting Services can use the HTTP SSL service to establish encrypted connections to a report server or
SharePoint site. Transport Layer Security (TLS) was previously known as Secure Sockets Layer (SSL).
The alerting runtime service and data alerts user interface support TLS and works similarly whether you use TLS
or HTTP; however, there are some subtle differences. When the data alert definition is created using and TLS
connection, the URL that links back to the SharePoint library from the data alert message also uses TLS. You can
identify the TLS connection because it uses HTTPS instead of HTTP in its URL. Likewise, if the data alert definition
was created using an HTTP connection, the link back to the SharePoint site uses HTTP. Whether the alert
definition was created using TLS or HTTP, the experience for users and alerting administrators are identical when
using Data Alert Designer or Data Alert Manager. If the protocol (HTTP or TLS) should change between the time
that the alert definition was created and then updated and resaved, the original protocol is kept and used in link
URLs.
If you create a data alert on a SharePoint site that is configured to use TLS and then remove the TLS requirement
the alert continues to work on the site. If the site is deleted, the default zone site is used instead.

Data Alert User Interface


Data alerts provide SharePoint pages for managing alerts and a designer for creating and editing data alert
definitions.
Data Aler t Designer in which you create or edit data alert definitions. For more information, see Data
Alert Designer, Create a Data Alert in Data Alert Designer and Edit a Data Alert in Alert Designer.
Data Aler t Manager in which you view lists of data alerts, delete alerts, and open alerts for editing.
Data Alert Manager comes in two versions: one for users to manage the alerts they created, and one for
administrators to manage alerts that belong to site users.
For more information about managing data alerts that you created, see Data Alert Manager for
SharePoint Users and Manage My Data Alerts in Data Alert Manager.
For more information about managing all data alerts on a site, see Data Alert Manager for Alerting
Administrators and Manage All Data Alerts on a SharePoint Site in Data Alert Manager.
Provision Subscriptions and Data Aler ts in which you find out whether Reporting Services can use
SQL Server Agent for data alerts and download scripts that allow access to SQL Server Agent. For more
information, see Provision Subscriptions and Alerts for SSRS Service Applications.
Globalization of Data Alerts
Certain script such as Arabic and Hebrew are written right to left. Data alerts support right-to-left scripts as well
as left-to-right scripts. Data alerts detect culture and alter the appearance and behavior of the user interface and
the layout of data alert messages accordingly. The culture is derived from the regional setting of the operating
system on the user's computer. The culture is saved each time you update and then resave the data alert
definition.
Whether data satisfies the rules in the alert definition can be affected by the culture in the alert definition. String
comparisons are most commonly affected by culture specific rules.
Determining whether report data satisfies the rules in the alert definition can be affected by the culture in the
alert definition. This most commonly occurs in of strings. For example, in an alert definition with the German
culture, a rule that compares the English letter "o" and the German letter "ö" would not be satisfied. In the same
alert definition using the English culture the rule would be satisfied.
Data formatting is also based the culture of the alert definition. For example, if the culture uses a period as the
decimal symbol, then the value displays as 45.67; whereas a culture that uses a comma as the decimal symbol,
displays 45,67.
Depending on which data alert user interface you use, the support for right-to-left varies. Data Alert Designer
supports right-to-left script in text boxes, but the layout of the designer is not right to left. Its layout is left to
right like other tools. If an alert definition, created with right-to-left text orientation, and then edited in a left-to-
right environment, the right-to-left text orientation is preserved when you save the alert definition. Data Alert
Manager behaves the same as a SharePoint page. Its layout is right-to left, just like other SharePoint pages. Data
alert messages that are based on right-to-left data alert definitions, display message text right to left and the
message layout is left to right.

Related Tasks
Save a Report to a SharePoint Library (Report Builder)
Create a Data Alert in Data Alert Designer
Edit a Data Alert in Alert Designer
Manage My Data Alerts in Data Alert Manager
Manage All Data Alerts on a SharePoint Site in Data Alert Manager
Grant Permissions to Users and Alerting Administrators

See Also
Data Alert Designer
Data Alert Manager for Alerting Administrators
Data Alert Manager for SharePoint Users
More questions? Try asking the Reporting Services forum
Data Alert Designer
3/5/2021 • 12 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services (2016) ❌ SQL Server Reporting Services (2017) ✔

SharePoint ❌ Power BI Report Server
For content related to previous versions of SQL Server Reporting Services (SSRS), see SQL Server 2014
Reporting Services.
You create and edit data alert definitions in Data Alert Designer. An alert definition is a collection of metadata,
including the report data that you are interested in, the rules that report data must satisfy to create data alert
instances and send data alert messages, the recipients of the alert message, and so forth.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

To create an alert definition you do a number of related tasks:


Select the report and the report data feed that includes data that you want to use.
Define the rules and clauses that cause an alert to be sent. The rules can be simple or complex, using
multiple clauses combined by AND operators.
Define the frequency that the alert message is sent and the date and time the alert starts and stops. Alert
messages can be sent only when results change.
Specify the email addresses of alert message recipients.
Customize the Subject line of the alert message.
Provide a description of alert to include in alert message.

NOTE
Because the Reporting Services data alerts feature is available only when you install Reporting Services in SharePoint
mode, the report on which you want to create an alert must be saved, deployed, or uploaded to a SharePoint document
library.
Data alerts cannot be created on reports that use Windows Integrated authentication or prompts for credentials. The
reports must use stored credentials. For more information, see Specify Credential and Connection Information for Report
Data Sources.

To open Data Alert Designer, you click the New Data Aler t option on the Actions menu on the report toolbar.
If you do not see the New Data Aler t option, the report is not configured to use stored credentials. You can
update the credential type by updating the report data source from the SharePoint library.

Data Alert Designer User Interface


The Data Alert Designer is divided into areas. The area where you select the report data feed, the area where you
create simple or complex conditions by adding rules to conditions, and so on. The following picture shows the
areas in Data Alert Designer.
Alert Data
When you open Data Alert Designer, it generates and makes available all the data feeds from the report and the
Repor t data name drop-down list contains the names of the feeds. The data feeds are cached in memory
while you are creating the alert definition and the table that display the data feed data is populated quickly when
you switch between data feeds to explore the report data.
The first step in creating a data alert definition is to select the report data feed that contains the data that you
want the alert to monitor. Reports can have zero or multiple data feeds. If a report has no data feeds, you cannot
create alerts on it. A data feed can be generated by any data region, including all types of charts, gauges,
indicators as well as tables, matrices, and lists.
If the report is parameterized and you do not see the data and columns that you expect in the report data feed,
rerun the report using the appropriate parameter values. The columns and values must be present in the report
to be included in the data feed.
Depending on the layout of the report, it might not be intuitive how many data feeds a report has, nor what data
is included in which data feed. The Reporting ServicesAtom rendering extension generates the data feeds that
you use with alerts. The Atom rendering extension provides report data as flattened rowsets, a tabular format in
which all columns have the same number of rows. These rowsets are the contents of the data feeds. Because
report layout is often complex and contains multiple peer or nested data regions, multiple data feeds are needed
to make available all the report data.. For more information about how data feeds are generated from reports,
see Generating Data Feeds from Reports (Report Builder and SSRS) and see Generate Data Feeds from a Report
(Report Builder and SSRS).
When you choose a data feed, the data from the feed displays in a table with rows and columns in the alert data
pane of Data Alert Designer. The metadata from the data source that the report uses or the report itself specifies
the column names and the data feed populates the field list that you use to define rules in the data condition.
The data feed also provides metadata such as the data types of table columns that restrict the values and
comparison operators that you can use with fields when you create the rules.
Some reports have millions of rows of data. The table shows only the first 100 rows of data in the feed.
Alert Name
By default, the alert definition has the same name as the report. You can change the alert name to be more
meaningful. This makes it easier for you to manage your alerts, determining which alerts to update, delete and
so on.
You can create multiple alerts on a report. It is possible to have multiple alert definitions with the same name,
but it is recommended that you make alert names unique. It makes it easier to differentiate and manage alert
definitions. You can view a list of all the alerts you created in Data Alert Manager. For more information, see Data
Alert Manager for Alerting Administrators and Manage My Data Alerts in Data Alert Manager.
Rules and Clauses
The scope of data changes and the in the alert rules define the data changes that trigger the alert. The scope of
the data changes are as follow:
Any data has -at least one value in the data satisfies the rules that the condition specifies.
No data has -no value in the data satisfied the rules that the condition specifies.
A rule contains zero, one, or many clauses. Multiple rules are combined by the AND logical operator. A rule can
include multiple clause combined by the OR operator if the column has the string data type. The following
shows basic rules that use only one clause, multiple rules combined by using the AND operator, multiple rules
that with one or more OR clauses.
Simple rules
Net sales is greater than 100000
Sales date is after 6/1/2010
Company Name is not Contoso
Rules combined by AND operator
Sales is greater than 1500.00
and Units Sold is less than 500
Return date is before 1/1/2010
Sales is greater than or equal to 1500.00
and Return date is after 1/1/2010
and Units Sold is greater than 500
Promotion name contains Spring
and Units Sold is greater than 500
and Returns is 0
Rules with OR clauses
Last Name is Blythe
Or Petulescu
Or Martin
Return date is after 1/1/2010
and Sales Territory is Central
Or South
Or North
Depending on the data type of the field, Data Alert Designer provides different comparisons. Data Alert
Designer provides comparisons that are tailored to the data type of the field to which values are compared. The
following lists comparisons available for different data types. The Boolean data type is not supported in rules.
Date time data type comparisons are: is , is not , is before , and is after
Numeric data type comparisons are: is , is not , is less than , is less than or equal to , and is greater
than , and is greater than or equal to
String data type comparisons are: is , is not , and contains
When you create a rule, you specify whether to use to use a value or field in the comparison by choosing Value
Entr y Mode or Field Selection Mode . If you choose Value Entr y Mode , you provide a list of values to
compare to. A comparison that includes multiple OR clauses is very similar to the IN logical comparison in
Transact-SQL, which is a list of values to test for a match. For more information, see IN (Transact-SQL).
If you choose Field Selection Mode , the comparison is between two fields, row by row. The two fields must
have compatible data types (for example, two numeric fields) or the comparison is not valid. A list of fields
displays automatically when you choose Field Selection Mode .
Data alerts without rules are also valid. This type of alert can be very useful. Imagine a scenario in which you
want only to be notified when the report data feed has data. The data feed contains attendee information and
the feed is empty until an attendee cancels. In this scenario, you would receive an alert, starting with the first
cancellation.
You can delete individual rules and clauses.
Rules and clauses are included in the data alert message.
Schedule Settings
The schedule that you define for the data alert defines the recurrence pattern for sending the data alert message
and when to start and stop sending the alert messages. The patterns are: once, minute, daily, and weekly.
Although an alert has only one schedule you can create complex recurrence patterns that meet most business
needs by using these intervals. The following are examples of common recurrence patterns to use in schedules:
Daily ever y 10 day(s) - sends alerts once a day, every 10 days.
Weekly ever y 2 week(s) on Monday - sends alerts every two weeks on Mondays only.
Hourly ever y 12 hour(s) - sends alerts every 12 hours.
Minute ever y 30 minute(s) - sends alerts every 30 minutes.
The recurrence pattern specifies when the alert is sent. If the rules are met during the interval that the pattern
specifies, the alert is not sent until the end of the interval.
If you want to receive a data alert message as soon as possible when report data follow the specified rules, you
can schedule the alert to run often. When the report data does not change, you and other recipients might
receive many redundant messages. If you want to receive messages only, when the results from applying the
rules change, select the Send message only if results change option.
IMPORTANT
It is recommended that you do not use a recurrence pattern that is more frequent than daily unless you have an
important business reason to do so. Processing data alert definition in real time is not a supported scenario. Processing
data alert definitions too frequently impacts the performance of the report server and the overall Reporting Services
deployment.

Email Settings
You specify the email addresses of recipients to receive data alert messages by email in the Recipient(s) option.
Multiple email addresses are separated by semicolons, the same way that you do in Microsoft Office Outlook
email messages. You can also specify distribution groups as recipients, which makes it easier and more efficient
to manage the recipient list. If SharePoint can determine your email address when you are creating an alert
definition, your email address is automatically added to the recipients list; otherwise, you need to explicitly add
yourself as a recipient.
The default subject of the email is Data aler t for <aler t name> . You can change the subject to fit your needs.
You can also provide a description to include in the data alert message in the Description option. Including a
description, especially if you have data alerts that are similar, will help you quickly differentiate and understand
your alert messages. In addition to the alert message that is sent when report data satisfied the specified rules,
an alert message is sent to all recipients when an error occurs. For more information, see Data Alert Messages.
For more information about how the email is generated, see Reporting Services Data Alerts.

Create a Data Alert Definition


If you are granted the SharePoint View Items and Create Alerts permissions you can create a data alert
definition for any report that you have permission to view as long as the report uses stored credentials or no
credentials. You run the report from a SharePoint library. The data that is available for you to use in Data Alert
Designer comes from the report. If the report is parameterized, you might need to run the report using different
parameter values to ensure the data that you are interested in appears in the report. After the report is open,
you click the New Data Aler t option on the Actions menu on the report toolbar to open Data Alert Designer.
The following picture shows you how to open Data Alert Designer.

For more information, see Create a Data Alert in Data Alert Designer.

Save a Data Alert Definition


Data Alert Designer displays the URL of the site where the data alert definition will be saved. Data alert
definitions are always saved to the same site as the reports.

NOTE
The parameter values you chose to run the report are saved in the alert definition and will be used when report is rerun
as a step in processing the alert definition. To use different parameter values, you must create a new alert definition.
Before the alert definition is saved, it is validated. You must correct any errors before the alert definition can be
saved successfully. For more information, see Create a Data Alert in Data Alert Designer.

Edit a Data Alert Definition


After you save your data alert definition, you can reopen and then edit it in Data Alert Designer. You can add,
change, or delete rules and clauses and change the schedule and email settings. If the report data feed that the
alert uses has changed and no longer provides the fields that the alert rules reference or the data types or other
metadata of the fields have changed, the alert definition is no longer valid, and you must correct it before you
can resave it. If you want to use a different data feed, you must create a new alert definition.
To edit a data alert definition, you right click it in Data Alert Manager and click Edit . The following picture shows
you the context menu on a data alert in Data Alert Manager.

For more information, see Edit a Data Alert in Alert Designer.

Related Tasks
This section lists procedures that show you how to create and edit alerts.
Edit a Data Alert in Alert Designer
Create a Data Alert in Data Alert Designer

See Also
Reporting Services Data Alerts
Data Alert Manager for Alerting Administrators
More questions? Try asking the Reporting Services forum
Data Alert Manager for SharePoint Users
3/5/2021 • 4 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services (2016) ❌ SQL Server Reporting Services (2017) ✔

SharePoint ❌ Power BI Report Server
For content related to previous versions of SQL Server Reporting Services (SSRS), see SQL Server 2014
Reporting Services.
Reporting Services provides Data Alert Manager for SharePoint information workers to manage the data alerts.
They can view information about the alerts they created, delete alerts, open alert definitions for editing, and run
alerts on demand. They can choose to view alerts for a single report only or alerts for all reports. The following
picture shows the features available to information workers in Data Alert Manager.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

When a SharePoint site is enabled for data alerts, two SharePoint pages, MyDataAlerts.aspx and
SiteDataAlerts.aspx are created and added to the SharePoint site. MyDataAlerts.aspx is Data Alert Manager for
SharePoint information workers. Information workers open Data Alert Manager from the right-click menu of
reports on which they created alerts.
You can also open Data Alert Manager directly by using a URL. The following shows the syntax of the URL:
https://<site name>/_layouts/ReportServer/MyDataAlerts.aspx

NOTE
Before you can use the Reporting Services alerting features, an administrator must grant you permissions. For
information about the required permissions, see Reporting Services Data Alerts.

View Data Alert Information


You can view a list of data alerts that you created in Data Alert Designer. To open Data Alert Manager, you right-
click a report published to a SharePoint library. The following picture shows the Manage Data Aler ts option
on the report right-click menu.
Data Alert Manager includes a table that lists the alert name, report name, your name as the creator of the alert
definition, the number the alert message was sent, the last time the alert was run, the last time the alert
definition was modified, and the status of the latest alert message. If the alert message cannot be generated or
sent, the status column contains information about the error and helps you troubleshoot the alert. For more
information, see Manage My Data Alerts in Data Alert Manager.
The following table shows sample data from a table in Data Alert Manager. When an error occurs, the error
message and the identifier of the entry in the log (a GUID) are included in the Status field in the table.

REP O RT L A ST
A L ERT N A M E NAME C REAT ED B Y SEN T A L ERT S L A ST RUN M O DIF IED STAT US

SalesQTR SalesByTerrito Lauren 4 6/12/2011 6/1/2011 Last alert ran


ryAndQTR Johnson successfully
and alert was
sent.

UnitsSold ProductsSales Lauren 2 7/1/2011 6/28/2011 Last alert ran


ByQTR Johnson successfully,
but the data
was
unchanged
and no alert
was sent.

TopPromotion PromotionTra Lauren 0 5/23/2011 Alert created.


cking Johnson

Delete Data Alerts


You delete alerts definitions from Data Alert Manager. As information worker you can delete the alert definitions
that you created. You cannot delete alert definitions created by others. For more information, see Manage My
Data Alerts in Data Alert Manager.
When you delete an alert definition, it is deleted permanently. If you want only to pause alert messages, you
should change the recurrence pattern or the start or stop date in the alert definition. For more information, see
Edit a Data Alert in Alert Designer.
Edit Data Alerts
As an information worker, you open your alert definitions for edit from Data Alert Manger. You can edit the alert
definitions that you created, but not those created by others. When you right-click the alert definition and click
Edit the Data Alert Designer opens, displaying the alert definition. For more information see, Data Alert
Designer and Edit a Data Alert in Alert Designer.

Run Data Alerts


Data Alert Manager includes information about the last time the alerting service processed the data alert
definition and the number of times the data alert message has been sent. You might want to run and send the
alert message immediately, instead of waiting for the time the schedule specifies. When you run an alert from
Data Alert Manager, the alert schedule is overwritten and processing of the alert definition starts within one to
five minutes, depending on the time needed to run the report and how busy the report server is at the time that
you chose to run the alert. However, if you specified a message be sent only if results change and the results did
not change, then no message is created or sent. For more information, see Manage My Data Alerts in Data Alert
Manager.

NOTE
After you click the Run option, it takes a few seconds to update the value of the Status column to indicate the alert is
processing. If you click the Run option multiple times, the alert will be processed multiple times. This consumes resources
on the report server unnecessarily and might impact performance of the report server. To see updated information about
the alert, click the Web browser refresh button to check for status updates as well as other information about the alert.

Related Tasks
This section lists procedures that show you how to manage your alerts and edit your alert definitions.
Manage My Data Alerts in Data Alert Manager
Edit a Data Alert in Alert Designer

See Also
Data Alert Designer
Create a Data Alert in Data Alert Designer
Reporting Services Data Alerts
More questions? Try asking the Reporting Services forum
Data Alert Manager for Alerting Administrators
3/5/2021 • 3 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services (2016) ❌ SQL Server Reporting Services (2017) ✔

SharePoint ❌ Power BI Report Server
For content related to previous versions of SQL Server Reporting Services (SSRS), see SQL Server 2014
Reporting Services.
SQL Server Reporting Services provides Data Alert Manager for SharePoint alerting administrators to manage
data alerts. Alerting administrators can view information about all alerts saved to the site and delete alerts. The
following picture shows the features available to SharePoint alerting managers in Data Alert Manager.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

When the site is enabled for data alerts, two SharePoint pages, MyDataAlerts.aspx and SiteDataAlerts.aspx are
created and added to the SharePoint site. SiteDataAlerts.aspx is Data Alert Manager for alerting administrators.
Alerting administrators can open Data Alert Manager from the Site Settings SharePoint page. Alerting
administrators must have SharePoint Manage Alerts permission to open Data Alert Manager.
You can also open Data Alert Manager directly by using a URL. The following shows the syntax of the URL:
http: //<site name>/_layouts/ReportServer/ SiteDataAlerts.aspx

NOTE
As an alerting administrator, you can grant permission to information workers to access the Reporting Services data alerts
features. For more information about the required permissions, see Reporting Services Data Alerts.

Viewing Data Alert Information


When Reporting Services is installed and configured in SharePoint, the Site Settings SharePoint page includes
the Repor ting Ser vices options. Alerting administrators click the Manage Data Aler ts option within
Reporting Service to open Data Alert Manager. The following picture shows from where on the Site Settings
page you open Data Alert Manager.
Data Alert Manager includes a table that lists the alert name, report name, the name of the alert owner, the
number the alert message was sent, the last time the alert was run, the last time the alert definition was
modified, and the status of the alert message. If the alert cannot be generated or generated or sent, the status
column contains information about the error and helps you troubleshoot the alert. For more information, see
Manage All Data Alerts on a SharePoint Site in Data Alert Manager.
The following table shows sample data from a table in Data Alert Manager. When an error occurs, the error
message and the identifier of the entry in the log (a GUID) are included in the Status field in the table.

REP O RT L A ST
A L ERT N A M E NAME C REAT ED B Y SEN T A L ERT S L A ST RUN M O DIF IED STAT US

SalesQTR SalesByTerrito Lauren 4 6/12/2011 6/1/2011 Last alert ran


ryAndQTR Johnson successfully
and alert was
sent.

UnitsSold ProductsSales Michael 2 7/1/2011 6/28/2011 Last alert ran


ByQTR Blythe successfully,
but the data
was
unchanged
and no alert
was sent.

InventoryCou StockStatusBy Lauren 7 7/10/2011 7/2/2011 <error


nt QTR Johnson message>The
log file
contains
detailed
information
about the
error. Refer to
the log entry
with the
identifier:
<GUID>.

TopPromotion PromotionTra Cristian 0 5/23/2011 Alert created.


cking Petculescu

For more information see, Manage All Data Alerts on a SharePoint Site in Data Alert Manager.
You can view all alerts created by site users. You choose a user and then choose whether to view all their alerts
or only alerts for a specific report.

Delete Data Alerts


You delete alerts definitions from Data Alert Manager. Every data alert definition has an owner, the SharePoint
user who created it. Owners can delete only the alert definitions that they created. For more information, see
Manage My Data Alerts in Data Alert Manager.
A SharePoint alerting administrators can list and then delete alert definitions created by all users of the site. For
more information, see Manage All Data Alerts on a SharePoint Site in Data Alert Manager
After you delete the alert definition, no further alerts are sent. However, if you query the alerting database you
might find that the alert definition still exists. The alerting service performs clean up on a schedule and the alert
definition is deleted permanently in the next cleanup. The default cleanup interval is 20 minutes. This and other
cleanup intervals are configurable. For more information, see Reporting Services Data Alerts.

Related Tasks
This section lists a procedure that shows you how to manage your alerts.
Manage All Data Alerts on a SharePoint Site in Data Alert Manager

See Also
Reporting Services Data Alerts
More questions? Try asking the Reporting Services forum
Data Alert Messages
3/5/2021 • 2 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services (2016) ❌ SQL Server Reporting Services (2017) ✔

SharePoint ❌ Power BI Report Server
For content related to previous versions of SQL Server Reporting Services (SSRS), see SQL Server 2014
Reporting Services.
SQL Server Reporting Services data alerts deliver two types of data alert messages by email: Messages with
data alert results and messages with error descriptions. Messages with results keep all recipients informed
about changes in report data that is of common interest and important to business decisions. If for some reason
an error occurs and the results are not available, the error message is sent instead.
The owner of the data alert definition also can view information about the data alert instance in Data Alert
Manager. For more information, see Data Alert Manager for SharePoint Users.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

Data Alert Messages


The following pictures show a data alert message with results and an alert message with an error description.
Results message

Error message
The messages include the same types of information.
1. On behalf of contains the name of the person who created the data alert definition.
2. If you provided a description in the alert definition, it displays below On behalf of .
3. Aler t Results display the rows in the report data feed that satisfy the rules specified in the alert
definition in a tabular format or display an error description. There is no limit on the number of rows that
displays.
4. Go to repor t is a link to the report that the alert definition is built upon. If the link is not valid because
the report was moved or deleted, an error message displays.
5. Rule(s) lists the rules and clauses in the alert definition. This information helps you verify and
understand the alert results and identify rules in the data alert definition that you might want to change
to narrow or broaden results.
6. Repor t parameters list the parameters and parameter values that were used when the report was run.
Parameters and parameter values help you understand the alert results.
7. Contextual values list the names and values of report items that are outside of the report data regions.
The items are typically text boxes. For example, a text box with a constant value such as the subject or
description of a report.
The only difference between the two message types is item 5, Aler t Results . If an error occurs when a data
alert instance or data alert message is created, Aler t Results displays an error message that describes the
problem. The error message, sent to all recipients, let them know that the alert results that they are expecting
and might rely on to make business decisions are not available.

Related Tasks
This section lists procedures that show you how to create and edit the data alert definitions that provide much
of the information that you see in data alert messages.
Create a Data Alert in Data Alert Designer
Edit a Data Alert in Alert Designer

See Also
Data Alert Designer
Reporting Services Data Alerts
More questions? Try asking the Reporting Services forum
Create a Data Alert in Data Alert Designer
3/5/2021 • 4 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services (2016) ❌ Power BI Report Server ✔
️ SharePoint
You create data alert definitions in Data Alert Designer. After you save the alert definitions, you can reopen, edit,
and then resave them in Data Alert Designer. For information about editing alert definitions, see Manage My
Data Alerts in Data Alert Manager and Edit a Data Alert in Alert Designer.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

Create a data alert definition


1. Locate the SharePoint library that contains the report that you want to create a data alert definition for.
2. Click the report.
The report runs. If the report is parameterized, verify that the report shows the data that you want to
receive alert messages about. If you do not see the columns or values you are interested in, you might
want to rerun the report, using different parameter values.

NOTE
The parameter values you chose to run the report are saved in the alert definition and will be used when report is
rerun as a step in processing the alert definition. To use different parameter values, you must create a new alert
definition.

3. On the Actions menu, click New Data Aler t .


The following picture shows the Actions menu.

The Data Alert Designer opens, showing the first 100 rows of the first data feed that the report generates
in a table.
NOTE
If you do not see the New Data Aler t option, the alerting service is not configured on the SharePoint site or the
SQL Server edition does not include data alerts. For more information, see Reporting Services SharePoint Service
and Service Applications.
If the New Data Aler t option is grayed, the report data source is configured to use integrated security
credentials or prompt for credentials. To make the New Data Aler t option available, you must update the data
source to use stored credentials or no credentials.

The name of the data feed appears in Repor t data name drop-down list.
4. Optionally, select a different data feed in the Repor t data name drop-down list.
If no data feed is generated from the report, you cannot create an alert definition for the report. The
layout of the report determines the content of each data feed. For more information see, Generating Data
Feeds from Reports (Report Builder and SSRS).
5. Optionally, in the Aler t name text box, update the default name to be more meaningful.
The default name of the alert definition is the name of the report. Alert definition names do not have to
be unique, which can make it difficult to tell them apart when you later view the list of your alerts in Data
Alert Manager. It is recommended that you use meaningful and unique names for your alert definitions.
6. Optionally, change the default data option from any data in the data feed has to no data in the data
feed has .
7. Click Add rule .
A list of the columns in the data feed appears.
8. In the list, select the column that you want to use in the rule, and then select a comparison operator and
enter the threshold value.
Depending on the data type of the selected column, different comparison operators are listed. If the
column has a date data type, a calendar icon displays next to threshold value for the rule. You can enter a
data by clicking a date in the calendar or typing the date.
Data Alert Designer provides two comparison modes: Value Entr y Mode and Field Selection Mode .
The default mode is Value Entr y Mode . You can add OR clauses only when you are in Value Entr y
Mode and are using the is comparison.
9. To add an OR clause, click the down-arrow, and then click Value Entr y Mode .
10. Type the comparison value.
11. Optionally, click the ellipsis (...) again.
The ellipsis (...) appears on the line that contains the first clause.
An OR clause is added below and within the AND rule.
12. Optionally, click the down-arrow, select Field Selection Mode , and then select a column in the list.
You will notice that the ellipsis (...) that you click to add OR clauses has disappeared.
13. Optionally, click Add rule again to add additional rules.
The rules are combined by using the AND logical operator.
14. Select an option in the recurrence list. Depending on the type of recurrence, enter an interval.
15. Optionally, click Advanced .
16. Optionally, change the date that the alert message starts on by typing a different date or opening the
calendar, and then clicking a date in the calendar.
The default start date is the current date.
17. Optionally, select the checkbox located next to Stop aler t on , and then choose a date to stop the alert
message.
By default, an alert message has no stop date.

NOTE
Stopping an alert message does not delete the alert definition. After you stop an alert message, you can restart it
by updating the start and stop dates. For information about deleting alert definitions, see Manage My Data Alerts
in Data Alert Manager.

18. Optionally, clear the Send message only if results change checkbox.
If you send alert messages frequently, redundant information might not be welcome and you should not
clear this checkbox.
19. Enter the email addresses of alert message recipients. Separate addresses with semicolons.
If the email address of the person who created the alert definition is available, it is added to the
Recipient(s) box.
20. Optionally, in the Subject text box, update the Subject line of the alert message.
The default Subject is Data aler t for <data aler t name> .
21. Optionally, in the Description text box, type a description of the alert message.
22. Click Save .

See Also
Data Alert Designer
Data Alert Manager for Alerting Administrators
Reporting Services Data Alerts
More questions? Try asking the Reporting Services forum
Edit a Data Alert in Alert Designer
3/5/2021 • 2 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services (2016) ❌ SQL Server Reporting Services (2017) ✔

SharePoint ❌ Power BI Report Server
For content related to previous versions of SQL Server Reporting Services (SSRS), see SQL Server 2014
Reporting Services.
You open the data alert definition that you want to edit from Data Alert Manager. Only the user that created the
alert definition can edit it. For more information about opening Data Alert Manager, see Manage My Data Alerts
in Data Alert Manager.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

The following picture shows you the context menu on a data alert in Data Alert Manager.

The following procedure includes the steps to open the alert definition for editing in Data Alert Designer from
Data Alert Manager.
To edit a data alert definition in Data Alert Designer
1. In Data Alert Manager, right-click the data alert definition that you want to edit and click Edit .
The alert definition opens in Data Alert Designer.
2. Update the rules, schedule settings, and email settings. For more information, see Data Alert Designer
and Create a Data Alert in Data Alert Designer.

NOTE
You cannot choose a different data feed. To use a different data feed, you must create a new data alert definition.

3. Click Save .

NOTE
If the report has changed and the data feeds generated from the report have changed the alert definition might
no longer be valid. This occurs when a column that the alert definition references in its rules is deleted from the
report or changes data type or the report is deleted or moved. You can open an alert definition that is not valid,
but you cannot resave it until it is valid based on the current version of the report data feed that it is built upon.
To learn more about how data feeds are generated from reports, see Generating Data Feeds from Reports (Report
Builder and SSRS).
See Also
Data Alert Manager for Alerting Administrators
Reporting Services Data Alerts
More questions? Try asking the Reporting Services forum
Manage All Data Alerts on a SharePoint Site in Data
Alert Manager
3/5/2021 • 2 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services (2016) ❌ Power BI Report Server ✔
️ SharePoint
SharePoint alerting administrators can view a list of the data alerts that were created by any site user and
information about the alerts. Alerting administrators can also delete alerts. The following picture shows the
features available to alerting administrators in Data Alert Manager.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

View a list of alerts created by a site user


1. Go to the SharePoint site where data alerts definitions are saved.
2. On the Home page, click Site Actions .
3. Scroll to the bottom of the list and click Site Settings .
4. Under Repor ting Ser vices , click Manage Data Aler ts .
5. Click the down arrow by the View aler ts for user list and select the user whose alerts you want to view.
6. Click the down arrow next to the View aler ts for repor t list and select a specific alert to view, or click
Show All to list all alerts created by the selected user.
A table lists the name, report name, name of the person who created the data alert, the number times the
data alert was sent, the last time the data alert definition was modified, and the status of the data alert. If
the data alert cannot be generated or sent, the status column contains information about the error and
helps you troubleshoot the problem.

Delete an alert definition


Right-click the data alert that you want to delete and click Delete .
NOTE
After you delete the alert, no further alert messages are sent. However, if you query the alerting database you
might find that the alert definition still exists. The alerting service performs clean up on a schedule and the alert
definition is deleted permanently in the next cleanup. The default cleanup interval is 20 minutes. This and other
cleanup intervals are configurable. For more information, see Reporting Services Data Alerts.

See Also
Data Alert Manager for Alerting Administrators
Reporting Services Data Alerts
More questions? Try asking the Reporting Services forum
Manage My Data Alerts in Data Alert Manager
3/5/2021 • 2 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services (2016) ❌ Power BI Report Server ✔
️ SharePoint
SharePoint users can view a list of the data alerts that they created and information about the alerts. Users can
also delete their alerts, open alert definitions for edit in Data Alert Designer, and run their alerts. The following
picture shows the features available to users in Data Alert Manager.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

To view a list of your alerts


1. Go to the SharePoint library where you saved the reports on which you created data alerts.
2. Click the icon for the expand drop-down menu on a report and click Manage Data Aler ts . The following
picture shows the drop-down menu.

Data Alert Manager opens. By default, it lists the alerts for the report that you selected in the library.
3. Click the down arrow next to the View aler ts for repor t list and select a report to view its alerts, or
click Show All to list all alerts.
NOTE
If the report that you selected does not have any alerts, you do not have to return to the SharePoint library to
locate and select a report that hasalerts. Instead, click Show All to see a list of all your alerts.

A table lists the alert name, report name, your name as the creator of the alert, the number the alert was
sent, the last time the alert definition was modified, and the status of the alert. If the alert cannot be
generated or sent, the status column contains information about the error and helps you troubleshoot
the problem.
To edit an alert definition
Right-click the data alert for which you want to edit the alert definition and click Edit .
The alert definition opens in Data Alert Designer. For more information, see Edit a Data Alert in Alert
Designer and Data Alert Designer.

NOTE
Only the user that created the data alert definition can edit it.

NOTE
If the report has changed and the data feeds generated from the report have changed the alert definition might
no longer be valid. This occurs when a column that the alert references in its rules is deleted from the report,
changes data type, or is included in a different data feed or the report is deleted or moved. You can open an alert
definition that is not valid, but you cannot resave it until it is valid based on the current version of the report data
feed that it is built upon. To learn more about how data feeds are generated from reports, see Generating Data
Feeds from Reports (Report Builder and SSRS).

To delete an alert definition


Right-click the data alert that you want to delete and click Delete .
When you delete the alert, no further alert messages are sent.
To run an alert
Right-click the data alert that you want to run and click Run .
The alert instance is created and the data alert message is immediately sent, regardless of the schedule
options you specified in Data Alert Designer. For example, an alert configured to be sent weekly and then
only if the results change is sent.

See Also
Data Alert Manager for Alerting Administrators
Reporting Services Data Alerts
More questions? Try asking the Reporting Services forum
Grant Permissions to Users and Alerting
Administrators
3/5/2021 • 2 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services (2016) ❌ Power BI Report Server ✔
️ SharePoint
Before users and alerting administrators can create, edit, delete, and view data alerts they must be granted
SharePoint permissions. There are no special permissions to use with the Reporting Services data alerting
feature, you use the built-in SharePoint permissions.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

Information workers -Permissions must include the Create Alert and View Items SharePoint permissions. The
built-in SharePoint permission levels named Design, Contribute, Read, and View Only include the Create Alert
and View Items SharePoint permissions. You can also create a custom permission level with the permissions
required to support users that create, edit, run, and view data alerts.
Aler ting administrators -Permissions must include the Manage Alert SharePoint permission. By default only
the Full Control permission level includes this permission for sites created with the Team Site site template. If
you use other site templates, you will see different lists of default SharePoint groups. You can add the Manage
Alert permission to one of the built-in permission levels or create a custom permission level with the permission
required to support alerting administrators that view and delete data alerts.
To learn more about SharePoint permissions, see User permissions and permission levels (SharePoint Server
2010).

Grant permissions
1. Go to the SharePoint site to which you want to grant permissions.
2. On the toolbar, click Site Actions and then click Site Permissions .
If you do not see this option, you do not sufficient permission to grant permissions to others.
3. Click Grant Permissions .
4. In Users/Groups , type the user names, group names, or e-mail addresses you want grant permission to.
5. Select the Add users to a SharePoint group or Grant users permission directly option. Depending
on whether you selected Add users to a SharePoint group or Grant users permissions directly do
one of the following:
If you selected Add users to a SharePoint group , select a permission level in the drop-down
list.
If you selected Grant users permissions directly , select a permission level.
6. Click OK .

See Also
Set Permissions for Report Server Items on a SharePoint Site (Reporting Services in SharePoint Integrated
Mode)
Reporting Services Data Alerts
More questions? Try asking the Reporting Services forum
Extensions for SQL Server Reporting Services
(SSRS)
11/2/2020 • 6 minutes to read • Edit Online

The report server in SQL ServerReporting Services uses extensions to modularize the types of input or output it
accepts for authentication, data processing, report rendering, and report delivery. This makes it easy for existing
Reporting Services installations to utilize new software standards in the industry, such as a new authentication
scheme, or a custom data source type. The report server supports custom authentication extensions, data
processing extensions, report processing extensions, rendering extensions, and delivery extensions, and the
extensions that are available to the users are configurable in the RSReportServer.config configuration file. For
example, you can limit the export formats the report viewer is allowed to use. A report server requires at least
one authentication extension, data processing extension, and rendering extension. Delivery and report
processing extensions are optional, but necessary if you want to support report distribution or custom controls.
This topic describes the extensions that are readily available in Reporting Services.

Security Extensions
Security extensions are used to authenticate and authorize users and groups to a report server. The default
security extension is based on Windows Authentication. You can also create a custom security extension to
replace default security if your deployment model requires a different authentication approach (for example, if
you require forms-based authentication for Internet or extranet deployment). Only one security extension can be
used in a single Reporting Services installation. You can replace the default Windows Authentication security
extension, but you cannot use it alongside a custom security extension.

Data Processing Extensions


Data Processing extensions are used to query a data source and return a flattened row set. Reporting Services
uses different extensions to interact with different types of data sources. You can use the extensions that are
included in Reporting Services, or you can develop your own extensions. Data processing extensions for SQL
Server, Analysis Services, Oracle, SAP NetWeaver Business Intelligence, Hyperion Essbase, Teradata, OLE DB, and
ODBC data sources are provided. Reporting Services can also use any ADO.NET data provider. Data processing
extensions process query requests from the Report Processor component by performing the following tasks:
Open a connection to a data source.
Analyze a query and return a list of field names.
Run a query against the data source and return a rowset.
Pass parameters to a query, if required.
Iterate through the rowset and retrieve data.
Some extensions can also perform the following tasks:
Analyze a query and return a list of parameter names used in the query.
Analyze a query and return the list of fields used for grouping.
Analyze a query and return the list of fields used for sorting.
Provide a user name and password to connect to the data source.
Pass parameters with multiple values to a query.
Iterate through rows and retrieve auxiliary metadata.

Rendering Extensions
Rendering extensions transform data and layout information from the Report Processor into a device-specific
format. Reporting Services includes seven rendering extensions: HTML, Excel, CSV, XML, Image, PDF, and
Microsoft Word.
HTML Rendering Extension When you request a report from a report server through a Web browser,
the report server uses the HTML rendering extension to render the report. The HTML rendering extension
generates all HTML using UTF-8 encoding. For more information, see Rendering to HTML (Report Builder
and SSRS) and Browser Support for Reporting Services and Power View.
Excel Rendering Extension The Excel rendering extension renders reports that can be viewed and
modified in Microsoft Excel 97 or later. This rendering extension creates files in Binary Interchange File
Format (BIFF). BIFF is the native file format for Excel data. Reports that are rendered in Microsoft Excel
support all of the features available for any spreadsheet. For more information, see Exporting to
Microsoft Excel (Report Builder and SSRS).
CSV Rendering Extension The Comma-Separated Value (CSV) rendering extension renders reports in
comma-delimited plain text files, without any formatting. Users can then open these files with a
spreadsheet application, such as Microsoft Excel, or any other program that reads text files. For more
information, see Exporting to a CSV File (Report Builder and SSRS).
XML Rendering Extension The XML rendering extension renders reports in XML files. These XML files
can then be stored or read by other programs. You can also use an XSLT transformation to turn the report
into another XML schema for use by another application. The XML generated by the XML rendering
extension is UTF-8 encoded. For more information, see Exporting to XML (Report Builder and SSRS).
Image Rendering Extension The Image rendering extension renders reports to bitmaps or metafiles.
The extension can render reports in the following formats: BMP, EMF, GIF, JPEG, PNG, TIFF, and WMF. By
default, the image is rendered in TIFF format, which can be displayed with the default image viewer of
your operating system (for example, Windows Picture and Fax Viewer). You can send the image to a
printer from the viewer. Using the Image rendering extension to render reports ensures that the report
looks the same on every client. (When a user views a report in HTML, the appearance of that report can
vary depending on the version of the user's browser, the user's browser settings, and the fonts that are
available.) The Image rendering extension renders the report on the server, so all users see the same
image. Because the report is rendered on the server, all fonts that are used in the report must be installed
on the server. For more information, see Exporting to an Image File (Report Builder and SSRS).
PDF Rendering Extension The PDF rendering extension renders reports in PDF files that can be opened
and viewed with Adobe Acrobat 6.0 or later. For more information, see Exporting to a PDF File (Report
Builder and SSRS).
Word Rendering Extension The Microsoft Word rendering extension renders a report as a Word
document that is compatible with Microsoft Office Word 2000 or later. For more information, see
Exporting to Microsoft Word (Report Builder and SSRS).

Report Processing Extensions


Report processing extensions can be added to provide custom report processing for report items that are not
included with Reporting Services. By default, a report server can process tables, charts, matrices, lists, text boxes,
images, and all other report items. If you want to add special features to a report that require custom processing
during report execution (for example, if you want to embed a Microsoft MapPoint map), you can create a report
processing extension to do so.

Delivery Extensions
The background processing application uses delivery extensions to deliver reports to various locations.
Reporting Services includes an e-mail delivery extension and a file share delivery extension. The e-mail delivery
extension sends an e-mail message through Simple Mail Transport Protocol (SMTP) that includes either the
report itself or a URL link to the report. Short notices without the URL link or report can also be sent to pagers,
phones, or other devices. The file share delivery extension saves reports to a shared folder on your network. You
can specify a location, rendering format, and file name, and overwrite options for the file you create. You can use
file share delivery for archiving rendered reports and as part of a strategy for working with very large reports.
Delivery extensions work in conjunction with subscriptions. When a user creates a subscription, the user
chooses one of the available delivery extensions to determine how the report is delivered.
Customize Rendering Extension Parameters in
RSReportServer.Config
11/2/2020 • 5 minutes to read • Edit Online

You can specify rendering extension parameters in the RSReportServer configuration file to override default
report rendering behavior for reports that run on a Reporting Services report server. You can modify rendering
extension parameters to achieve the following objectives:
Change how the rendering extension name appears in the Export list of the report toolbar (for example,
to change "Web archive" to "MHTML"), or localize the name to a different language.
Create multiple instances of the same rendering extension to support different report presentation
options (for example, a portrait and landscape mode version of the Image rendering extension).
Change the default rendering extension parameters to use different values (for example, the Image
rendering extension uses TIFF as the default output format; you can modify the extension parameters to
use EMF instead).
Changing the rendering extension parameters only affects rendering operations on the report server. You
cannot override rendering extension settings in report preview in Report Designer.
Specifying rendering extension parameters in the configuration files affects rendering extensions globally. The
settings in the configuration files are used in place of default values whenever a particular rendering extension
is used. If you want to set rendering extension parameters for a specific report or render operation, you must
specify device information programmatically using the Render method or by specifying device information
settings on a report URL. For more information about specifying device information settings for a render
operation, and to view the complete list of device information settings, see Passing Device Information Settings
to Rendering Extensions.

Finding and Modifying RSReportServer.config


Configuration settings for report output formats are specified as rendering extension parameters in the
RSReportServer.config file. To specify rendering extension parameters in the configuration files, you must know
how to define the XML structures that set rendering parameters. There are two XML structures that you can
modify:
The OverrideNames element defines the display name and language of the rendering extension.
The DeviceInfo XML structure defines the device information settings that are used by a rendering
extension. Most rendering extension parameters are specified as device information settings.
You can use a text editor to modify the file. The RSReportServer.config file can be found in the \Reporting
Services\Report Server\Bin folder. For more information about modifying configuration files, see Modify a
Reporting Services Configuration File (RSreportserver.config).

Changing the Display Name


The display name for a rendering extension appears in the Export list of the report toolbar. Examples of default
display names include Web archive, TIFF file, and Acrobat (PDF) file. You can replace the default display name
with a custom value by specifying the OverrideNames element in the configuration files. In addition, if you are
defining two instances of a single rendering extension, you can use the OverrideNames element to distinguish
each instance in the Export list.
Because display names are localized, you must set the Language attribute if you are replacing the default
display name with a custom value. Otherwise, any name that you specify will be ignored. The language value
that you set must be valid for the report server computer. For example, if the report server is running on a
French operating system, you should specify "fr-FR" as the attribute value.
The following example illustrates how to provide a custom name on an English report server:

<Extension Name="XML"
Type="Microsoft.ReportingServices.Rendering.DataRenderer.XmlDataReport,Microsoft.ReportingServices.DataRende
ring">
<OverrideNames>
<Name Language="en-US">My Custom Display Name for XML Rendering</Name>
</OverrideNames>
</Extension>

Changing Device Information Settings


To modify default device information settings that are used by a rendering extension that is already deployed on
your report server, you must type the DeviceInfo XML structure into the configuration files. Every rendering
extension supports device information settings that are unique to that extension. To view the complete list of
device information settings, see Passing Device Information Settings to Rendering Extensions.
The following example provides an illustration of the XML structure and syntax that modifies the default settings
of the Image rendering extension:

<Render>
<Extension Name="IMAGE (EMF)"
Type="Microsoft.ReportingServices.Rendering.ImageRenderer.ImageRenderer,Microsoft.ReportingServices.ImageRen
dering">
<OverrideNames>
<Name Language="en-US">Image (EMF)</Name>
</OverrideNames>
<Configuration>
<DeviceInfo>
<ColorDepth>32</ColorDepth>
<DpiX>300</DpiX>
<DpiY>300</DpiY>
<OutputFormat>EMF</OutputFormat>
</DeviceInfo>
</Configuration>
</Extension>
</Render>

Configuring Multiple Entries for a Rendering Extension


You can create multiple instances of the same rendering extension to support different report presentation
options. Each instance that you define can have a different combination of parameter values. When defining new
instances of an existing rendering extension, be sure to do the following:
Specify a unique name for the extension.
Each instance must have a unique value for the Name attribute. The following example uses the names
"IMAGE (EMF Landscape)" and "IMAGE (EMF Portrait)" to distinguish between the two instances.
Use caution when changing the name of a rendering extension that is already deployed. Developers who
specify rendering extensions programmatically use the extension name to identify which instance to use
for a particular render operation. If you are running custom Reporting Services applications on your
report server, make sure that the developer knows if you modify an existing extension name or add a
new one.
Specify a unique display name so that users can understand the differences for each output format.
If you are configuring multiple versions of the same extension, you can give each version a unique name
by providing a value for OverrideNames . Otherwise, all versions of the extension will appear to have
the same name in the Export options list on the report toolbar.
The following example illustrates how to use the default Image rendering extension (which produces TIFF
output) to output EMF in Portrait mode alongside a second instance that outputs reports in EMF in Landscape
mode. Notice that each extension name is unique. When testing this example, remember to choose reports that
do not contain interactive features such as show/hide options, matrices, or drillthrough links (interactive
features do not work in the Image rendering extension):

<Render>
<Extension Name="IMAGE (EMF Landscape)"
Type="Microsoft.ReportingServices.Rendering.ImageRenderer.ImageRenderer,Microsoft.ReportingServices.ImageRen
dering">
<OverrideNames>
<Name Language="en-US">EMF in Landscape Mode</Name>
</OverrideNames>
<Configuration>
<DeviceInfo>
<OutputFormat>EMF</OutputFormat>
<PageHeight>8.5in</PageHeight>
<PageWidth>11in</PageWidth>
</DeviceInfo>
</Configuration>
</Extension>
<Extension Name="IMAGE (EMF Portrait)"
Type="Microsoft.ReportingServices.Rendering.ImageRenderer.ImageRenderer,Microsoft.ReportingServices.ImageRen
dering">
<OverrideNames>
<Name Language="en-US">EMF in Portait Mode</Name>
</OverrideNames>
<Configuration>
<DeviceInfo>
<OutputFormat>EMF</OutputFormat>
<PageHeight>11in</PageHeight>
<PageWidth>8.5in</PageWidth>
</DeviceInfo>
</Configuration>
</Extension>
</Render>

See Also
RsReportServer.config Configuration File
RSReportDesigner Configuration File
CSV Device Information Settings
Excel Device Information Settings
HTML Device Information Settings
Image Device Information Settings
MHTML Device Information Settings
PDF Device Information Settings
XML Device Information Settings
URL Access (SSRS)
11/2/2020 • 4 minutes to read • Edit Online

URL access of the report server in SQL Server Reporting Services (SSRS) enables you to send commands to a
report server through a URL request. For example, you can customize the rendering of a report on a native
mode report server or in a SharePoint library. You may have viewed the report using a specific set of report
parameter values, or you may have been viewing a particular page of interest in the report. You can encapsulate
this information in the URL using predefined URL access parameters. You can further customize how the report
server processes the report by embedding parameters for rendering formats or for the look and feel of the
report viewer. You can then paste this URL directly into an email or Web page to let others to access your report
in the same manner in the browser.
Other actions you can perform through URL access are:
Send commands to the HTML viewer, such as adjusting its look and feel
List the children of a catalog folder
Retrieve the XML definition of a catalog item
Render a specific report history snapshot
Manage report sessions
For the complete list of commands and settings available through URL access, see URL Access Parameter
Reference.

URL Access Concepts


URL requests to the report server contain parameters that are processed by the report server. The way in which
the report server handles URL requests depends on the parameters, parameter prefixes, and types of items that
are included in the URL. Report server URLs adhere to the URL formatting guidelines as proposed by the joint
World Wide Web Consortium W3C/IETF draft standard. Reporting Services URL functionality is compatible with
most Internet browsers or applications that support standard URL addressing.
URL Access Syntax
URL requests can contain multiple parameters that are listed in any order. Parameters are separated by an
ampersand (&) and name/value pairs are separated by an equal sign (=).

rswebserviceurl
?
reportpath
[&prefix:param=value]...n]

Syntax Description
rswebserviceurl
The Web service URL of the report server. For native mode, it is the Web service URL of the report server
instance configured in Reporting Services Configuration Manager (see Configure Report Server URLs (Report
Server Configuration Manager)). For example:
https://myrshost/reportserver
https://machine.adventure-works.com/reportserver_MYNAMEDINSTANCE

For SharePoint integrated mode, it is the URL of the Reporting Services proxy at a SharePoint site integrated
with Reporting Services. For example:

https://myspsite/subsite/_vti_bin/reportserver

TIP
It is important the URL include the _vti_bin proxy syntax to route the request through SharePoint and the Reporting
Services HTTP proxy. The proxy adds some context to the HTTP request, context that is required to ensure proper
execution of the report for SharePoint mode report servers.

pathinfo
The relative path name of the item in the native mode report server database, or the fully qualified URL of the
item in a SharePoint catalog.
The path of the catalog item. For native mode, it is the relative path of the item in the report server database,
beginning with a slash (/ ). For example:

/AdventureWorks 2008R2/Employee_Sales_Summary_2008R2

For SharePoint integrated mode, it is the fully qualified URL of the item in the SharePoint library, including the
item extension. For example:

https://myspsite/subsite/AdventureWorks 2008R2/Employee_Sales_Summary_2008R2.rdl

&
Used to separate name and value pairs of URL access parameters.
prefix
Optional. A prefix for the URL access parameter (for example, rs: or rc: ) that accesses a specific process
running within the report server.

NOTE
If a prefix for a URL access parameter is not included, the parameter is processed by the report server as a report
parameter. Report parameters do not use a parameter prefix and are case-sensitive.

param
The parameter name.
value
URL text corresponding to the value of the parameter being used.
Note: For a list of the available URL access parameters, see URL Access Parameter Reference. For examples
passing report parameters on the URL, see Pass a Report Parameter Within a URL.

Related Tasks
TA SK DESC RIP T IO N S L IN K S

Access report server items, such as reports, shared data Access Report Server Items Using URL Access
sources, and resources.

Pass report parameters to a report. Pass a Report Parameter Within a URL

Set the locale of the report parameters in the URL access Set the Language for Report Parameters in a URL
string, which defines the locale-specific interpretations of
dates, currencies, and so on.

Send rendering extension specific settings that customize Specify Device Information Settings in a URL
how the report is rendered.

Export a report directly to a file format without viewing it in Export a Report Using URL Access
the browser.

Open a report and navigate directly to the location of a Search a Report Using URL Access
string.

Render a specific report history snapshot. Render a Report History Snapshot Using URL Access

See Also
Pass a Report Parameter Within a URL
URL Access Parameter Reference
Integrating Reporting Services Using URL Access
Finding, Viewing, and Managing Reports (Report Builder and SSRS )
Access Report Server Items Using URL Access
3/5/2021 • 2 minutes to read • Edit Online

This topic describes how to access catalog items of different types in a report server database or in a SharePoint
site using rs:Command=Value. It is not necessary to actually add this parameter string. If you omit it, the report
server evaluates the item type and selects the appropriate parameter value automatically. However, using the
rs:Command=Value string in the URL improves the performance of the report server.
Note the _vti_bin proxy syntax in the examples below. For more information about using the proxy syntax, see
URL Access Parameter Reference.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

Access a Report
To view a report in the browser, use the rs:Command=Render parameter. For example:
Native https://myrshost/reportserver?/Sales/YearlySalesByCategory&rs:Command=Render

SharePoint
https://myspsite/subsite/_vti_bin/reportserver?
https://myspsite/subsite/Sales/YearlySalesByCategory&rs:Command=Render

TIP
It is important the URL include the _vti_bin proxy syntax to route the request through SharePoint and the Reporting
Services HTTP proxy. The proxy adds some context to the HTTP request, context that is required to ensure proper
execution of the report for SharePoint mode report servers.

Access a Resource
To access a resource, use the rs:Command=GetResourceContents parameter.If the resource is compatible with
the browser, such as an image, it is opened in the browser. Otherwise, you are prompted to open or save the file
or resource to disk.
Native https://myrshost/reportserver?/Sales/StorePicture&rs:Command=GetResourceContents

SharePoint
https://myspsite/subsite/_vti_bin/reportserver?
https://myspsite/subsite/Sales/StorePicture.jpg&rs:Command=GetResourceContents

Access a Data Source


To access a data source, use the rs:Command=GetDataSourceContents parameter. If your browser supports
XML, the data source definition is displayed if you are an authenticated user with Read Contents permission on
the data source. For example:
Native https://myrshost/reportserver?/Sales/AdventureWorks2012&rs:Command=GetDataSourceContents

SharePoint
https://myspsite/subsite/_vti_bin/reportserver?
https://myspsite/subsite/Sales/AdventureWorks2012&rs:Command=GetDataSourceContents

The XML structure might look similar to the following example:

<DataSourceDefinition>
<Extension>SQL</Extension>
<ConnectString>Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial
Catalog=AdventureWorks2012;Data Source=MYSERVER1;</ConnectString>
<CredentialRetrieval>Integrated</CredentialRetrieval>
<WindowsCredentials>False</WindowsCredentials>
<ImpersonateUser>False</ImpersonateUser>
<Prompt />
<Enabled>True</Enabled>
</DataSourceDefinition>

The connection string is returned based on the SecureConnectionLevel setting of the report server. For more
information about the SecureConnectionLevel setting, see Using Secure Web Service Methods.

Access the Contents of a Folder


To access the contents of a folder, use the rs:Command=GetChildren parameter. A generic folder-navigation
page is returned that contains links to the subfolders, reports, data sources, and resources in the requested
folder. For example:
Native https://myrshost/reportserver?/Sales&rs:Command=GetChildren

SharePoint
https://myspsite/subsite/_vti_bin/reportserver?https://myspsite/subsite/Sales&rs:Command=GetChildren

The user interface you see is similar to the directory browsing mode used by Microsoft Internet Information
Server (IIS). The version number, including the build number, of the report server is also displayed below the
folder listing.

See Also
URL Access (SSRS)
URL Access Parameter Reference
Pass a Report Parameter Within a URL
11/2/2020 • 2 minutes to read • Edit Online

You can pass report parameters to a report by including them in a report URL. These URL parameters are not
prefixed because they are passed directly to the report processing engine.

NOTE
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

IMPORTANT
It is important the URL include the _vti_bin proxy syntax to route the request through SharePoint and the Reporting
Services HTTP proxy. The proxy adds some context to the HTTP request, context that is required to ensure proper
execution of the report for SharePoint mode report servers.
If you don't include the proxy syntax, then you need to prefix the parameter with rp:.

All query parameters can have corresponding report parameters. You pass a query parameter to a report by
passing the corresponding report parameter. For more information, see Build a Query in the Relational Query
Designer (Report Builder and SSRS).

IMPORTANT
Report parameters are case-sensitive.

NOTE
Report parameters are case-sensitive and utilize the following special characters:
Any space characters in the URL string are replaced with the characters "%20," according to URL encoding standards.
A space character in the parameter portion of the URL is replaced with a plus character (+).
A semicolon in any portion of the string is replaced with the characters "%3A."
Browsers should automatically perform the proper URL encoding. You do not have to encode any of the characters
manually.

To set a report parameter within a URL, use the following syntax:

parameter=value

For example, to specify two parameters, "ReportMonth" and "ReportYear", defined in a report, use the following
URL for a native mode report server:

https://myrshost/ReportServer?/AdventureWorks
2008R2/Employee_Sales_Summary_2008R2&ReportMonth=3&ReportYear=2008

For example, to specify the same two parameters defined in a report, use the following URL for a SharePoint
integrated mode report server. Note the /_vti_bin :

https://myspsite/subsite/_vti_bin/reportserver?https://myspsite/subsite/AdventureWorks
2008R2/Employee_Sales_Summary_2008R2.rdl&ReportMonth=3&ReportYear=2008

To pass a null value for a parameter, use the following syntax:

parameter
:isnull=true

For example,

SalesOrderNumber:isnull=true

To pass a Boolean value, use 0 for false and 1 for true. To pass a Float value, include the decimal separator of
the server locale

NOTE
If your report contains a report parameter that has a default value and the value of the Prompt property is false (that is,
the Prompt User property is not selected in Report Manager), then you cannot pass a value for that report parameter
within a URL. This provides administrators an option for preventing end users from adding or modifying the values of
certain report parameters.

Additional Examples
The following URL example includes spaces and multiple parameters
Folder name of "SQL Server User Education Team" includes spaces and therefore the "+" replaces each
space.
Report name of "team project report" includes spaces and therefore the "+" replaces each space.
Passes two parameters of "teamgrouping2" with a value of "xgroup" and "teamgrouping1" with a value
of "ygroup".

https://myserver/Reportserver?/SQL+Server+User+Education+Team/_ContentTeams/folder123/team+project+report&te
amgrouping2=xgroup&teamgrouping1=ygroup

The following URL example includes a multi-value parameter "OrderID. The format for a Multi-Value parameter
is to repeat the parameter name for each value.

https://myserver/Reportserver?/SQL+Server+User+Education+Team/_ContentTeams/folder123/team+project+report&te
amgrouping2=xgroup&teamgrouping1=ygroup&OrderID=747&OrderID=787&OrderID=12

The following URL example passes a single parameter of SellStartDate with a value of "7/1/2005", for a native
mode report server.

https://myserver/ReportServer/Pages/ReportViewer.aspx?
%2fProduct_and_Sales_Report_AdventureWorks&SellStartDate=7/1/2005
See Also
URL Access (SSRS)
URL Access Parameter Reference
URL access parameter reference
11/2/2020 • 10 minutes to read • Edit Online

You can use the following parameters as part of a URL to configure the look and feel of your SQL Server 2016
Reporting Services or later (SSRS) reports. The most common parameters are listed in this section. Parameters
are case-insensitive and begin with the parameter prefix rs: if directed to the report server and rc: if directed to
an HTML Viewer. You can also specify parameters that are specific to devices or rendering extensions. For more
information about device-specific parameters, see Specify device information settings in a URL.

IMPORTANT
For a SharePoint mode report server it's important that the URL includes the _vti_bin proxy syntax to route the
request through SharePoint and the Reporting Services HTTP proxy. The proxy adds context to the HTTP request that's
required to ensure proper execution of the report for SharePoint mode report servers. For examples, see Access report
server items using URL access.
Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

HTML Viewer commands (rc:)


HTML Viewer commands are used to target the HTML Viewer and are prefixed with rc::
Toolbar : Shows or hides the toolbar. If the value of this parameter is false , all remaining options are
ignored. If you omit this parameter, the toolbar is automatically displayed for rendering formats that
support it. The default of this parameter is true .

IMPORTANT
rc:Toolbar=false doesn't work for URL access strings that use an IP address, instead of a domain name, to target a
report hosted on a SharePoint site.

Parameters : Shows or hides the parameters area of the toolbar. If you set this parameter to true , the
parameters area of the toolbar is displayed. If you set this parameter to false , the parameters area isn't
displayed and can't be displayed by the user. If you set this parameter to a value of Collapsed , the
parameters area won't be displayed but can be toggled by the user. The default value of this parameter is
true .
For example, in native mode:

https://myrshost/reportserver?/Sales&rc:Parameters=Collapsed

For example, in SharePoint mode:

https://myspsite/subsite/_vti_bin/reportserver?https://myspsite/subsite/Sales&rc:Parameters=Collapsed

Zoom : Sets the report zoom value as an integer percentage or a string constant. Standard string values
include Page Width and Whole Page . This parameter is ignored by versions of Internet Explorer earlier
than Internet Explorer 5.0 and all non-Microsoft browsers. The default value of this parameter is 100 .
For example, in native mode:

https://myrshost/reportserver?/Sales&rc:Zoom=Page Width

For example, in SharePoint mode:

https://myspsite/subsite/_vti_bin/reportserver?https://myspsite/subsite/Sales&rc:Zoom=Page Width

Section : Sets which page in the report to display. Any value that's greater than the number of pages in
the report displays the last page. Any value that's less than 0 displays page 1 of the report. The default
value of this parameter is 1 .
For an example in native mode, to display page 2 of the report:

https://myrshost/reportserver?/Sales&rc:Section=2

For an example in SharePoint mode, to display page 2 of the report:

https://myspsite/subsite/_vti_bin/reportserver?https://myspsite/subsite/Sales&rc:Section=2

FindString : Searches a report for a specific set of text and highlights the text.

IMPORTANT
rc:FindString doesn't work unless you include rc:Toolbar=false to the URL access string.

For example, in native mode:

https://myrshost/reportserver?/Sales&rc:Toolbar=false&rc:FindString=Mountain-400

For example, in SharePoint mode:

https://myspsite/subsite/_vti_bin/reportserver?
https://myspsite/subsite/Sales&rc:Toolbar=false&rc:FindString=Mountain-400

Star tFind : Specifies the last section to search. The default value of this parameter is the last page of the
report.
For an example in native mode that searches for the first occurrence of the text "Mountain-400" in the
Product Catalog sample report starting with page 1 and ending with page 5:

https://server/Reportserver?/SampleReports/Product
Catalog&rs:Command=Render&rc:StartFind=1&rc:EndFind=5&rc:FindString=Mountain-400

EndFind : Sets the number of the last page to use in the search. For example, a value of 5 indicates that
the last page to be searched is page 5 of the report. The default value is the number of the current page.
Use this parameter in conjunction with the StartFind parameter. See the previous example.
FallbackPage : Sets the number of the page to display if a search or a document map selection fails. The
default value is the number of the current page.
GetImage : Gets a particular icon for the HTML Viewer user interface.
Icon : Gets the icon of a particular rendering extension.
Stylesheet : Specifies a style sheet to be applied to the HTML Viewer.
Device Information Setting : Specifies a device information setting in the form of rc:tag=value , where
tag is the name of a device information setting specific to the rendering extension that's currently used.
(See the description for the Format parameter.) For example, you can use the OutputFormat device
information setting for the IMAGE rendering extension to render the report to a JPEG image by using the
following parameters in the URL access string: ...&rs:Format=IMAGE&rc:OutputFormat=JPEG . For more
information on all extension-specific device information settings, see Device information settings for
rendering extensions (Reporting Services).

Report server commands (rs:)


Report server commands are prefixed with rs: and are used to target the report server:
Command : Performs an action on a catalog item, depending on its item type. The default value is
determined by the type of the catalog item referenced in the URL access string. Valid values are:
ListChildren and GetChildren : Displays the contents of a folder. The folder items are displayed
within a generic item-navigation page.
For example, in native mode:

https://myrshost/reportserver?/Sales&rs:Command=GetChildren

For example, a named instance in native mode:

https://myssrshost/Reportserver_THESQLINSTANCE?/reportfolder&rs:Command=listChildren

For example, in SharePoint mode:

https://myspsite/subsite/_vti_bin/reportserver?
https://myspsite/subsite/Sales&rs:Command=GetChildren

Render : The report is rendered in the browser so that you can view it.
For example, in native mode:

https://myrshost/reportserver?/Sales/YearlySalesByCategory&rs:Command=Render

For example, in SharePoint mode:

https://myspsite/subsite/_vti_bin/reportserver?
https://myspsite/subsite/Sales/YearlySalesByCategory&rs:Command=Render

GetSharedDatasetDefinition : Displays the XML definition associated with a shared dataset.


Shared dataset properties, including the query, dataset parameters, default values, dataset filters,
and data options such as collation and case sensitivity, are saved in the definition. You must have
Read Repor t Definition permission on a shared dataset to use this value.
For example, in native mode:
https://localhost/reportserver/?/DataSet1&rs:command=GetShareddatasetDefinition

GetDataSourceContents : Displays the properties of a given shared data source as XML. If your
browser supports XML and if you're an authenticated user with Read Contents permission on the
data source, the data source definition is displayed.
For example, in native mode:

https://myrshost/reportserver?/Sales/AdventureWorks2012&rs:Command=GetDataSourceContents

For example, in SharePoint mode:

https://myspsite/subsite/_vti_bin/reportserver?
https://myspsite/subsite/Sales/AdventureWorks2012&rs:Command=GetDataSourceContents

GetResourceContents : Renders a resource and displays it in an HTML page if the resource is


compatible with the browser. Otherwise, you're prompted to open or save the file or resource to
disk.
For example, in native mode:

https://myrshost/reportserver?/Sales/StorePicture&rs:Command=GetResourceContents

For example, in SharePoint mode:

https://myspsite/subsite/_vti_bin/reportserver?
https://myspsite/subsite/Sales/StorePicture.jpg&rs:Command=GetResourceContents

GetComponentDefinition : Displays the XML definition associated with a published report item.
You must have Read Contents permission on a published report item to use this value.
Format : Specifies the format in which to render and view a report. Common values include:
HTML5
PPTX
ATOM
HTML4.0
MHTML
IMAGE
EXCEL (for .xls)
EXCELOPENXML (for .xlsx)
WORD (for .doc)
WORDOPENXML (for .docx)
CSV
PDF
XML
The default value is HTML5 . For more information, see Export a report using URL access.
For a complete list, see the <Render> extension section of the report server rsreportserver.config file.
For information on where to find the file, see RsReportServer.config configuration file.
For example, to get a PDF copy of a report directly from a native mode report server:

https://myrshost/ReportServer?/myreport&rs:Format=PDF

For example, to get a PDF copy of a report directly from a SharePoint mode report server:

https://myspsite/subsite/_vti_bin/reportserver?https://myspsite/subsite/myrereport.rdl&rs:Format=PDF

ParameterLanguage : Provides a language for parameters passed in a URL that's independent of the
browser language. The default value is the browser language. The value can be a culture value, such as
en-us or de-de.
For example, in native mode, to override the browser language and specify a culture value of de-DE:

https://myrshost/Reportserver?/SampleReports/Product+Line+Sales&rs:Command=Render&StartDate=4/10/2008
&EndDate=11/10/2008&rs:ParameterLanguage=de-DE

Snapshot : Renders a report based on a report history snapshot. For more information, see Render a
report history snapshot using URL access.
For example, in native mode, retrieve a report history snapshot dated 2003-04-07 with a time stamp of
13:40:02:

https://myrshost/reportserver?/SampleReports/Company Sales&rs:Snapshot=2003-04-07T13:40:02

PersistStreams : Renders a report in a single persisted stream. This parameter is used by the Image
renderer to transmit the rendered report one chunk at a time. After using this parameter in a URL access
string, use the same URL access string with the GetNextStream parameter instead of the PersistStreams
parameter to get the next chunk in the persisted stream. This URL command eventually returns a 0-byte
stream to indicate the end of the persisted stream. The default value is false .
GetNextStream : Gets the next data chunk in a persisted stream that's accessed by using the
PersistStreams parameter. For more information, see the description for PersistStreams. The default value
is false .
SessionID : Specifies an established active report session between the client application and the report
server. The value of this parameter is set to the session identifier.
You can specify the session ID as a cookie or as part of the URL. When the report server has been
configured not to use session cookies, the first request without a specified session ID results in a
redirection with a session ID. For more information about report server sessions, see Identifying
execution state.
ClearSession : A value of true directs the report server to remove a report from the report session. All
report instances associated with an authenticated user are removed from the report session. (A report
instance is defined as the same report run multiple times with different report parameter values.) The
default value is false .
ResetSession : A value of true directs the report server to reset the report session by removing the
report session's association with all report snapshots. The default value is false .
ShowHideToggle : Toggles the show and hide state of a section of the report. Specify a positive integer
to represent the section to toggle.

Report Viewer web part commands (rv:)


The following SQL Server reserved report parameter names are used to target the Report Viewer web part
that's integrated with SharePoint. These parameter names are prefixed with rv:. The Report Viewer web part also
accepts the rs:ParameterLanguage parameter.
Toolbar : Controls the toolbar display for the Report Viewer web part. The default value is Full . Values
can be:
Full : Displays the complete toolbar.
Navigation : Displays only pagination in the toolbar.
None : Doesn't display the toolbar.
For example, in SharePoint mode, to display only pagination in the toolbar:

https://myspsite/_vti_bin/reportserver?
https://myspsite002%fShared+Documents%2fmyreport.rdl&rv:DocMapMode=Displayed&rv:Toolbar=Navigation

HeaderArea : Controls the header display for the Report Viewer web part. The default value is Full .
Values can be:
Full : Displays the complete header.
BreadCrumbsOnly : Displays only the breadcrumb navigation in the header to inform the user
where they are in the application.
None : Doesn't display the header.
For example, in SharePoint mode, to display only the breadcrumb navigation in the header:

https://myspsite/_vti_bin/reportserver?
https://myspsite002%fShared+Documents%2fmyreport.rdl&rv:DocMapMode=Displayed&rv:HeaderArea=BreadCrumb
sOnly

DocMapAreaWidth : Controls the display width, in pixels, of the parameter area in the Report Viewer
web part. The default value is the same as the Report Viewer web part default. The value must be a non-
negative integer.
AsyncRender : Controls whether a report is rendered asynchronously. The default value is true , which
specifies that a report be rendered asynchronously. The value must be a Boolean value of true or false .
ParamMode : Controls how the Report Viewer web part's parameter prompt area is displayed in full-
page view. The default value is Full . Valid values are:
Full : Displays the parameter prompt area.
Collapsed : Collapses the parameter prompt area.
Hidden : Hides the parameter prompt area.
For example, in SharePoint mode, to collapse the parameter prompt area:
https://myspsite/_vti_bin/reportserver?
https://myspsite002%fShared+Documents%2fmyreport.rdl&rv:DocMapMode=Displayed&rv:ParamMode=Collapsed

DocMapMode : Controls how the Report Viewer web part's document map area is displayed in full-page
view. The default value is Full . Valid values are:
Full : Displays the document map area.
Collapsed : Collapses the document map area.
Hidden : Hides the document map area.
DockToolBar : Controls whether the Report Viewer web part's toolbar is docked to the top or bottom.
Valid values are Top and Bottom . The default value is Top .
For example, in SharePoint mode, to dock the toolbar to the bottom:

https://myspsite/_vti_bin/reportserver?
https://myspsite002%fShared+Documents%2fmyreport.rdl&rv:DocMapMode=Displayed&rv:DockToolBar=Bottom

ToolBarItemsDisplayMode : Controls which toolbar items are displayed. This is a bitwise enumeration
value. To include a toolbar item, add the item's value to the total value. For example, for no Actions
menu, use rv:ToolBarItemsDisplayMode=63 (or 0x3F), which is 1+2+4+8+16+32. For Actions menu
items only, use rv:ToolBarItemsDisplayMode=960 (or 0x3C0). The default value is -1 , which includes all
toolbar items. Valid values are:
1 (0x1) : The Back button
2 (0x2) : The text search controls
4 (0x4) : The page navigation controls
8 (0x8) : The Refresh button
16 (0x10) : The Zoom list box
32 (0x20) : The Atom Feed button
64 (0x40) : The Print menu option in Actions
128 (0x80) : The Expor t submenu in Actions
256 (0x100) : The Open with Repor t Builder menu option in Actions
512 (0x200) : The Subscribe menu option in Actions
1024 (0x400) : The New Data Aler t menu option in Actions
For example, in SharePoint mode to display only the Back button, text search controls, page navigation
controls, and the Refresh button:

https://myspsite/_vti_bin/reportserver?
https://myspsite002%fShared+Documents%2fmyreport.rdl&rv:DocMapMode=Displayed&rv:ToolBarItemsDisplayMo
de=15

See also
URL access (SSRS)
Export a report using URL access
Set the Language for Report Parameters in a URL
11/2/2020 • 2 minutes to read • Edit Online

The rs:ParameterLanguage URL access parameter alleviates a problem in which culture-sensitive report
parameters, such as dates, times, currency, and numbers, are interpreted using the browser language. With
rs:ParameterLanguage, the URL is now interpreted independently of the browser. For example, if the report
server is set to a regional setting of German, but a user is accessing a report via a URL using a browser that is
set to English-United States, parameter values that are passed to a report server will be misinterpreted.
Consider the following URL to a report:

https://myrshost/Reportserver?/SampleReports/Product+Line+Sales&rs:Command=Render&StartDate=4/10/2008&EndDat
e=11/10/2008

In the above case, the server, running under a culture of "de-de", generates a URL either through an e-mail
subscription or a hyperlink. The hyperlink indicates that the report should be parameterized by a start date of
October 4, 2008 and an end date of October 11, 2008 according to German date/time standards. However, a
user that is accessing the URL through a browser set to "en-us" forces the server to interpret the values as April
10, 2008 and November 10, 2008 under United States English date/time standards. To fix the problem,
rs:ParameterLanguage can be used to override the browser language for parameter interpretation:

https://myrshost/Reportserver?/SampleReports/Product+Line+Sales&rs:Command=Render&StartDate=4/10/2008&EndDat
e=11/10/2008&rs:ParameterLanguage=de-DE

In addition to a value of true and false for the URL access parameter rc:Parameters, you can now pass a value
of Collapsed . When using rc:Parameters=Collapsed on a URL, the parameter prompt area of the HTML viewer
is collapsed out of sight, but can still be toggled by the user. A value of false removes the parameter prompt
area from the HTML viewer toolbar and makes it unavailable to the end-user.

See Also
URL Access (SSRS)
URL Access Parameter Reference
Specify Device Information Settings in a URL
11/2/2020 • 2 minutes to read • Edit Online

Device information settings are parameters that are passed to a rendering extension. If you use the methods of
the SQL Server Report Server Web service to render a report, a DeviceInfo XML element is passed as an input
parameter. Child elements of the DeviceInfo element are specific to the device information settings of different
rendering extensions. You can include device information settings in a URL by using the rc:tag=value parameter
string, where tag is the name of the device information settings element being accessed. For more information
about device information settings in SQL Server Reporting Services, see Passing Device Information Settings to
Rendering Extensions.

Example
The following example sets the format of the specified report to JPEG by using the OutputFormat device
information setting of the image rendering extension (the line breaks have been added for legibility):

https://servername/reportserver?/SampleReports
/Employee Sales Summary&EmployeeID=38&rs:
Command=Render&rs:Format=IMAGE&rc:OutputFormat=JPEG

See Also
URL Access (SSRS)
URL Access Parameter Reference
Export a Report Using URL Access
3/5/2021 • 2 minutes to read • Edit Online

You can optionally specify the format in which to render a report by using the rs:Format URL parameter. The
HTML4.0 and HTM5 formats (rendering extension) will render in the browser and for other formats, the browser
will prompt to save the report output to a local file.
For example, to get a PDF copy of a report directly from a native mode report server:

https://myrshost/ReportServer?/myreport&rs:Format=PDF

And, from a SharePoint integrated mode report server:

https://myspsite/subsite/_vti_bin/reportserver?https://myspsite/subsite/myrereport.rdl&rs:Format=PDF

For example the following URL command in your browser exports a PPTX report from a named instance of the
report server:

https://servername/ReportServer_THESQLINSTANCE/Pages/ReportViewer.aspx?
%2freportfolder%2freport+name+with+spaces&rs:Format=pptx

Valid values for this parameter are based on the report rendering extensions that are installed on the report
server being accessed. Common extensions are HTML4.0, MHTML, IMAGE, EXCELOPENXML (xlsx) ,
WORDOPENXML (docx), CSV, PDF, XML, and NULL. If a specified rendering extension is not installed on the
report server, the report is not rendered and an error is generated and displayed in the browser.
If you do not include the Format parameter as part of the URL, the report server detects the browser and
renders the report in the appropriate HTML format.

See Also
URL Access (SSRS)
URL Access Parameter Reference
Search a Report Using URL Access
11/2/2020 • 2 minutes to read • Edit Online

You can search a report for a specific set of text using URL access. To search a report, set the value of the
rc:FindString parameter on the URL equal to the text for which you want to search. Additionally, use the
rc:StartFind and rc:EndFind parameters to narrow your search to specific pages within the report.

Example
The following URL access example searches for the first occurrence of the text "Mountain-400" in the Product
Catalog sample report starting with page one and ending with page five:

https://server/Reportserver?/SampleReports/Product
Catalog&rs:Command=Render&rc:StartFind=1&rc:EndFind=5&rc:FindString=Mountain-400

See Also
URL Access (SSRS)
URL Access Parameter Reference
Render a Report History Snapshot Using URL
Access
11/2/2020 • 2 minutes to read • Edit Online

You can render a report based on a report history snapshot by supplying the rs:Snapshot parameter and setting
its value to a valid snapshot ID. The parameter value is in the format YYYY-MM-DDTHH:MM:SS, based on the
International Organization for Standardization (ISO) 8601 standard.
If you omit this parameter, the report is rendered according to the report execution and cache management
option settings of the report server. For more information about report execution, see Set Report Processing
Properties.

Example
The following example shows a URL that retrieves a report history snapshot:

https://myrshost/reportserver?/SampleReports/Company Sales&rs:Snapshot=2003-04-07T13:40:02

See Also
URL Access (SSRS)
URL Access Parameter Reference
Create a Login
3/20/2021 • 10 minutes to read • Edit Online

Applies to: SQL Server (all supported versions) Azure SQL Database Azure SQL Managed Instance
Azure Synapse Analytics Analytics Platform System (PDW)
This topic describes how to create a login in SQL Server or SQL Database by using SQL Server Management
Studio or Transact-SQL. A login is the identity of the person or process that is connecting to an instance of SQL
Server.

Background
A login is a security principal, or an entity that can be authenticated by a secure system. Users need a login to
connect to SQL Server. You can create a login based on a Windows principal (such as a domain user or a
Windows domain group) or you can create a login that is not based on a Windows principal (such as an SQL
Server login).

NOTE: To use SQL Server Authentication, the Database Engine must use mixed mode authentication. For
more information, see Choose an Authentication Mode.

As a security principal, permissions can be granted to logins. The scope of a login is the whole Database Engine.
To connect to a specific database on the instance of SQL Server, a login must be mapped to a database user.
Permissions inside the database are granted and denied to the database user, not the login. Permissions that
have the scope of the whole instance of SQL Server (for example, the CREATE ENDPOINT permission) can be
granted to a login.

NOTE: When a login connects to SQL Server the identity is validated at the master database. Use contained
database users to authenticate SQL Server and SQL Database connections at the database level. When using
contained database users a login is not necessary. A contained database is a database that is isolated from
other databases and from the instance of SQL Server/ SQL Database (and the master database) that hosts
the database. SQL Server supports contained database users for both Windows and SQL Server
authentication. When using SQL Database, combine contained database users with database level firewall
rules. For more information, see Contained Database Users - Making Your Database Portable.

Security
SQL Server requires ALTER ANY LOGIN or ALTER LOGIN permission on the server.
SQL Database requires membership in the loginmanager role.

Create a login using SSMS


1. In Object Explorer, expand the folder of the server instance in which you want to create the new login.
2. Right-click the Security folder, point to New , and select Login....
3. In the Login - New dialog box, on the General page, enter the name of a user in the Login name box.
Alternately, click Search... to open the Select User or Group dialog box.
If you click Search...:
a. Under Select this object type , click Object Types... to open the Object Types dialog box and
select any or all of the following: Built-in security principals , Groups , and Users . Built-in
security principals and Users are selected by default. When finished, click OK .
b. Under From this location , click Locations... to open the Locations dialog box and select one of
the available server locations. When finished, click OK .
c. Under Enter the object name to select (examples) , enter the user or group name that you
want to find. For more information, see Select Users, Computers, or Groups Dialog Box.
d. Click Advanced... for more advanced search options. For more information, see Select Users,
Computers, or Groups Dialog Box - Advanced Page.
e. Click OK .
4. To create a login based on a Windows principal, select Windows authentication . This is the default
selection.
5. To create a login that is saved on a SQL Server database, select SQL Ser ver authentication .
a. In the Password box, enter a password for the new user. Enter that password again into the
Confirm Password box.
b. When changing an existing password, select Specify old password , and then type the old
password in the Old password box.
c. To enforce password policy options for complexity and enforcement, select Enforce password
policy . For more information, see Password Policy. This is a default option when SQL Ser ver
authentication is selected.
d. To enforce password policy options for expiration, select Enforce password expiration . Enforce
password policy must be selected to enable this checkbox. This is a default option when SQL
Ser ver authentication is selected.
e. To force the user to create a new password after the first time the login is used, select User must
change password at next login . Enforce password expiration must be selected to enable
this checkbox. This is a default option when SQL Ser ver authentication is selected.
6. To associate the login with a stand-alone security certificate, select Mapped to cer tificate and then
select the name of an existing certificate from the list.
7. To associate the login with a stand-alone asymmetric key, select Mapped to asymmetric key to, and
then select the name of an existing key from the list.
8. To associate the login with a security credential, select the Mapped to Credential check box, and then
either select an existing credential from the list or click Add to create a new credential. To remove a
mapping to a security credential from the login, select the credential from Mapped Credentials and
click Remove . For more information about credentials in general, see Credentials (Database Engine).
9. From the Default database list, select a default database for the login. Master is the default for this
option.
10. From the Default language list, select a default language for the login.
11. Click OK .
Additional Options
The Login - New dialog box also offers options on four additional pages: Ser ver Roles , User Mapping ,
Securables , and Status .
Server Roles
The Ser ver Roles page lists all possible roles that can be assigned to the new login. The following options are
available:
bulkadmin check box
Members of the bulkadmin fixed server role can run the BULK INSERT statement.
dbcreator check box
Members of the dbcreator fixed server role can create, alter, drop, and restore any database.
diskadmin check box
Members of the diskadmin fixed server role can manage disk files.
processadmin check box
Members of the processadmin fixed server role can terminate processes running in an instance of the
Database Engine.
public check box
All SQL Server users, groups, and roles belong to the public fixed server role by default.
securityadmin check box
Members of the securityadmin fixed server role manage logins and their properties. They can GRANT, DENY,
and REVOKE server-level permissions. They can also GRANT, DENY, and REVOKE database-level permissions.
Additionally, they can reset passwords for SQL Server logins.
ser veradmin check box
Members of the ser veradmin fixed server role can change server-wide configuration options and shut down
the server.
setupadmin check box
Members of the setupadmin fixed server role can add and remove linked servers, and they can execute some
system stored procedures.
sysadmin check box
Members of the sysadmin fixed server role can perform any activity in the Database Engine.
User Mapping
The User Mapping page lists all possible databases and the database role memberships on those databases
that can be applied to the login. The databases selected determine the role memberships that are available for
the login. The following options are available on this page:
Users mapped to this login
Select the databases that this login can access. When you select a database, its valid database roles are displayed
in the Database role membership for : database_name pane.
Map
Allow the login to access the databases listed below.
Database
Lists the databases available on the server.
User
Specify a database user to map to the login. By default, the database user has the same name as the login.
Default Schema
Specifies the default schema of the user. When a user is first created, its default schema is dbo . It is possible to
specify a default schema that does not yet exist. You cannot specify a default schema for a user that is mapped to
a Windows group, a certificate, or an asymmetric key.
Guest account enabled for : database_name
Read-only attribute indicating whether the Guest account is enabled on the selected database. Use the Status
page of the Login Proper ties dialog box of the Guest account to enable or disable the Guest account.
Database role membership for : database_name
Select the roles for the user in the specified database. All users are members of the public role in every
database and cannot be removed. For more information about database roles, see Database-Level Roles.
Securables
The Securables page lists all possible securables and the permissions on those securables that can be granted
to the login. The following options are available on this page:
Upper Grid
Contains one or more items for which permissions can be set. The columns that are displayed in the upper grid
vary depending on the principal or securable.
To add items to the upper grid:
1. Click Search .
2. In the Add Objects dialog box, select one of the following options: Specific objects..., All objects of
the types..., or The ser ver server_name. Click OK .

NOTE: Selecting The ser ver server_name automatically fills the upper grid with all of that servers'
securable objects.

3. If you select Specific objects...:


a. In the Select Objects dialog box, under Select these object types , click Object Types....
b. In the Select Object Types dialog box, select any or all of the following object types: Endpoints ,
Logins , Ser vers , Availability Groups , and Ser ver roles . Click OK .
c. Under Enter the object names to select (examples) , click Browse....
d. In the Browse for Objects dialog box, select any of the available objects of the type that you
selected in the Select Object Types dialog box, and then click OK .
e. In the Select Objects dialog box, click OK .
4. If you select All objects of the types..., in the Select Object Types dialog box, select any or all of the
following object types: Endpoints , Logins , Ser vers , Availability Groups , and Ser ver roles . Click OK .
Name
The name of each principal or securable that is added to the grid.
Type
Describes the type of each item.
Explicit Tab
Lists the possible permissions for the securable that are selected in the upper grid. Not all options are available
for all explicit permissions.
Permissions
The name of the permission.
Grantor
The principal that granted the permission.
Grant
Select to grant this permission to the login. Clear to revoke this permission.
With Grant
Reflects the state of the WITH GRANT option for the listed permission. This box is read-only. To apply this
permission, use the GRANT statement.
Deny
Select to deny this permission to the login. Clear to revoke this permission.
Status
The Status page lists some of the authentication and authorization options that can be configured on the
selected SQL Server login.
The following options are available on this page:
Permission to connect to database engine
When you work with this setting, you should think of the selected login as a principal that can be granted or
denied permission on a securable.
Select Grant to grant CONNECT SQL permission to the login. Select Deny to deny CONNECT SQL to the login.
Login
When you work with this setting, you should think of the selected login as a record in a table. Changes to the
values listed here will be applied to the record.
A login that has been disabled continues to exist as a record. But if it tries to connect to SQL Server, the login will
not be authenticated.
Select this option to enable or disable this login. This option uses the ALTER LOGIN statement with the either
ENABLE or DISABLE option.
SQL Ser ver Authentication
The check box Login is locked out is only available if the selected login connects using SQL Server
Authentication and the login has been locked out. This setting is read-only. To unlock a login that is locked out,
execute ALTER LOGIN with the UNLOCK option.

Create a login using Windows Authentication using T-SQL


1. In Object Explorer , connect to an instance of Database Engine.
2. On the Standard bar, click New Quer y .
3. Copy and paste the following example into the query window and click Execute .

-- Create a login for SQL Server by specifying a server name and a Windows domain account name.

CREATE LOGIN [<domainName>\<loginName>] FROM WINDOWS;


GO

Create a login using SQL Server Authentication using T-SQL


1. In Object Explorer , connect to an instance of Database Engine.
2. On the Standard bar, click New Quer y .
3. Copy and paste the following example into the query window and click Execute .
-- Creates the user "shcooper" for SQL Server using the security credential "RestrictedFaculty"
-- The user login starts with the password "Baz1nga," but that password must be changed after the
first login.

CREATE LOGIN shcooper


WITH PASSWORD = 'Baz1nga' MUST_CHANGE,
CREDENTIAL = RestrictedFaculty;
GO

For more information, see CREATE LOGIN (Transact-SQL).

Follow Up: Steps to take after you create a login


After creating a login, the login can connect to SQL Server, but does not necessarily have sufficient permission to
perform any useful work. The following list provides links to common login actions.
To have the login join a role, see Join a Role.
To authorize a login to use a database, see Create a Database User.
To grant a permission to a login, see Grant a Permission to a Principal.

See Also
Security Center for SQL Server Database Engine and Azure SQL Database
Dynamic Data Masking
4/27/2021 • 9 minutes to read • Edit Online

Applies to: SQL Server 2016 (13.x) and later Azure SQL Database Azure SQL Managed Instance
Azure Synapse Analytics

Dynamic data masking (DDM) limits sensitive data exposure by masking it to non-privileged users. It can be
used to greatly simplify the design and coding of security in your application.
Dynamic data masking helps prevent unauthorized access to sensitive data by enabling customers to specify
how much sensitive data to reveal with minimal impact on the application layer. DDM can be configured on
designated database fields to hide sensitive data in the result sets of queries. With DDM the data in the database
is not changed. DDM is easy to use with existing applications, since masking rules are applied in the query
results. Many applications can mask sensitive data without modifying existing queries.
A central data masking policy acts directly on sensitive fields in the database.
Designate privileged users or roles that do have access to the sensitive data.
DDM features full masking and partial masking functions, and a random mask for numeric data.
Simple Transact-SQL commands define and manage masks.
The purpose of dynamic data masking is to limit exposure of sensitive data, preventing users who should not
have access to the data from viewing it. Dynamic data masking does not aim to prevent database users from
connecting directly to the database and running exhaustive queries that expose pieces of the sensitive data.
Dynamic data masking is complementary to other SQL Server security features (auditing, encryption, row level
security...) and it is highly recommended to use it in conjunction with them in order to better protect the
sensitive data in the database.
Dynamic data masking is available in SQL Server 2016 (13.x) and Azure SQL Database, and is configured by
using Transact-SQL commands. For more information about configuring dynamic data masking by using the
Azure portal, see Get started with SQL Database Dynamic Data Masking (Azure portal).

Defining a Dynamic Data Mask


A masking rule may be defined on a column in a table, in order to obfuscate the data in that column. Four types
of masks are available.

F UN C T IO N DESC RIP T IO N EXA M P L ES


F UN C T IO N DESC RIP T IO N EXA M P L ES

Default Full masking according to the data Example column definition syntax:
types of the designated fields. Phone# varchar(12) MASKED WITH
(FUNCTION = 'default()') NULL
For string data types, use XXXX or
fewer Xs if the size of the field is less Example of alter syntax:
than 4 characters (char , nchar , ALTER COLUMN Gender ADD MASKED
WITH (FUNCTION = 'default()')
varchar , nvarchar , text , ntext ).

For numeric data types use a zero


value (bigint , bit , decimal, int ,
money , numeric, smallint ,
smallmoney , tinyint , float , real).

For date and time data types use


01.01.1900 00:00:00.0000000 (date ,
datetime2 , datetime ,
datetimeoffset , smalldatetime ,
time ).

For binary data types use a single byte


of ASCII value 0 (binar y , varbinar y ,
image ).

Email Masking method that exposes the first Example definition syntax:
letter of an email address and the Email varchar(100) MASKED WITH
constant suffix ".com", in the form of (FUNCTION = 'email()') NULL
an email address. aXXX@XXXX.com .
Example of alter syntax:
ALTER COLUMN Email ADD MASKED
WITH (FUNCTION = 'email()')

Random A random masking function for use on Example definition syntax:


any numeric type to mask the original Account_Number bigint MASKED
value with a random value within a WITH (FUNCTION = 'random([start
range], [end range])')
specified range.
Example of alter syntax:
ALTER COLUMN [Month] ADD MASKED
WITH (FUNCTION = 'random(1,
12)')

Custom String Masking method that exposes the first Example definition syntax:
and last letters and adds a custom FirstName varchar(100) MASKED
padding string in the middle. WITH (FUNCTION =
'partial(prefix,
prefix,[padding],suffix [padding],suffix)') NULL

Note: If the original value is too short Example of alter syntax:


to complete the entire mask, part of ALTER COLUMN [Phone Number] ADD
the prefix or suffix will not be exposed. MASKED WITH (FUNCTION =
'partial(1,"XXXXXXX",0)')

Additional example:

ALTER COLUMN [Phone Number] ADD


MASKED WITH (FUNCTION =
'partial(5,"XXXXXXX",0)')

Permissions
You do not need any special permission to create a table with a dynamic data mask, only the standard CREATE
TABLE and ALTER on schema permissions.
Adding, replacing, or removing the mask of a column, requires the ALTER ANY MASK permission and ALTER
permission on the table. It is appropriate to grant ALTER ANY MASK to a security officer.
Users with SELECT permission on a table can view the table data. Columns that are defined as masked, will
display the masked data. Grant the UNMASK permission to a user to enable them to retrieve unmasked data
from the columns for which masking is defined.
The CONTROL permission on the database includes both the ALTER ANY MASK and UNMASK permission.

NOTE
The UNMASK permission does not influence metadata visibility: granting UNMASK alone will not disclose any Metadata.
UNMASK will always need to be accompanied by a SELECT permission to have any effect. Example: granting UNMASK on
database scope and granting SELECT on an individual Table will have the result that the user can only see the metadata of
the individual table from which he can select, not any others. Also see Metadata Visibility Configuration.

Best Practices and Common Use Cases


Creating a mask on a column does not prevent updates to that column. So although users receive
masked data when querying the masked column, the same users can update the data if they have write
permissions. A proper access control policy should still be used to limit update permissions.
Using SELECT INTO or INSERT INTO to copy data from a masked column into another table results in
masked data in the target table.
Dynamic Data Masking is applied when running SQL Server Import and Export. A database containing
masked columns will result in an exported data file with masked data (assuming it is exported by a user
without UNMASK privileges), and the imported database will contain statically masked data.

Querying for Masked Columns


Use the sys.masked_columns view to query for table-columns that have a masking function applied to them.
This view inherits from the sys.columns view. It returns all columns in the sys.columns view, plus the
is_masked and masking_function columns, indicating if the column is masked, and if so, what masking
function is defined. This view only shows the columns on which there is a masking function applied.

SELECT c.name, tbl.name as table_name, c.is_masked, c.masking_function


FROM sys.masked_columns AS c
JOIN sys.tables AS tbl
ON c.[object_id] = tbl.[object_id]
WHERE is_masked = 1;

Limitations and Restrictions


A masking rule cannot be defined for the following column types:
Encrypted columns (Always Encrypted)
FILESTREAM
COLUMN_SET or a sparse column that is part of a column set.
A mask cannot be configured on a computed column, but if the computed column depends on a column
with a MASK, then the computed column will return masked data.
A column with data masking cannot be a key for a FULLTEXT index.
A column in a PolyBase external table.
For users without the UNMASK permission, the deprecated READTEXT , UPDATETEXT , and WRITETEXT
statements do not function properly on a column configured for Dynamic Data Masking.
Adding a dynamic data mask is implemented as a schema change on the underlying table, and therefore cannot
be performed on a column with dependencies. To work around this restriction, you can first remove the
dependency, then add the dynamic data mask and then re-create the dependency. For example, if the
dependency is due to an index dependent on that column, you can drop the index, then add the mask, and then
re-create the dependent index.
Whenever you project an expression referencing a column for which a data masking function is defined, the
expression will also be masked. Regardless of the function (default, email, random, custom string) used to mask
the referenced column, the resulting expression will always be masked with the default function.

Security Note: Bypassing masking using inference or brute-force


techniques
Dynamic Data Masking is designed to simplify application development by limiting data exposure in a set of
pre-defined queries used by the application. While Dynamic Data Masking can also be useful to prevent
accidental exposure of sensitive data when accessing a production database directly, it is important to note that
unprivileged users with ad-hoc query permissions can apply techniques to gain access to the actual data. If there
is a need to grant such ad-hoc access, Auditing should be used to monitor all database activity and mitigate this
scenario.
As an example, consider a database principal that has sufficient privileges to run ad-hoc queries on the database,
and tries to 'guess' the underlying data and ultimately infer the actual values. Assume that we have a mask
defined on the [Employee].[Salary] column, and this user connects directly to the database and starts guessing
values, eventually inferring the [Salary] value of a set of Employees:

SELECT ID, Name, Salary FROM Employees


WHERE Salary > 99999 and Salary < 100001;

ID NAME SA L A RY

62543 Jane Doe 0

91245 John Smith 0

This demonstrates that Dynamic Data Masking should not be used as an isolated measure to fully secure
sensitive data from users running ad-hoc queries on the database. It is appropriate for preventing accidental
sensitive data exposure, but will not protect against malicious intent to infer the underlying data.
It is important to properly manage the permissions on the database, and to always follow the minimal required
permissions principle. Also, remember to have Auditing enabled to track all activities taking place on the
database.

Examples
Creating a Dynamic Data Mask
The following example creates a table with three different types of dynamic data masks. The example populates
the table, and selects to show the result.
-- schema to contain user tables
CREATE SCHEMA Data;
GO

-- table with masked columns


CREATE TABLE Data.Membership(
MemberID int IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,
FirstName varchar(100) MASKED WITH (FUNCTION = 'partial(1, "xxxxx", 1)') NULL,
LastName varchar(100) NOT NULL,
Phone varchar(12) MASKED WITH (FUNCTION = 'default()') NULL,
Email varchar(100) MASKED WITH (FUNCTION = 'email()') NOT NULL,
DiscountCode smallint MASKED WITH (FUNCTION = 'random(1, 100)') NULL
);

-- inserting sample data


INSERT INTO Data.Membership (FirstName, LastName, Phone, Email, DiscountCode)
VALUES
('Roberto', 'Tamburello', '555.123.4567', 'RTamburello@contoso.com', 10),
('Janice', 'Galvin', '555.123.4568', 'JGalvin@contoso.com.co', 5),
('Shakti', 'Menon', '555.123.4570', 'SMenon@contoso.net', 50),
('Zheng', 'Mu', '555.123.4569', 'ZMu@contoso.net', 40);

A new user is created and granted the SELECT permission on the schema where the table resides. Queries
executed as the MaskingTestUser view masked data.

CREATE USER MaskingTestUser WITHOUT LOGIN;

GRANT SELECT ON SCHEMA::Data TO MaskingTestUser;

-- impersonate for testing:


EXECUTE AS USER = 'MaskingTestUser';

SELECT * FROM Data.Membership;

REVERT;

The result demonstrates the masks by changing the data from


1 Roberto Tamburello 555.123.4567 RTamburello@contoso.com 10

into
1 Rxxxxxo Tamburello xxxx RXXX@XXXX.com 91

where the number in DiscountCode is random for every query result


Adding or Editing a Mask on an Existing Column
Use the ALTER TABLE statement to add a mask to an existing column in the table, or to edit the mask on that
column.
The following example adds a masking function to the LastName column:

ALTER TABLE Data.Membership


ALTER COLUMN LastName ADD MASKED WITH (FUNCTION = 'partial(2,"xxxx",0)');

The following example changes a masking function on the LastName column:


ALTER TABLE Data.Membership
ALTER COLUMN LastName varchar(100) MASKED WITH (FUNCTION = 'default()');

Granting Permissions to View Unmasked Data


Granting the UNMASK permission allows MaskingTestUser to see the data unmasked.

GRANT UNMASK TO MaskingTestUser;

EXECUTE AS USER = 'MaskingTestUser';

SELECT * FROM Data.Membership;

REVERT;

-- Removing the UNMASK permission


REVOKE UNMASK TO MaskingTestUser;

Dropping a Dynamic Data Mask


The following statement drops the mask on the LastName column created in the previous example:

ALTER TABLE Data.Membership


ALTER COLUMN LastName DROP MASKED;

See Also
CREATE TABLE (Transact-SQL)
ALTER TABLE (Transact-SQL)
column_definition (Transact-SQL)
sys.masked_columns (Transact-SQL)
Get started with SQL Database Dynamic Data Masking (Azure portal)
SQL Server Express LocalDB Reference
11/2/2020 • 2 minutes to read • Edit Online

Applies to: SQL Server (all supported versions)


This section contains information about the SQL Server Express LocalDB:
SQL Server Express LocalDB Error Message Reference
SQL Server Express LocalDB Instance API Reference

Code Sample
The following sample demonstrates the LocalDB API. Make sure that LocalDB is installed on the computer before
running this sample. You can install LocalDB from setup in the SQL Server 2019 (15.x) Express.

// compile with: Advapi32.lib


#include <SDKDDKVer.h>
#include <stdio.h>

// To use LocalDB API, you must define LOCALDB_DEFINE_PROXY_FUNCTIONS before you include sqlncli.h in one
(and only one) of the
// source files in your program. LOCALDB_DEFINE_PROXY_FUNCTIONS causes code to be generated that binds to
the LocalDB API at runtime.

#define LOCALDB_DEFINE_PROXY_FUNCTIONS
#include "sqlncli.h"

HRESULT CreateAndStartLocalDBInstance(PWCHAR wszVersion, PWCHAR wszInstanceName) {


HRESULT hr;

if (SUCCEEDED(hr = LocalDBCreateInstance(wszVersion, wszInstanceName, 0)))


hr = LocalDBStartInstance(wszInstanceName, 0, NULL, NULL);

return hr;
}

HRESULT StopAndDeleteLocalDBInstance(PWCHAR wszInstanceName) {


HRESULT hr;

if (SUCCEEDED(hr = LocalDBStopInstance(wszInstanceName, 0, 30))) // 30 seconds timeout


hr = LocalDBDeleteInstance(wszInstanceName, 0);

return hr;
}

void PrintLocalDBError(HRESULT hr) {


HRESULT hrError;
WCHAR wszMessage[1024];
DWORD dwMessage = 1024;

if (hr == LOCALDB_ERROR_NOT_INSTALLED)
wprintf(L"Local DB is not installed.\n");

else if (hr == LOCALDB_ERROR_CANNOT_LOAD_RESOURCES)


wprintf(L"Cannot load resources for Local DB API DLL. Local DB installation is corrupted.\n");

else if (FAILED(hrError = LocalDBFormatMessage(hr, 0, 0, wszMessage, &dwMessage)))


wprintf(L"Cannot format an error message for a Local DB error code: %#x. LocalDBFormatMessage
returned: %#x\n", hr, hrError);
else
wprintf(L"%s\n", wszMessage);
}

HRESULT PrintLocalDBInstances() {
HRESULT hr;
DWORD dwNumberOfInstances = 0;

if (FAILED(hr = LocalDBGetInstances(NULL, &dwNumberOfInstances)))


if (hr != LOCALDB_ERROR_INSUFFICIENT_BUFFER)
return hr;

PTLocalDBInstanceName localDBInstnces = (PTLocalDBInstanceName) malloc(dwNumberOfInstances *


sizeof(TLocalDBInstanceName));
if (localDBInstnces == NULL) {
return HRESULT_FROM_WIN32(ERROR_OUTOFMEMORY);
}

if (FAILED(hr = LocalDBGetInstances(localDBInstnces, &dwNumberOfInstances))) {


free(localDBInstnces);
return hr;
}

for (DWORD i = 0; i < dwNumberOfInstances; i++) {


LocalDBInstanceInfo localDBInstanceInfo;

if (FAILED(hr = LocalDBGetInstanceInfo(localDBInstnces[i], &localDBInstanceInfo,


sizeof(localDBInstanceInfo)))) {
free(localDBInstnces);
return hr;
}

wprintf(L"Name: %s State: %s Version: %u.%u.%u.%u\n",


localDBInstnces[i],
localDBInstanceInfo.bIsRunning ? L"running" : L"stopped",
localDBInstanceInfo.dwMajor,
localDBInstanceInfo.dwMinor,
localDBInstanceInfo.dwBuild,
localDBInstanceInfo.dwRevision);
}

free(localDBInstnces);
return S_OK;
}

int main() {
HRESULT hr;

WCHAR wszInstanceName[] = L"Contoso";


WCHAR wszVersion[] = L"11.0";

if (FAILED(hr = CreateAndStartLocalDBInstance(wszVersion, wszInstanceName)))


PrintLocalDBError(hr);

PrintLocalDBInstances();

if (FAILED(hr = StopAndDeleteLocalDBInstance(wszInstanceName)))
PrintLocalDBError(hr);

PrintLocalDBInstances();
}
SqlToolsVSNativeHelpers
3/5/2021 • 2 minutes to read • Edit Online

Applies to: SQL Server (all supported versions) Azure SQL Database
Library that supports SQL Server functionality in Visual Studio.

Syntax
BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpReserved*/)

Return Value
A Boolean value, True if the DLL entry point initialized properly, otherwise False .

See Also
FrameWindowVisible
SqlToolsVSNativeHelpers - FrameWindowVisible
5/25/2021 • 2 minutes to read • Edit Online

Applies to: SQL Server (all supported versions) Azure SQL Database
Property that specifies whether a given window frame is visible. The helper method is used from managed code.

Syntax
BOOL WINAPI IsFrameWindowVisible(IVsWindowFrame* frame)
{
if (NULL == frame)
{
return FALSE;
}

return S_OK == frame->IsVisible();


}

Parameters
frame
IVsWindowFrame* pointer to a Visual Studio WindowFrame.

Property Value/Return Value


A Boolean value that specifies whether the window frame specified by frame is visible.

See Also
SqlToolsVSNativeHelpers
sys.edge_constraint_clauses (Transact-SQL)
3/8/2021 • 2 minutes to read • Edit Online

Applies to: SQL Server 2019 (15.x)


Contains one row per clause of an edge constraint.

C O L UM N N A M E DATA T Y P E DESC RIP T IO N

object_id int object_id of the edge constraint.

from_object_id int object_id of the FROM node table.

to_object_id int object_id of the TO node table.

clause_number int Internally generated integer index of


the clause.

Permissions
The visibility of the metadata in catalog views is limited to securables that a user either owns or on which the
user has been granted some permission. For more information, see Metadata Visibility Configuration.

See Also
Object Catalog Views (Transact-SQL)
Catalog Views (Transact-SQL)
Querying the SQL Server System Catalog FAQ
sys.edge_constraints (Transact-SQL)
3/8/2021 • 2 minutes to read • Edit Online

Applies to: SQL Server 2019 (15.x)


Contains one row for each object that is an edge constraint.

C O L UM N N A M E DATA T Y P E DESC RIP T IO N

<Columns inherited from For a list of columns that this view


sys.objects> inherits, see sys.objects (Transact-SQL).

is_disabled bit 1 = Edge constraint is disbled.

0 = Edge constraint is enabled.

is_not_trusted bit 1 = Edge constraint has not been


verified by the system.

0 = Edge constraint has been verified


by the system.

delete_referential_action tinyint Referential action that was defined on


this edge constraint.

0 = No Action.

delete_referential_action_desc nvarchar(60) Description of the referential action


that was defined on this edge
constraint.

NO_ACTION

is_system_named bit 1 = Edge constraint name was


generated by the system.

0 = Edge constraint name was


supplied by the user.

Permissions
The visibility of the metadata in catalog views is limited to securables that a user either owns or on which the
user has been granted some permission. For more information, see Metadata Visibility Configuration.

See Also
Object Catalog Views (Transact-SQL)
Catalog Views (Transact-SQL)
Querying the SQL Server System Catalog FAQ
sys.dm_db_tuning_recommendations (Transact-SQL)
3/25/2021 • 6 minutes to read • Edit Online

Applies to: SQL Server 2017 (14.x) and later Azure SQL Database
Returns detailed information about tuning recommendations.
In Azure SQL Database, dynamic management views cannot expose information that would impact database
containment or expose information about other databases the user has access to. To avoid exposing this
information, every row that contains data that doesn't belong to the connected tenant is filtered out.

C O L UM N N A M E DATA T Y P E DESC RIP T IO N

name nvarchar(4000) Unique name of recommendation.

type nvarchar(4000) The name of the automatic tuning


option that produced the
recommendation, for example,
FORCE_LAST_GOOD_PLAN

reason nvarchar(4000) Reason why this recommendation was


provided.

valid_since datetime2 The first time this recommendation


was generated.

last_refresh datetime2 The last time this recommendation was


generated.

state nvarchar(4000) JSON document that describes the


state of the recommendation.
Following fields are available:
- currentValue - current state of the
recommendation.
- reason - constant that describes
why the recommendation is in the
current state.

is_executable_action bit 1 = The recommendation can be


executed against the database via
Transact-SQL script.
0 = The recommendation cannot be
executed against the database (for
example: information only or reverted
recommendation)

is_rever table_action bit 1 = The recommendation can be


automatically monitored and reverted
by Database engine.
0 = The recommendation cannot be
automatically monitored and reverted.
Most "executable" actions will be
"revertable".
C O L UM N N A M E DATA T Y P E DESC RIP T IO N

execute_action_star t_time datetime2 Date the recommendation is applied.

execute_action_duration time Duration of the execute action.

execute_action_initiated_by nvarchar(4000) User = User manually forced plan in


the recommendation.
System = System automatically
applied recommendation.

execute_action_initiated_time datetime2 Date the recommendation was applied.

rever t_action_star t_time datetime2 Date the recommendation was


reverted.

rever t_action_duration time Duration of the revert action.

rever t_action_initiated_by nvarchar(4000) User = User manually unforced


recommended plan.
System = System automatically
reverted recommendation.

rever t_action_initiated_time datetime2 Date the recommendation was


reverted.

score int Estimated value/impact for this


recommendation on the 0-100 scale
(the larger the better)
C O L UM N N A M E DATA T Y P E DESC RIP T IO N

details nvarchar(max) JSON document that contains more


details about the recommendation.
Following fields are available:

planForceDetails
- queryId - query_id of the
regressed query.
- regressedPlanId - plan_id of the
regressed plan.
- regressedPlanExecutionCount -
Number of executions of the query
with regressed plan before the
regression is detected.
- regressedPlanAbortedCount -
Number of detected errors during the
execution of the regressed plan.
- regressedPlanCpuTimeAverage -
Average CPU time (in micro seconds)
consumed by the regressed query
before the regression is detected.
- regressedPlanCpuTimeStddev -
Standard deviation of CPU time
consumed by the regressed query
before the regression is detected.
- recommendedPlanId - plan_id of the
plan that should be forced.
- recommendedPlanExecutionCount -
Number of executions of the query
with the plan that should be forced
before the regression is detected.
- recommendedPlanAbortedCount -
Number of detected errors during the
execution of the plan that should be
forced.
- recommendedPlanCpuTimeAverage -
Average CPU time (in micro seconds)
consumed by the query executed with
the plan that should be forced
(calculated before the regression is
detected).
- recommendedPlanCpuTimeStddev
Standard deviation of CPU time
consumed by the regressed query
before the regression is detected.

implementationDetails
- method - The method that should
be used to correct the regression.
Value is always TSql .
- script - Transact-SQL script that
should be executed to force the
recommended plan.

Remarks
Information returned by sys.dm_db_tuning_recommendations is updated when database engine identifies potential
query performance regression, and is not persisted. Recommendations are kept only until the database engine
is restarted. Use the sqlserver_start_time column in sys.dm_os_sys_info to find the last database engine
startup time. Database administrators should periodically make backup copies of the tuning recommendation if
they want to keep it after server recycling.
The currentValue field in the state column might have the following values:

STAT US DESC RIP T IO N

Active Recommendation is active and not yet applied. User can take
recommendation script and execute it manually.

Verifying Recommendation is applied by Database Engine and internal


verification process compares performance of the forced plan
with the regressed plan.

Success Recommendation is successfully applied.

Reverted Recommendation is reverted because there are no significant


performance gains.

Expired Recommendation has expired and cannot be applied


anymore.

JSON document in state column contains the reason that describes why is the recommendation in the current
state. Values in the reason field might be:

REA SO N DESC RIP T IO N

SchemaChanged Recommendation expired because the schema of a


referenced table is changed. New recommendation will be
created if a new query plan regression is detected on the
new schema.

StatisticsChanged Recommendation expired due to the statistic change on a


referenced table. New recommendation will be created if a
new query plan regression is detected based on new
statistics.

ForcingFailed Recommended plan cannot be forced on a query. Find the


last_force_failure_reason in the sys.query_store_plan
view to find the reason of the failure.

AutomaticTuningOptionDisabled FORCE_LAST_GOOD_PLAN option is disabled by the user


during verification process. Enable FORCE_LAST_GOOD_PLAN
option using ALTER DATABASE SET AUTOMATIC_TUNING
(Transact-SQL) statement or force the plan manually using
the script in the details column.

UnsupportedStatementType Plan cannot be forced on the query. Examples of


unsupported queries are cursors and INSERT BULK
statement.

LastGoodPlanForced Recommendation is successfully applied.


REA SO N DESC RIP T IO N

AutomaticTuningOptionNotEnabled Database Engine identified potential performance regression,


but the FORCE_LAST_GOOD_PLAN option is not enabled - see
ALTER DATABASE SET AUTOMATIC_TUNING (Transact-SQL).
Apply recommendation manually or enable
FORCE_LAST_GOOD_PLAN option.

VerificationAborted Verification process is aborted due to the restart or Query


Store cleanup.

VerificationForcedQueryRecompile Query is recompiled because there is no significant


performance improvement.

PlanForcedByUser User manually forced the plan using


sp_query_store_force_plan (Transact-SQL) procedure.
Database engine will not apply the recommendation if user
explicitly decided to force some plan.

PlanUnforcedByUser User manually unforced the plan using


sp_query_store_unforce_plan (Transact-SQL) procedure. Since
the user explicitly reverted the recommended plan, database
engine will keep using the current plan and generate a new
recommendation if some plan regression occurs in future.

UserForcedDifferentPlan User manually forced different plan using


sp_query_store_force_plan (Transact-SQL) procedure.
Database engine will not apply the recommendation if user
explicitly decided to force some plan.

TempTableChanged A temporary table that was used in the plan is changed.

Statistic in the details column do not show runtime plan statistics (for example, current CPU time). The
recommendation details are taken at the time of regression detection and describe why Database Engine
identified performance regression. Use regressedPlanId and recommendedPlanId to query Query Store catalog
views to find exact runtime plan statistics.

Examples of using tuning recommendations information


Example 1
The following gets the generated Transact-SQL script that forces a good plan for any given query:

SELECT name, reason, score,


JSON_VALUE(details, '$.implementationDetails.script') AS script,
details.*
FROM sys.dm_db_tuning_recommendations
CROSS APPLY OPENJSON(details, '$.planForceDetails')
WITH ( [query_id] int '$.queryId',
regressed_plan_id int '$.regressedPlanId',
last_good_plan_id int '$.recommendedPlanId') AS details
WHERE JSON_VALUE(state, '$.currentValue') = 'Active';

Example 2
The following gets the generated Transact-SQL script that forces a good plan for any given query and additional
information about the estimated gain:
SELECT reason, score,
script = JSON_VALUE(details, '$.implementationDetails.script'),
planForceDetails.*,
estimated_gain = (regressedPlanExecutionCount + recommendedPlanExecutionCount)
*(regressedPlanCpuTimeAverage - recommendedPlanCpuTimeAverage)/1000000,
error_prone = IIF(regressedPlanErrorCount > recommendedPlanErrorCount, 'YES','NO')
FROM sys.dm_db_tuning_recommendations
CROSS APPLY OPENJSON (Details, '$.planForceDetails')
WITH ( [query_id] int '$.queryId',
regressedPlanId int '$.regressedPlanId',
recommendedPlanId int '$.recommendedPlanId',
regressedPlanErrorCount int,
recommendedPlanErrorCount int,
regressedPlanExecutionCount int,
regressedPlanCpuTimeAverage float,
recommendedPlanExecutionCount int,
recommendedPlanCpuTimeAverage float
) AS planForceDetails;

Example 3
The following gets the generated Transact-SQL script that forces a good plan for any given query and additional
information that includes the query text and the query plans stored in Query Store:

WITH cte_db_tuning_recommendations
AS (SELECT reason,
score,
query_id,
regressedPlanId,
recommendedPlanId,
current_state = JSON_VALUE(state, '$.currentValue'),
current_state_reason = JSON_VALUE(state, '$.reason'),
script = JSON_VALUE(details, '$.implementationDetails.script'),
estimated_gain = (regressedPlanExecutionCount + recommendedPlanExecutionCount)
* (regressedPlanCpuTimeAverage - recommendedPlanCpuTimeAverage)/1000000,
error_prone = IIF(regressedPlanErrorCount > recommendedPlanErrorCount, 'YES','NO')
FROM sys.dm_db_tuning_recommendations
CROSS APPLY OPENJSON(Details, '$.planForceDetails')
WITH ([query_id] int '$.queryId',
regressedPlanId int '$.regressedPlanId',
recommendedPlanId int '$.recommendedPlanId',
regressedPlanErrorCount int,
recommendedPlanErrorCount int,
regressedPlanExecutionCount int,
regressedPlanCpuTimeAverage float,
recommendedPlanExecutionCount int,
recommendedPlanCpuTimeAverage float
)
)
SELECT qsq.query_id,
qsqt.query_sql_text,
dtr.*,
CAST(rp.query_plan AS XML) AS RegressedPlan,
CAST(sp.query_plan AS XML) AS SuggestedPlan
FROM cte_db_tuning_recommendations AS dtr
INNER JOIN sys.query_store_plan AS rp ON rp.query_id = dtr.query_id
AND rp.plan_id = dtr.regressedPlanId
INNER JOIN sys.query_store_plan AS sp ON sp.query_id = dtr.query_id
AND sp.plan_id = dtr.recommendedPlanId
INNER JOIN sys.query_store_query AS qsq ON qsq.query_id = rp.query_id
INNER JOIN sys.query_store_query_text AS qsqt ON qsqt.query_text_id = qsq.query_text_id;

For more information about JSON functions that can be used to query values in the recommendation view, see
JSON Support in Database Engine.
Permissions
Requires VIEW SERVER STATE permission in SQL Server.
Requires the VIEW DATABASE STATE permission for the database in Azure SQL Database.

See also
Automatic Tuning
sys.database_automatic_tuning_options (Transact-SQL)
sys.database_query_store_options (Transact-SQL)
JSON Support sys.dm_os_sys_info (Transact-SQL)
sp_enum_sqlagent_subsystems (Transact-SQL)
3/5/2021 • 2 minutes to read • Edit Online

Applies to: SQL Server (all supported versions)


Lists the SQL Server Agent subsystems.
Transact-SQL Syntax Conventions

Syntax
sp_enum_sqlagent_subsystems

Arguments
None

Return Code Values


0 (success) or 1 (Failure)

Result Sets
C O L UM N N A M E DATA T Y P E DESC RIP T IO N

subsystem nvarchar(40) Name of the subsystem.

description nvarchar(512) Description of the subsystem.

subsystem_dll nvarchar(510) DLL module that contains the


subsystem.

agent_exe nvarchar(510) Executable module that is used by the


subsystem.

star t_entr y_point nvarchar(30) Procedure that SQL Server Agent calls
during job step execution.

event_entr y_point nvarchar(30) Procedure that SQL Server Agent calls


during job step execution.

stop_entr y_point nvarchar(30) Procedure that SQL Server Agent calls


during job step execution.

max_worker_threads int Maximum number of threads SQL


Server Agent will start for this
subsystem.

subsystem_id int Identifier for the subsystem.


Remarks
This procedure lists the subsystems available in the instance.

Permissions
By default, members of the sysadmin fixed server role can execute this stored procedure. Other users must be
granted the SQL AgentOperatorRole fixed database role in the msdb database.
For details about SQL AgentOperatorRole , see SQL Server Agent Fixed Database Roles.

See Also
Implement SQL Server Agent Security
sp_add_jobstep (Transact-SQL)
sysmail_delete_principalprofile_sp (Transact-SQL)
3/5/2021 • 2 minutes to read • Edit Online

Applies to: SQL Server (all supported versions)


Removes permission for a database user or role to use a public or private Database Mail profile.
Transact-SQL Syntax Conventions

Syntax
sysmail_delete_principalprofile_sp { [ @principal_id = ] principal_id | [ @principal_name = ]
'principal_name' } ,
{ [ @profile_id = ] profile_id | [ @profile_name = ] 'profile_name' }

Arguments
[ @principal_id = ] principal_id Is the ID of the database user or role in the msdb database for the
association to delete. principal_id is int , with a default of NULL. To make a public profile into a private profile,
provide the principal ID 0 or the principal name 'public' . Either principal_id or principal_name must be
specified.
[ @principal_name = ] 'principal_name' Is the name of the database user or role in the msdb database for the
association to delete. principal_name is sysname , with a default of NULL. To make a public profile into a private
profile, provide the principal ID 0 or the principal name 'public' . Either principal_id or principal_name must be
specified.
[ @profile_id = ] profile_id Is the ID of the profile for the association to delete. profile_id is int , with a default
of NULL. Either profile_id or profile_name must be specified.
[ @profile_name = ] 'profile_name' Is the name of the profile for the association to delete. profile_name is
sysname , with a default of NULL. Either profile_id or profile_name must be specified.

Return Code Values


0 (success) or 1 (failure)

Remarks
To make a public profile into a private profile, provide 'public' for the principal name or 0 for the principal id.
Use caution when removing permissions for the default private profile for a user or the default public profile.
When no default profile is available, sp_send_dbmail requires the name of a profile as an argument. Therefore,
removing a default profile may cause calls to sp_send_dbmail to fail. For more information, see
sp_send_dbmail (Transact-SQL).
The stored procedure sysmail_delete_principalprofile_sp is in the msdb database and is owned by the dbo
schema. The procedure must be executed with a three-part name if the current database is not msdb .

Permissions
Execute permissions for this procedure default to members of the sysadmin fixed server role.

Examples
The following example shows deleting the association between the profile AdventureWorks Administrator
and the login ApplicationUser in the msdb database.

EXECUTE msdb.dbo.sysmail_delete_principalprofile_sp
@principal_name = 'ApplicationUser',
@profile_name = 'AdventureWorks Administrator' ;

See Also
Database Mail
Database Mail Configuration Objects
Database Mail Stored Procedures (Transact-SQL)
Reporting Services WMI Provider Library Reference
(SSRS)
11/2/2020 • 2 minutes to read • Edit Online

The Reporting Services Windows Management Instrumentation (WMI) provider supports WMI operations that
enable you to write scripts and code to modify settings of the report server and Report Manager.
For example, if you want to change whether integrated security is used when the report server connects to the
report server database, create an instance of the MSReportServer_ConfigurationSetting class and use the
DatabaseIntegratedSecurity property of the of the report server instance. The classes shown in the following
table represent Reporting Services components. The classes are defined in either the
root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13 or the
root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin namespaces. Each of the classes
support read and write operations. Create operations are not supported.

Classes
MSReportServer_Instance Class
Provides basic information required for a client to connect to an installed report server.
MSReportServer_ConfigurationSetting Class
Represents the installation and run-time parameters of a report server instance. These parameters are stored in
the configuration file for the report server.
For more information about WMI operations, see the WMI SDK documentation included with the Microsoft .NET
Framework SDK.

See Also
Access the Reporting Services WMI Provider
Technical Reference (SSRS)
MSReportServer_Instance Class
11/2/2020 • 2 minutes to read • Edit Online

The MSReportServer_Instance class provides basic information required for a client to connect to an installed
report server.
For a list of all members of this type, see MSReportServer_Instance Members

Syntax
Public Class MSReportServer_Instance

public class MSReportServer_Instance

Thread Safety
Any public static (Shared in Visual Basic) members of this type are safe for multithreaded operations. Any
instance members are not guaranteed to be thread-safe.

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13
Platform: Windows Server 2003, Datacenter Edition; Windows Server 2003, Enterprise Edition; Windows
Server 2003, Standard Edition; Windows Vista; Windows XP Professional with Service Pack 2 (SP2) or Service
Pack 1 (SP1); or Windows 2000 (all versions)

See Also
MSReportServer_Instance Members
MSReportServer_Instance Members
11/2/2020 • 2 minutes to read • Edit Online

The MSReportServer_Instance class provides basic information required for a client to connect to an installed
report server.

Public Properties
P RO P ERT Y DESC RIP T IO N

EditionID Returns the edition of the report server.

EditionName Returns the human readable name of the report server


edition.

InstanceID This object supports the Reporting Services infrastructure


and is not intended to be used directly from your code.

InstanceName Returns the name of a report server instance on a specific


computer. Read-only.

IsSharePointIntegrated Indicates whether the report server is configured for


SharePoint integrate mode.

Version Returns the version of the report server.

Public Methods
M ET H O D DESC RIP T IO N

GetReportServerUrls Method (WMI Lists URLs users can use to access the report server and
MSReportServer_Instance) report manager.
MSReportServer_Instance Properties
11/2/2020 • 2 minutes to read • Edit Online

The MSReportServer_Instance class provides basic information required for a client to connect to an installed
report server.

Public Properties
P RO P ERT Y DESC RIP T IO N

EditionID Property (WMI MSReportServer_Instance) Returns the edition of the report server.

EditionName Property (WMI MSReportServer_Instance) Returns the human readable name of the report server
edition.

InstanceID This object supports the Reporting Services infrastructure


and is not intended to be used directly from your code.

InstanceName Returns the name of a report server instance on a specific


computer. Read-only.

IsSharePointIntegrated Indicates whether the report server is configured for


SharePoint integrate mode.

Version Returns the version of the report server.

See Also
MSReportServer_Instance Members
MSReportServer_Instance Properties - EditionID
11/2/2020 • 2 minutes to read • Edit Online

Returns the edition of the report server. Read-only.

Syntax
Public Dim EditionID As UInt

public uint EditionID;

Property Value
A uint that contains the edition of the report server.

Example Code
MSReportServer_ConfigurationSetting Class

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13

See Also
MSReportServer_Instance Members
MSReportServer_Instance Properties - EditionName
11/2/2020 • 2 minutes to read • Edit Online

Returns the human readable name of the report server edition. Read-only.

Syntax
Public Dim EditionName As String

public string EditionName;

Property Value
A string that contains human readable name of the report server edition.

Example Code
MSReportServer_ConfigurationSetting Class

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13

See Also
MSReportServer_Instance Members
MSReportServer_Instance Properties - InstanceID
11/2/2020 • 2 minutes to read • Edit Online

This object supports the Reporting Services infrastructure and is not intended to be used directly from your
code.

Syntax
public Dim InstanceID As String

public string InstanceID;

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13

See Also
MSReportServer_Instance Members
MSReportServer_Instance Properties -
InstanceName
11/2/2020 • 2 minutes to read • Edit Online

Returns the name of a report server instance on a specific computer. Read-only.

Syntax
Public Dim InstanceName As String

public string InstanceName;

Property Value
A String object that represents the name of the report server instance.

Example Code
MSReportServer_ConfigurationSetting Class

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13

See Also
MSReportServer_Instance Members
MSReportServer_Instance Properties -
IsSharePointIntegrated
11/2/2020 • 2 minutes to read • Edit Online

Specifies whether the report server is in SharePoint integrated mode. Beginning in SQL Server 2012 (11.x), this
property always returns False because in SharePoint mode, Reporting Services instances are SharePoint shared
services and are not controlled by WMI providers.

Syntax
Public Dim IsSharePointIntegrated As Boolean

public Boolean IsSharePointIntegrated;

Property Values
A Boolean value that indicates whether the report server is in SharePoint integrated mode.

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13

See Also
MSReportServer_Instance Members
MSReportServer_ConfigurationSetting Class
MSReportServer_Instance Properties - Version
11/2/2020 • 2 minutes to read • Edit Online

Returns the version of the report server in the format Major.Minor.Build.Revision. Read-only.

Syntax
Public Dim Version As String

public string Version;

Property Value
A string that contains the version of the report server.

Example Code
MSReportServer_ConfigurationSetting Class

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13

See Also
MSReportServer_Instance Members
MSReportServer_Instance Methods
11/2/2020 • 2 minutes to read • Edit Online

The MSReportServer_Instance class provides basic information required for a client to connect to an installed
report server.

Public Methods
M ET H O D DESC RIP T IO N

GetReportServerUrls Method (WMI Lists URLs users can use to access the report server and the
MSReportServer_Instance) web portal.

See Also
MSReportServer_Instance Members
MSReportServer_Instance Methods -
GetReportServerUrls
11/2/2020 • 2 minutes to read • Edit Online

Returns a list of URLs users can use to access the report server and the web portal.

Syntax
Public Sub GetReportServerUrls (ByRef ApplicationName() As String, ByRef URLs()_
As String, ByRef Length As Int32, ByRef HRESULT As Int32)

public void GetReportServerUrls(out string[] applicationName,


out string[] URLs, out int length, out int HRESULT);

Parameters
ApplicationName[]
An array that contains the applications that are installed. Values are either Repor tSer verWebSer vice or
Repor tSer verWebApp .
URLs[]
An array that contains the successfully registered Urls.
Length
An integer value that contains the length of the arrays returned.
HRESULT
A value that indicates success or an error code.

Return Values
Remarks
Methods exposed by WMI management objects are called through the InvokeMethod function. For more
information, please see "Executing Methods on Management Objects" in the Microsoft .NET Framework WMI
documentation.

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13

See Also
MSReportServer_ConfigurationSetting Members
MSReportServer_ConfigurationSetting Class
11/2/2020 • 2 minutes to read • Edit Online

Represents the installation and runtime parameters of a report server instance. These parameters are stored in
the configuration file for the report server.
For a list of all members of this type, see MSReportServer_ConfigurationSetting Members.

Syntax
Public Class MSReportServer_ConfigurationSetting

public class MSReportServer_ConfigurationSetting

Thread Safety
Any public static (Shared in Visual Basic) members of this type are safe for multithreaded operations. Any
instance members are not guaranteed to be thread-safe.

Example
To run the following code, add your server name in place of each <servername>. Update the path to point to
your installation location, if it is not the default. The following code example iterates through each property in
the MSReportServer_ConfigurationSetting class, printing the name of each property and its value to the
console.
Imports System
Imports System.Management
Imports System.IO

Module Module1

Sub Main()
Const machineWmiNamespace As String = "\\<servername>\root\Microsoft\SqlServer\ReportServer\
<InstanceName>\v10"
Const wmiNamespace As String = "\\<servername>\root\Microsoft\SqlServer\ReportServer\
<InstanceName>\v10:MSReportServer_ConfigurationSetting"

Dim connOptions As New ConnectionOptions()


connOptions.Authentication = AuthenticationLevel.Default

Dim getOptions As New ObjectGetOptions()


getOptions.Timeout = New System.TimeSpan(0, 0, 30)

Dim machineScope As New ManagementScope(machineWmiNamespace, connOptions)


machineScope.Connect()

Dim scope As ManagementScope = Nothing

scope = New ManagementScope(wmiNamespace, connOptions)


scope.Connect()

Dim path As New ManagementPath("MSReportServer_Instance")


Dim serverClass As New ManagementClass(scope, path, getOptions)

serverClass.Get()

Dim instances As ManagementObjectCollection = serverClass.GetInstances()

For Each instance As ManagementObject In instances

Console.WriteLine("\n-----\nSERVER STATUS:\n")

Dim serverStatusObject As ManagementBaseObject = instance.InvokeMethod("GetServerStatus",


Nothing, Nothing)

Dim t As Integer = serverStatusObject("Length")

Dim namesArray As Array = serverStatusObject("Names")


Dim descArray As Array = serverStatusObject("Descriptions")
Dim statusArray As Array = serverStatusObject("Statuses")
Dim severityArray As Array = serverStatusObject("Severities")

Dim i As Integer

For i = 0 To t - 1
Console.WriteLine("{0} - {1}", namesArray.GetValue(i), descArray.GetValue(i))
Console.WriteLine("Value: {0}, Severity: {1}", statusArray.GetValue(i),
severityArray.GetValue(i))
Next i

Next instance

End Sub

End Module
using System;
using System.Management;
using System.IO;
[assembly: CLSCompliant(true)]

class Class1
{
[STAThread]
static void Main(string[] args)
{
const string machineWmiNamespace = @"\\<servername>\root\Microsoft\SqlServer\ReportServer\
<InstanceName>\v10";
const string wmiNamespace = @"\\<servername>\root\Microsoft\SqlServer\ReportServer\
<InstanceName>\v10:MSReportServer_ConfigurationSetting";

ConnectionOptions connOptions = new ConnectionOptions();


connOptions.Authentication = AuthenticationLevel.Default;

ObjectGetOptions getOptions = new ObjectGetOptions();


getOptions.Timeout = new System.TimeSpan(0,0,30);

ManagementScope machineScope = new ManagementScope(machineWmiNamespace, connOptions);


machineScope.Connect();

ManagementScope scope = null;

scope = new ManagementScope(wmiNamespace, connOptions);


scope.Connect();

ManagementPath path = new ManagementPath("MSReportServer_Instance");


ManagementClass serverClass = new ManagementClass(scope, path, getOptions);

serverClass.Get();

ManagementObjectCollection instances = serverClass.GetInstances();

foreach (ManagementObject instance in instances)


{

Console.WriteLine("\n-----\nSERVER STATUS:\n");

ManagementBaseObject serverStatusObject = instance.InvokeMethod("GetServerStatus", null, null);

int t = (int)serverStatusObject["Length"];

Array namesArray = (Array)serverStatusObject["Names"];


Array descArray = (Array)serverStatusObject["Descriptions"];
Array statusArray = (Array)serverStatusObject["Statuses"];
Array severityArray = (Array)serverStatusObject["Severities"];

for (int i = 0; i < t; i++)


{
Console.WriteLine("{0} - {1}",
(string)namesArray.GetValue(i),(string)descArray.GetValue(i));
Console.WriteLine("Value: {0}, Severity: {1}",
(string)statusArray.GetValue(i), (int)severityArray.GetValue(i));
}

Console.ReadKey();
}
}
}

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin
Platform: Windows Server 2003, Datacenter Edition; Windows Server 2003, Enterprise Edition; Windows
Server 2003, Standard Edition; Windows Vista; Windows XP Professional with Service Pack 2 (SP2) or Service
Pack 1 (SP1); or Windows 2000 (all versions)

See Also
MSReportServer_ConfigurationSetting Members
MSReportServer_ConfigurationSetting Members
11/2/2020 • 4 minutes to read • Edit Online

The MSReportServer_ConfigurationSetting class contains the following properties and methods.

Public Properties
P RO P ERT Y DESC RIP T IO N

ConnectionPoolSize Returns the connection pool size used by the report server
to communicate with the SQL Server Database Engine
instance that hosts the report server database. Read-only.

DatabaseLogonAccount Specifies the login account used by the report server to


connect to the SQL Server Database Engine instance that
hosts the report server database. Read-only.

DatabaseLogonTimeout Specifies the number of seconds to wait before an attempt


to log on to the report server database fails. Read-only.

DatabaseLogonType Specifies whether the report server uses a Windows service


account, a Windows user account, or a SQL Server login to
access the report server database. Read-only.

DatabaseName Specifies the name of the SQL Server instance that hosts the
report server database.

DatabaseQueryTimeout Specifies the number of seconds that must elapse before the
command fails or times out. The report server is timing the
process against the report server database, not a data
source for the report.

DatabaseServerName Specifies the name of the server on which the report server
database is installed.

InstallationID Property Returns a unique identifier for a specific report server


instance.

InstanceName Specifies the name of a report server instance on a specific


computer.

IsInitialized Indicates whether the report server instance is initialized.


Read-only.

IsSharePointIntegrated Indicates whether the report server is configured for


SharePoint integrated mode.

IsWebServiceEnabled Indicates whether the Report Server Web service is enabled.


Read-only.

IsWindowsServiceEnabled Indicates whether the Report Server Windows service is


enabled. Read-only.
P RO P ERT Y DESC RIP T IO N

MachineAccountIdentity Property (WMI) Gets the machine account identity of the computer that the
report server is installed on.

PathName Specifies the installation path to a report server instance.

SecureConnectionLevel Returns the secure connection level specified in the


RSReportServer.config file.

SenderEmailAddress Gets the address used to send e-mail from the report server.
Read-only.

SendUsingSMTPServer Specifies whether the SendUsing property in the e-mail


configuration is set to TRUE.

SMTPServer Gets the SMTP server property from the


RSReportServer.config file. Read-only.

UnattendedExecutionAccount Specifies the login user account that the report server
impersonates when running reports unattended. Read-only.

Version Returns the version of the report server.

VirtualDirectoryReportManager Property (WMI Returns the virtual directory for the report manager
MSReportServer_ConfigurationSetting) application

VirtualDirectoryReportServer Property (WMI Returns the Virtual directory for the report server web
MSReportServer_ConfigurationSetting) service application.

WindowsServiceIdentityActual Returns the identity that the Report Server Windows service
is actually running under. Read-only.

WindowsServiceIdentityConfigured Returns the identity that the Report Server Windows service
was last configured to run under. Read-only.

Public Methods
M ET H O D DESC RIP T IO N

BackupEncryptionKey Backs up the encryption key for the instance. The encryption
key is stored encrypted with a password.

CreateSSLCertificateBinding Method (WMI Creates a TLS/SSL Certificate binding.


MSReportServer_ConfigurationSetting)

DeleteEncryptedInformation Deletes the encrypted information from the report server


database.

DeleteEncryptionKey Deletes the encryption keys from the report server


database.

GenerateDatabaseCreationScript Generates an SQL script that can be used to create the


report server database.
M ET H O D DESC RIP T IO N

GenerateDatabaseRightsScript Generates an SQL script that can be used to grant a user


permissions to the report server database.

GenerateDatabaseUpgradeScript Generates an SQL script that can be used to upgrade a


report server database.

GetAdminSiteUrl Method (WMI) Gets the absolute URL to the Central Administration Web
site.

GetDatabaseVersionDisplayName Gets the display name for a given report server database
version string.

InitializeReportServer Initializes the specified report server instance.

ListInstalledSharePointVersions Method (WMI) Returns a set of tokens that represent the versions of
Windows SharePoint Services Office SharePoint Server,
SharePoint Foundation 2010, or SharePoint Server 2010 that
are installed on the same computer as the report server.

ListIPAddresses Method (WMI Lists IP addresses for the computer.


MSReportServer_ConfigurationSetting)

ListReportServersInDatabase Returns a list of report server installations that are present in


the report server database, regardless of whether those
installations have access to secure information.

ListReservedURLs Method (WMI Lists URLs reserved for all applications on the report server.
MSReportServer_ConfigurationSetting)

ListSSLCertificateBindings Method (WMI Lists TLS/SSL certificate bindings that exist in HTTP.SYS and
MSReportServer_ConfigurationSetting) those expected from rsreportserver.config.

ListSSLCertificates Method (WMI Lists installed TLS/SSL certificates on the computer.


MSReportServer_ConfigurationSetting)

ReencryptSecureInformation Generates a new encryption key and re-encrypts all secure


information in the report server database using this new
key.

RemoveSSLCertificateBindings Method (WMI Remove a TLS/SSL Certificate binding.


MSReportServer_ConfigurationSetting)

RemoveUnattendedExecutionAccount Deletes the unattended execution account entry from the


report server configuration.

RemoveURL Method (WMI Removes a URL reserved for the report server.
MSReportServer_ConfigurationSetting)

ReserveURL Method (WMI Adds a URL reservation for a given application.


MSReportServer_ConfigurationSetting)

RestoreEncryptionKey Reapplies the specified encryption key to the report server


database.
M ET H O D DESC RIP T IO N

SetDatabaseConnection Sets the report server database connection to a particular


report server database.

SetDatabaseLogonTimeout Specifies the default time-out value for report server


database logon attempts.

SetDatabaseQueryTimeout Specifies the default time-out value for report server


database connections.

SetEmailConfiguration Configures the e-mail delivery extension used by the report


server to send e-mail.

SetSecureConnectionLevel Sets the secure connection level of the report server.

SetServiceState Turns the Report Server Windows and Web services on and
off.

SetUnattendedExecutionAccount Specifies the account used to run reports unattended.

SetVirtualDirectory Method (WMI Sets the virtual directory for an application.


MSReportServer_ConfigurationSetting)

SetWindowsServiceIdentity Makes the Report Server Windows service run as the


specified Windows user, and grants this account sufficient file
system permissions to allow the report server to operate.

See Also
MSReportServer_ConfigurationSetting Class
MSReportServer_ConfigurationSetting Properties
11/2/2020 • 2 minutes to read • Edit Online

The MSReportServer_ConfigurationSetting class represents the installation and runtime parameters of a report
server instance. These settings are stored in the RSReportServer.config configuration file.

Public Properties
P RO P ERT Y DESC RIP T IO N

ConnectionPoolSize Returns the connection pool size used by the report server
to communicate with the SQL Server Database Engine
instance that hosts the report server database. Read-only.

DatabaseLogonAccount Specifies the logon account used by the report server to


connect to the SQL Server Database Engine instance that
hosts the report server database. Read-only.

DatabaseLogonTimeout Specifies the number of seconds to wait before an attempt


to log on to the report server database fails. Read-only.

DatabaseLogonType Specifies whether the report server uses a Windows service


account, a Windows user account, or a SQL Server login to
access the report server database. Read-only.

DatabaseName Specifies the name of the SQL Server instance that hosts the
report server database.

DatabaseQueryTimeout Specifies the number of seconds that must elapse before the
command fails or times out. The report server is timing the
process against the SQL Server catalog, not a data source
for the report.

DatabaseServerName Specifies the name of the server on which the report server
database is installed.

InstallationID Property Returns a unique identifier for a specific report server


instance.

InstanceName Specifies the name of a report server instance on a specific


computer.

IsInitialized Indicates whether the report server instance is initialized.


Read-only.

IsSharePointIntegrated Indicates whether the report server is configured for


SharePoint integrated mode.

IsWebServiceEnabled Indicates whether the Report Server Web service is enabled.


Read-only.
P RO P ERT Y DESC RIP T IO N

IsWindowsServiceEnabled Indicates whether the Report Server Windows service is


enabled. Read-only.

MachineAccountIdentity Property (WMI) Gets the machine account identity of the computer that the
report server is installed on.

PathName Specifies the installation path to a report server instance.

SecureConnectionLevel Returns the secure connection level specified in the


RSReportServer.config file.

SenderEmailAddress Gets the address used to send e-mail from the report server.
Read-only.

SendUsingSMTPServer Specifies whether the SendUsing property in the e-mail


configuration is set to TRUE.

SMTPServer Gets the SMTP server property from the


RSReportServer.config file. Read-only.

UnattendedExecutionAccount Specifies the login user account that the report server
impersonates when running reports unattended. Read-only.

Version Returns the version of the report server.

VirtualDirectoryReportManager Property (WMI Returns the virtual directory for the report manager
MSReportServer_ConfigurationSetting) application

VirtualDirectoryReportServer Property (WMI Returns the Virtual directory for the report server web
MSReportServer_ConfigurationSetting) service application.

WindowsServiceIdentityActual Returns the identity that the Report Server Windows service
is actually running under. Read-only.

WindowsServiceIdentityConfigured Returns the identity that the Report Server Windows service
was last configured to run under. Read-only.

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Property -
ConnectionPoolSize
11/2/2020 • 2 minutes to read • Edit Online

The connection pool size used by the report server to communicate with the SQL Server instance that hosts the
report server database. Read-only.

Syntax
Public Dim ConnectionPoolSize As UInt32

public UInt32 ConnectionPoolSize;

Property Values
A read-only integer object that returns a value of 768 .

Example Code
MSReportServer_ConfigurationSetting Class

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Property -
DatabaseLogonAccount
11/2/2020 • 2 minutes to read • Edit Online

Specifies the logon account that the report server uses when connecting to the report server database. Read
only.

Syntax
Public Dim DatabaseLogonAccount As String

public string DatabaseLogonAccount;

Property Values
A String object that represents the logon account name.

Example Code
MSReportServer_ConfigurationSetting Class

Remarks
Valid values for this property will vary depending on the value of the DatabaseLogonType property.
This property is ignored if the DatabaseLogonType property is set to 2 (Ser vice) .

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Property -
DatabaseLogonTimeout
11/2/2020 • 2 minutes to read • Edit Online

Specifies the number of seconds to wait before an attempt to log on to the report server database fails. A value
of 0 indicates an infinite wait time. Read only.

Syntax
Public Dim DatabaseLogonTimeout As Int32

public Int32 DatabaseLogonTimeout;

Property Values
A 32-bit signed integer object that represents the number of seconds.

Example Code
MSReportServer_ConfigurationSetting Class

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Property -
DatabaseLogonType
11/2/2020 • 2 minutes to read • Edit Online

Specifies whether the report server uses a Microsoft Windows service account, a Windows user account, or a
SQL Server login to access the report server database. Read-only.

Syntax
Public Dim DatabaseLogonType As Integer

public int DatabaseLogonType;

Property Values
An integer object that represents the login type.

Example Code
MSReportServer_ConfigurationSetting Class

Remarks
Values are:
0 for Windows login
1 for SQL Server login
2 to log in as a service
If you specify 0 (Windows), you must set the value in the DatabaseLogonAccount property to a corresponding a
valid Windows user account.
If you specify 1 (SQL Server), make sure the value of the DatabaseLogonAccount corresponds to a valid SQL
Server login.
If you specify 2 (Windows service), the report server uses an ASP.NET account and the Windows service account
to access the report server database. The DatabaseLogonAccount property is ignored.

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Property - DatabaseName
11/2/2020 • 2 minutes to read • Edit Online

Specifies the name of the SQL Server instance that hosts the report server database. Read only.

Syntax
Public Dim DatabaseName As String

public string DatabaseName;

Property Values
A String object whose value represents the database instance name of the report server database.

Example Code
MSReportServer_ConfigurationSetting Class

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Property -
DatabaseQueryTimeout
11/2/2020 • 2 minutes to read • Edit Online

Specifies the number of seconds that must elapse before the report server assumes the command failed or took
too much time to perform. The report server is timing the querying against the SQL catalog, not a data source
for the report. Read/write.

Syntax
Public Dim DatabaseQueryTimeout As UInt32

public UInt32 DatabaseQueryTimeout;

Property Values
A 32-bit unsigned integer object that represents the number of seconds that the query is allowed to run.

Example Code
MSReportServer_ConfigurationSetting Class

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Property -
DatabaseServerName
11/2/2020 • 2 minutes to read • Edit Online

Specifies the name of the server on which the report server database is installed. Read/write.

Syntax
Public Dim DatabaseServerName As String

public string DatabaseServerName;

Property Values
A String object that represents the name of the server.

Example Code
MSReportServer_ConfigurationSetting Class

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Property - InstallationID
11/2/2020 • 2 minutes to read • Edit Online

This property returns a unique identifier for a specific report server instance.

Syntax
public Dim InstanceID As String

public string InstanceID;

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Property - InstanceName
11/2/2020 • 2 minutes to read • Edit Online

Specifies the name of a report server instance on a specific computer. Read-only.

Syntax
Public Dim InstanceName As String

public string InstanceName;

Property Value
A String object that represents the name of the report server instance.

Example Code
MSReportServer_ConfigurationSetting Class

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Property - IsInitialized
11/2/2020 • 2 minutes to read • Edit Online

Indicates whether the report server instance is initialized. Read-only.

Syntax
Public Dim IsInitialized As Boolean

public Boolean DatabaseLogonName;

Property Values
A Boolean object indicating whether the report server instance is initialized.

Example Code
MSReportServer_ConfigurationSetting Class

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Property -
IsSharePointIntegrated
11/2/2020 • 2 minutes to read • Edit Online

Specifies whether the report server is in SharePoint integrated mode. Beginning in SQL Server 2012 (11.x), this
property always returns False because in SharePoint mode, Reporting Services instances are SharePoint shared
services and are not controlled by WMI providers.

Syntax
Public Dim IsSharePointIntegrated As Boolean

public Boolean IsSharePointIntegrated;

Property Values
A Boolean object that indicates whether the report server is in SharePoint integrated mode.

Example Code
MSReportServer_ConfigurationSetting Class

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Property -
IsWebServiceEnabled
11/2/2020 • 2 minutes to read • Edit Online

Indicates whether the Report Server Web service is enabled. Read-only.

Syntax
Public Dim IsWebServiceEnabled As Boolean

public boolean IsWebServiceEnabled;

Property Values
A read-only Boolean value. A value of true indicates that the Report Server Web service is enabled.

Example Code
MSReportServer_ConfigurationSetting Class

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Property -
IsWindowsServiceEnabled
11/2/2020 • 2 minutes to read • Edit Online

Indicates whether the Report Server Windows service is enabled. Read-only.

Syntax
Public Dim IsWindowsServiceEnabled As Boolean

public boolean IsWindowsServiceEnabled;

Property Values
A read-only Boolean value. A value of true indicates that the Report Server Windows service is enabled.

Example Code
MSReportServer_ConfigurationSetting Class

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Property -
MachineAccountIdentity
11/2/2020 • 2 minutes to read • Edit Online

Gets the machine account identity of the computer that the report server is installed on.

Syntax
Public Dim MachineAccountIdentity As String

public string MachineAccountIdentity;

Property Values
A String value that contains the machine account identity of the computer that the report server is installed on.

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Properties
ConfigurationSetting Property - PathName
11/2/2020 • 2 minutes to read • Edit Online

Specifies the installation path of a report server instance. Read-only.

Syntax
public Dim PathName As String

public string PathName;

Property Values
A String object that represents the installation path.

Example Code
MSReportServer_ConfigurationSetting Class

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Property -
SecureConnectionLevel
11/2/2020 • 2 minutes to read • Edit Online

Returns the secure connection level specified in the RSReportServer.config file. Read-only.

Syntax
Public Dim SecureConnectionLevel As Integer

public Integer SecureConnectionLevel;

Property Values
An Integer value that represents the secure connection level. The return values indicate that the TLS is either
configured or not. A value of greater than or equal to 1 indicates that TLS is turned on. A value of 0 indicates that
TLS is turned off.

Example Code
MSReportServer_ConfigurationSetting Class

Remarks
In SQL Server 2008 R2, SecureConnectionLevel is made an on/off switch. For more information, see
ConfigurationSetting Method - SetSecureConnectionLevel.

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Property -
SenderEmailAddress
11/2/2020 • 2 minutes to read • Edit Online

Gets the address used to send e-mail from the report server. Read-only.

Syntax
Public Dim SenderEmailAddress As String

public string SenderEmailAddress;

Property Values
A read-only String object that represents the e-mail address used by the report server.

Example Code
MSReportServer_ConfigurationSetting Class

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Property -
SendUsingSMTPServer
11/2/2020 • 2 minutes to read • Edit Online

Specifies whether the SendUsing element in the in the e-mail configuration for the report server is set to true .

Syntax
Public Dim SendUsingSMTPServer As Boolean

public Boolean SendUsingSMTPServer;

Property Values
A read-only Boolean object.

Example Code
MSReportServer_ConfigurationSetting Class

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Property - SMTPServer
11/2/2020 • 2 minutes to read • Edit Online

Gets the SMTP server property from the report server configuration file. Read-only.

Syntax
Public Dim SMTPServer As String

public string SMTPServer;

Property Values
A read-only String object containing the value of the SMTPSer ver property from the RSReportServer.config
file.

Example Code
MSReportServer_ConfigurationSetting Class

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Property -
UnattendedExecutionAccount
11/2/2020 • 2 minutes to read • Edit Online

Returns the user account that the report server impersonates when running reports unattended. Read-only.

Syntax
Public Dim UnattendedExecutionAccount As String

public string UnattendedExecutionAccount;

Property Values
A String object that represents the account name.

Example Code
MSReportServer_ConfigurationSetting Class

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Property - Version
11/2/2020 • 2 minutes to read • Edit Online

Returns the version of the report server in the format Major.Minor.Build.Revision. Read-only.

Syntax
Public Dim Version As String

public string Version;

Property Value
A string that contains the version of the report server.

Example Code
MSReportServer_ConfigurationSetting Class

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13

See Also
MSReportServer_Instance Members
ConfigurationSetting Property -
VirtualDirectoryReportManager
11/2/2020 • 2 minutes to read • Edit Online

Returns the virtual directory for the report manager application. Read-only.

Syntax
Public Dim VirtualDirectoryReportManager As String

public string VirtualDirectoryReportManager;

Property Values
A string that contains the virtual directory.

Example Code
MSReportServer_ConfigurationSetting Class

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Property -
VirtualDirectoryReportServer
11/2/2020 • 2 minutes to read • Edit Online

Returns the virtual directory for the report server application. Read-only.

Syntax
Public Dim VirtualDirectoryReportServer As String

public string VirtualDirectoryReportServer;

Property Values
A string that contains the virtual directory.

Example Code
MSReportServer_ConfigurationSetting Class

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Property -
WindowsServiceIdentityActual
11/2/2020 • 2 minutes to read • Edit Online

The identity that the Report Server Windows service is running under. Read-only.

Syntax
Public Dim WindowsServiceIdentityActual As String

public string WindowsServiceIdentityActual;

Property Values
A String object containing the identity that the Report Server Windows service is running under.

Example Code
MSReportServer_ConfigurationSetting Class

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
WindowsServiceIdentityConfigured Property
11/2/2020 • 2 minutes to read • Edit Online

Returns the identity that the Report Server Windows service was last configured to run under. Read-only.

Syntax
Public Dim WindowsServiceIdentityConfigured As String

public string WindowsServiceIdentityConfigured;

Property Values
A String value containing the identity that the Report Server Windows service was last configured to run under.

Example Code
MSReportServer_ConfigurationSetting Class

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
RSWindowsExtendedProtectionLevel Property
11/2/2020 • 2 minutes to read • Edit Online

Returns a string value that indicates the level of protection the report server is configured to support. This
property is read-only.

Syntax
Public Dim RSWindowsExtendedProtectionLevel As String

public string RSWindowsExtendedProtectionLevel;

Remarks
Returns a string value that indicates the level of protection the report server is configured to support. If the
report server that the WMI provider is connected to does not support extended protection, "" (empty string) is
returned. The following list shows valid values:
"Off" | "Allow" | "Require"

Example Code
MSReportServer_ConfigurationSetting Class

See Also
RSWindowsExtendedProtectionScenario Property (WMI MSReportServer_ConfigurationSetting)
SetExtendedProtectionSettings Method (WMI MSReportServer_ConfigurationSetting)
Extended Protection for Authentication with Reporting Services
RsReportServer.config Configuration File
RSWindowsExtendedProtectionScenario Property
11/2/2020 • 2 minutes to read • Edit Online

Returns a string value that indicates the extended protection scenario the report server is configured to allow.

Syntax
Public Dim RSWindowsExtendedProtectionScenario As String

public string RSWindowsExtendedProtectionScenario;

Remarks
Returns a string value that indicates the extended protection scenario the report server is configured to allow. If
the report server that the WMI provider is connected to does not support extended protection, "" (empty string)
is returned.
The following list shows valid values:
"Any | Proxy | Direct"

Example Code
MSReportServer_ConfigurationSetting Class

See Also
RSWindowsExtendedProtectionLevel Property (WMI MSReportServer_ConfigurationSetting)
SetExtendedProtectionSettings Method (WMI MSReportServer_ConfigurationSetting)
Extended Protection for Authentication with Reporting Services
RsReportServer.config Configuration File
MSReportServer_ConfigurationSetting Methods
11/2/2020 • 2 minutes to read • Edit Online

The MSReportServer_ConfigurationSetting class of the Report Server WMI Provider provides the following
public methods.

Public Methods
M ET H O D DESC RIP T IO N

BackupEncryptionKey Backs up the encryption key for the instance. The encryption
key is stored encrypted with a password.

CreateSSLCertificateBinding Method (WMI Creates a TLS/SSL Certificate binding.


MSReportServer_ConfigurationSetting)

DeleteEncryptedInformation Deletes the encrypted information from the report server


database.

DeleteEncryptionKey Deletes the encryption keys from the report server


database.

GenerateDatabaseCreationScript Generates an SQL script that can be used to create the


report server database.

GenerateDatabaseRightsScript Generates an SQL script that can be used to grant a user


permissions to the report server database.

GenerateDatabaseUpgradeScript Generates an SQL script that can be used to upgrade a


report server database.

GetAdminSiteUrl Method (WMI) Gets the absolute URL to the Central Administration Web
site.

GetDatabaseVersionDisplayName Gets the display name for a given report server database
version string.

InitializeReportServer Initializes the specified report server instance.

ListInstalledSharePointVersions Method (WMI) Returns a set of tokens that represent the versions of
Microsoft Windows SharePoint Services Office SharePoint
Server, SharePoint Foundation 2010, or SharePoint Server
2010 that are installed on the same computer as the report
server.

ListIPAddresses Method (WMI Lists IP addresses for the computer.


MSReportServer_ConfigurationSetting)

ListReportServersInDatabase Returns a list of report server installations that are present in


the report server database, regardless of whether those
installations have access to secure information.
M ET H O D DESC RIP T IO N

ListReservedURLs Method (WMI Lists URLs reserved for all applications on the report server.
MSReportServer_ConfigurationSetting)

ListSSLCertificateBindings Method (WMI Lists TLS/SSL certificate bindings that exist in HTTP.SYS and
MSReportServer_ConfigurationSetting) those expected from RSReportServer.config.

ListSSLCertificates Method (WMI Lists installed TLS/SSL certificates on the computer.


MSReportServer_ConfigurationSetting)

ReencryptSecureInformation Generates a new encryption key and re-encrypts all secure


information in the report server database using this new
key.

RemoveSSLCertificateBindings Method (WMI Remove a TLS/SSL Certificate binding.


MSReportServer_ConfigurationSetting)

RemoveUnattendedExecutionAccount Deletes the unattended execution account entry from the


report server configuration.

RemoveURL Method (WMI Removes a URL reserved for the report server.
MSReportServer_ConfigurationSetting)

ReserveURL Method (WMI Adds a URL reservation for a given application.


MSReportServer_ConfigurationSetting)

RestoreEncryptionKey Reapplies the specified encryption key to the report server


database.

SetDatabaseConnection Sets the report server database connection to a particular


report server database.

SetDatabaseLogonTimeout Specifies the default time-out value for report server


database logon attempts.

SetDatabaseQueryTimeout Specifies the default time-out value for report server


database queries.

SetEmailConfiguration Configures the e-mail delivery extension used by the report


server to send e-mail.

SetSecureConnectionLevel Sets the secure connection level of the report server.

SetServiceState Turns the Report Server service on and off.

SetUnattendedExecutionAccount Specifies the account used to run reports unattended.

SetVirtualDirectory Method (WMI Sets the virtual directory for an application.


MSReportServer_ConfigurationSetting)

SetWindowsServiceIdentity Makes the Report Server service run as the specified


Windows user, and grants this account sufficient file system
permissions to allow the report server to operate.
See Also
MSReportServer_ConfigurationSetting Class
ConfigurationSetting Method -
BackupEncryptionKey
11/2/2020 • 2 minutes to read • Edit Online

Backs up the encryption key for the specified report server instance. The encryption key is stored encrypted
with a password.

Syntax
Public Sub BackupEncryptionKey(Password as String, _
ByRef KeyFile() as Integer, ByRef Length as Int32, _
ByRef HRESULT as Int32, ByRef ExtendedErrors() as String)

public void BackupEncryptionKey(string Password, out Byte[] KeyFile,


out Int32 Length, out Int32 HRESULT, out string[] ExtendedErrors);

Parameters
Password
A string used to encrypt the encryption key before it is returned.
KeyFile[]
[out] An array containing the encrypted encryption key.
Length
[out] The length of the array returned by the method.
HRESULT
[out] Value indicating whether the call succeeded or failed.
ExtendedErrors[]
[out] A string array containing additional errors returned by the call.

Return Value
Returns an HRESULT indicating success or failure of the method call. A value of 0 indicates that the method call
was successful. A non-zero value indicates that an error has occurred.

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Method -
CreateSSLCertificateBinding
11/2/2020 • 2 minutes to read • Edit Online

Creates a TLS/SSL Certificate binding.

Syntax
Public Sub CreateSSLCertificateBinding(ByVal Application As String, _
ByVal CertificateHash As String, ByVal IPAddress As String, _
ByVal Port As Int32, ByVal lcid As Int32, _
ByRef [Error] As String, ByRef HRESULT As Int32)

public void CreateSSLCertificateBinding(string application,


string certificateHash, string IPAddress, int Port,
int lcid, out string error, out int HRESULT);

Parameters
Application
The name of application that the certificate binding should be created for.
CertificateHash
The hash for the certificate.
IPAddress
The IP address for the application.
Port
The TLS port associated with the binding.
Lcid
The locale to use for the error messages returned.
Error
[out] The description of the errors that occurred.
HRESULT
[out] Value indicating whether the call succeeded or failed.

Return Value
Returns an HRESULT indicating success or failure of the method call. A value of 0 indicates that the method call
was successful; an error code indicates the call was not successful.

Remarks
This method adds a binding to rsreportserver.config for the application. If a binding does not already exist in
HTTP.SYS, it is created there.
Before creating the binding, the method call examines the Url Reservations for the specified application to
determine if the TLS/SSL Certificate Binding is valid.
The following conditions are validated and can result in errors:
1. Certificate does not exist.
2. The IPAddress specified does not correspond to an IPAddress of this computer.
3. The IPAddress specified is a DHCP IPAddress (changes periodically) - use the Wildcard IP address instead
(0.0.0.0).
4. IPAddress specified does not match the IP address of a URL reservations AND neither a wildcard or host
name URL reservation exist.
5. A URL reservation that specifies a host name exists, but the host name does not match the certificate host
name.

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Method -
DeleteEncryptedInformation
11/2/2020 • 2 minutes to read • Edit Online

Deletes the encrypted information from the report server database.

Syntax
Public Sub DeleteEncryptedInformation(ByRef HRESULT As Int32, ByRef ExtendedErrors() As String)

public void DeleteEncryptedInformation(out Int32 HRESULT, out string[] ExtendedErrors);

Parameters
HRESULT
[out] Value indicating whether the call succeeded or failed.
ExtendedErrors[]
[out] A string array containing additional errors returned by the call.

Return Value
Returns an HRESULT indicating success or failure of the method call. A value of 0 indicates that the method call
was successful. A non-zero value indicates that an error has occurred.

Remarks
When this method is invoked, the following data is deleted:
Data source information that is encrypted, including user name and password.
Subscription data that is encrypted using the delivery extension interfaces.
All the information from the keys table in the report server database.
After this method is invoked, the user must initialize each computer that uses the report server database.
Calling the DeleteEncryptedInformation method does not affect the report server configuration file.

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Method -
DeleteEncryptionKey
11/2/2020 • 2 minutes to read • Edit Online

Deletes the encryption keys from the report server database.

Syntax
Public Sub DeleteEncryptionKeys(ByVal InstallationID As String, _
ByRef HRESULT As Int32, ByRef ExtendedErrors() As String)

public void DeleteEncryptionKeys(string InstallationID, out Int32 HRESULT,


out string[] ExtendedErrors);

Parameters
InstallationID
The installation ID of a report server that is in the keys table of the report server database.
HRESULT
[out] Value indicating whether the call succeeded or failed.
ExtendedErrors[]
[out] A string array containing additional errors returned by the call.

Return Value
Returns an HRESULT indicating success or failure of the method call. A value of 0 indicates that the method call
was successful. A non-zero value indicates that an error has occurred.

Remarks
The DeleteEncryptionKey method deletes entries from the keys table for any report servers that have access to
the secure information in the report server database. If the InstallationID parameter specified does not
correspond to an installation ID in the database, the method returns an error.

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Method -
GenerateDatabaseCreationScript
11/2/2020 • 2 minutes to read • Edit Online

Generates a SQL Script that can be used to create a report server database.

Syntax
Public Sub GenerateDatabaseCreationScript(ByVal DatabaseName As String, _
ByVal Lcid As Int32, ByVal IsSharePointMode As Boolean, ByRef Script As String, _
ByRef HRESULT As Int32)

public void GenerateDatabaseCreationScript(string DatabaseName, Int32 Lcid,


Boolean IsSharePointMode, out string Script, out Int32 HRESULT);

Parameters
Databasename
A string containing the name of the report server database to create.
Lcid
Value used for localization of role names.
IsSharePointMode
Indicates whether to create database in native mode or SharePoint mode.

IMPORTANT
Beginning in SQL Server 2012 (11.x), IsSharePointMode=True is not supported because in SharePoint mode, Reporting
Services is a SharePoint shared service and is not controlled by the WMI provider. You should always set this parameter to
False .

Script
[out] A string containing the generated SQL script.
HRESULT
[out] Value indicating whether the call succeeded or failed.

Return Value
Returns an HRESULT indicating success or failure of the method call. A value of 0 indicates that the method call
was successful. A non-zero value indicates that an error has occurred.

Remarks
This method generates an SQL script that creates report server databases for the version of the report server
currently connected to.
The value supplied in the DatabaseName parameter must conform to SQL Server database naming conventions.
The method does not check the existence of the database when generating the script.
This method does not check for the existence of the report server database when generating the script.
The generated script supports SQL Server 2000 (8.x), SQL Server 2005, and SQL Server 2008.

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Method -
GenerateDatabaseRightsScript
11/2/2020 • 3 minutes to read • Edit Online

Generates a SQL Script that can be used to grant a user rights to the report server database and other databases
required for a report server to run. The caller is expected to connect to the SQL Server database server and
execute the script.

Syntax
Public Sub GenerateDatabaseRightsScript(ByVal UserName As String, _
ByVal DatabaseName As String, ByVal IsRemote As Boolean, _
ByVal IsWindowsUser As Boolean, ByRef Script As String, _
ByRef HRESULT As Int32)

public void GenerateDatabaseRightsScript(string UserName, string DatabaseName, bool IsRemote, bool


IsWindowsUser, out string Script,
out Int32 HRESULT);

Parameters
UserName
The user name or Windows security identifier (SID) of the user to which the script will grant rights.
DatabaseName
The database name to which the script will grant access to the user.
IsRemote
A Boolean value to indicating whether the database is remote from the report server.
IsWindowsUser
A Boolean value indicating whether the specified user name is a Windows user or a SQL Server user.
Script
[out] A string containing the generated SQL Server script.
HRESULT
[out] Value indicating whether the call succeeded or failed.

Return Value
Returns an HRESULT indicating success or failure of the method call. A value of 0 indicates that the method call
was successful. A non-zero value indicates that an error has occurred.

Remarks
If DatabaseName is empty then IsRemote is ignored and the report server configuration file value is used for the
database name.
If IsWindowsUser is set to true , UserName should be in the format <domain>\<username>.
When IsWindowsUser is set to true , the generated script grants login rights to the user for the SQL Server,
setting the report server database as the default database, and grants the RSExec role on the report server
database, the report server temporary database, the master database and the MSDB system database.
When IsWindowsUser is set to true , the method accepts standard Windows SIDs as input. When a standard
Windows SID or service account name is supplied, it is translated to a user name string. If the database is local,
the account is translated to the correct localized representation of the account. If the database is remote, the
account is represented as the computer's account.
The following table shows accounts that are translated and their remote representation.

A C C O UN T / SID T H AT IS T RA N SL AT ED C OMMON NAME REM OT E N A M E

(S-1-5-18) Local System <Domain>\<ComputerName>$

.\LocalSystem Local System <Domain>\<ComputerName>$

ComputerName\LocalSystem Local System <Domain>\<ComputerName>$

LocalSystem Local System <Domain>\<ComputerName>$

(S-1-5-20) Network Service <Domain>\<ComputerName>$

NT AUTHORITY\NetworkService Network Service <Domain>\<ComputerName>$

(S-1-5-19) Local Service Error - see below.

NT AUTHORITY\LocalService Local Service Error - see below.

On Windows 2000, if you are using a built-in account and the report server database is remote, an error is
returned.
If the LocalSer vice built-in account is specified and the report server database is remote, an error is returned.
When IsWindowsUser is true and the value supplied in UserName needs to be translated, the WMI provider
determines whether the report server database is located on the same computer or on a remote computer. To
determine if the installation is local, the WMI provider evaluates the DatabaseServerName property against the
following list of values. If a match is found, the database is local. Otherwise, it is remote. The comparison is case-
insensitive.

VA L UE O F DATA B A SESERVERN A M E EXA M P L E

"."

"(local)"

"LOCAL"

localhost

<Machinename> testlab14

<MachineFQDN> example.redmond.microsoft.com
VA L UE O F DATA B A SESERVERN A M E EXA M P L E

<IPAddress> 180.012.345,678

When IsWindowsUser is set to true , the WMI provider calls LookupAccountName to get the SID for the account
and then calls LookupAccountSID to get the name to put in the SQL Server script. This ensures that the account
name used will pass SQL Server validation.
When IsWindowsUser is set to false , the generated script grants the RSExec role on the report server database,
the report server temporary database, and the MSDB database.
When IsWindowsUser is set to false , the SQL Server user must already exist on the SQL Server for the script to
run successfully.
If the report server does not have a report server database specified, calling GrantRightsToDatabaseUser returns
an error.
The generated script supports SQL Server 2000 (8.x), SQL Server 2005, and SQL Server 2008.

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Method -
GenerateDatabaseUpgradeScript
11/2/2020 • 2 minutes to read • Edit Online

Generates a script that can be used to upgrade the report server database to the SQL Server 2008 schema.

Syntax
Public Sub GenerateDatabaseUpgradeScript(DatabaseName as String, _
ServerVersion as String, ByRef Script as String, _
ByRef HRESULT as Int32)

public void GenerateDatabaseUpgradeScript (string DatabaseName,


string ServerVersion, out string Script,
out Int32 HRESULT);

Parameters
Databasename
A string containing the name of the report server database to upgrade.
ServerVersion
A string containing the version of the report server.
Script
[out] A string containing the generated SQL script.
HRESULT
[out] Value indicating whether the call succeeded or failed.

Return Value
Returns an HRESULT indicating success or failure of the method call. A value of 0 indicates that the method call
was successful. A non-zero value indicates that an error has occurred.

Remarks
The generated script supports SQL Server 2000 (8.x), SQL Server 2005 (9.x), and SQL Server 2008.

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Method - GetAdminSiteUrl
11/2/2020 • 2 minutes to read • Edit Online

Gets the absolute URL for the Central Administration Web site for the Microsoft Windows SharePoint Services,
Office SharePoint Server, SharePoint Foundation 2010, or SharePoint Server 2010 farm that the report server is
integrated with.

Syntax
Public Sub GetAdminSiteUrl(ByRef AdminSiteUrl as String, _
ByRef HRESULT as Int32)

public void GetAdminSiteUrl(out string AdminSiteUrl, out Int32 HRESULT);

Parameters
AdminSiteUrl
[out] A string that contains the absolute URL for the Central Administration Web site for the SharePoint farm
that the report server is integrated with.
HRESULT
[out] Value indicating whether the call succeeded or failed.

Return Value
Returns an HRESULT indicating success or failure of the method call. A value of 0 indicates that the method call
was successful. A non-zero value indicates that an error has occurred.

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Methods
ConfigurationSetting Method -
GetDatabaseVersionDisplayName
11/2/2020 • 2 minutes to read • Edit Online

Gets the display name for a given report server database version string.

Syntax
Public Sub GetDatabaseVersionDisplayName(Version As String, DisplayName As String, ByRef HRESULT As Int32)

public void GetDatabaseVersionDisplayName(string Version, string DisplayName, out Int32 HRESULT);

Parameters
Version
A string that contains the version string for a report server database.
DisplayName
[out] A string that contains the display name that corresponds to the version supplied.
HRESULT
[out] Value indicating whether the call succeeded or failed.

Remarks
The following table shows the mapping from database version to display string.

REL EA SE VERSIO N DISP L AY N A M E

RS 2005 SP2 @DBVersion = 'C.0.8.54' SQL Server 2005 SP2

RS 2005 SP1 @DBVersion = 'C.0.8.43' SQL Server 2005 SP1

RS 2005 RTM @DBVersion = 'C.0.8.40' SQL Server 2005

RS 2000 SP2 @DBVersion = 'C.0.6.54' SQL Server 2000 SP2

RS 2000 SP1 @DBVersion = 'C.0.6.51' SQL Server 2000 SP1

RS 2000 RTM @DBVersion = 'C.0.6.43' SQL Server 2000

Hotfix Closest applicable version

For a Version prior to SQL Server 2000 an HRESULT of ACT_E_BAD_VERSION is returned.

Return Value
Returns an HRESULT indicating success or failure of the method call. A value of 0 indicates that the method call
was successful. A non-zero value indicates that an error has occurred.

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Method -
InitializeReportServer
11/2/2020 • 2 minutes to read • Edit Online

Initializes the specified report service instance.

Syntax
Public Sub InitializeReportServer(ByVal InstallationID As String, _
ByRef HRESULT As Int32, ByRef ExtendedErrors() As String)

public void InitializeReportServer(string InstallationID,


out Int32 HRESULT, out string[] ExtendedErrors);

Parameters
InstallationID
A string used to encrypt the encryption key before it is returned.
HRESULT
[out] Value indicating whether the call succeeded or failed.
ExtendedErrors[]
[out] A string array containing additional errors returned by the call.

Return Value
Returns an HRESULT indicating success or failure of the method call. A value of 0 indicates that the method call
was successful. A non-zero value indicates that an error has occurred.

Remarks
When this method is called, the encryption key that accesses the report server database secure information is
encrypted using the public key of the report server identified by InstallationID.
The specified report server's public key must have previously been written into the report server database.
The InitializeReportServer method must be called against a report server that already has access to the secure
information so that it can decrypt the encryption key. The resulting encrypted encryption key is then stored in
the report server database.
If the report server's IsInitialized property is set to true when the InitializeReportServer method is called, the
method returns success without trying to encrypt the encryption key.

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Method -
ListInstalledSharePointVersions
11/2/2020 • 2 minutes to read • Edit Online

Returns a set of tokens that represent the versions of Microsoft Windows SharePoint Services, Office SharePoint
Server, SharePoint Foundation 2010, or SharePoint Server 2010 that are installed on the same computer as the
report server.

Syntax
Public Sub ListInstalledSharePointVersions(ByRef VersionTokens() _
As String, ByRef Length As Int32, ByRef HRESULT As Int32)

public void ListReportServersInDatabase (out string[] VersionTokens,


out Int32 Length, out Int32 HRESULT);

Parameters
VersionTokens[]
[out] An array that contains the tokens that represent the version of a SharePoint product or technology that is
compatible with the installed report server.
Length
[out] The length of the version tokens array.
HRESULT
[out] Value indicating whether the call succeeded or failed.

Return Value
Returns an HRESULT indicating success or failure of the method call. A value of 0 indicates that the method call
was successful. A non-zero value indicates that an error has occurred.

Remarks
Each token that is returned represents a version of Windows SharePoint Services or SharePoint Foundation
2010 that is compatible with the currently installed report server. If a particular version of SharePoint is
compatible with previous SharePoint versions, tokens for each compatible SharePoint version are returned.
The following is a table of the SharePoint tokens that are returned.

VERSIO N TO K EN S DESC RIP T IO N

WSS_V2_Compatible A Windows SharePoint Services, Windows SharePoint


Services, Office SharePoint Server, SharePoint Foundation
2010, or SharePoint Server 2010 installation is installed that
is compatible with Windows SharePoint Services 2.0.
VERSIO N TO K EN S DESC RIP T IO N

WSS_V3_Compatible A Windows SharePoint Services, Windows SharePoint


Services, Office SharePoint Server, SharePoint Foundation
2010, or SharePoint Server 2010 installation is installed that
is compatible with Windows SharePoint Services 3.0.

WSS_V4_Compatible A SharePoint Foundation 2010 or SharePoint Server 2010


installation is installed that is compatible with Office 14.

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Method - ListIPAddresses
11/2/2020 • 2 minutes to read • Edit Online

Lists the IP addresses for the report server computer.

Syntax
Public Sub ListIPAddresses (ByRef IPAddress() as String, _
ByRef IPVersion()as String, ByRef IsDhcpEnabled () as Boolean, _
ByRef Length as Int32, ByRef HRESULT as Int32)

public void ListIPAddresses (out string[] IPAddress,


out string[] IPVersion, out bool[] isDhcpEnabled, out int length,
out int HRESULT);

Parameters
IPAddress[]
[out] The list of IP address for the computer.
IPVersion[]
[out] The version for the IP addresses.
IsDhcpEnabled[]
[out] Indicates whether the IP addresses are DHCP enabled.
Length
[out] The length of the array returned by the method.
HRESULT
[out] Value indicating whether the call succeeded or failed.

Return Value
Returns an HRESULT indicating success or failure of the method call. A value of 0 indicates that the method call
was successful; an error code indicates the call was not successful.

Remarks
IPVersion strings are V4, V6.
If IsDhcpEnabled is True , the IPAddress is dynamic. It should not be used for TLS bindings.

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Method -
ListReportServersInDatabase
11/2/2020 • 2 minutes to read • Edit Online

Returns the list of report server installations that are present in the report server database, regardless of
whether they have access to secure information.

Syntax
Public Sub ListReportServersInDatabase(ByRef MachineNames() As String, _
ByRef InstanceNames() As String, ByRef InstallationIDs() As String, _
ByRef IsInitialized() As Boolean, ByRef Length As Int32, _
ByRef HRESULT As Int32, ByRef ExtendedErrors() As String)

public void ListReportServersInDatabase (out string[] MachineNames,


out string[] InstanceNames, out string[] InstallationIDs,
out Boolean[] IsInitialized,out Int32 Length, out Int32 HRESULT,
out string[] ExtendedErrors);

Parameters
MachineNames[]
[out] An array containing the machine names for the report server installations in the database.
InstanceNames[]
[out] An array containing the instance names of each of the report server installations in the database.
InstallationIDs[]
[out] An array containing the installation IDs of each report server installation in the database.
IsInitialized[]
[out] An array containing initialization status for each report server installation in the database.
Length
[out] The length of the arrays returned by the method. All returned arrays have the same length.
HRESULT
[out] Value indicating whether the call succeeded or failed.
ExtendedErrors[]
[out] A string array containing additional errors returned by the call.

Return Value
Returns an HRESULT indicating success or failure of the method call. A value of 0 indicates that the method call
was successful. A non-zero value indicates that an error has occurred.

Remarks
ListReportServersInDatabase lists the report server installations that are present in the report server database,
regardless of whether they have access to secure information, and returns a matched set of arrays containing
information about each installation.

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Method - ListReservedURLs
11/2/2020 • 2 minutes to read • Edit Online

Lists URLs reserved for all applications on the report server.

Syntax
Public Sub ListReservedUrls(ByRef Application() as String, ByRef UrlString() as String, _
ByRef Account() as String, ByRef AccountSID() as String, _
ByRef length() as Int32, ByRef HRESULT as Int32)

public void ListReservedUrls(out string[] Application, out string[] UrlString,


out string[] Account, out string[] AccountSID,
out int[] Length, out int[] HRESULT);

Parameters
Application[]
[out] The applications that have URL reservations.
UrlString[]
[out] The URLs that are reserved.
Account[]
[out] The account names associated with the account for the URL reservations.
AccountSID[]
[out] The account SIDs associated with the account for the URL reservations.
Length
[out] The length of the arrays returned by the method.
HRESULT
[out] Value indicating whether the call succeeded or failed.

Return Value
Returns an HRESULT indicating success or failure of the method call. A value of 0 indicates that the method call
was successful; an error code indicates the call was not successful.

Remarks
Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Method -
ListSSLCertificateBindings
11/2/2020 • 2 minutes to read • Edit Online

Returns a list of installed TLS/SSL certificates on the computer.

Syntax
Public Sub ListSSLCertificateBindings(ByVal LCID As Int32, ByRef Application() As String, _
ByRef CertificateHash() As String, ByRef IPAddresses() As String, ByRef Port() As Int32, _
ByRef Errors() As String, ByRef Length As Int32, _
ByRef HRESULT As Int32)

public void ListSSLCertificateBindings(Int32 Lcid, out string[] Application,


out string[] CertificateHash,out string[] IPAddress,
out Int32[] Port, out string Errors,
out Int32 length, out Int32 HRESULT);

Parameters
LCID
The locale to use for the error messages that are returned.
Application[]
[out] The applications that have certificate bindings.
CertificateHash[]
[out] The hashes for the certificates.
IPAddress[]
[out] The IP address for the applications.
Port[]
[out] The port number stored in the binding in rsreportserver.config.
Errors[]
[out] The descriptions for errors that occurred.
Length
[out] The length of the array returned by the method.
HRESULT
[out] Value indicating whether the call succeeded or failed.

Return Value
Returns an HRESULT indicating success or failure of the method call. A value of 0 indicates that the method call
was successful. A non-zero value indicates that an error has occurred.

Remarks
Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Method - ListSSLCertificates
11/2/2020 • 2 minutes to read • Edit Online

Returns a list of certificates on the report server computer.

Syntax
Public Sub CreateSSLCertificateBinding (ByRef CertificateHash() as String, _
ByRef CertName() as String, ByRef HostName() as String, ByRef Length as Int32, _
ByRef HRESULT as Int32)

public void ListSSLCertificates(out string[] CertificateHash,


out string[] CertName, out string[] Hostname, out Int32 length,
out Int32 HRESULT);

Parameters
CertificateHash[]
[out] The certificate hashes.
CertName[]
[out] Names of the certificate.
HostName[]
[out] The host names for the certificates.
Length
[out] Represents the length of the CertificateHash, CertName and HostName arrays.
HRESULT
[out] Value indicating whether the call succeeded or failed.

Return Value
Returns an HRESULT indicating success or failure of the method call. A value of 0 indicates that the method call
was successful; an error code indicates the call was not successful.

Remarks
Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Method -
ReencryptSecureInformation
11/2/2020 • 2 minutes to read • Edit Online

Generates a new encryption key and re-encrypts all secure information in the catalog using this new key.

Syntax
Public Sub ReencryptSecureInformation(ByRef HRESULT as Int32, ByRef ExtendedErrors() As String)

public void ReencryptSecureInformation (out Int32 HRESULT, out string[] ExtendedErrors);

Parameters
HRESULT
[out] Value indicating whether the call succeeded or failed.
ExtendedErrors[]
[out] A string array containing additional errors returned by the call.

Return Value
Returns an HRESULT indicating success or failure of the method call. A value of 0 indicates that the method call
was successful. A non-zero value indicates that an error has occurred.

Remarks
The ReencryptSecureInformation method allows the administrator to replace the existing encryption key with a
new key.
When this method is invoked, the report server generates a new encryption key and iterates through all
encrypted content to re-encrypt it with the new encryption key.
Delivery extensions can store secured information in their delivery settings structures. When
ReencryptSecureInformation is called, the report server loads each subscription and the corresponding delivery
extension to re-encrypt information stored in the associated settings.
If this method is run on a computer in a scale-out deployment, each computer in the scale-out deployment will
need to be initialized again.

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Method -
RemoveSSLCertificateBinding
11/2/2020 • 2 minutes to read • Edit Online

Removes a TLS/SSL Certificate binding.

Syntax
Public Sub RemoveSSLCertificateBinding(ByVal Application As String, _
ByVal CertificateHash As String, ByVal IPAddress As String, _
ByVal Port As Int32, ByVal Lcid As Int32, _
ByRef [Error] As String, ByRef HRESULT As Int32)

public void RemoveSSLCertificateBindings(string Application,


string CertificateHash, string IPAddress, Int32 Port, Int32 Lcid,
out string Error, out Int32 HRESULT);

Parameters
Application
The name of application for which the certificate binding should be removed.
CertificateHash
The hash for the certificate.
IPAddress
The IP address for the application.
Port
The TLS port associated with the binding.
lcid
The locale to use for the error messages that are returned.
Error
[out] The description of the error that occurred.
HRESULT
[out] Value indicating whether the call succeeded or failed.

Return Value
Returns an HRESULT indicating success or failure of the method call. A value of 0 indicates that the method call
was successful; an error code indicates the call was not successful.

Remarks
This method removes the specific binding from the rsreportserver.config file and optionally HTTP.SYS.

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Method -
RemoveUnattendedExecutionAccount
11/2/2020 • 2 minutes to read • Edit Online

Deletes the unattended execution account entry from the report server configuration file.

Syntax
Public Sub RemoveUnattendedExecutionAccount(ByRef HRESULT as Int32)

public void RemoveUnattendedExecutionAccount (out Int32 HRESULT);

Parameters
HRESULT
[out] Value indicating whether the call succeeded or failed.

Return Value
Returns an HRESULT indicating success or failure of the method call. A value of 0 indicates that the method call
was successful. A non-zero value indicates that an error has occurred.

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Method - RemoveURL
11/2/2020 • 2 minutes to read • Edit Online

Removes a URL reserved for the report server. If there are multiple URLs that need to be removed, this must be
done one by one calling this API.

Syntax
Public Sub RemoveURL(ByVal Application As String, _
ByVal UrlString As String, ByVal Lcid As Int32, _
ByRef [Error] As String, ByRef HRESULT As Int32)

public void RemoveURL(string Application, string UrlString, int Lcid,


out string Error, out int HRESULT);

Parameters
Application
The name of application for which to remove the reservation.
URLString
The URL for the reservation.
lcid
The locale to use for the error messages returned.
Error
[out] The description of the error that occurred.
HRESULT
[out] Value indicating whether the call succeeded or failed.

Return Value
Returns an HRESULT indicating success or failure of the method call. A value of 0 indicates that the method call
was successful; an error code indicates the call was not successful.

Remarks
UrlString does not include the Virtual Directory name - the SetVirtualDirectory Method (WMI
MSReportServer_ConfigurationSetting) method is provided for that purpose.
Before calling the ReserveURL method, you must supply a value for the VirtualDirectory configuration property
for the Application parameter. Use the SetVirtualDirectory Method (WMI
MSReportServer_ConfigurationSetting) method to set the VirtualDirectory property.
If a TLS/SSL Certificate was provisioned by Reporting Services and no other URLs need it, it is removed.
This method causes all non-configuration app domains to hard recycle and stop during this operation; app
domains are restarted after this operation complete.
Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Method - ReserveURL
11/2/2020 • 2 minutes to read • Edit Online

Adds a URL reservation for a given application.

Syntax
Public Sub ReserveURL(Application as String, _
UrlString as String, Lcid as Int32, _
ByRef [Error] as String, ByRef HRESULT as Int32)

public void ReserveURL(string Application, string UrlString, int Lcid,


out string error, out int HRESULT);

Parameters
Application
The name of application to reserve the URL for.
URLString
The URL for the reservation.
lcid
The locale to use for the error messages returned.
Error
[out] The description of the error that occurred.
HRESULT
[out] Value indicating whether the call succeeded or failed.

Return Value
Returns an HRESULT indicating success or failure of the method call. A value of 0 indicates that the method call
was successful; an error code indicates the call was not successful.

Remarks
UrlString does not include the virtual directory name. The SetVirtualDirectory method is provided for that
purpose.
URL reservations are created for the current windows service account. Changing the windows service account
requires updating all the URL reservations manually.
This method causes all application domains to hard recycle. Application domains are restarted after this
operation is complete.

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin
See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Method -
RestoreEncryptionKey
11/2/2020 • 2 minutes to read • Edit Online

Reapplies the specified encryption key to the report server database.

Syntax
Public Sub RestoreEncryptionKey(ByRef KeyFile() As Integer, _
ByRef Length As Int32, ByVal Password As String, _
ByRef HRESULT As Int32, ByRef ExtendedErrors() As String)

public void RestoreEncryptionKey(out Byte[] KeyFile, out Int32 Length,


string Password, out Int32 HRESULT, out string[] ExtendedErrors);

Parameters
KeyFile[]
[out] An array containing the encrypted encryption key.
Length
[out] The length of the array returned by the method.
Password
A string used to encrypt the encryption key.
HRESULT
[out] Value indicating whether the call succeeded or failed.
ExtendedErrors[]
[out] A string array containing additional errors returned by the call.

Return Value
Returns an HRESULT indicating success or failure of the method call. A value of 0 indicates that the method call
was successful. A non-zero value indicates that an error has occurred.

Remarks
If an entry already exists for the report server in the report server database, it is deleted. The new entry is then
created using the specified encryption key and the report server's public key.
The method is most effective when called after the DeleteEncryptionKey method, which clears the list of
encryption keys.

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin
See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Method -
SetDatabaseConnection
11/2/2020 • 2 minutes to read • Edit Online

Sets the report server database connection to a particular report server database.

Syntax
Public Sub SetDatabaseConnection(Server as String, _
DatabaseName as string, CredentialsType as Integer, _
Username as String, Password as String, ByRef HRESULT as Int32)

public void BackupEncryptionKey(string Server,


string DatabaseName, Int32 CredentialsType,
string UserName, string Password, out Int32 HRESULT);

Parameters
Server
The name of the SQL Server instance that is used to host the report server database.
DatabaseName
The name of the report server database.
CredentialsType
The type of credentials to use for the connection. Values can be:
0 - Windows
1 - SQL Server
2 - Windows Service
UserName
The account name used to connect to the report server database.
Password
The password used to connect to the report server database.
HRESULT
[out] Value indicating whether the call succeeded or failed.

Return Value
Returns an HRESULT indicating success or failure of the method call. A value of 0 indicates that the method call
was successful. A non-zero value indicates that an error has occurred.

Remarks
When the CredentialsType parameter is set to 0 (Windows), the UserName and Password parameters must be
set. The UserName parameter must be in the form "domain\username", and the value must represent a valid
Windows logon.
When the CredentialsType parameter is set to 1 ( SQL Server), the value passed in the UserName parameter
must conform to the requirements of a SQL Server login name.
When the CredentialsType parameter is set to 2 (Windows Service), the report server uses integrated security to
connect to the report server database and the UserName and Password parameters are ignored. The Reporting
Server Web service will use either the ASP.NET account or an application pool's account and the Windows
service account to access the report server database.
When called, the SetDatabaseConnection method encrypts and stores the credentials and database information
in the configuration file for the specified report server.
The SetDatabaseConnection method does not check that the report server can connect to the report server
database using the data specified.
When set for the first time, the ConnectionPoolSize property is set based on the following processors:
ConnectionPoolSize = #Processors * 75.
The SetDatabaseConnection method does not grant permissions to the specified account(s). You must call the
GenerateDatabaseRightsScript method for each account that requires access to the report server database and
run the resulting script.

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Method -
SetDatabaseLogonTimeout
11/2/2020 • 2 minutes to read • Edit Online

Specifies the default timeout value for report server database connections.

Syntax
Public Sub SetDatabaseLogonTimeout(LogonTimeout as Int32, _
ByRef HRESULT as Int32)

public void SetDatabaseLogonTimeout(Int32 LogonTimeout,


out Int32 HRESULT);

Parameters
LogonTimeout
The default time-out value, in seconds, for report server database connections.
HRESULT
[out] Value indicating whether the call succeeded or failed.

Return Value
Returns an HRESULT indicating success or failure of the method call. A value of 0 indicates that the method call
was successful. A non-zero value indicates that an error has occurred.

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Method -
SetDatabaseQueryTimeout
11/2/2020 • 2 minutes to read • Edit Online

Specifies the default time-out value for report server database queries.

Syntax
Public Sub SetDatabaseQueryTimeout(LogonTimeout as Int32, _
ByRef HRESULT as Int32)

public void SetDatabaseQueryTimeout (Int32 LogonTimeout,


out Int32 HRESULT);

Parameters
LogonTimeout
The default timeout value, in seconds, for report server database queries.
HRESULT
[out] Value indicating whether the call succeeded or failed.

Return Value
Returns an HRESULT indicating success or failure of the method call. A value of 0 indicates that the method call
was successful. A non-zero value indicates that an error has occurred.

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Method -
SetEmailConfiguration
11/2/2020 • 2 minutes to read • Edit Online

Configures the e-mail delivery extension used by the report server to send e-mail.

Syntax
Public Sub SetEmailConfiguration(ByVal SendUsingSMTPServer As Boolean, _
ByVal SMTPServer As String, ByVal SenderEmailAddress As String, _
ByRef HRESULT As Int32)

public void SetEmailConfiguration (Boolean SendUsingSMTPServer,


string SMTPServer, string SenderEmailAddress,
out Int32 HRESULT);

Parameters
SendUsingSMTPServer
A Boolean value indicating whether the server is to use the SMTP server to send email. This value can only be
set to true. Default value is false.
SMTPServer
A string containing the name or IP address of an SMTP server.
SenderEmailAddress
The e-mail address used in the 'From:' field for e-mails sent from the report server.
HRESULT
[out] Value indicating whether the call succeeded or failed.

Return Value
Returns an HRESULT indicating success or failure of the method call. A value of 0 indicates that the method call
was successful. A non-zero value indicates that an error has occurred.

Remarks
When the SendUsingSMTPServer parameter is set to true , the SendUsing entry in the report server
configuration file is set to 1. When SendUsingSMTPServer is set to false , the SendUsing entry is not
configured.
This method does not provide a way for users to set the SendUsing entry in the report server configuration file
to a value other than 1. To configure the report server for anything other than SMTP mail, you must edit the
configuration file manually.

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin
See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Method -
SetSecureConnectionLevel
11/2/2020 • 2 minutes to read • Edit Online

Sets the secure connection level of the report server.

Syntax
Public Sub SetSecureConnectionLevel(Level as Integer, _
ByRef HRESULT as Int32)

public void SetSecureConnectionLevel(Int32 Level,


out Int32 HRESULT);

Parameters
Level
An integer value representing a secure connection level.
HRESULT
[out] Value indicating whether the call succeeded or failed.

Return Value
Returns an HRESULT indicating success or failure of the method call. A value of 0 indicates that the method call
was successful. A non-zero value indicates that an error has occurred.

Remarks
When called, the report server SecureConnectionLevel property is set to the value specified. A value of 0
indicates that TLS is turned off. A value greater than or equal to 1 indicates that TLS is turned on.
When the value is set, the SecureConnectionLevel element in the report server configuration file is changed,
and the URLRoot element in the configuration file is set to use "https://" if the specified Level is greater than
or equal to 1, or "http://" if the specified Level is 0.
In SQL Server 2008 R2, SecureConnectionLevel is made an on/off switch, default value is 0. For any value
greater than or equal to 1 passed through SetSecureConnectionLevel method API, TLS is considered on and the
configuration property SecureConnectionLevel is set accordingly in the rsreportserver.config file. Values of 2
and 3 are still allowed for backward compatibility.

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Method - SetServiceState
11/2/2020 • 2 minutes to read • Edit Online

Turns the Report Server Windows and Web services on and off.

Syntax
Public Sub SetServiceState(ByVal EnableWindowsService As Boolean, _
ByVal EnableWebService As Boolean, ByVal EnableReportManager As Boolean, _
ByRef HRESULT As Int32)

public void SetServiceState(Boolean EnableWindowsService,


Boolean EnableWebService, Boolean EnableReportManager, out Int32 HRESULT);

Parameters
EnableWindowsService
A Boolean value indicating the state of the Windows service. A value of true starts the Report Server Windows
service; a value of false stops the Windows service.
EnableWebService
A Boolean value indicating the state of the Reporting Services Web service. A value of true starts the Report
Server Web service; a value of false stops the Web service
EnableReportManager
A Boolean value indicating the desired state of the Report manager.

NOTE
This setting has been deprecated as of SQL Server 2016 Reporting Services Cumulative Update 2. The web portal will
always be enabled. The value will be ignored.

HRESULT
[out] Value indicating whether the call succeeded or failed.

Return Value
Returns an HRESULT indicating success or failure of the method call. A value of 0 indicates that the method call
was successful. A non-zero value indicates that an error has occurred.

Remarks
Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Method -
SetUnattendedExecutionAccount
11/2/2020 • 2 minutes to read • Edit Online

Specifies the account used to execute reports unattended.

Syntax
Public Sub SetUnattendedExecutionAccount(UserName as String, _
Password as String, ByRef HRESULT as Int32)

public void SetUnattendedExecutionAccount (string UserName,


string Password, out Int32 HRESULT);

Parameters
UserName
A Windows account to be used for unattended executions.
Password
The password for the specified account.
HRESULT
[out] Value indicating whether the call succeeded or failed.

Return Value
Returns an HRESULT indicating success or failure of the method call. A value of 0 indicates that the method call
was successful. A non-zero value indicates that an error has occurred.

Remarks
The SetUnattendedExecutionAccount method does not verify whether the report server can log in as the
specified user.
It is not possible to use the SetUnattendedExecutionAccount method to run unattended executions in the context
of the report server Windows service.

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Method - SetVirtualDirectory
11/2/2020 • 2 minutes to read • Edit Online

Sets the name of the virtual directory for a given application.

Syntax
Public Sub SetVirtualDirectory(ByVal Application As String, _
ByVal VirtualDirectory As String, ByVal lcid As Int32, _
ByRef [Error] As String, ByRef HRESULT As Int32)

public void SetVirtualDirectory(string Application, string VirtualDirectory,


int Lcid,out string Error, out int HRESULT);

Parameters
Application
The name of application for which to set the virtual directory.
VirtualDirectory
The name of the virtual directory.
lcid
The locale id for the virtual directory.
Error
[out] The description of the error that occurred.
HRESULT
[out] Value indicating whether the call succeeded or failed.

Return Value
Returns an HRESULT indicating success or failure of the method call. A value of 0 indicates that the method call
was successful; an error code indicates the call was not successful.

Remarks
An application can have only one virtual directory name for all URL reservations.
VirtualDirectory must conform to naming conventions for virtual directories. VirtualDirectory must not be
empty string or blank.
Updates the value of the \Configuration\URLReservations\Application\VirtualDirectory element. Succeeds even
if no URL reservations have been created yet.

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin
See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Method -
SetWindowsServiceIdentity
11/2/2020 • 2 minutes to read • Edit Online

Makes the Report Server Windows service run as a specified Windows user, and grants this account sufficient
file system permissions to allow the report server to operate.

Syntax
Public Sub SetWindowsServiceIdentity(UseBuiltInAccount as Boolean, _
Account as String, Password as String, ByRef HRESULT as Int32)

public void SetWindowsServiceIdentity(boolean UseBuiltInAccount,


string Account, string Password, out Int32 HRESULT);

Parameters
UseBuiltInAccount
Indicates whether the specified account is a built-in Windows account.
Account
The Windows account to use to run the Windows service, in the format "DOMAIN\alias".
Password
The password for the account.
HRESULT
[out] Value indicating whether the call succeeded or failed.

Return Value
Returns an HRESULT indicating success or failure of the method call. A value of 0 indicates that the method call
was successful. A non-zero value indicates that an error has occurred.

Remarks
When the UseBuiltInAccount parameter is set to true and the report server is running on Microsoft Windows
2000 or Windows XP, the value of the Name, Domain, and Password parameters are ignored and the Local
system account is used.
When the UseBuiltInAccount parameter is set to true and the report server is running on Windows Server
2003, the Domain and Password properties are ignored, and the name field must contain either
"Builtin\NetworkService" or "Builtin\System" or "Builtin\LocalService".
The SetWindowsServiceIdentity method sets file permissions on files and folders in the report server
installation directory.
The account specified in the Account parameter requires LogonAsSer vice rights in Windows. The method
grants this right to the specified account.
Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
MSReportServer_ConfigurationSetting Members
ConfigurationSetting Method -
SetExtendedProtectionSettings
11/2/2020 • 2 minutes to read • Edit Online

The SetExtendedProtectionSettings method is used to set the RSWindowsExtendedProtectionLevel and the


RSWindowsExtendedProtectionScenario properties in the Reporting Services configuration file
RSReportServer.config.

Syntax
Public Sub SetExtendedProtectionSettings( _
ByVal ExtendedProtectionLevel As String, _
ByVal ExtendedProtectionScenario As String, _
ByRef Warnings() As String, _
ByRef Length As Int32, _
ByRef HRESULT As Int32)

public void SetExtendedProtectionSettings(


string ExtendedProtectionLevel,
string ExtendedProtectionScenario,
out string[] Warnings,
out Int32 Length,
out Int32 HRESULT);

Parameters
ExtendedProtectionLevel
Sets the RSWindowsExtendedProtectionLevel in the RSRreportserver.config file. The required value is not case
sensitive.
The following list shows valid values:
"Off | Allow | Require"

ExtendedProtectionScenario
Sets the RSWindowsExtendedProtectionScenario in the RSReportserver.config file. The required value is not case
sensitive.
The following list shows valid values:
"Any" | "Proxy" | "Direct"

Remarks
The RSWindowsExtendedProtectionLevel and the RSWindowsExtendedProtectionScenario properties apply
when the AuthenticationTypes in the RSReportServer.config file include RSWindowNTLM, RSWindowsNegotiate,
or RSWindowsKerberos. Setting these properties affects how users and client software authenticate with a
report server. It is recommended that you read the documentation for extended protection before setting
ExtendedProtectionLevel to either Allow or Require .
To set the ExtendedProtectionLevel, the user must be a member of the BUILTIN\Administrators group on the
report server.

Requirements
Namespace: root\Microsoft\SqlSer ver\Repor tSer ver\< InstanceName >\v13\Admin

See Also
RSWindowsExtendedProtectionScenario Property (WMI MSReportServer_ConfigurationSetting)
RSWindowsExtendedProtectionLevel Property (WMI MSReportServer_ConfigurationSetting)
Extended Protection for Authentication with Reporting Services
RsReportServer.config Configuration File
Errors and Events Reference (Reporting Services)
11/2/2020 • 4 minutes to read • Edit Online

This article provides information about errors and events for SQL Server Reporting Services. The Reporting
Services log files also contain error information. For more information about the types of log files that are
available and how to view the logs, see Reporting Services Log Files and Sources.

Cause and resolution for reporting services error messages


Cause and resolution information is available for the errors most frequently searched for on the Microsoft web
sites. For more information, see Cause and Resolution of Reporting Services Errors.

Report Server events


The following report server events are recorded in the Microsoft Windows application log.

EVEN T ID TYPE C AT EGO RY SO URC E DESC RIP T IO N

106 Error Scheduling Report Server SQL Server Agent


must be running
when you define a
scheduled operation
(for example, report
subscription and
delivery).

107 Error Startup/Shutdown Report Server <Source> cannot


connect to the report
Scheduling and server database. For
Delivery Processor more information,
see Report Server
Windows Service
(MSSQLServer) 107.

108 Error Extension Report Server <Source> cannot


load a delivery, data
web portal processing, or
rendering extension.

Most likely, this is the


result of an
incomplete
deployment or
removal of an
extension. For more
information, see
Deploying a Data
Processing Extension
and Deploying a
Delivery Extension.
EVEN T ID TYPE C AT EGO RY SO URC E DESC RIP T IO N

109 Information Management Report Server A configuration file


has been modified.
web portal For more
information, see
Reporting Services
Configuration Files.

110 Warning Management Report Server A setting in one of


the configuration files
web portal has been modified
such that it is no
longer valid. A
default value will be
used instead. For
more information,
see Reporting
Services
Configuration Files.

111 Error Logging Report Server <Source> cannot


create the trace log.
web portal For more
information, see
Report Server Service
Trace Log.

112 Warning Security Report Server The report server has


detected a possible
denial of service
attack. For more
information, see
Reporting Services
Security and
Protection.

113 Error Logging Report Server The report server


cannot create a
performance counter.

114 Error Startup/Shutdown web portal The web portal


cannot connect to
the Report Server
service.

115 Warning Scheduling Scheduling and A scheduled task in


Delivery Processor the SQL Server
Agent queue has
been modified or
deleted.

116 Error Internal Report Server An internal error


occurred.
web portal

Scheduling and
Delivery Processor
EVEN T ID TYPE C AT EGO RY SO URC E DESC RIP T IO N

117 Error Startup/Shutdown Report Server The report server


database is an invalid
version.

118 Warning Logging Report Server The trace log is not


at the expected
web portal directory location; a
new trace log will be
created in the default
directory. For more
information, see
Report Server Service
Trace Log.

119 Error Activation Report Server <Source> has not


been granted access
Scheduling and to the contents of
Delivery Processor the report server
database.

120 Error Activation Report Server The symmetric key


cannot be decrypted.
Most likely, there has
been a change to the
account that the
service runs under.
For more
information, see
Configure and
Manage Encryption
Keys (Report Server
Configuration
Manager).

121 Error Startup/Shutdown Report Server Remote Procedure


Call (RPC) Service
failed to start.

122 Warning Delivery Scheduling and Scheduling and


Delivery Processor Delivery Processor
cannot connect to
the SMTP server that
is used for e-mail
delivery. For more
information about
SMTP server
connections, see E-
Mail Settings -
Reporting Services
Native mode
(Configuration
Manager).
EVEN T ID TYPE C AT EGO RY SO URC E DESC RIP T IO N

123 Warning Logging Report Server The report server


failed to write to the
web portal trace log. For more
information about
trace logs, see Report
Server Service Trace
Log.

124 Information Activation Report Server The Report Server


service has been
initialized. For more
information, see
Initialize a Report
Server (Report Server
Configuration
Manager).

125 Information Activation Report Server The key used for


encrypting data was
successfully
extracted. For more
information about
keys, see Configure
and Manage
Encryption Keys
(Report Server
Configuration
Manager).

126 Information Activation Report Server The key used for


encrypting data was
successfully applied.
For more information
about keys, see
Configure and
Manage Encryption
Keys (Report Server
Configuration
Manager).

127 Information Activation Report Server Encrypted content


was successfully
removed from the
report server
database. For more
information about
deleting non-
recoverable
encrypted data, see
Configure and
Manage Encryption
Keys (Report Server
Configuration
Manager).
EVEN T ID TYPE C AT EGO RY SO URC E DESC RIP T IO N

128 Error Activation Report Server Reporting Services


components from
different editions
cannot be used
together.

129 Error Management Report Server An encrypted


configuration file
Scheduling and setting can't be
Delivery Processor decrypted.

130 Error Management Report Server <Source> cannot


find the configuration
Scheduling and file. Configuration
Delivery Processor files are required by
the report server.

131 Error Security Report Server An encrypted user


data value could not
Scheduling and be decrypted.
Delivery Processor

132 Error Security Report Server A failure occurred


during encryption of
user data. The value
cannot be saved.

133 Error Management Report Server A configuration file


failed to load. This
web portal error may occur if the
XML is not valid.
Scheduling and
Delivery Processor

134 Error Management Report Server The report server


failed to encrypt
values for a setting in
a configuration file.

See also
Monitor Reporting Services Subscriptions
Reporting Services Log Files and Sources
Cause and Resolution of Reporting Services Errors
4/3/2020 • 2 minutes to read • Edit Online

This topic contains cause and resolution information for a number of errors related to Reporting Services. The
error message topics in this section provide an explanation of the error message, possible causes, and any
actions you can take to correct the problem.

In This Section
ERRO R M ESSA GE

rsAccessedDenied - Reporting Services Error The permissions granted to user 'mydomain\myAccount' are
insufficient for performing this operation. (rsAccessDenied)
(ReportingServicesLibrary).

rsInternalError - Reporting Services Error An internal error occurred on the report server. See the error
log for more details.

rsModelGenerationError - Reporting Services Error An error occurred while generating model.


(rsModelGenerationError) (ReportingServicesLibrary) %1.

rsProcessingError - Reporting Services Error Errors have occurred in report processing.

rsServerConfigurationError - Reporting Services Error The report server has encountered a configuration error.

rrRenderingError - Reporting Services Error An error occurred during rendering of the report.
(rrRenderingError) %1.

Report Server Windows Service (MSSQLServer) 107 Report Server Windows service (MSSQLSERVER) cannot
connect to the report server database.

See Also
Reporting Services Log Files and Sources
Errors and Events Reference (Reporting Services)
rsAccessedDenied - Reporting Services error
3/31/2021 • 2 minutes to read • Edit Online

The Reporting Services error rsAccessedDenied occurs when a user does not have permission to perform an
action. For example, they don't have a role assignment that allows them to open a report, or they didn't open
their browser with the required permissions.

Applies to: Reporting Services Native mode | SharePoint mode

If the error occurred while accessing the report server directly through a URL, the exception is mapped to
an HTTP 401 error.
If the error occurred while using the web portal, the exception is typically mapped to an HTTP 401 error,
or other defined HTML error page.
If the error occurred during a scheduled operation, subscription, or delivery, the error will appear in the
report server log file only.

Details
DETA IL VA L UE

Product Name SQL Server

Event ID rsAccessedDenied

Event Source Microsoft.ReportingServices.Diagnostics.Utilities.ErrorStrings

Component Reporting Services

Message Text The permissions granted to user 'mydomain\myAccount' are


insufficient for performing this operation. (rsAccessDenied)
(ReportingServicesLibrary)

User action
Permission to access report server content and operations are granted through role assignments. On a new
installation, only local administrators have access to a report server. To grant access to other users, a local
administrator must create a role assignment that specifies a domain user or group account, one or more roles
that define the tasks the user can perform, and a scope (usually the Home folder or root node of the report
server folder hierarchy). You can use the web portal to create role assignments. For more information, see Role
Assignments .
This error is also caused by local administration of the report server. For more information, see Configure a
Native Mode Report Server for Local Administration (SSRS).

See also
Role Assignments
Granting Permissions on a Native Mode Report Server
Roles and Permissions (Reporting Services)
rsInternalError - Reporting Services Error
11/2/2020 • 2 minutes to read • Edit Online

Details
C AT EGO RY VA L UE

Product Name SQL Server

Event ID rsInternalError

Event Source Microsoft.ReportingServices.Diagnostics.Utilities.ErrorStrings

Component Reporting Services

Message Text An internal error occurred on the report server. See the error
log for more details.

Explanation
This is a generic error message that is often followed by a more descriptive error that provides more detail.
Internal errors are uncommon. If you get this error, more information is available in report server trace logs. In
addition, if you are running as local administrator on the same computer on which the error occurs, you can
view the call stack for more information.

User Action
To determine the specific cause for this message, review the report server log files, which are located at
\Microsoft SQL Server\MSRS12.<instancename >\Reporting Services\LogFiles. For more information, see
Reporting Services Log Files and Sources.
To view the call stack, right-click the page on which the error occurs and point to View Source . Viewing the call
stack requires administrator permissions on the same computer on which the error occurs.
If there is no additional information available, you can try your request again.

Internal-Only
See Also
Start and Stop the Report Server Service
rsModelGenerationError - Reporting Services Error
11/2/2020 • 2 minutes to read • Edit Online

Details
C AT EGO RY VA L UE

Product Name SQL Server

Event ID rsRenderingError

Event Source Microsoft.ReportingServices.Diagnostics.Utilities.ErrorStrings

Component Reporting Services

Message Text An error occurred while generating model.


(rsModelGenerationError) (ReportingServicesLibrary) %1

Explanation
The report model could not be generated. In Microsoft SQL Server2005 SP1 and earlier versions, this error is
most likely displayed when the System.Data.DataSet object cannot handle a table or relationship within the
database schema, such as when, for example, two foreign keys are defined on the same column within a table.

User Action
To determine the specific reason that caused this message to appear, review the report server log files, which are
located at \Microsoft SQL Server\<SQL Server Instance>\Reporting Services\LogFiles.

Internal-Only
rsProcessingError - Reporting Services Error
11/2/2020 • 6 minutes to read • Edit Online

Details
C AT EGO RY VA L UE

Product Name SQL Server

Event ID rsProcessingError

Event Source Microsoft.ReportingServices.Diagnostics.Utilities.ErrorStrings.


resources

Component Reporting Services

Message Text Errors have occurred in report processing.

Explanation
One or more errors were encountered while publishing, processing, previewing locally, viewing from the report
server, or creating a subscription for a report. This error message indicates at least one error was detected.
Possible Causes
Possible causes include:
A processing error occurred on the report server.
A processing error occurred during local report processing when previewing a report.
A group expression evaluated to an incorrect data type.
A filter definition specified two expressions that evaluated to data types that could not be compared.
An expression referenced a non-existing field in the Fields collection.
An expression included an aggregate function call with an invalid or conflicting scope.
An expression referenced a non-existing parameter in the Report Parameters collection.
A custom assembly or a Reporting Services assembly that was incorrectly deployed failed to load.
A parameter that has the Nullable property set to False has detected a null value in the parameter.
An expression for the Hidden property of a data region contains an error: Object reference not set to an
instance of an object.
An expression included an invalid function call or syntax error.

User Action
Finding More Information
Do one or more of the following actions:
If you are viewing the report from the report server or if you are viewing the report as a subscription,
look at the entire text of the error message. Additional information is provided in the expanded text.
If you are authoring a report in Report Designer and see this error when you preview or publish the
report, additional information is provided in the Error List window.
If you are authoring a report in Report Designer Preview, look at the entire text of the error message.
Additional information is provided in the expanded text.
If you are viewing a report on the report server, and if you are running as local administrator on the
report server, you can view the call stack if you right-click the page and select View Source . Additional
information is provided in the call stack.
If you are running as local administrator on the report server, search the log file for
ReportProcessingException . Log entries contain more information. The report server log file is typically
located at <drive>:\Program Files\Microsoft SQL Server\MSRS12.MSSQLSERVER\Reporting
Services\LogFiles\ReportServerService__datetimestamp.log. For more information, see Reporting
Services Log Files and Sources.
Failed to Load Expression Host Assembly
Custom assemblies must have strong name signing and the attribute AllowPartiallyTrustedCallers set. For more
information, see Using Custom Assemblies with Reports and Understanding Security Policies.
A Built-in Global Name Does Not Exist
Check the spelling in expressions. Built-in globals, parameters, and field names are case-sensitive. In the
expression causing the error, check that the name actually exists in the report and that it is spelled correctly. For
more information, see Built-in Collections in Expressions (Report Builder and SSRS).
Parameter Properties and Null
A multivalue parameter cannot be Null. For more information, see Report Parameters (Report Builder and
Report Designer).
Main Report with Subreport Could Not Be Processed
A report with subreports must be processed by the same version of the Reporting Services report processor.
When upgrading reports to the current version of the report definition schema, the main report and the
subreports may or may not be updated at the same time. If the version is not compatible between a report and
its subreports, the following message is displayed: "Subreport could not be processed."
You must change either the main report or the subreports so that all the reports can be processed by the same
version of the report processor. For information about why a report fails to upgrade, see Upgrade Reports.
Verify Function Calls are Visual Basic and Not SQL
You can use SQL functions in query text on a relational database. You cannot use Visual Basic functions in query
text.
In Reporting Services, expressions can use Visual Basic functions, System.Math or System.String functions, fully
qualified .NET Framework functions, or custom functions that you provide in custom code or a custom assembly.
You cannot use SQL functions in an expression.
Verify that the function calls made in the query and in the expressions are valid.
Cannot Compare Data Types for a Filter
In a filter equation, the filter expression that defines what to filter on and the filter value must be the same data
type in order to be compared. If you see one of the following errors, modify the field expression or the filter
value so that the data types match:
The processing of <report item type> for the <report item name> cannot be performed. Cannot
compare data of types <type> and <type>. Please check the data type returned by the <report item
name>.
Failed to evaluate the <property name>.
Failed to evaluate the <property name>. It references a dataset field which has an error: <error string>.
For more information, see Filter, Group, and Sort Data (Report Builder and SSRS).
Invalid or Conflicting Scope Specification in an Aggregate Function Call
When you include aggregate function calls to an expression in a Tablix cell, the report processor evaluates the
expression in the scope of the innermost groups to which the cell belongs.
You can also pass the name of a specific scope to an aggregate function. Scope can refer to the name of a
dataset, a data region, or the name of a scope higher on the data hierarchy. This applies to the following
messages:
The <report item type> '<report item name>' has an invalid scope "<scope name>". The scope must be
the current scope, or contained within the current scope.
The <property name> expression for the <report item type> '<report item name>' has a scope
parameter that is not valid for an aggregate function. The scope parameter must be set to a string
constant that is equal to either the name of a containing group, the name of a containing data region, or
the name of a dataset.
For aggregate functions that calculate running totals (Previous , RunningValue , or RowNumber ), you can
specify a scope parameter that is either a row group name or a column group name, but not both. This applies
to the following error message:
Previous , RunningValue or RowNumber aggregate functions used in the data cells of the <report item
type> '<report item name>' refer to grouping scopes in both the columns and rows of the <report item
type>. The scope parameters of all Previous , RunningValue and RowNumber aggregate functions within
a <report item type> can refer to row groupings or data column groupings, but not both.
For more information, see Expression Scope for Totals, Aggregates, and Built-in Collections (Report Builder and
SSRS) and Built-in Collections in Expressions (Report Builder and SSRS).
Default Dataset Scope for a Top Level Text Box
Do not use a default scope for a text box added to the report design surface when the report has more than one
dataset. Use an expression that includes the name of the dataset as the scope, and an aggregate function. For
example, =First(Fields!FieldName.Value, "DataSet2") .

See Also
Expressions (Report Builder and SSRS)
Aggregate Functions Reference (Report Builder and SSRS)
Expression Examples (Report Builder and SSRS)
Report Datasets (SSRS)
Commonly Used Filters (Report Builder and SSRS)
Dataset Fields Collection (Report Builder and SSRS)
Custom Code and Assembly References in Expressions in Report Designer (SSRS)
Parameters Collection References (Report Builder and SSRS)
rsServerConfigurationError - Reporting Services
Error
11/2/2020 • 2 minutes to read • Edit Online

Details
C AT EGO RY VA L UE

Product Name SQL Server

Event ID rsServerConfiguration

Event Source Microsoft.ReportingServices.Diagnostics.Utilities.ErrorStrings

Component Reporting Services

Message Text The report server has encountered a configuration error.

Explanation
This is a general purpose error that occurs when either the report server or a report authoring tool has invalid
configuration settings. The error is usually accompanied by a second message that states the actual cause of the
error.
The following list summarizes possible causes:
The RSReportServer.config or RSReportDesigner.config file cannot be found or read.
XML elements in either configuration file are missing or invalid.
Values for one or more XML elements are missing or invalid.
Registry settings are invalid.

User Action
If this error began to occur after you manually edited a configuration file, remove your changes and enter the
previous value, or restore a previous version if you have a backup.
To review additional error message information that accompanies the rsSer verConfiguration error, review the
report server trace log files, which are located at \Microsoft SQL Server\MSRS12.<instancename >\Reporting
Services\LogFiles. For more information, see Reporting Services Log Files and Sources.

Internal-Only
See Also
Reporting Services Configuration Files
Modify a Reporting Services Configuration File (RSreportserver.config)
rrRenderingError - Reporting Services Error
11/2/2020 • 2 minutes to read • Edit Online

Details
C AT EGO RY VA L UE

Product Name SQL Server

Event ID rrRenderingError

Event Source Microsoft.ReportingServices.Diagnostics.Utilities.ErrorStrings.


resources.Strings

Component Reporting Services

Message Text An error occurred during rendering of the report.


(rrRenderingError) %1

Explanation
This message is returned when Reporting Services cannot render or export the report.
A message that indicates that the size is not supported is typically caused when the specified RDL page size is
not valid. Specify a valid RDL page size and then try again.
A message that indicates that an RDL size measurement is not supported is typically caused when an
unsupported unit type is specified. Valid unit types are cm, in, mm, pc, and pt. Specify a valid unit type and then
try again.
A message that indicates that a negative size is not supported is typically caused when a negative measurement
for the page size, for example -5 cm, is specified. Specify a positive number for the page size and then try again.
A message that indicates that an RDL size is specified out of range is typically caused when a measurement for
the page size is outside of the valid page margin size. Specify a measurement for the page size that is within the
valid page margin sizes.
A message that indicates that a color specified is not supported is typically caused when a color specified in the
RDL is not valid. Choose a color supported by RDL and then try again.
A message that indicates that the action label is only optional when using a single action and that adding
multiple actions requires labels for each action is typically caused when an action label is specified and it is not
valid. Specify a valid action label for each action.
A message that indicates the style argument has to be of a specific type is typically caused when an incorrect
style value for the data type is specified. The RDL specification identifies the valid types that you can use in the
style values of different RDL elements. For example, an incorrect style value for background color is "2pt" and
incorrect value for height is "true". Specify a correct value and then try again.
A message that indicates that the border style is not supported is typically caused when the border style
specified is not valid. Specify a supported border style and then try again.
A message that indicates that the image mime type is not supported is typically caused when the specified
mime type for an image report item is not valid. Specify a supported mime type for the report item and then try
again.
A message that indicates that the number of rows exceeds the maximum possible rows per sheet is typically
caused when the number of rows in an Excel worksheet is exceeded. Excel supports up to 65,000 rows.
A message that indicates that the number of columns exceeds the maximum possible columns per sheet is
typically caused when the number of columns in an Excel worksheet is exceeded.

User Action
Internal-Only
Report Server Windows Service (MSSQLServer) 107
11/2/2020 • 2 minutes to read • Edit Online

Details
C AT EGO RY VA L UE

Product Name SQL Server

Event ID 107

Event Source Report Server Windows Service

Component Reporting Services

Message Text Report Server Windows Service (MSSQLSERVER) cannot


connect to the report server database.

Explanation
The SQL Server Report Server service cannot connect to the report server database. This error occurs during a
service restart if a connection to the report server database cannot be established. Conditions under which this
error occurs include the following:
SQL Server Database Engine service is not running when the Report Server service starts.
The connection to the Database Engine service fails because remote connections or the TCP/IP protocol is
not enabled.
The report server database is not configured correctly.
The service account is not configured correctly, or the account no longer has permissions on the report
server database. This can occur if you do not use the Reporting Services Configuration tool to set up the
account or the report server database.

User Action
Start the Database Engine service if it is not running and check that remote connections are enabled for TCP/IP
protocol.
Use the Reporting Services Configuration tool to configure the report server database and service account.

Internal-Only
See Also
Configure the Report Server Service Account (Report Server Configuration Manager)
Report Server Configuration Manager (Native Mode)
Start and Stop the Report Server Service
Troubleshoot Reporting Services Report Issues
3/22/2021 • 2 minutes to read • Edit Online

This topic helps you troubleshoot problems with Reporting Services report design, previewing a report,
publishing a report to a report server in native mode or SharePoint mode, viewing a report on the report server,
or exporting a report to a different file format.

Monitor Report Servers


You can use system and database tools to monitor report server activity. You can also view report server trace
log files, or query the report server execution log for detailed information about specific reports. If you are
using Performance Monitor, you can add performance counters for the Report Server Web service and Windows
service to identity bottlenecks in on-demand or scheduled processing.
For more information, see Monitoring Report Server Performance.

View the Report Server Logs


Reporting Services records many internal and external events to log files that record data about specific reports,
debugging information, HTTP requests and responses, and report server events. You can also create
performance logs and select performance counters that specify which data to collect. The default directory for
log files for a default installation is
<drive>\Program Files\Microsoft SQL Server\MSRS130.MSSQLSERVER\Reporting Services\LogFiles .

For more information, see Reporting Services log files and sources.
In order to determine specifically whether report waits are due to data retrieval, report processing, or report
rendering, use the Execution Log. For more information, see Report Server ExecutionLog and the ExecutionLog3
view.

View the Call Stack for Report Processing Error Messages on the
Report Server
When you view a published report in Report Manager, you might see an error message that represents a
general processing or rendering error. To see more information, you can view the call stack.
To view the call stack, log on to the report server by using the local administrator credentials, right-click the
Report Manager page, and then click View Source . The call stack provides detailed context for the error
message.

Use <Token xmlns:xlink="http://www.w3.org/1999/xlink">SQL Server


Management Studio to Verify Queries and Credentials
You can use <Token xmlns:xlink="http://www.w3.org/1999/xlink">SQL Server Management Studio to validate
complex queries before you include them in your report.
For more information, see Database Engine query editor and Manage Objects by using Object Explorer.

Analyze Problem Reports with Report Data Cached on the Client


When a report author creates a report in Business Intelligence Development Studio, the authoring client caches
data as an .rdl.data file, which is used when you preview a report. Every time the query changes, the cache is
updated. To debug report problems, it is sometimes useful to prevent the refresh for report data so that the data
does not change when you are debugging.
To control whether \SQL Server Data Tools (SSDT) can only use cached data, add the following section to
devenv.exe.config in the <Token xmlns:xlink="http://www.w3.org/1999/xlink">SQL Server Data Tools. The
location of the default directory is: <drive>:Program Files\Microsoft Visual Studio 10.0\Common7\IDE .

<system.diagnostics>
<switches>
<add name="Microsoft.ReportDesigner.ReportPreviewStore.ForceCache" value="1" />
</switches>
</system.diagnostics>

As long as the value is set to 1, only cached report data is used. Be sure to remove this section when you have
finished debugging the report.

See Also
Errors and events (Reporting Services)

Need help? Microsoft Q & A, Stackoverflow, SQL Server product feedback


Troubleshoot Reporting Services Subscriptions and
Delivery
4/3/2020 • 3 minutes to read • Edit Online

Use this topic to troubleshoot problems that you encounter when working with Reporting Services report
subscriptions, schedules, and delivery.

Log information
The Subscription page in Reporting Services includes a status of a subscription but if there is a problem with the
subscription, the detailed information is in the Reporting Services logs.

Trace logs: The trace logs are text files written to:
\Program Files\Microsoft SQL Server\MSRS13.MSSQLSERVER\Reporting Services\LogFiles

The following is an example log entry:

subscription WindowsService_10 4c7c 05/24/2016-01:05:06 e ERROR Failure writing file


\\ServerName\SalesReports\so71949.xls :
Microsoft.ReportingServices.FileShareDeliveryProvider.FileShareProvider+NetworkErrorException: An
impersonation error occurred using the security context of the current user. ---> System.ArgumentException:
Value does not fall within the expected range. 05/24/2016

For more information on Reporting Services trace logs, see:


Report Server Trace Log.
Reporting Services log files.
Execution Log views:
The execution logs are views in the ReportServer SQL database For more information on Reporting Services see
Reporting Services ExecutionLog and ExecutionLog3 views.

Unable to Send Reports Using E-Mail With Windows Server 2003 and
POP3
If you are running an e-mail application with Post Office Protocol version 3 (POP3) on Microsoft Windows
Server 2003, you might not be able to send reports using the local POP3 server. If you configure the report
server to send e-mail with the local POP3 Server and create a subscription that sends a report, you might
receive the following error message:
Failure sending mail: <error message>

where <error message> is replaced with additional error message information returned from Collaboration
Data Objects (CDO).
To resolve this problem:
Set the value of the SendUsing element in the Rsrepor tser ver.config file to 1.
Clear the value of the SMTPServer property so that it is empty. You will also need to provide a value for the
SMTPServerPickupDirectory property.
For more information about using a local SMTP service for e-mail delivery of reports, see Configuring a Report
Server for E-Mail Delivery.

Failure sending mail: The server rejected the sender address. The
server response was: 454 5.7.3 Client does not have permission to
submit mail to this server
This error occurs when security policy settings on the SMTP server allow only authenticated users to submit
mail for subsequent delivery. If the SMTP server does not accept e-mail submissions from anonymous users,
see the system administrator about getting permission to use the server.

This error can also occur when you specify an Exchange server name as the SMTPServer. To use an Exchange
server for e-mail delivery, you must specify the name of the SMTP gateway that is configured for your
Exchange server. See your Exchange administrator for this information.

Subscriptions are not processing


Subscriptions can fail under these conditions.
The schedule used to trigger the report has expired. For subscriptions that trigger off of a report
snapshot update, the schedule used to refresh the snapshot may be expired.
The report server, SQL Server Agent, or the e-mail server application is not running.
The report is undeliverable (for example, it is too big). To determine whether the delivery is failing
because the report is too large, save the report to a file and then e-mail it. Be sure to choose the same
rendering format you specified in the subscription. If you get a delivery error, use the File Share delivery
extension instead of Report Server E-mail.
The computer used for file share delivery is not running or the file share is configured for read-only
access.
The delivery extension specified in the subscription has been uninstalled or disabled.
The credential settings changed from stored to integrated or prompted values.
The parameter name or data type was changed in the report definition, and the report was republished. If
a subscription includes a parameter that is no longer valid, the subscription becomes inactive.
For more information, see the TechNet Wiki Troubleshoot issues and errors with Reporting Services.

Need help? Microsoft Q & A, Stackoverflow, SQL Server product feedback


Troubleshoot Report Design Issues with Reporting
Services
4/3/2020 • 2 minutes to read • Edit Online

Report design issues may occur when you are creating the report layout in Design view in an report authoring
application. Use this topic to help troubleshoot these issues.

Why does my text box show only a single value and not repeat for
every row?
A text box with a dataset field reference renders only once and displays the first value in the dataset.
Text Box Parent is the Repor t Body
A text box added directly to the design surface can only display an aggregate value for a dataset.
To verify the parent container of a text box, select the text box, and in the Properties pane, scroll to Parent .
If you want text boxes that show each value in a dataset, use a data region, such as a table or matrix. By default,
each cell in a table or matrix contains a text box. Drag dataset fields to each cell.

Why can't I add Total Pages to my Report?


The built-in fields [&PageNumber] and [&TotalPages] are not valid in the report body.
PageNumber and TotalPages are Valid Only in the Page Header and Page Footer.
The built-in fields [&PageNumber] and [&TotalPages] are valid only in the page header and page footer.
To add [&PageNumber] or [&TotalPages] to a report, you must first add a page header or page footer. For more
information, see Add or emove a page header.

NOTE
Including [&TotalPages] in the page header or page footer can have consequences for report processing. For more
information, see Troubleshooting Reports: Reports Exported to a Specific File Format.
Troubleshoot processing of Reporting Services Reports.

How do I design two tables or a chart and a table to display side-by-


side?
Designing a report is not a WYSISYG ("what you see is what you get") experience. The report processor
combines data, report items, report layout information such as white space, containers, and expressions to
produce a compiled report which is then passed to a report renderer that "lays out" that report for the specified
viewing experience: interactive for an HTML browser or as a file format. The automatic layout algorithms may
produce a report layout that you want to change.
Rendering Rules Use Page Size, Containers, Peer Objects, Relative Placement, and White Space to Determine
Layout
In general, a report grows to accommodate its data and pushes other report items aside.
To group multiple data regions or report items together, place them in the same parent container. For example,
place a chart and table in a rectangle container and align their top edges to display them side by side. For more
information, see Rendering Behaviors in Report Builder.

See Also
Troubleshoot Data Retrieval issues with Reporting Services Reports
Troubleshoot Reporting Services Subscriptions and Delivery

Need help? Microsoft Q & A, Stackoverflow, SQL Server product feedback


Troubleshoot Data Retrieval issues with Reporting
Services Reports
4/3/2020 • 4 minutes to read • Edit Online

The first step during report processing is to retrieve the report data for each dataset by running the dataset
query. When you preview a report locally, your data source connections and credentials must use sufficient
permissions to retrieve the data to your computer. When you run a report on the report server, the data source
connections and credentials must use sufficient permissions to retrieve the data on the report server. Use this
topic to help troubleshoot issues about report data retrieval.

I cannot create a connection to a data source


When you create a data source, run a dataset query, or preview a report, you might get the following message:
Cannot create a connection to data source <data source name> .
Data Source is Not Available.
The data source is offline or unavailable for some other reason.
Verify that you have access to the data source and that it is available. For example, use Sql Server Management
Studio to connect to the data source. For relational databases and multidimensional database, use the Test
button on the Connection Proper ties dialog box to verify the connection and permissions to the data source.
Data Source Credentials are Not Valid.
The credentials that you are using to connect to the data source have insufficient permissions to retrieve the
data specified in the query.
Verify that the credentials that you are using the correct credentials. For example, you may have permission to
retrieve data from a Table or View, but not for a specific column; or you might not have sufficient permissions to
run a stored procedure that populates a view.

NOTE
Permissions that you use to retrieve data for previewing a report may be different than permissions that are needed to
retrieve data after a report is published to a report server.

Not a Valid Password


For data sources with prompted credentials or credentials specified in the connection string, the characters for
the password are passed to the underlying data source drivers. If the password or string contains special
characters like punctuation marks, some data source drivers cannot validate the special characters.
Verify that the password does not include special characters. If changing the password is impractical, work with
your database administrator to store the appropriate credentials locally and on the server as part of a system
ODBC data source name (DSN). For more information, see "OdbcConnection.ConnectionString" in the .NET
Framework SDK documentation on MSDN.
NOTE
It is recommended that you do not add login information such as passwords to the connection string. Report Designer
provides a Credentials page on the Data Source Proper ties or the Shared Data Source Proper ties dialog boxes
that you can use to enter credentials. These credentials are stored securely on the report authoring computer.

Why do I see no data when I run my query in the query designer?


When you create a dataset, the dataset field collection appears in the Report Data pane. Sometimes the dataset
field collection does not appear as expected.
Import Query Does Not Import Calculated Fields
Although calculated fields are saved in a report definition, they are not included when you import a dataset
query from another report. Only fields specified by the dataset query appear in the Report Data pane after you
create a dataset by importing a query from another report.
To view calculated fields in the Report Data pane, you must define them for each report in which they are used.
Some Data Providers Do Not Support Automatic Population of the Dataset Field Collection
When you define a query in the Dataset Properties dialog box, and then close the dialog box, the dataset field
collection usually appears in the Report Data pane. For some data sources, the dataset field collection is not
automatically populated.
To populate the dataset field collection, do the following:
Make sure that you have permissions to retrieve field information from the database. For some data sources,
you might have permissions to access the data source but not the table or column. You may have permission
to access a view but not the permissions to run the stored procedures that create the view. To validate your
access to specific tables or columns in a database, verify your query results in a separate application such as
SQL Server Management Studio using the same permissions you use for the report. If you cannot see the
results that you want for your query, work with the system administrator to adjust your permissions to the
data.
Run the query in the query pane of the Dataset Proper ties dialog box. For more information, see Report
Datasets (Report Builder 3.0 and SSRS).
Add fields manually. For more information, see How to: Add, Edit, Refresh Fields in the Report Data Pane
(Report Builder 3.0 and SSRS).

See Also
Errors and events (Reporting Services)

Need help? Microsoft Q & A, Stackoverflow, SQL Server product feedback


Troubleshoot Processing of Reporting Services
Reports
4/3/2020 • 2 minutes to read • Edit Online

After the report data is retrieved, the report processor combines the data and layout information. Each report
item property that has an expression is evaluated in the context of the combined data and layout. Use this topic
to help troubleshoot these issues.

My report definition is not valid.


At run time, the report processor combines data and layout elements in the report definition, and evaluates
expressions for report item properties.
The report processor checks that the report definition (.rdl file) conforms to the schema that is specified in the
namespace declaration at the beginning of the .rdl file. For more information about RDL schemas, see Find the
Report Definition Schema Version (SSRS).
In addition, the report expressions that are evaluated at run time must follow a set of rules that ensure the
report data and layout can be combined correctly. When the report processor detects a problem, you might see
the following message: The definition of the report <report name> is invalid.
Report item expressions can only refer to fields within the current dataset scope or, if inside an aggregate,
the specified dataset scope.
Use the following list to help determine the cause of the error:
When a report has more than one dataset, an aggregate expression in a text box on the report body must
specify a scope parameter. For example, =First(Fields!FieldName.Value, "DataSet1") .
To specify a scope parameter, provide the name of a dataset, data region, or group that is in scope for the report
item. For more information, see Understanding Expression Scope for Totals, Aggregates, and Built-in Collections
(Report Builder 3.0 and SSRS) and Expression Reference (Report Builder 3.0 and SSRS).
Names of objects must be greater than 0 and less than or equal to 256 characters.
The length of object identifiers in a report definition is restricted to 256 characters. Identifiers must be case-
sensitive and CLS-compliant. Names must begin with a letter, consist of letters, numbers, or an underscore (_),
and have no spaces. For example, text box names or data region names must comply with these guidelines.
To change the name of an object, in the toolbar of the Properties pane, select the item in the drop-down list,
scroll to Name and enter a valid object name.

A text box displays "#Error"; how do I fix it?


The "#Error" message occurs when the report processor evaluates expressions in report item properties at run-
time and detects a data type conversion, scope, or other error.
A data type error usually means the default or the specified data type is not supported. A scope error means that
the specified scope was not available at the time that the expression was evaluated.
To eliminate the #Error message, you must rewrite the expression that causes it. To determine more details
about the issue, view the detailed error message.
In preview, in \SQL Server Data Tools (SSDT), view the Output window. On the report server, view the call stack.
See Also
Errors and events (Reporting Services)

Need help? Microsoft Q & A, Stackoverflow, SQL Server product feedback


Troubleshoot Reporting Services Report Rendering
Issues
4/3/2020 • 3 minutes to read • Edit Online

After the report data and layout information is combined, the compiled report is sent to a report renderer. For
example, when you preview a report locally, you are using the HTML renderer to view the compiled report. Use
this topic to help troubleshoot issues specific to report rendering.

Why do I have extra white space, including blank pages, in my report?


Report items are automatically adjusted during report processing to preserve white space that is defined as part
of the report. White space in the report design view is preserved. On the report design surface, the white
background represents white space that is preserved when a report is viewed, exported, or printed, depending
on target medium.
White Space and Page Breaks Interact During Rendering
When you view a report or export the report to a file format, the associated rendering extension processes the
report and saves it to the specified file format. Each rendering extension processes the white space in a report
according to specific rules. White space is also affected by the page setting properties, page breaks set on report
items, the relative position of report items placed in the report body, the KeepTogether property for certain
report items, and whether report items are in parent containers.
To eliminate extra pages because of report width, drag the edge of the report design surface to align with the
outermost report item. For a left-to-right report layout, drag the right edge to be aligned with the outermost
report item. For more information, see Rendering Behaviors.
White Space is Not Preserved at the End of a Report
Reporting Services provides an option that lets you control whether to preserve or eliminate white space at the
end of a report.
To preserve white space at the end of a report, select the report and in the Properties pane, scroll to
ConsumeContainerWhitespace, and type False.

Why do my reports look different when exported to different


formats?
After you run a report, you can export it to another format such as Excel, Word, or PDF. Depending on the format
to which you export the report certain rules and limitations might apply. You can address many limitations by
considering them when you create the report. You might need to use a slightly different layout in your report,
carefully align items within the report, confine report footers to a single line of text, and so forth. You can also
use the RenderFormat built-in global to conditionally use a different report layout for different renderers. Other
built-in globals can help you manage pagination in the exported format and name worksheet tabs in Excel. For
more information, see Export Reports and Use Built-in Globals an Users Reference.

How can I view all my report data on one page?


For an interactive viewing experience for reports that do not have excessive amounts of data, you might want to
see all the data on one page.
For soft page-break renderers, to view all the data on one page, in Report properties, set InteractiveHeight to 0.
In soft page-break renderers, existing page breaks are the ignored.

NOTE
When a report has no page breaks, the entire report must be processed before you can view the first page.

For more information about categories of renderers, see Rendering Behaviors.

Reports do not run when your browser is configured to prompt for


credentials
Viewing your reports may fail with an error message when your browser is configured to prompt for credentials
and your data source is configured for integrated windows authentication. This occurs when your data source is
on a separate computer than the report server, the data source is configured to use Windows Authentication,
and the browser is set to prompt for credentials. The following are examples of messages you will see.
When the data source is configured for a Microsoft SQL Server connection type:
An error has occurred during report processing.
Cannot create a connection to data source 'localhost'.
Login failed for user '(null)'. Reason: Not associated with a trusted SQL Server connection.

When the data source is configured for a Microsoft SharePoint List connection type:
An error occurred during client rendering.
An error has occurred during report processing.
Query execution failed for dataset 'DataSet1'.
The request failed with HTTP status 401: Unauthorized.

To work around this issue: Modify the data source to use stored credentials instead of Windows credentials.
This issue applies to: Browsers configured to prompt for credentials.

See Also
Errors and events (Reporting Services)
Troubleshoot Data Retrieval issues with Reporting Services Reports
Troubleshoot Reporting Services Subscriptions and Delivery

Need help? Microsoft Q & A, Stackoverflow, SQL Server product feedback


Troubleshoot Publishing or Viewing a Report on a
Native Mode Report Server
4/3/2020 • 2 minutes to read • Edit Online

When you publish or upload a report to a report server configured in native mode, you might see issues that
are specific to viewing reports on the report server. Use this topic to help troubleshoot these issues.

Why am I being prompted for credentials when I publish a report?


To deploy a report to a report server, you must specify the address of the server. You might see Reporting
Services Login dialog box, which prompts you for credentials.
Report Server Name is Not Specified Correctly
When you deploy the report to a report server in native mode, a common error is to specify the name of the
reports folder instead of the name of the report server.
Verify that the report server URL is the address of the report server (for example,
https://localhost/reportserver ), not the address of the Report Manager virtual directory (for example,
https://localhost/reports ). If you have specified a port number for the report server that is different than the
default port number 80, you must specify it in the report server address (for example,
https://localhost:81/reportserver ).

Nothing happens when I toggle items in my published report.


When you view a report in local preview, you can toggle items in the report and show or hide them. When you
view the same report after it is published to the report server, toggle items no longer work.
<report server name> Includes an Underscore (_)
If a report runs without errors, but toggle items do not work (for example, you click an expand icon (+) and
nothing happens), check the name of the computer hosting the report server. If the computer name includes an
underscore, toggle items do not work. This is a known issue. There is no workaround.
To run reports with toggle items, you must use a computer that does not include underscore characters in its
name.

Images and charts do not load when I use Run As and a browser to
run my report.
When you run Report Manager under a different security context, you might not see all report items in a report.
Insufficient Permissions on Internet Temporary File Folders
In some circumstances, when you use Report Manager to view published reports that include charts or images,
you might not see them. For example, when you use the Microsoft Windows Run As command to view a report
using a different security context, you might not have permissions to the folder where the report server caches
charts and images as temporary Internet files.
Verify that you have permission to access the folders that contain the cached files.

See Also
Browser Support for Reporting Services and Power View
Errors and events (Reporting Services)
Troubleshoot Data Retrieval issues with Reporting Services Reports
Troubleshoot Reporting Services Subscriptions and Delivery

Need help? Microsoft Q & A, Stackoverflow, SQL Server product feedback


Troubleshoot Server & Database Connection
Problems with Reporting Services
3/5/2021 • 10 minutes to read • Edit Online

Use this topic to troubleshoot problems that you experience when connecting to a report server. This topic also
provides information about "Unexpected error" messages. For more information about data source
configuration and configuring report server connection information, see Specify Credential and Connection
Information for Report Data Sources and Configure a Report Server Database Connection (Report Server
Configuration Manager).

Cannot create a connection to data source 'datasourcename'.


(rsErrorOpeningConnection)
This is a generic error that occurs when the report server cannot open a connection to an external data source
that provides data to a report. This error appears with a second error message that indicates the underlying
cause. The following additional errors can appear with rsErrorOpeningConnection .
Login failed for user 'UserName'
The user does not have permission to access the data source. If you are using a SQL Server database, verify that
the user has a valid database user login. For more information about how to create a database user or a SQL
Server login, see Create a Database User and Create a SQL Server Login.
Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'
This error occurs when credentials are passed across multiple computer connections. If you are using Windows
Authentication, and the Kerberos version 5 protocol is not enabled, this error occurs when credentials are
passed across more than one computer connection. To work around this error, consider using stored credentials
or prompted credentials. For more information about how to work around this issue, see Specify Credential and
Connection Information for Report Data Sources.
An error has occurred while establishing a connection to the server.
When connecting to SQL Server, this failure may be caused by the fact that under the default settings SQL
Server does not allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a
connection to SQL Server). This error is returned by the instance of the Database Engine that hosts the report
server database. In most cases, this error occurs because the SQL Server service is stopped. Or, if you are using
SQL Server Express with Advanced Services or a named instance, this error will occur if the report server URL or
connection string for the report server database is not correct. To work through these issues, do the following:
Verify that the SQL Server (MSSQLSERVER ) service is started. On the computer that hosts the instance of
the Database Engine, click Start, click Administrative Tools, click Services, and scroll to SQL Server
(MSSQLSERVER ). If it is not started, right-click the service, select Properties, in Startup Type select
Automatic, click Apply, click Start, and then click OK.
Verify that the report server URL and report server database connection string is correct. If Reporting
Services or the Database Engine was installed as a named instance, the default connection string that is
created during Setup will include the instance name. For example, if you installed a default instance of SQL
Server Express with Advanced Services on a server named DEVSRV01, the web portal URL is
DEVSRV01\Reports$SQLEXPRESS. Furthermore, the database server name in the connection string will
resemble DEVSRV01\SQLEXPRESS. For more information about URLs and data source connection strings for
SQL Server Express, see Reporting Services in SQL Server Express with Advanced Services. To verify the
connection string for the report server database, start the Reporting Services Configuration tool and view
the Database Setup page.
A connection cannot be made. Ensure that the server is running.
This error is returned by ADOMD.NET provider. There are several reasons why this error can occur. If you
specified the server as "localhost", try specifying the server name instead. This error can also occur if memory
cannot be allocated to the new connection. For more information, see Knowledge Base Article 912017 - Error
message when you connect to an instance of SQL Server 2005 Analysis Services:.
If the error also includes "No such host is known", it indicates that the Analysis Services server is not available or
is refusing the connection. If the Analysis Services server is installed as a named instance on a remote computer,
you might have to run the SQL Server Browser service to get the port number used by that instance.
(Report Services SOAP Proxy Source )
If you get this error during report model generation, and the additional information section includes "SQL
Server does not exist or access denied", you might be encountering the following conditions:
The connection string for the data source includes "localhost".
TCP/IP is disabled for the SQL Server service.
To resolve this error, you can either modify the connection string to use the server name or you can enable
TCP/IP for the service. Follow these steps to enable TCP/IP:
1. Start SQL Server Configuration Manager.
2. Expand SQL Ser ver Network Configuration .
3. Select Protocols for MSSQLSERVER .
4. Right-click TCP/IP , and select Enable .
5. Select SQL Ser ver Ser vices .
6. Right-click SQL Ser ver (MSSQLSERVER) , and select Restar t .

WMI error when connecting to a report server in Management Studio


By default, Management Studio uses the Reporting Services Windows Management Instrumentation (WMI)
provider to establish a connection to the report server. If the WMI provider is not installed correctly, you will get
the following error when attempting to connect to the report server:
Cannot connect to <your server name>. The Reporting Services WMI provider is not installed or is
misconfigured (Microsoft.SqlServer.Management.UI.RSClient).
To resolve this error, you should reinstall the software. For all other cases, as a temporary work-around, you can
connect to the report server through the SOAP endpoint:
In the Connect to Ser ver dialog box in Management Studio, in Ser ver Name , type the report server URL.
By default, it is https://<your server name>/reportserver . Or if you are using SQL Server 2008 Express with
Advanced Services, it is https://<your server name>/reportserver$sqlexpress .

To resolve the error so that you can connect using the WMI provider, you should run Setup to repair Reporting
Services, or reinstall Reporting Services.

Connection error, where login failed due to unknown user name or


bad password
An rsRepor tSer verDatabaseLogonFailed error can occur if you are using a domain account for the
connection from the report server to the report server database connection, and the password for the domain
account has been changed.
The full error text is: "The report server cannot open a connection to the report server database. The logon failed
(rsRepor tSer verDatabaseLogonFailed ). Logon failure: unknown user name or bad password."
If you reset the password, you must update the connection. For more information, see Configure a Report
Server Database Connection (Report Server Configuration Manager).

The report server cannot open a connection to the report server


database. (rsReportServerDatabaseUnavailable).
Full Message: The report server cannot open a connection to the report server database. A connection to the
database is required for all requests and processing. (rsReportServerDatabaseUnavailable)
This error occurs when the report server cannot connect to the SQL Server relational database that provides
internal storage to the server. The connection to the report server database is managed through the Reporting
Services Configuration tool. You can run the tool, go to the Database Setup page, and correct the connection
information. Using the tool to update connection information is a best practice; the tool ensures that dependent
settings are updated and that services are restarted. For more information, see Configure a Report Server
Database Connection and Configure the Report Server Service Account.
This error can also occur if the Database Engine instance that hosts the report server database is not configured
for remote connections. Remote connection is enabled by default in some editions of SQL Server. To verify
whether it is enabled on the SQL Server Database Engine instance you are using, run the SQL Server
Configuration Manager tool. You must enable both TCP/IP and named pipes. A report server uses both
protocols. For instructions on how to enable remote connections, see the section "How to Configure Remote
Connections to the Report Server Database" in Configure a Report Server for Remote Administration.
If the error includes the following additional text, the password expired on the account used to run the Database
Engine instance: "An error has occurred while establishing a connection to the server. When connecting to SQL
Server, this failure may be caused by the fact that under the default settings SQL Server does not permit remote
connections. (provider : SQL Ser ver Network Interfaces, error : 26 - Error Locating Ser ver/Instance
Specified) ." To resolve this error, reset the password.

"RPC Server is not listening"


The Report Server service uses Remote Procedure Call (RPC) server for some operations. If you get the "RPC
Server is not listening" error, verify that the Report Server service is running.

Unexpected error (General network error)


This error indicates a data source connection error. You should check the connection string, and verify that you
have permission to access the data source. If you are using Windows Authentication to access a data source, you
must have permission to access the computer that hosts the data source.

Unable to grant database access in SharePoint Central Administration


When you have configured Reporting Services to integrate with a SharePoint product or technology on
Windows Vista or Windows Server 2008, you might receive the following error message when you try to grant
access on the Grant Database Access page in SharePoint Central Administration: "A connection to the
computer cannot be established."
This happens because User Account Control (UAC) in Windows Vista and Windows Server 2008 requires explicit
acceptance from an administrator to elevate and use the administrator token when performing tasks that
require administrator permissions. In this case, however, the Windows SharePoint Services Administration
service cannot be elevated to grant the Reporting Services service account or accounts access to the SharePoint
configuration and content databases.
In SQL Server 2008 Reporting Services, only the Report Server service account requires database access; in SQL
Server 2005 Reporting Services SP2, both the Report Server Windows service account and the Report Server
Web service account require database access. For more information about the Report Server service account in
SQL Server 2008, see Service Account (Reporting Services Configuration).
There are two workarounds for this issue.
1. In one workaround, you can temporarily turn off UAC and use SharePoint Central Administration to grant
access.

IMPORTANT
Use caution if you turn off UAC to work around this issue, and turn on UAC immediately after you grant database access
in SharePoint Central Administration. If you do not want to turn off UAC, use the second workaround provided in this
section. For information about UAC, see the Windows product documentation.
2. In the second workaround, you can manually grant database access to the Reporting Services service account or
accounts. You can use the following procedure to grant access by adding the Reporting Services service account or
accounts to the correct Windows group and database roles. This procedure applies to the Report Server service account
in SQL Server 2008 Reporting Services; if you are running SQL Server 2005 Reporting Services, perform the procedure for
the Report Server Windows service account and the Report Server Web service account.

To manually grant database access


1. Add the Report Server service account to the WSS_WPG Windows group on the Reporting Services
computer.
2. Connect to the database instance that hosts the SharePoint configuration and content databases, and create a
SQL database login for the Report Server service account.
3. Add the SQL database login to the following database roles:
db_owner role in the WSS Content database
WSS_Content_Application_Pools role in the SharePoint_Config database

Unable to connect to the /reports and /reportserver directories when


the report server databases are created on a virtual SQL Server that
runs in a Microsoft Cluster Services (MSCS) cluster
When you create the report server databases, Repor tSer ver and Repor tSer verTempDB , on a virtual SQL
Server that runs in a MSCS cluster, the remote name in the format <domain>\<computer_name>$ might not be
registered to SQL Server as a login. If you have configured the Report Server service account as an account that
requires this remote name for connections, users cannot connect to the /reports and /reportserver directories in
Reporting Services. For example, the built-in Windows account NetworkService requires this remote name. To
avoid this issue, use an explicit domain account or a SQL Server login to connect to the report server databases.

See Also
Browser Support for Reporting Services and Power View
Errors and events (Reporting Services)
Troubleshoot Data Retrieval issues with Reporting Services Reports
Troubleshoot Reporting Services Subscriptions and Delivery

Need help? Microsoft Q & A, Stackoverflow, SQL Server product feedback


Develop with the REST APIs for Reporting Services
3/9/2020 • 3 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server Reporting Services (2017 and later) ❌ Power BI Report Server
Microsoft SQL Server 2017 Reporting Services support Representational State Transfer (REST) APIs. The REST
APIs are service endpoints that support a set of HTTP operations (methods), which provide create, retrieve,
update, or delete access for resources within a report server.
The REST API provides programmatic access to the objects in a SQL Server 2017 Reporting Services report
server catalog. Examples of objects are folders, reports, KPIs, data sources, datasets, refresh plans, subscriptions,
and more. Using the REST API, you can, for example, navigate the folder hierarchy, discover the contents of a
folder, or download a report definition. You can also create, update, and delete objects. Examples of working with
objects are upload a report, execute a refresh plan, delete a folder, and so on.

NOTE
If you're interested in viewing or deleting personal data, please review Microsoft's guidance in the Windows Data Subject
Requests for the GDPR site. If you're looking for general information about GDPR, see the GDPR section of the Service
Trust portal.

Components of a REST API request/response


A REST API request/response pair can be separated into five components:
The request URI , which consists of: {URI-scheme} :// {URI-host} / {resource-path} ? {query-string} .
Although the request URI is included in the request message header, we call it out separately here
because most languages or frameworks require you to pass it separately from the request message.
URI scheme: Indicates the protocol used to transmit the request. For example, http or https .
URI host: Specifies the domain name or IP address of the server where the REST service endpoint is
hosted, such as myserver.contoso.com .
Resource path: Specifies the resource or resource collection, which may include multiple segments
used by the service in determining the selection of those resources. For example:
CatalogItems(01234567-89ab-cdef-0123-456789abcdef)/Properties can be used to get the specified
properties for the CatalogItem.
Query string (optional): Provides additional simple parameters, such as the API version or resource
selection criteria.
HTTP request message header fields:
A required HTTP method (also known as an operation or verb), which tells the service what type of
operation you are requesting. Reporting Services REST APIs support DELETE, GET, HEAD, PUT, POST,
and PATCH methods.
Optional additional header fields, as required by the specified URI and HTTP method.
Optional HTTP request message body fields, to support the URI and HTTP operation. For example,
POST operations contain MIME-encoded objects that are passed as complex parameters. For POST or
PUT operations, the MIME-encoding type for the body should be specified in the Content-type request
header as well. Some services require you to use a specific MIME type, such as application/json .
HTTP response message header fields:
An HTTP status code, ranging from 2xx success codes to 4xx or 5xx error codes. Alternatively, a
service-defined status code may be returned, as indicated in the API documentation.
Optional additional header fields, as required to support the request's response, such as a
Content-type response header.
Optional HTTP response message body fields:
MIME-encoded response objects are returned in the HTTP response body, such as a response from a
GET method that is returning data. Typically, these objects are returned in a structured format such as
JSON or XML, as indicated by the Content-type response header.

API documentation
A modern REST API calls for modern API documentation. The REST API is built on the OpenAPI specification
(also called the swagger specification) and documentation is available on SwaggerHub. Beyond documenting
the API, SwaggerHub helps generate a client library in the language of choice - JavaScript, TypeScript, C#, Java,
Python, Ruby, and more.

Testing API calls


A tool for testing HTTP request/response messages is Fiddler. Fiddler is a free web debugging proxy that can
intercept your REST requests, making it easy to diagnose the HTTP request/ response messages.

Next steps
Review the available APIs over on SwaggerHub.
Samples are available on GitHub. The sample includes an HTML5 app built on TypeScript, React, and webpack
along with a PowerShell example.
More questions? Try asking the Reporting Services forum
Integrating Reporting Services into Applications
3/5/2021 • 2 minutes to read • Edit Online

APPLIES TO: ✔ ️ SQL Server Reporting Services (2016) ❌ SQL Server Reporting Services (2017) ❌ Power BI
Report Server
Reporting Services is an open and extensible reporting platform designed to provide developers with a
comprehensive set of APIs for developing solutions.

NOTE
Starting with SQL Server 2017 Reporting Services, REST API access is available for developing solutions. SOAP API access
has been deprecated. For more information, see Develop with the REST APIs for Reporting Services.

There are three options for integrating Reporting Services into custom applications: the Report Server Web
service, also known as the Reporting Services SOAP API, the Report Viewer controls for Microsoft Visual Studio,
and URL access. Each option provides a different approach for integrating Reporting Services into your
applications.

Report server web service


The Report Server Web service is the primary interface for developing against Reporting Services. Whether you
are developing code to manage your report catalog or developing code to render reports to a supported
format, the Web service exposes all the necessary methods to integrate Reporting Services into your
applications. An example of one such application is the web portal, which is included with Reporting Services; it
uses the Web service to manage the report server database.

Report Viewer controls for Visual Studio


The Report Viewer controls available for Visual Studio are used for integrating report viewing into your
applications. There are two controls: one for Windows Forms-based applications and one for Web Forms
applications. Each control provides the capability for viewing reports that have been deployed to a report server
as well as the ability to render reports that exist in an environment where a report server has not been installed.

URL access
URL access is another option for integrating report viewing into your applications if the Report Viewer controls
are not an option. In addition, URL access is useful for sending links to reports to users via e-mail.

In this section
Integrating Reporting Services Using SOAP
Describes how to integrate Reporting Services report navigation and management into your existing business
applications using the Report Server Web service.
Integrating Reporting Services Using the Report Viewer Controls
Describes how to integrate report viewing into your existing applications using the Report Viewer controls.
Integrating Reporting Services Using URL Access
Describes how to integrate Reporting Services report navigation into your existing business applications using
URL access.

Next steps
For deciding on using URL access or the SOAP APIs, see Choosing between URL access and SOAP in Reporting
Services.
For information on the SQL Server 2017 Reporting Services REST API, see Develop with the REST APIs for
Reporting Services.
More questions? Try asking the Reporting Services forum
Integrate Reporting Services Using the Report
Viewer Controls - Get Started
11/2/2020 • 4 minutes to read • Edit Online

The Report Viewer controls can be used to integrate Reporting Services RDL reports into WebForms and
WinForms apps. For detailed information about recent updates see the changelog.

Add the Report Viewer control to a new web project


1. Create a new ASP.NET Empty Web Site or open an existing ASP.NET project.
You can use .NET Framework 4.6 or any newer version.

2. Install the Report Viewer control NuGet package via the NuGet package manager console .

Install-Package Microsoft.ReportingServices.ReportViewerControl.WebForms

3. Add a new .aspx page to the project and register the Report Viewer control assembly for use within the
page.

<%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=15.0.0.0, Culture=neutral,


PublicKeyToken=89845dcd8080cc91" namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %>

4. Add a ScriptManagerControl to the page.


5. Add the Report Viewer control to the page. The snippet below can be updated to reference a report
hosted on a remote report server.

<rsweb:ReportViewer ID="ReportViewer1" runat="server" ProcessingMode="Remote">


<ServerReport ReportPath="" ReportServerUrl="" />
</rsweb:ReportViewer>

The final page should look like the following.


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="Sample" %>

<%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=15.0.0.0, Culture=neutral,


PublicKeyToken=89845dcd8080cc91" namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager runat="server"></asp:ScriptManager>
<rsweb:ReportViewer ID="ReportViewer1" runat="server" ProcessingMode="Remote">
<ServerReport ReportServerUrl="https://AContosoDepartment/ReportServer"
ReportPath="/LatestSales" />
</rsweb:ReportViewer>
</form>
</body>
</html>

Update an existing project to use the Report Viewer control


Make sure to update any assembly references to version 15.0.0.0, including the project's web.config and all .aspx
pages that reference the viewer control.
Sample web.config changes
<?xml version="1.0"?>
<!--
For more information on how to configure your ASP.NET application, please visit
https://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.6">
<assemblies>
<!-- All assemblies updated to version 15.0.0.0. -->
<add assembly="Microsoft.ReportViewer.Common, Version=15.0.0.0, Culture=neutral,
PublicKeyToken=89845DCD8080CC91"/>
<add assembly="Microsoft.ReportViewer.DataVisualization, Version=15.0.0.0, Culture=neutral,
PublicKeyToken=89845DCD8080CC91"/>
<add assembly="Microsoft.ReportViewer.Design, Version=15.0.0.0, Culture=neutral,
PublicKeyToken=89845DCD8080CC91"/>
<add assembly="Microsoft.ReportViewer.ProcessingObjectModel, Version=15.0.0.0, Culture=neutral,
PublicKeyToken=89845DCD8080CC91"/>
<add assembly="Microsoft.ReportViewer.WebDesign, Version=15.0.0.0, Culture=neutral,
PublicKeyToken=89845DCD8080CC91"/>
<add assembly="Microsoft.ReportViewer.WebForms, Version=15.0.0.0, Culture=neutral,
PublicKeyToken=89845DCD8080CC91"/>
<add assembly="Microsoft.ReportViewer.WinForms, Version=15.0.0.0, Culture=neutral,
PublicKeyToken=89845DCD8080CC91"/>
</assemblies>
<buildProviders>
<!-- Version updated to 15.0.0.0. -->
<add extension=".rdlc"
type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.WebForms, Version=15.0.0.0,
Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
</buildProviders>
</compilation>
<httpRuntime targetFramework="4.6"/>
<httpHandlers>
<!-- Version updated to 15.0.0.0 -->
<add path="Reserved.ReportViewerWebControl.axd" verb="*"
type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=15.0.0.0,
Culture=neutral, PublicKeyToken=89845DCD8080CC91"
validate="false"/>
</httpHandlers>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules runAllManagedModulesForAllRequests="true"/>
<handlers>
<!-- Version updated to 15.0.0.0 -->
<add name="ReportViewerWebControlHandler" verb="*" path="Reserved.ReportViewerWebControl.axd"
preCondition="integratedMode"
type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=15.0.0.0,
Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
</handlers>
</system.webServer>
</configuration>

Sample .aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="SampleAspx" %>

<!-- Update version to 15.0.0.0 -->


<%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=15.0.0.0, Culture=neutral,
PublicKeyToken=89845dcd8080cc91" namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %>

<!DOCTYPE html>
Add the Report Viewer control to a new Windows Forms project
1. Create a new Windows Forms Application or open an existing project.
You can use .NET Framework 4.6 or any newer version.

2. Install the Report Viewer control NuGet package via the NuGet package manager console .

Install-Package Microsoft.ReportingServices.ReportViewerControl.WinForms

3. Add a new control from code or add the control to the toolbox.

private Microsoft.Reporting.WinForms.ReportViewer reportViewer1;

private void InitializeComponent()


{
this.reportViewer1 = new Microsoft.Reporting.WinForms.ReportViewer();
this.SuspendLayout();
//
// reportViewer1
//
this.reportViewer1.Location = new System.Drawing.Point(168, 132);
this.reportViewer1.Name = "reportViewer1";
this.reportViewer1.ServerReport.BearerToken = null;
this.reportViewer1.Size = new System.Drawing.Size(396, 246);
this.reportViewer1.TabIndex = 0;
//
// Form1
//
this.Controls.Add(this.reportViewer1);
}

How to set 100% height on the Report Viewer control


If setting the height of the viewer control to 100% the parent element is required to have a defined height, or all
ancestors are required to have percentage heights.
Set the height of all the ancestors to 100%
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<style>
html,body,form,#div1 {
height: 100%;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div id="div1" >
<asp:ScriptManager runat="server"></asp:ScriptManager>
<rsweb:ReportViewer ID="ReportViewer1" runat="server" ProcessingMode="Remote" Height="100%"
Width="100%">
<ServerReport ReportServerUrl="https://test/ReportServer" ReportPath="/testreport" />
</rsweb:ReportViewer>
</div>
</form>
</body>
</html>

Set the parent's height attribute


For more information about viewport percentage lengths, see Viewport-percentage lengths.

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
</head>
<body>
<form id="form1" runat="server">
<div style="height:100vh;">
<asp:ScriptManager runat="server"></asp:ScriptManager>
<rsweb:ReportViewer ID="ReportViewer1" runat="server" ProcessingMode="Remote" Height="100%"
Width="100%">
<ServerReport ReportServerUrl="https://test/ReportServer" ReportPath="/testreport" />
</rsweb:ReportViewer>
</div>
</form>
</body>
</html>

Add the control to Visual Studio toolbar


The Report Viewer Control is now shipped as a NuGet package and no longer shows in the Visual Studio toolbox
by default. You can add the control to the toolbox manually.
1. Install the NuGet package for either the WinForms or WebForms as mentioned above.
2. Remove the Report Viewer Control that is listed in the toolbox.
3. Right-click in anywhere in the toolbox and then select Choose Items....

4. On the .NET Framework Components , select Browse .

5. Select the Microsoft.Repor tViewer.WinForms.dll or Microsoft.Repor tViewer.WebForms.dll from


the NuGet package you installed.

NOTE
The NuGet package will be installed in the solution directory of your project. The path to the dll will be similar to
the following:
{Solution Directory}\packages\Microsoft.ReportingServices.ReportViewerControl.Winforms.
{version}\lib\net40
or
{Solution Directory}\packages\Microsoft.ReportingServices.ReportViewerControl.WebForms.
{version}\lib\net40
.

6. The new control should display within the toolbox. You can then move it to another tab within the toolbox
if you wish.
Common issues
The viewer control is designed for modern browsers. The control may not work as expected if the browser
renders the page using IE compatibility mode. Intranet sites may require a meta tag to override default browser
behavior.

<meta http-equiv="X-UA-Compatible" content="IE=edge" />

NuGet.org pages
Here are links to articles on the NuGet.org site about the WebForm and WinForm versions of the Report Viewer
control:
Microsoft.ReportingServices.ReportViewerControl.WebForms
https://www.nuget.org/packages/Microsoft.ReportingServices.ReportViewerControl.WebForms/
Microsoft.ReportingServices.ReportViewerControl.Winforms
https://www.nuget.org/packages/Microsoft.ReportingServices.ReportViewerControl.WinForms/

Forum feedback
Let the team know about issues on the Reporting Services forums.

See also
Data collection in the Report Viewer control
Integrate Reporting Services Using Report Viewer
Controls
12/3/2019 • 2 minutes to read • Edit Online

Microsoft Visual Studio 2015 provides two Report Viewer controls for integrating report viewing functionality
into your applications. There is a version for Windows Forms-based applications and one for Web Forms
applications. Each control provides similar functionality but each is designed to target their individual
environments. Both controls can process reports that have been deployed to a report server (remote processing
mode) or have been copied to a computer where Microsoft SQL Server Reporting Services has not been
installed (local processing mode).
The Report Viewer control does not include built-in support for dynamically adapting to different devices with
different screen resolutions.

Remote Processing Mode


Remote processing mode is the preferred method for viewing reports that have been deployed to a report
server. Remote processing mode provides the following advantages:
Remote processing provides an optimized solution for running reports because the report is processed
by the report server.
Because all processing is handled by the report server, a report request can be processed by multiple
report servers in a scale-out deployment or a server that has multiple processors in a scale-up scenario.
In addition, reports run in remote mode can utilize the full functionality of the report server including all
rendering and data extensions.

NOTE
The list of extensions available to the Report Viewer control when it is running in remote processing mode depends on
the edition of Reporting Services that is installed on the report server.

Local Processing Mode


Local processing mode provides an alternative method for viewing and rendering reports when Reporting
Services is not installed. Unlike remote processing only a subset of the functionality provided by the report
server is available in the control. In local processing mode, data processing is not handled by the control but
rather implemented by the hosting application. However report processing is handled by the control itself. In
local processing mode, only the PDF, Excel, Word, and Image rendering extensions are available.

See Also
Integrating Reporting Services into Applications
Using the WebForms Report Viewer Control
Using the WinForms Report Viewer Control
Use the WebForms ReportViewer Control
3/12/2020 • 10 minutes to read • Edit Online

To view reports deployed to a report server or reports that exist on the local file system, you can use the
WebForms ReportViewer control to render them in a Web application.

To use the ReportViewer Control in a Web application


1. Create a new Microsoft ASP.NET Web Site using either Microsoft Visual C# or Microsoft Visual Basic.
- Or -
Open an existing ASP.NET Web Site and add a new Web Form.
2. Locate the ScriptManager control in the AJAX Extensions group in the Toolbox window, and drag it
to the design surface of the Web form.
If the Toolbox is not visible, you can access it from the View menu by selecting Toolbox .
3. Locate the Repor tViewer control in the Toolbox and drag it to the design surface below the
ScriptManager control.
The Repor tViewer control named reportViewer1 is added to the form.
After the control is added to the form the Repor tViewer Tasks smart tag will appear prompting you to select a
report. If the report you wish to view has been deployed to a report server select the <Ser ver Repor t> option
from the Choose Repor t drop-down list. Once the <Ser ver Repor t> option is selected two additional
properties will appear, Repor t Ser ver Url and Repor t Path . The Repor t Ser ver Url is the address to the
report server and the Repor t Path is the full path to the report you want to render.
If you want to view a report in local mode select either the Design a new repor t option to launch the report
designer or select a report that is already part of the existing project. After you have selected a report, be sure to
enter the name of the report RDLC file in the Repor tPath property of the ReportViewer control. This property
appears under the LocalRepor t node in the Proper ties pane.
You have the option of hiding one or more of the items on the ReportViewer toolbar when the report is
rendered. For example, you can hide the print button. To hide toolbar items, set the following ReportViewer
properties to False in the Proper ties pane.
ShowBackButton
ShowExpor tControls
ShowFindControls
ShowPageNavigationControls
ShowPrintButton
ShowRefreshButton
ShowZoomControl

Viewing Reports in Remote Processing Mode


The following example demonstrates how to render a report that has been deployed to a report server. This
example uses the Sales Order Detail report that is included with the AdventureWorks2012 sample reports
project.
The example uses integrated Windows Authentication so you first must enable impersonation. To do this insert
the following line into the web.config file:

<!-- Web.config file. -->


<identity impersonate="true"/>

NOTE
Impersonation is disabled by default.

C#

protected void Page_Init(object sender, EventArgs e)


{
if (!Page.IsPostBack)
{
// Set the processing mode for the ReportViewer to Remote
reportViewer.ProcessingMode = ProcessingMode.Remote;

ServerReport serverReport = reportViewer.ServerReport;

// Set the report server URL and report path


serverReport.ReportServerUrl =
new Uri("https://<Server Name>/reportserver");
serverReport.ReportPath =
"/AdventureWorks Sample Reports/Sales Order Detail";

// Create the sales order number report parameter


ReportParameter salesOrderNumber = new ReportParameter();
salesOrderNumber.Name = "SalesOrderNumber";
salesOrderNumber.Values.Add("SO43661");

// Set the report parameters for the report


reportViewer.ServerReport.SetParameters(
new ReportParameter[] { salesOrderNumber });
}
}

VB.NET
Imports Microsoft.Reporting.WebForms

Partial Class _Default


Inherits System.Web.UI.Page

Protected Sub Page_Init(ByVal sender As Object, _


ByVal e As System.EventArgs) Handles Me.Init

If Not Page.IsPostBack Then

'Set the processing mode for the ReportViewer to Remote


reportViewer.ProcessingMode = ProcessingMode.Remote

Dim serverReport As ServerReport


serverReport = reportViewer.ServerReport

'Set the report server URL and report path


serverReport.ReportServerUrl = _
New Uri("https://<Server Name>/reportserver")
serverReport.ReportPath = _
"/AdventureWorks Sample Reports/Sales Order Detail"

'Create the sales order number report parameter


Dim salesOrderNumber As New ReportParameter()
salesOrderNumber.Name = "SalesOrderNumber"
salesOrderNumber.Values.Add("SO43661")

'Set the report parameters for the report


Dim parameters() As ReportParameter = {salesOrderNumber}
serverReport.SetParameters(parameters)

End If

End Sub

End Class

Viewing Reports in Local Processing Mode


The following example demonstrates how to render a report that is part of the Windows application and has not
been deployed to a report server.
To a d d t h e Sa l e s O rd e r De t a i l re p o rt t o a W e b Si t e

1. Open the Web Site that the report will be added to.
2. From the Website menu, select Add Existing Item .
3. Browse to the location where the AdventureWorks Report Samples project is installed.
The default location is C:\Program Files\Microsoft SQL Server\100\Samples\Reporting Services\Report
Samples\AdventureWorks Sample Reports.
4. Select the Sales Order Detail.rdl file and click the Add button.
The Sales Order Detail.rdl file should now be part of the project.
5. Right-click the Sales Order Detail.rdl file in Solution Explorer and select Rename . Rename the report to
Sales Order Detail.rdlc and press ENTER.
If Solution Explorer is not visible, you can open it from the View menu by selecting Solution Explorer.
The following code example will create a dataset for the sales order data and then render the Sales Order Detail
report in local mode.
C#

protected void Page_Init(object sender, EventArgs e)


{
if (!Page.IsPostBack)
{
// Set the processing mode for the ReportViewer to Local
reportViewer.ProcessingMode = ProcessingMode.Local;

LocalReport localReport = reportViewer.LocalReport;

localReport.ReportPath = "Sales Order Detail.rdlc";

DataSet dataset = new DataSet("Sales Order Detail");

string salesOrderNumber = "SO43661";

GetSalesOrderData(salesOrderNumber, ref dataset);

ReportDataSource dsSalesOrder = new ReportDataSource();


dsSalesOrder.Name = "SalesOrder";
dsSalesOrder.Value = dataset.Tables["SalesOrder"];

localReport.DataSources.Add(dsSalesOrder);

GetSalesOrderDetailData(salesOrderNumber, ref dataset);

ReportDataSource dsSalesOrderDetail = new ReportDataSource();


dsSalesOrderDetail.Name = "SalesOrderDetail";
dsSalesOrderDetail.Value = dataset.Tables["SalesOrderDetail"];

localReport.DataSources.Add(dsSalesOrderDetail);

// Create the sales order number report parameter


ReportParameter rpSalesOrderNumber = new ReportParameter();
rpSalesOrderNumber.Name = "SalesOrderNumber";
rpSalesOrderNumber.Values.Add("SO43661");

// Set the report parameters for the report


localReport.SetParameters(
new ReportParameter[] { rpSalesOrderNumber });
}
}

private void GetSalesOrderData(string salesOrderNumber,


ref DataSet dsSalesOrder)
{
string sqlSalesOrder =
"SELECT SOH.SalesOrderNumber, S.Name AS Store, " +
" SOH.OrderDate, C.FirstName AS SalesFirstName, " +
" C.LastName AS SalesLastName, E.Title AS " +
" SalesTitle, SOH.PurchaseOrderNumber, " +
" SM.Name AS ShipMethod, BA.AddressLine1 " +
" AS BillAddress1, BA.AddressLine2 AS " +
" BillAddress2, BA.City AS BillCity, " +
" BA.PostalCode AS BillPostalCode, BSP.Name " +
" AS BillStateProvince, BCR.Name AS " +
" BillCountryRegion, SA.AddressLine1 AS " +
" ShipAddress1, SA.AddressLine2 AS " +
" ShipAddress2, SA.City AS ShipCity, " +
" SA.PostalCode AS ShipPostalCode, SSP.Name " +
" AS ShipStateProvince, SCR.Name AS " +
" ShipCountryRegion, CC.Phone AS CustPhone, " +
" CC.FirstName AS CustFirstName, CC.LastName " +
" AS CustLastName " +
"FROM Person.Address SA INNER JOIN " +
" Person.StateProvince SSP ON " +
" SA.StateProvinceID = SSP.StateProvinceID " +
" SA.StateProvinceID = SSP.StateProvinceID " +
" INNER JOIN Person.CountryRegion SCR ON " +
" SSP.CountryRegionCode = SCR.CountryRegionCode " +
" RIGHT OUTER JOIN Sales.SalesOrderHeader SOH " +
" LEFT OUTER JOIN Person.Contact CC ON " +
" SOH.ContactID = CC.ContactID LEFT OUTER JOIN" +
" Person.Address BA INNER JOIN " +
" Person.StateProvince BSP ON " +
" BA.StateProvinceID = BSP.StateProvinceID " +
" INNER JOIN Person.CountryRegion BCR ON " +
" BSP.CountryRegionCode = " +
" BCR.CountryRegionCode ON SOH.BillToAddressID " +
" = BA.AddressID ON SA.AddressID = " +
" SOH.ShipToAddressID LEFT OUTER JOIN " +
" Person.Contact C RIGHT OUTER JOIN " +
" HumanResources.Employee E ON C.ContactID = " +
" E.ContactID ON SOH.SalesPersonID = " +
" E.EmployeeID LEFT OUTER JOIN " +
" Purchasing.ShipMethod SM ON SOH.ShipMethodID " +
" = SM.ShipMethodID LEFT OUTER JOIN Sales.Store" +
" S ON SOH.CustomerID = S.CustomerID " +
"WHERE (SOH.SalesOrderNumber = @SalesOrderNumber)";

SqlConnection connection = new


SqlConnection("Data Source=(local); " +
"Initial Catalog=AdventureWorks; " +
"Integrated Security=SSPI");

SqlCommand command =
new SqlCommand(sqlSalesOrder, connection);

command.Parameters.Add(
new SqlParameter("SalesOrderNumber",
salesOrderNumber));

SqlDataAdapter salesOrderAdapter = new


SqlDataAdapter(command);

salesOrderAdapter.Fill(dsSalesOrder, "SalesOrder");
}

private void GetSalesOrderDetailData(string salesOrderNumber,


ref DataSet dsSalesOrder)
{
string sqlSalesOrderDetail =
"SELECT SOD.SalesOrderDetailID, SOD.OrderQty, " +
" SOD.UnitPrice, CASE WHEN " +
" SOD.UnitPriceDiscount IS NULL THEN 0 " +
" ELSE SOD.UnitPriceDiscount END AS " +
" UnitPriceDiscount, SOD.LineTotal, " +
" SOD.CarrierTrackingNumber, " +
" SOD.SalesOrderID, P.Name, P.ProductNumber " +
"FROM Sales.SalesOrderDetail SOD INNER JOIN " +
" Production.Product P ON SOD.ProductID = " +
" P.ProductID INNER JOIN " +
" Sales.SalesOrderHeader SOH ON " +
" SOD.SalesOrderID = SOH.SalesOrderID " +
"WHERE (SOH.SalesOrderNumber = @SalesOrderNumber) " +
"ORDER BY SOD.SalesOrderDetailID";

using (SqlConnection connection = new


SqlConnection("Data Source=(local); " +
"Initial Catalog=AdventureWorks; " +
"Integrated Security=SSPI"))
{

SqlCommand command =
new SqlCommand(sqlSalesOrderDetail, connection);

command.Parameters.Add(
command.Parameters.Add(
new SqlParameter("SalesOrderNumber",
salesOrderNumber));

SqlDataAdapter salesOrderDetailAdapter = new


SqlDataAdapter(command);

salesOrderDetailAdapter.Fill(dsSalesOrder,
"SalesOrderDetail");
}
}

VB.NET

Imports System.Data
Imports System.Data.SqlClient
Imports Microsoft.Reporting.WebForms

Partial Class _Default


Inherits System.Web.UI.Page

Protected Sub Page_Init(ByVal sender As Object, _


ByVal e As System.EventArgs) Handles Me.Init

If Not Page.IsPostBack Then

'Set the processing mode for the ReportViewer to Local


reportViewer.ProcessingMode = ProcessingMode.Local

Dim localReport As LocalReport


localReport = reportViewer.LocalReport

localReport.ReportPath = "Sales Order Detail.rdlc"

Dim dataset As New DataSet("Sales Order Detail")

Dim salesOrderNumber As String = "SO43661"

'Get the sales order data


GetSalesOrderData(salesOrderNumber, dataset)

'Create a report data source for the sales order data


Dim dsSalesOrder As New ReportDataSource()
dsSalesOrder.Name = "SalesOrder"
dsSalesOrder.Value = dataset.Tables("SalesOrder")

localReport.DataSources.Add(dsSalesOrder)

'Get the sales order detail data


GetSalesOrderDetailData(salesOrderNumber, dataset)

'Create a report data source for the sales


'order detail data
Dim dsSalesOrderDetail As New ReportDataSource()
dsSalesOrderDetail.Name = "SalesOrderDetail"
dsSalesOrderDetail.Value = _
dataset.Tables("SalesOrderDetail")

localReport.DataSources.Add(dsSalesOrderDetail)

'Create a report parameter for the sales order number


Dim rpSalesOrderNumber As New ReportParameter()
rpSalesOrderNumber.Name = "SalesOrderNumber"
rpSalesOrderNumber.Values.Add("SO43661")

'Set the report parameters for the report


Dim parameters() As ReportParameter = {rpSalesOrderNumber}
localReport.SetParameters(parameters)
localReport.SetParameters(parameters)

End If

End Sub

Private Sub GetSalesOrderData(ByVal salesOrderNumber As String, _


ByRef dsSalesOrder As DataSet)

Dim sqlSalesOrder As String = _


"SELECT SOH.SalesOrderNumber, S.Name AS Store, " & _
" SOH.OrderDate, C.FirstName AS SalesFirstName, " & _
" C.LastName AS SalesLastName, E.Title AS " & _
" SalesTitle, SOH.PurchaseOrderNumber, " & _
" SM.Name AS ShipMethod, BA.AddressLine1 " & _
" AS BillAddress1, BA.AddressLine2 AS " & _
" BillAddress2, BA.City AS BillCity, " & _
" BA.PostalCode AS BillPostalCode, BSP.Name " & _
" AS BillStateProvince, BCR.Name AS " & _
" BillCountryRegion, SA.AddressLine1 AS " & _
" ShipAddress1, SA.AddressLine2 AS " & _
" ShipAddress2, SA.City AS ShipCity, " & _
" SA.PostalCode AS ShipPostalCode, SSP.Name " & _
" AS ShipStateProvince, SCR.Name AS " & _
" ShipCountryRegion, CC.Phone AS CustPhone, " & _
" CC.FirstName AS CustFirstName, CC.LastName " & _
" AS CustLastName " & _
"FROM Person.Address SA INNER JOIN " & _
" Person.StateProvince SSP ON " & _
" SA.StateProvinceID = SSP.StateProvinceID " & _
" INNER JOIN Person.CountryRegion SCR ON " & _
" SSP.CountryRegionCode = SCR.CountryRegionCode " & _
" RIGHT OUTER JOIN Sales.SalesOrderHeader SOH " & _
" LEFT OUTER JOIN Person.Contact CC ON " & _
" SOH.ContactID = CC.ContactID LEFT OUTER JOIN" & _
" Person.Address BA INNER JOIN " & _
" Person.StateProvince BSP ON " & _
" BA.StateProvinceID = BSP.StateProvinceID " & _
" INNER JOIN Person.CountryRegion BCR ON " & _
" BSP.CountryRegionCode = " & _
" BCR.CountryRegionCode ON SOH.BillToAddressID " & _
" = BA.AddressID ON SA.AddressID = " & _
" SOH.ShipToAddressID LEFT OUTER JOIN " & _
" Person.Contact C RIGHT OUTER JOIN " & _
" HumanResources.Employee E ON C.ContactID = " & _
" E.ContactID ON SOH.SalesPersonID = " & _
" E.EmployeeID LEFT OUTER JOIN " & _
" Purchasing.ShipMethod SM ON SOH.ShipMethodID " & _
" = SM.ShipMethodID LEFT OUTER JOIN Sales.Store" & _
" S ON SOH.CustomerID = S.CustomerID " & _
"WHERE (SOH.SalesOrderNumber = @SalesOrderNumber)"

Using connection As New SqlConnection( _


"Data Source=(local); " & _
"Initial Catalog=AdventureWorks; " & _
"Integrated Security=SSPI")

Dim command As New SqlCommand(sqlSalesOrder, connection)

Dim parameter As New SqlParameter("SalesOrderNumber", _


salesOrderNumber)
command.Parameters.Add(parameter)

Dim salesOrderAdapter As New SqlDataAdapter(command)

salesOrderAdapter.Fill(dsSalesOrder, "SalesOrder")

End Using

End Sub
End Sub

Private Sub GetSalesOrderDetailData( _


ByVal salesOrderNumber As String, _
ByRef dsSalesOrder As DataSet)

Dim sqlSalesOrderDetail As String = _


"SELECT SOD.SalesOrderDetailID, SOD.OrderQty, " & _
" SOD.UnitPrice, CASE WHEN " & _
" SOD.UnitPriceDiscount IS NULL THEN 0 " & _
" ELSE SOD.UnitPriceDiscount END AS " & _
" UnitPriceDiscount, SOD.LineTotal, " & _
" SOD.CarrierTrackingNumber, " & _
" SOD.SalesOrderID, P.Name, P.ProductNumber " & _
"FROM Sales.SalesOrderDetail SOD INNER JOIN " & _
" Production.Product P ON SOD.ProductID = " & _
" P.ProductID INNER JOIN " & _
" Sales.SalesOrderHeader SOH ON " & _
" SOD.SalesOrderID = SOH.SalesOrderID " & _
"WHERE (SOH.SalesOrderNumber = @SalesOrderNumber) " & _
"ORDER BY SOD.SalesOrderDetailID"

Using connection As New SqlConnection( _


"Data Source=(local); " & _
"Initial Catalog=AdventureWorks; " & _
"Integrated Security=SSPI")

Dim command As New SqlCommand(sqlSalesOrderDetail, _


connection)

Dim parameter As New SqlParameter("SalesOrderNumber", _


salesOrderNumber)
command.Parameters.Add(parameter)

Dim salesOrderDetailAdapter As New SqlDataAdapter(command)

salesOrderDetailAdapter.Fill(dsSalesOrder, _
"SalesOrderDetail")

End Using

End Sub

End Class

See Also
Integrating Reporting Services Using the ReportViewer Controls
Data collection in ReportViewer Control 2016
Use the WinForms ReportViewer Control
3/12/2020 • 10 minutes to read • Edit Online

To view reports that have been deployed to a report server or reports that exist on the local file system, you can
use the WinForms ReportViewer control to render them in a Windows application.

To add the ReportViewer Control to a Windows application


1. Create a new Windows application using either Microsoft Visual C# or Microsoft Visual Basic.
- Or -
Open an exiting Windows application project and add a new form.
2. Locate the ReportViewer control in the Toolbox . If the Toolbox is not visible, you can access it from the
View menu by selecting Toolbox .

3. Drag the ReportViewer control onto the design surface of the Windows Form.
A ReportViewer control named reportViewer1 is added to the form.
After the control is added to the form, the Repor tViewer Tasks smart tag appears and prompts you to select a
report.
If the report you wish to view has been deployed to a report server, select the <Ser ver Repor t> option from
the Choose Repor t drop-down list. After the <Ser ver Repor t> option is selected, two additional properties
appear: Repor t Ser ver Url and Repor t Path . The Repor t Ser ver Url is the address to the report server and
the Repor t Path is the full path to the report to render.

If the report you wish to view a report in local mode, select either the Design a new repor t option to launch
the report designer or select a report that is already part of the existing project.

Viewing Reports in Remote Processing Mode


The following example demonstrates how to render a report that has been deployed to a report server using
the WinForms ReportViewer control. This example uses the Sales Order Detail report that is included with the
AdventureWorks2012 sample reports project.
C#
public partial class Form1 : Form
{
private void Form1_Load(object sender, EventArgs e)
{
// Set the processing mode for the ReportViewer to Remote
reportViewer1.ProcessingMode = ProcessingMode.Remote;

ServerReport serverReport = reportViewer1.ServerReport;

// Get a reference to the default credentials


System.Net.ICredentials credentials =
System.Net.CredentialCache.DefaultCredentials;

// Get a reference to the report server credentials


ReportServerCredentials rsCredentials =
serverReport.ReportServerCredentials;

// Set the credentials for the server report


rsCredentials.NetworkCredentials = credentials;

// Set the report server URL and report path


serverReport.ReportServerUrl =
new Uri("https:// <Server Name>/reportserver");
serverReport.ReportPath =
"/AdventureWorks Sample Reports/Sales Order Detail";

// Create the sales order number report parameter


ReportParameter salesOrderNumber = new ReportParameter();
salesOrderNumber.Name = "SalesOrderNumber";
salesOrderNumber.Values.Add("SO43661");

// Set the report parameters for the report


reportViewer1.ServerReport.SetParameters(
new ReportParameter[] { salesOrderNumber });

// Refresh the report


reportViewer1.RefreshReport();
}
}

VB.NET
Imports Microsoft.Reporting.WinForms

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, _


ByVal e As System.EventArgs) _
Handles MyBase.Load

'Set the processing mode for the ReportViewer to Remote


reportViewer1.ProcessingMode = ProcessingMode.Remote

Dim serverReport As ServerReport


serverReport = reportViewer1.ServerReport

'Get a reference to the default credentials


Dim credentials As System.Net.ICredentials
credentials = System.Net.CredentialCache.DefaultCredentials

'Get a reference to the report server credentials


Dim rsCredentials As ReportServerCredentials
rsCredentials = serverReport.ReportServerCredentials

'Set the credentials for the server report


rsCredentials.NetworkCredentials = credentials

'Set the report server URL and report path


serverReport.ReportServerUrl = _
New Uri("https://<Server Name>/reportserver")
serverReport.ReportPath = _
"/AdventureWorks Sample Reports/Sales Order Detail"

'Create the sales order number report parameter


Dim salesOrderNumber As New ReportParameter()
salesOrderNumber.Name = "SalesOrderNumber"
salesOrderNumber.Values.Add("SO43661")

'Set the report parameters for the report


Dim parameters() As ReportParameter = {salesOrderNumber}
serverReport.SetParameters(parameters)

'Refresh the report


reportViewer1.RefreshReport()
End Sub

End Class

Viewing Reports in Local Processing Mode


The following example demonstrates how to render a report that is part of the Windows application and has not
been deployed to a report server.
To add the Sales Order Detail report to a Windows application
1. Open the Windows project to which the report will be added.
2. From the Project menu, select Add Existing Item .
3. Browse to the location where you installed the AdventureWorks2012 Report Samples project.
The download the report samples, go to AdventureWorks 2012 Report Samples
4. Select the Sales Order Detail.rdl file and click the Add button.
The Sales Order Detail.rdl file should now be part of the project.
5. Right-click the Sales Order Detail.rdl file in Solution Explorer and select Rename . Rename the report to
Sales Order Detail.rdlc and press ENTER.
If Solution Explorer is not visible, you can open it from the View menu by selecting Solution Explorer .

NOTE
Renaming the file extension from rdl to rdlc will allow you to edit the report using report designer for
MicrosoftVisual Studio 2005.

6. After the report has been renamed, select the file and locate the Properties window. Change the Copy to
Output Director y property to Copy if Newer .
If the Proper ties window is not visible, you can open it from the View menu by selecting Proper ties
Window .
The following code example will create a dataset for the sales order data and then render the Sales Order Detail
report in local mode.
C#

public partial class Form1 : Form


{
private void Form1_Load(object sender, EventArgs e)
{
// Set the processing mode for the ReportViewer to Local
reportViewer1.ProcessingMode = ProcessingMode.Local;

LocalReport localReport = reportViewer1.LocalReport;

localReport.ReportPath = "Sales Order Detail.rdlc";

DataSet dataset = new DataSet("Sales Order Detail");

string salesOrderNumber = "SO43661";

// Get the sales order data


GetSalesOrderData(salesOrderNumber, ref dataset);

// Create a report data source for the sales order data


ReportDataSource dsSalesOrder = new ReportDataSource();
dsSalesOrder.Name = "SalesOrder";
dsSalesOrder.Value = dataset.Tables["SalesOrder"];
localReport.DataSources.Add(dsSalesOrder);

// Get the sales order detail data


GetSalesOrderDetailData(salesOrderNumber, ref dataset);

// Create a report data source for the sales order detail


// data
ReportDataSource dsSalesOrderDetail =
new ReportDataSource();
dsSalesOrderDetail.Name = "SalesOrderDetail";
dsSalesOrderDetail.Value =
dataset.Tables["SalesOrderDetail"];

localReport.DataSources.Add(dsSalesOrderDetail);

// Create a report parameter for the sales order number


ReportParameter rpSalesOrderNumber = new ReportParameter();
rpSalesOrderNumber.Name = "SalesOrderNumber";
rpSalesOrderNumber.Values.Add("SO43661");

// Set the report parameters for the report


localReport.SetParameters(
new ReportParameter[] { rpSalesOrderNumber });

// Refresh the report


reportViewer1.RefreshReport();
}

private void GetSalesOrderData(string salesOrderNumber,


ref DataSet dsSalesOrder)
{
string sqlSalesOrder =
"SELECT SOH.SalesOrderNumber, S.Name AS Store, " +
" SOH.OrderDate, C.FirstName AS SalesFirstName, " +
" C.LastName AS SalesLastName, E.Title AS " +
" SalesTitle, SOH.PurchaseOrderNumber, " +
" SM.Name AS ShipMethod, BA.AddressLine1 " +
" AS BillAddress1, BA.AddressLine2 AS " +
" BillAddress2, BA.City AS BillCity, " +
" BA.PostalCode AS BillPostalCode, BSP.Name " +
" AS BillStateProvince, BCR.Name AS " +
" BillCountryRegion, SA.AddressLine1 AS " +
" ShipAddress1, SA.AddressLine2 AS " +
" ShipAddress2, SA.City AS ShipCity, " +
" SA.PostalCode AS ShipPostalCode, SSP.Name " +
" AS ShipStateProvince, SCR.Name AS " +
" ShipCountryRegion, CC.Phone AS CustPhone, " +
" CC.FirstName AS CustFirstName, CC.LastName " +
" AS CustLastName " +
"FROM Person.Address SA INNER JOIN " +
" Person.StateProvince SSP ON " +
" SA.StateProvinceID = SSP.StateProvinceID " +
" INNER JOIN Person.CountryRegion SCR ON " +
" SSP.CountryRegionCode = SCR.CountryRegionCode " +
" RIGHT OUTER JOIN Sales.SalesOrderHeader SOH " +
" LEFT OUTER JOIN Person.Contact CC ON " +
" SOH.ContactID = CC.ContactID LEFT OUTER JOIN" +
" Person.Address BA INNER JOIN " +
" Person.StateProvince BSP ON " +
" BA.StateProvinceID = BSP.StateProvinceID " +
" INNER JOIN Person.CountryRegion BCR ON " +
" BSP.CountryRegionCode = " +
" BCR.CountryRegionCode ON SOH.BillToAddressID " +
" = BA.AddressID ON SA.AddressID = " +
" SOH.ShipToAddressID LEFT OUTER JOIN " +
" Person.Contact C RIGHT OUTER JOIN " +
" HumanResources.Employee E ON C.ContactID = " +
" E.ContactID ON SOH.SalesPersonID = " +
" E.EmployeeID LEFT OUTER JOIN " +
" E.EmployeeID LEFT OUTER JOIN " +
" Purchasing.ShipMethod SM ON SOH.ShipMethodID " +
" = SM.ShipMethodID LEFT OUTER JOIN Sales.Store" +
" S ON SOH.CustomerID = S.CustomerID " +
"WHERE (SOH.SalesOrderNumber = @SalesOrderNumber)";

SqlConnection connection = new


SqlConnection("Data Source=(local); " +
"Initial Catalog=AdventureWorks; " +
"Integrated Security=SSPI");

SqlCommand command =
new SqlCommand(sqlSalesOrder, connection);

command.Parameters.Add(
new SqlParameter("SalesOrderNumber",
salesOrderNumber));

SqlDataAdapter salesOrderAdapter = new


SqlDataAdapter(command);

salesOrderAdapter.Fill(dsSalesOrder, "SalesOrder");
}

private void GetSalesOrderDetailData(string salesOrderNumber,


ref DataSet dsSalesOrder)
{
string sqlSalesOrderDetail =
"SELECT SOD.SalesOrderDetailID, SOD.OrderQty, " +
" SOD.UnitPrice, CASE WHEN " +
" SOD.UnitPriceDiscount IS NULL THEN 0 " +
" ELSE SOD.UnitPriceDiscount END AS " +
" UnitPriceDiscount, SOD.LineTotal, " +
" SOD.CarrierTrackingNumber, " +
" SOD.SalesOrderID, P.Name, P.ProductNumber " +
"FROM Sales.SalesOrderDetail SOD INNER JOIN " +
" Production.Product P ON SOD.ProductID = " +
" P.ProductID INNER JOIN " +
" Sales.SalesOrderHeader SOH ON " +
" SOD.SalesOrderID = SOH.SalesOrderID " +
"WHERE (SOH.SalesOrderNumber = @SalesOrderNumber) " +
"ORDER BY SOD.SalesOrderDetailID";

using (SqlConnection connection = new


SqlConnection("Data Source=(local); " +
"Initial Catalog=AdventureWorks; " +
"Integrated Security=SSPI"))
{

SqlCommand command =
new SqlCommand(sqlSalesOrderDetail, connection);

command.Parameters.Add(
new SqlParameter("SalesOrderNumber",
salesOrderNumber));

SqlDataAdapter salesOrderDetailAdapter = new


SqlDataAdapter(command);

salesOrderDetailAdapter.Fill(dsSalesOrder,
"SalesOrderDetail");
}
}
}

VB.NET

Imports System.Data.SqlClient
Imports System.Data.SqlClient
Imports Microsoft.Reporting.WinForms

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, _


ByVal e As System.EventArgs) _
Handles MyBase.Load

'Set the processing mode for the ReportViewer to Local


reportViewer1.ProcessingMode = ProcessingMode.Local

Dim localReport As LocalReport


localReport = reportViewer1.LocalReport

localReport.ReportEmbeddedResource = _
"ReportViewerIntro.Sales Order Detail.rdlc"

Dim dataset As New DataSet("Sales Order Detail")

Dim salesOrderNumber As String = "SO43661"

'Get the sales order data


GetSalesOrderData(salesOrderNumber, dataset)

'Create a report data source for the sales order data


Dim dsSalesOrder As New ReportDataSource()
dsSalesOrder.Name = "SalesOrder"
dsSalesOrder.Value = dataset.Tables("SalesOrder")

localReport.DataSources.Add(dsSalesOrder)

'Get the sales order detail data


GetSalesOrderDetailData(salesOrderNumber, dataset)

'Create a report data source for the sales


'order detail data
Dim dsSalesOrderDetail As New ReportDataSource()
dsSalesOrderDetail.Name = "SalesOrderDetail"
dsSalesOrderDetail.Value = _
dataset.Tables("SalesOrderDetail")

localReport.DataSources.Add(dsSalesOrderDetail)

'Create a report parameter for the sales order number


Dim rpSalesOrderNumber As New ReportParameter()
rpSalesOrderNumber.Name = "SalesOrderNumber"
rpSalesOrderNumber.Values.Add("SO43661")

'Set the report parameters for the report


Dim parameters() As ReportParameter = {rpSalesOrderNumber}
localReport.SetParameters(parameters)

'Refresh the report


reportViewer1.RefreshReport()

End Sub

Private Sub GetSalesOrderData(ByVal salesOrderNumber As String, _


ByRef dsSalesOrder As DataSet)

Dim sqlSalesOrder As String = _


"SELECT SOH.SalesOrderNumber, S.Name AS Store, " & _
" SOH.OrderDate, C.FirstName AS SalesFirstName, " & _
" C.LastName AS SalesLastName, E.Title AS " & _
" SalesTitle, SOH.PurchaseOrderNumber, " & _
" SM.Name AS ShipMethod, BA.AddressLine1 " & _
" AS BillAddress1, BA.AddressLine2 AS " & _
" BillAddress2, BA.City AS BillCity, " & _
" BA.PostalCode AS BillPostalCode, BSP.Name " & _
" BA.PostalCode AS BillPostalCode, BSP.Name " & _
" AS BillStateProvince, BCR.Name AS " & _
" BillCountryRegion, SA.AddressLine1 AS " & _
" ShipAddress1, SA.AddressLine2 AS " & _
" ShipAddress2, SA.City AS ShipCity, " & _
" SA.PostalCode AS ShipPostalCode, SSP.Name " & _
" AS ShipStateProvince, SCR.Name AS " & _
" ShipCountryRegion, CC.Phone AS CustPhone, " & _
" CC.FirstName AS CustFirstName, CC.LastName " & _
" AS CustLastName " & _
"FROM Person.Address SA INNER JOIN " & _
" Person.StateProvince SSP ON " & _
" SA.StateProvinceID = SSP.StateProvinceID " & _
" INNER JOIN Person.CountryRegion SCR ON " & _
" SSP.CountryRegionCode = SCR.CountryRegionCode " & _
" RIGHT OUTER JOIN Sales.SalesOrderHeader SOH " & _
" LEFT OUTER JOIN Person.Contact CC ON " & _
" SOH.ContactID = CC.ContactID LEFT OUTER JOIN" & _
" Person.Address BA INNER JOIN " & _
" Person.StateProvince BSP ON " & _
" BA.StateProvinceID = BSP.StateProvinceID " & _
" INNER JOIN Person.CountryRegion BCR ON " & _
" BSP.CountryRegionCode = " & _
" BCR.CountryRegionCode ON SOH.BillToAddressID " & _
" = BA.AddressID ON SA.AddressID = " & _
" SOH.ShipToAddressID LEFT OUTER JOIN " & _
" Person.Contact C RIGHT OUTER JOIN " & _
" HumanResources.Employee E ON C.ContactID = " & _
" E.ContactID ON SOH.SalesPersonID = " & _
" E.EmployeeID LEFT OUTER JOIN " & _
" Purchasing.ShipMethod SM ON SOH.ShipMethodID " & _
" = SM.ShipMethodID LEFT OUTER JOIN Sales.Store" & _
" S ON SOH.CustomerID = S.CustomerID " & _
"WHERE (SOH.SalesOrderNumber = @SalesOrderNumber)"

Using connection As New SqlConnection( _


"Data Source=(local); " & _
"Initial Catalog=AdventureWorks; " & _
"Integrated Security=SSPI")

Dim command As New SqlCommand(sqlSalesOrder, connection)

Dim parameter As New SqlParameter("SalesOrderNumber", _


salesOrderNumber)
command.Parameters.Add(parameter)

Dim salesOrderAdapter As New SqlDataAdapter(command)

salesOrderAdapter.Fill(dsSalesOrder, "SalesOrder")

End Using

End Sub

Private Sub GetSalesOrderDetailData( _


ByVal salesOrderNumber As String, _
ByRef dsSalesOrder As DataSet)

Dim sqlSalesOrderDetail As String = _


"SELECT SOD.SalesOrderDetailID, SOD.OrderQty, " & _
" SOD.UnitPrice, CASE WHEN " & _
" SOD.UnitPriceDiscount IS NULL THEN 0 " & _
" ELSE SOD.UnitPriceDiscount END AS " & _
" UnitPriceDiscount, SOD.LineTotal, " & _
" SOD.CarrierTrackingNumber, " & _
" SOD.SalesOrderID, P.Name, P.ProductNumber " & _
"FROM Sales.SalesOrderDetail SOD INNER JOIN " & _
" Production.Product P ON SOD.ProductID = " & _
" P.ProductID INNER JOIN " & _
" Sales.SalesOrderHeader SOH ON " & _
" Sales.SalesOrderHeader SOH ON " & _
" SOD.SalesOrderID = SOH.SalesOrderID " & _
"WHERE (SOH.SalesOrderNumber = @SalesOrderNumber) " & _
"ORDER BY SOD.SalesOrderDetailID"

Using connection As New SqlConnection( _


"Data Source=(local); " & _
"Initial Catalog=AdventureWorks; " & _
"Integrated Security=SSPI")

Dim command As New SqlCommand(sqlSalesOrderDetail, _


connection)

Dim parameter As New SqlParameter("SalesOrderNumber", _


salesOrderNumber)
command.Parameters.Add(parameter)

Dim salesOrderDetailAdapter As New SqlDataAdapter(command)

salesOrderDetailAdapter.Fill(dsSalesOrder, _
"SalesOrderDetail")

End Using

End Sub

End Class

See Also
Integrating Reporting Services Using the ReportViewer Controls
Integrate Reporting Services Using ReportViewer
Controls - Data Collection
3/5/2021 • 2 minutes to read • Edit Online

Anonymous usage data is collected by the control to better understand how customers make use of the product.
Usage data enables future development to be focused on improvements that are most relevant to customers.
An explanation of the data collection and usage practices of Microsoft SQL Server and Report Viewer are
available in the privacy statement.

Opting out of data collection


Collection of usage data can be disabled through the EnableTelemetry property.

<rsweb:ReportViewer ID="ReportViewer1" runat="server" EnableTelemetry="false">


</rsweb:ReportViewer>

Or pragmatically before the control is rendered.

protected void Page_Load(object sender, EventArgs e)


{
ReportViewer1.EnableTelemetry = false;
}

See also
Using the WebForms Report Viewer Control
Integrating Reporting Services Using the Report Viewer Controls
Support for Report Viewer current branch versions
3/5/2021 • 2 minutes to read • Edit Online

Applies to: Microsoft Repor t Viewer versions 150.900.148 and later


The Microsoft Repor t Viewer control is compatible with SQL Server Reporting Services and Power BI Report
Server that follow the Microsoft modern support lifecycle policy. This information applies to both the ASP.NET
and WinForms versions distributed through NuGet. All released versions are available through NuGet. Patches,
features, or other updates are rolled-forward to the latest version. Latest versions must be applied to receive
changes. The Report Viewer continues to receive Security and Critical Updates , with at least one year
advanced notice of any support policy changes.
For a version history of the Report Viewer control, seethe following links:
Windows Forms
ASP.NET Web Forms

Application server and report server combinations


Some features of the Report Viewer control rely on the operating system’s default behaviors. Thus, they may
require running the same version for both the client (the application server running the Report Viewer control)
and the server (running Reporting Services). The following combinations of application server and report server
are supported:

A P P L IC AT IO N SERVER REP O RT SERVER

Windows Server 2012 Windows Server 2012

Windows Server 2012 Windows Server 2012 R2

Windows Server 2012 R2 Windows Server 2012 R2

Windows Server 2012 R2 Windows Server 2012

Windows Server 2016 and later Windows Server 2016 and later

Next steps
For more information about the Report Viewer control, see Get started integrating Reporting Services using the
Report Viewer controls.
Release Notes for Report Viewer controls for
WebForms and WinForms of SSRS
3/5/2021 • 2 minutes to read • Edit Online

These are the release notes for the Report Viewer controls of WebForms and WinForms, related to SQL Server
Reporting Services (SSRS).
For the release notes for SSRS, see Release notes for SQL Server Reporting Services (SSRS) 2017 and later.

150.1427.0
C H A N GE DESC RIP T IO N DETA IL S

Bug Fixes Fixed an issue with links not looking visited after being
clicked.

Fixed a datetime parsing issue affecting certain locales.

150.1404.0
C H A N GE DESC RIP T IO N DETA IL S

Bug Fixes Fixed an issue with tab ordering of the toolbar in WebForms.

Improved HTML rendering accessibility for tables.

150.1400.0
C H A N GE DESC RIP T IO N DETA IL S

Bug Fixes Fixed an issue where the viewer control would not load in
design mode.

150.1358.0
C H A N GE DESC RIP T IO N DETA IL S

Bug Fixes Reverted a change that removed the


Microsoft.ReportViewer.Design assemblies from the project
references.
C H A N GE DESC RIP T IO N DETA IL S

As part of other changes, two assemblies were changed


from 15.0 version to 15.3. This has been reverted.

150.1357.0
C H A N GE DESC RIP T IO N DETA IL S

Bug fixes Proper print preview for High DPI monitor

Print dialog would show outside of visible space

Large number of parameters resulted in parameter scroll


bars and drop-down lists not working correctly

Fixed issue with Null and date time parameters

Updated JQuery to version 3.3.1

Fixed overlapping with tablix cells in HTML rendering

Removed the design time project references to eliminate


erroneous VS assemblies being added to the projects

Accessibility fix for tool bar to narrate only for active items

150.900.148
C H A N GE DESC RIP T IO N DETA IL S

Fix for a bug preventing reports without parameters to be


loaded through Ser ver.LoadRepor tDefinition .

The WebForms Report Viewer Control. Supports embedding in RTL pages (pages that change the
text flow using the direction: rtl; css property).

Supports customizing print dialog text via the


IReportViewerMessages5 localization interface.

Improved accessibility support.

• NuGet package for the Report Viewer control of


WebForms

The WinForms Report Viewer Control. Fix for printing when an app is running in a High DPI mode.

• NuGet package for the Report Viewer control of


WinForms
C H A N GE DESC RIP T IO N DETA IL S

Next steps
Getting started with the Report Viewer controls.
More questions? Try the Reporting Services forum.
Choose between URL access and SOAP in
Reporting Services
3/5/2021 • 3 minutes to read • Edit Online

APPLIES TO: ✔ ️ SQL Server Reporting Services (2016) ❌ SQL Server Reporting Services (2017) ❌ Power BI
Report Server
Integrating Reporting Services into custom applications can be challenging. The challenge, however, is not the
complexity of the programming model or APIs, but the many possible ways to integrate it. Reporting Services
was designed from the ground up as a developer platform, and as such, it is built with programming flexibility in
mind. With flexibility comes the need to make important decisions about integrating Reporting Services report
navigation and management functionality into your existing business applications.

NOTE
Starting with SQL Server 2017 Reporting Services, REST API access is available for developing solutions. SOAP API access
has been deprecated. For more information, see Develop with the REST APIs for Reporting Services.

There are two ways to integrate Reporting Services into custom applications: URL access and the Reporting
Services SOAP API. Which to use depends on several factors. In some cases, integrating Reporting Services into
your custom business applications requires the use of both URL access and SOAP. You should ask the following
questions:
What type of enterprise reporting functionality do you or your end users require? Do you need a simple
way to launch and navigate reports, or do you need more advanced report server management features
from your custom business solution?
In which type of environment do your users typically operate? Is your business application a Web
application or a Windows application? How easily can your end-users switch from a Win32 environment
to a Web environment? What type of control do you need over the environment in which reports are run
and managed?
Once you have answered the previous questions, you can decide how to integrate Reporting Services into your
IT infrastructure. Typically, URL access is preferred for viewing and navigating individual reports. URL access
enables you to freely and quickly navigate reports without the overhead of the Web service. In addition, URL
access is currently the only programming technique that uses the full HTML Viewer for report navigation, which
includes the report toolbar. In addition, URL access provides better performance than SOAP because it bypasses
the marshaling of SOAP requests to and from the server. In integration scenarios that require quick and easy
access to reports with built-in tools for viewing and navigation, URL access is the better choice.

NOTE
Report server URL access supports HTML Viewer and the extended functionality of the report toolbar. The SOAP API does
not support this type of rendered report. If you render reports using the SOAP API, design and develop your own report
toolbar.

For more information about the report toolbar, see HTML Viewer and the Report Toolbar.
For more information about URL access, see URL Access.
URL access is useful for viewing reports, but it does not provide the report and namespace management
functionality that can be essential to any enterprise reporting scenario. In this case, the broad and rich
functionality of the Reporting Services SOAP API is recommended. With the SOAP API you can manage and
deploy reports, create schedules, configure server properties, manage the report server namespace, create
subscriptions, and more. The SOAP API exposes the complete set of management functionality in Reporting
Services. The SOAP API can also enable report viewing and navigation through the Render method of the API.
However, viewing reports through the SOAP API does not enable the built-in viewing functionality of the report
toolbar, nor does it automatically handles the report interactivity that URL access provides.
For more information about the Reporting Services SOAP API, see Report Server Web Service.
In the majority of cases, URL access and SOAP calls are both required to meet your reporting needs. SOAP is
used when initially connecting to the report server database and presenting the available list of reports in a user
interface and URL access is used to actually access and navigate individual reports.
For an example of combining URL access and the Web service to provide integrated reporting, see SQL Server
Reporting Services Product Samples.
More questions? Try asking the Reporting Services forum
Integrating Reporting Services Using SOAP
12/3/2019 • 2 minutes to read • Edit Online

The SQL Server 2008 R2 Reporting Services SOAP API provides several Web service endpoints for developing
custom reporting solutions. The endpoints currently fall into two categories: management and execution. The
management functionality is exposed through the ReportService2005, ReportService2006, and
ReportService2010 endpoints. The ReportService2005 endpoint is used for managing a report server that is
configured in native mode and the ReportService2006 endpoint is used for managing a report server that is
configured for SharePoint integrated mode. The ReportService2010 merges the functionalities of
ReportService2005 and ReportService2006 and can manage a report server that is configured for either native
or SharePoint integrated mode.

NOTE
The ReportService2005 and ReportService2006 endpoints are deprecated in SQL Server 2008 R2. The ReportService2010
endpoint includes the functionalities of both endpoints and contains additional management features.

The execution functionality is exposed through the ReportExecution2005 endpoint and it is used when the
report server is configured in native or SharePoint integrated mode. The following topics show how these
endpoints can be used for developing reporting solutions in Microsoft Windows, SharePoint, and Web
applications.

In This Section
Using the SOAP API in a Windows Application
Describes how to use the SOAP API to integrate Reporting Services into a Windows environment.
Using the SOAP API in a Web Application
Describes how to use the SOAP API to integrate Reporting Services into a Web environment.

See Also
Integrating Reporting Services into Applications
Report Server Web Service
Building Applications Using the Web Service and the .NET Framework
Integrating Reporting Services Using SOAP - Web
Application
3/5/2021 • 3 minutes to read • Edit Online

You can access the full functionality of the report server through the Reporting Services SOAP API. Because it's a
Web service, the SOAP API can be easily accessed to provide enterprise reporting features to your custom
business applications. You access the Report Server Web service from a Web application in much the same way
that you access the SOAP API from a Microsoft Windows application. Using the Microsoft .NET Framework, you
can generate a proxy class that exposes the properties and methods of the Report Server Web service and
enables you to use a familiar infrastructure and tools to build business applications on Reporting Services
technology.
Reporting Services report management functionality is just as easily accessed from a Web application as from a
Windows application. From a Web application, you can add and remove items from the report server database,
set item security, modify report server database items, manage scheduling and delivery, and more.

Enabling impersonation
The first step in configuring your Web application is to enable impersonation from the Web service client. With
impersonation, ASP.NET applications can execute with the identity of the client on whose behalf they are
operating. ASP.NET relies on Microsoft Internet Information Services (IIS) to authenticate the user and either
pass an authenticated token to the ASP.NET application or, if unable to authenticate the user, pass an
unauthenticated token. In either case, the ASP.NET application impersonates whichever token is received if
impersonation is enabled. You can enable impersonation on the client, by modifying the Web.config file of the
client application as follows:

<!-- Web.config file. -->


<identity impersonate="true"/>

NOTE
Impersonation is disabled by default.

For more information about ASP.NET impersonation, see the Microsoft .NET Framework SDK documentation.

Managing the Report Server using SOAP API


You can also use your Web application to manage a report server and its contents. Report Manager, included
with Reporting Services, is an example of a Web application that is completely built using ASP.NET and the
Reporting Services SOAP API. You can add the report management functionality of Report Manager to your
custom Web applications. For example, you might want to return a list of available reports in the report server
database and display them in a ASP.NET Listbox control for your users to choose from. The following code
connects to the report server database and returns a list of items in the report server database. The available
reports are then added to a Listbox control, which displays the path of each report.
You can also use your Web application to manage a report server and its contents. The web portal, included with
Reporting Services, is an example of a Web application that manages a majority of the tasks you would typically
perform using Reporting Services. You can add the report management functionality of the web portal to your
custom Web applications. For example, you might want to return a list of available reports in the report server
database and display them in a ASP.NET Listbox control for your users to choose from. The following code
connects to the report server database and returns a list of items in the report server database. The available
reports are then added to a Listbox control, which displays the path of each report.

Private Sub Page_Load(sender As Object, e As System.EventArgs)


' Create a Web service proxy object and set credentials
Dim rs As New ReportingService2005()
rs.Credentials = System.Net.CredentialCache.DefaultCredentials

' Return a list of catalog items in the report server database


Dim items As CatalogItem() = rs.ListChildren("/", True)

' For each report, display the path of the report in a Listbox
Dim ci As CatalogItem
For Each ci In items
If ci.Type = ItemTypeEnum.Report Then
catalogListBox.Items.Add(ci.Path)
End If
Next ci
End Sub ' Page_Load

private void Page_Load(object sender, System.EventArgs e)


{
// Create a Web service proxy object and set credentials
ReportingService2005 rs = new ReportingService2005();
rs.Credentials = System.Net.CredentialCache.DefaultCredentials;

// Return a list of catalog items in the report server database


CatalogItem[] items = rs.ListChildren("/", true);

// For each report, display the path of the report in a Listbox


foreach(CatalogItem ci in items)
{
if (ci.Type == ItemTypeEnum.Report)
catalogListBox.Items.Add(ci.Path);
}
}

See Also
Building Applications Using the Web Service and the .NET Framework
Integrating Reporting Services into Applications
Using the SOAP API in a Windows Application
Integrating Reporting Services Using SOAP -
Windows Application
3/12/2020 • 4 minutes to read • Edit Online

You can access the full functionality of the report server through the Reporting Services SOAP API. The SOAP
API is a Web service and, as such, can be easily accessed to provide enterprise reporting features to your custom
business applications. You can access the Web service in a Windows application simply by writing code that
makes calls to the service. Using the Microsoft .NET Framework, you can generate a proxy class that exposes the
properties and methods of the Web service and enables you to use a familiar infrastructure and tools to build
business applications built on Reporting Services technology.

Integrating Report Management Functionality Using Windows Forms


Unlike URL access, the SOAP API exposes the complete set of management functions that are available through
the report server. This means that the entire administrative functionality of Report Manager is available to
developers through SOAP. As such, you can develop a complete management and administration tool using
Windows Forms. For example, in your Windows application, you might want to enable your users to retrieve the
contents of the report server namespace. To do this, you could use the Web service ListChildren method to list
all the items in the report server database and then use a Listview, Treeview, or Combobox control to display
those items to your users. The following Web service code might be used to retrieve the current list of available
reports in a user's My Reports folder when a user clicks a button on a form:

' Button click event that retrieves a list of reports from


' the My Reports folder and displays them in a combo box
Private Sub listReportsButton_Click(sender As Object, e As System.EventArgs)
' Create a new Web service object and set credentials
' to Windows Authentication
Dim rs As New ReportingService2010()
rs.Credentials = System.Net.CredentialCache.DefaultCredentials

' Return the list of items in My Reports


Dim items As CatalogItem() = rs.ListChildren("/Adventureworks 2008 Sample Reports", False)

Dim ci As CatalogItem
For Each ci In items
' If the item is a report, add it to
' a combo box
If ci.TypeName = "Report" Then
catalogComboBox.Items.Add(ci.Name)
End If
Next ci
End Sub 'listReportsButton_Click
// Button click event that retrieves a list of reports from
// the My Reports folder and displays them in a combo box
private void listReportsButton_Click(object sender, System.EventArgs e)
{
// Create a new Web service object and set credentials
// to Windows Authentication
ReportingService2010 rs = new ReportingService2010();
rs.Credentials = System.Net.CredentialCache.DefaultCredentials;

// Return the list of items in My Reports


CatalogItem[] items = rs.ListChildren("/Adventureworks 2008 Sample Reports", false);

foreach (CatalogItem ci in items)


{
// If the item is a report, add it to
// a combo box
if (ci.TypeName == "Report")
catalogComboBox.Items.Add(ci.Name);
}
}

From there, you might enable users to select the report from the Combo box and preview the report on the
form either using a Web browser control or an image control.

Enabling Report Viewing and Navigation Using Windows Forms


There are two methods available for integrating reports into your Windows Forms applications.
You can use the SOAP API to render reports to any of the supported rendering formats using the Render
method. There are slight disadvantages to enabling report viewing and navigation through SOAP:
You cannot take advantage of the built-in functionality of the report toolbar that is included with the
HTML Viewer through URL access.
If you render to HTML, you must separately render any images or resources as additional streams using
the RenderStream method.
There is a slight performance advantage to rendering reports using URL access over using the SOAP API.
However, the Render method of the SOAP API can be used to render reports and save them to various output
formats programmatically. This is an advantage over URL access, which requires user interaction. When you
render a report using the SOAP API Render method, you can render to any of the supported output formats.
You can also use the freely distributable Report Viewer controls that are included with Microsoft Visual Studio
2008. The Report Viewer controls make it easy to embed Reporting Services functionality into custom
applications. The Report Viewer controls are intended for developers who want to provide predesigned, fully
authored reports as part of an application feature set (for example, a Web site management application might
include reports that show click-stream analysis on company Web sites). Embedding the controls in an
application provides a streamlined alternative to including the Reporting Services server components in your
application deployment. The controls provide report functionality, but without the additional report authoring,
publication, or distribution and delivery support that you find in Reporting Services.
There are two versions of the Report Viewer controls, one for rich Windows client applications and one for
ASP.NET applications. The controls support both local processing and remote processing modes. In local
processing mode, your application provides the report definition and datasets and triggers report processing. In
remote processing mode, data retrieval and report processing happen on the report server and the control is
used for display and report navigation. This model allows you to build rich applications that can be scaled from
desktop to the enterprise.
Report Viewer controls are documented in Visual Studio online Help. For more information, see the Visual
Studio product documentation.

See Also
Building Applications Using the Web Service and the .NET Framework
Integrating Reporting Services into Applications
Using the SOAP API in a Web Application
Integrate Reporting Services Using URL Access
12/3/2019 • 2 minutes to read • Edit Online

With URL access, you access reports through a report server URL. A URL request enables you to access a
specific report server as well as the reports, resources, and other items in the report server database. You can
also customize the report viewing and navigation experience for your users. The query string of the URL
contains device information settings, as well as report parameters targeted at your report and the chosen
rendering output. The way the report server handles URL requests depends on the parameters, parameter
prefixes, and type of item that you are accessing through the URL.
You can use URL access to embed hyperlinks to reports and other report server items in the applications that
you develop, whether in a Windows or Web environment.

NOTE
The topics in the section provide you with some basic ideas for integration. You can use the information to begin to
design and develop your own Reporting Services integration scenarios.

In This Section
Using URL Access in a Web Application
Describes how to use URL access to integrate Reporting Services into a Web environment.
Using URL Access in a Windows Application
Describes how to use URL access to integrate Reporting Services into a Microsoft Win32 environment.

See Also
Integrating Reporting Services into Applications
URL Access (SSRS)
Integrating Reporting Services Using URL Access -
Web Application
3/12/2020 • 3 minutes to read • Edit Online

URL access in Reporting Services is specifically designed to enable access to individual reports over a network.
This type of access is best for integrating report viewing and navigation into a custom Web application. To use
URL access in Web applications, you can:
Address a URL to a specific report server from a Web site or portal.
Use a form POST method and pass query string parameters to a report server URL using form fields.

URL Access Through Direct Addressing


To access a report server or report server database item using a URL, simply provide the URL address from
within a Web browser or application. You can also supply parameters to the URL that can affect the appearance
of the report or resource that is being accessed. A URL can target a report server through the address bar of a
Web browser, or a URL can be the source of an IFrame that is part of a larger Web application or portal. You can
include hyperlinks to reports on various Web pages of your portal, as well as target a specific frame for the
report or open a new browser window in the process.
In the following example, the hyperlink targets a frame named "main", which might be different from the one
that includes the hyperlink. The hyperlink might be part of Web portal.

<a href="https://server/reportserver?/SampleReports/Territory Sales


Drilldown&rs:Command=Render&rc:LinkTarget=main" target="main" >
Click here for the Territory Sales Drilldown sample report
</a>

In the previous example, the device information setting LinkTarget is passed with a value of "main" in the query
string of the URL. This ensures that any drillthrough hyperlinks in the report also target the frame named
"main".
For more information about device information settings, see Passing Device Information Settings to Rendering
Extensions.
Note that many servers and browsers limit the number of characters allowed in a URL. In some cases, a 256-
character limit is imposed. To get around this limitation, you can use POST requests using form submission.

NOTE
Internet Explorer has a maximum URL length of 2,083 characters. This limit applies to both POST and GET request URLs.
POST, however, is not limited by the size of the URL for submitting name/value pairs as part of a form, because they are
transferred in the header and not the URL.

URL Access Through a Form POST Method


When a user requests data from a report server using URL access, the HTTP request uses the GET method. This
is equivalent to a form submission where METHOD="GET". URL requests or form submissions that use
METHOD="GET" are limited by the maximum number of characters that a server or Web browser can process.
With POST requests (METHOD="POST" and input fields), the name/value pairs are transferred in the header and
not the URL. Therefore, the name/value pairs of the query string are not part of the URL, thus enabling you to
provide much longer and more complex parameter lists.
Using direct access, a user can see the URL for the report server, and may be able to modify the query string or
note the particular URL request and report server parameters for later use.
The following sample HTML demonstrates the use of a form that you can use to target a report server with a
specific URL and pass query string parameters as part of the form's input fields.

<FORM id="frmRender" action="https://server/reportserver?/SampleReports/


Territory Sales Drilldown" method="post" target="_self">
<INPUT type="hidden" name="rs:Command" value="Render">
<INPUT type="hidden" name="rc:LinkTarget" value="main">
<INPUT type="hidden" name="rs:Format" value="HTML4.0">
<INPUT type="submit" value="Button">
</FORM>

In the previous example, if a user clicks the button on the form, the report server returns an HTML-rendered
report targeted at the current frame. A comparable URL access string might look like the following:

https://server/reportserver?/SampleReports/Territory Sales
Drilldown&rs:Command=Render&rc:LinkTarget=main&rs:Format=HTML4.0

See Also
Integrating Reporting Services into Applications
Integrating Reporting Services Using URL Access
Using URL Access in a Windows Application
URL Access (SSRS)
Integrating Reporting Services Using URL Access -
Windows Application
12/3/2019 • 2 minutes to read • Edit Online

Although URL access to a report server is optimized for a Web environment, you can also use URL access to
embed Reporting Services reports into a Microsoft Windows application. However, URL access that involves
Windows Forms still requires that you use Web browser technology. You can use the following integration
scenarios with URL access and Windows Forms:
Display a report from a Windows Form application by starting a Web browser programmatically.
Use the WebBrowser control on a Windows Form to display a report.

Starting Internet Explorer from a Windows Form


You can use the Process class to access a process that is running on a computer. The Process class is a useful
Microsoft .NET Framework construct for starting, stopping, controlling, and monitoring applications. To view a
specific report in your report server database, you can start the IExplore process, passing in the URL to the
report. The following code example can be used to start Microsoft Internet Explorer and pass a specific report
URL when the user clicks a button on a Windows Form.

Private Sub viewReportButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles


viewReportButton.Click
' Build the URL access string based on values supplied by a user
Dim url As String = serverUrlTextBox.Text + "?" & reportPathTextBox.Text & _
"&rs:Command=Render" & "&rs:Format=HTML4.0"

' If the user does not select the toolbar check box,
' turn the toolbar off in the HTML Viewer
If toolbarCheckBox.Checked = False Then
url += "&rc:Toolbar=False"
End If
' load report in the Web browser
Try
System.Diagnostics.Process.Start("IExplore", url)
Catch
MessageBox.Show("The system could not start the specified report using Internet Explorer.", _
"An error has occurred", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub 'viewReportButton_Click
// Sample click event for a Button control on a Windows Form
private void viewReportButton_Click(object sender, System.EventArgs e)
{
// Build the URL access string based on values supplied by a user
string url = serverUrlTextBox.Text + "?" + reportPathTextBox.Text +
"&rs:Command=Render" + "&rs:Format=HTML4.0";

// If the user does not check the toolbar check box,


// turn the toolbar off in the HTML Viewer
if (toolbarCheckBox.Checked == false)
url += "&rc:Toolbar=False";

// load report in the Web browser


try
{
System.Diagnostics.Process.Start("IExplore", url);
}

catch (Exception)
{
MessageBox.Show(
"The system could not open the specified report using Internet Explorer.",
"An error has occurred", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}

Embedding a Browser Control on a Windows Form


If you do not want to view your report in an external Web browser, you can embed a Web browser seamlessly
as part of your Windows Form using the WebBrowser control.
To a d d t h e W e b B ro w s e r c o n t ro l t o y o u r W i n d o w s F o rm

1. Create a new Windows application in either Microsoft Visual C# or Microsoft Visual Basic.
2. Locate the WebBrowser control in the Toolbox Dialog Box.
If the Toolbox is not visible you can access it by clicking the View menu item and selecting Toolbox .
3. Drag the WebBrowsercontrol onto the design surface of your Windows Form.
The WebBrowsercontrol named webBrowser1 is added to the Form
You direct the WebBrowser control to a URL by calling its Navigate method. You can assign a specific URL
access string to your WebBrowser control at run time as shown in the following example.

Dim url As String = "https://localhost/reportserver?/" & _


"AdventureWorks2012 Sample Reports/" & _
"Company Sales&rs:Command=Render"
WebBrowser1.Navigate(url)

string url = "https://localhost/reportserver?/" +


"AdventureWorks2012 Sample Reports/" +
"Company Sales&rs:Command=Render";
webBrowser1.Navigate(url);

See Also
Integrating Reporting Services into Applications
Integrating Reporting Services Using URL Access
Integrating Reporting Services Using SOAP
Integrating Reporting Services Using the ReportViewer Controls
URL Access (SSRS)
Report Server Web Service
3/12/2020 • 2 minutes to read • Edit Online

SQL Server Reporting Services provides access to the full functionality of the report server through the Report
Server Web service. The Report Server Web service is an XML Web service with a SOAP API. It uses SOAP over
HTTP and acts as a communications interface between client programs and the report server. The Web service
provides two endpoints - one for report execution and one for report management - with methods that expose
the functionality of the report server and enable you to create custom tools for any part of the report life cycle.
There are three primary ways to develop Reporting Services applications based on the Web service. You can:
Develop applications using Microsoft Visual Studio and the Microsoft .NET Framework SDK. For more
information about using the .NET Framework to build Web service applications, see Building Applications
Using the Web Service and the .NET Framework.
Develop applications using the rs utility (RS.exe), the Reporting Services script environment. With
Reporting Services and Visual Basic scripts, you can run any of the Report Server Web service operations.
For more information about scripting in Reporting Services, see Script with the rs.exe Utility and the Web
Service.
Develop applications using any SOAP-enabled set of development tools. For more information, see The
Role of SOAP in Reporting Services.

Programming Diagram

Reporting Services available Web service development options

In This Section
Report Server Web Service Methods
Describes the features and methods of each Report Server Web service.
The Role of SOAP in Reporting Services
Provides an overview of SOAP and how it is used in the Report Server Web services.
Accessing the SOAP API
Describes the Web Service Description Language (WSDL) and provides URLs for accessing a Reporting Services
WSDL file.
Building Applications Using the Web Service and the .NET Framework
Contains information about developing applications and Web services that call the Reporting Services SOAP
API.
Script with the rs.exe Utility and the Web Service
Provides an overview of the Reporting Services scripting environment.
Technical Reference (SSRS)
Contains reference material specific to Report Server Web services methods and corresponding complex types.

User Requirements for Web Service Development


To develop applications using the Report Server Web service, you need:
Microsoft Internet Explorer 5.5 or later installed on a computer with an Internet connection to and access
to the report server.
Microsoft Visual Studio or the Microsoft .NET Framework SDK installed on a computer if you want to
develop and deploy Reporting Services applications using the Microsoft .NET Framework.
An in-depth understanding of Microsoft SQL Server Reporting Services features and capabilities.
A firm understanding of SOAP and XML Web Services.
Development experience in a .NET Framework-compatible language such as Microsoft Visual C# or
Microsoft Visual Basic, if you plan to use the .NET Framework as your development platform.

See Also
Report Server Web Service
Accessing the SOAP API
3/18/2020 • 2 minutes to read • Edit Online

The Report Server Web service uses Simple Object Access Protocol (SOAP) over HTTP and acts as a
communications interface between client programs and the report server. The Web service provides two
endpoints - one for report execution and one for report management - and consists of methods and a set of
complex type objects that you can use to access the complete functionality of Reporting Services. To call the
service, you must reference the Reporting Services Web Services Description Language (WSDL).

Referencing the Reporting Services WSDL


To call a Web service successfully, you must know how to access the service, what operations the service
supports, what parameters the service expects, and what the service returns. WSDL provides this information in
an XML document that can be read or processed by a computer.
The Report Server Web services are exposed in three different endpoints. The name of the WSDL file is different
for each endpoint. The ReportService2010 endpoint contains methods for managing objects in a Report Server
in either native or SharePoint integrated mode. The WSDL for this endpoint is accessed through
ReportService2010.asmx?wsdl.

NOTE
The ReportService2005 and ReportService2006 endpoints are deprecated in SQL Server 2008 R2. The ReportService2010
endpoint includes the functionalities of both endpoints and contains additional management features.

The ReportExecution2005 endpoint allows developers to programmatically process and render reports in a
Report Server. The WSDL for this endpoint is accessed through ReportExecution2005.asmx?wsdl .
WSDL can be consumed by development kits that support SOAP and Web services, such as the Microsoft .NET
Framework SDK.
The following example shows the format of the URL to the Reporting Services management WSDL file:

https://server/reportserver/ReportService2010.asmx?wsdl

The following table describes each element in the URL.

URL EL EM EN T DESC RIP T IO N

server The name of the server on which the report server is


deployed.

reportserver The name of the folder that contains the XML Web service.
This is configured during setup.

<endpoint name>.asmx The name of the web service endpoint.

For more information about the WSDL format, see the World Wide Web Consortium (W3C) WSDL specification
at http://www.w3.org/TR/wsdl.
See Also
Building Applications Using the Web Service and the .NET Framework
Report Server Web Service
The Role of SOAP in Reporting Services
11/2/2020 • 2 minutes to read • Edit Online

The Report Server Web service uses Simple Object Access Protocol (SOAP) messaging to send text-based
commands over a network. These commands take the form of XML text that is sent over the World Wide Web
using HTTP. By using SOAP as its communication protocol, the Report Server Web service allows applications
and components to exchange data with the report server using an open and widely accepted infrastructure. The
SOAP standard is defined at www.w3.org/TR/SOAP.
Any client application can act as a SOAP client as long as it is SOAP-aware and can send SOAP requests. Report
Manager is one such SOAP client. It provides an interface to the report server database in which all reports and
report-related content is stored. End users can use the application to browse through and manage reports and
folders in the report server namespace. Report Manager is built on the Report Server Web service
infrastructure.
A report server acts as a SOAP server, a SOAP-aware service that can accept requests from SOAP clients and
create appropriate responses. The server handles the requests and sends encoded responses back to the client.
SOAP messages in Reporting Services take many different forms, depending on the type of request made by the
client. The following example represents a simple SOAP client request to remove an item from the report server
database.

<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<DeleteItem xmlns="https://www.microsoft.com/sql/ReportingServer">
<item>/Samples/Report1</item>
</DeleteItem>
</soap:Body>
</soap:Envelope>

The SOAP itself requires that messages be put into an Envelope element, with the bulk of the message inside a
Body element. In this example, the body contains a call to the DeleteItem method, which takes a string
parameter representing the path of the item to delete. You can create a Microsoft .NET Framework client proxy
class that encapsulates all SOAP operations into methods. The following Microsoft Visual C# method represents
the SOAP example given earlier.

public void DeleteItem(string item);

The response from the server might look like the following:

<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<DeleteItemResponse xmlns="https://www.microsoft.com/sql/ReportingServer" />
</soap:Body>
</soap:Envelope>

The DeleteItem method has no return value, so an empty response is returned.

See Also
Accessing the SOAP API
Report Manager (SSRS Native Mode)
Reporting Services Report Server
Report Server Web Service
Report Server Web Service Methods
3/12/2020 • 2 minutes to read • Edit Online

The Report Server Web services include several categories of methods that are based on component features.
These methods are provided through several Web service endpoints (three for report management and one for
report execution) which are exposed as members of the ReportingService2010 and ReportExecutionService
classes. These classes can be generated through a proxy class tool such as wsdl.exe, which is included with the
Microsoft .NET Framework SDK. For more information about the Report Server Web services and the .NET
Framework, see Building Applications Using the Web Service and the .NET Framework.

Endpoints and Methods


The following table lists the endpoints of the Report Server Web service, and the categories of methods
provided by the ReportingService2010 endpoint. For information on the methods available in the other
endpoints, see Technical Reference (SSRS).

TO P IC DESC RIP T IO N

Report Server Web Service Endpoints Describes the management and execution endpoints of the
Report Server Web service.

Report Server Namespace Management Methods Describes methods that you can use to manage the report
server database. Specifically you can manage folders and
resources and set item properties.

Authorization Methods Describes methods that you can use to manage tasks, roles,
and policies.

Data Sources and Connection Methods Describes methods that you can use to set and manage data
source connection and credential information for reports.

Report Parameters Methods Describes methods that you can use to set and retrieve
parameters for reports.

Model Methods - Report Server Web Service Describes methods that you can use to manage models.

Rendering and Execution Methods Describes methods that you can use to manage report
execution, rendering, and caching.

Report History Methods Describes methods that you can use to create and manage
report history snapshots.

Scheduling Methods Describes methods that you can use to create and manage
shared schedules and cache refresh plans that are used by
the report server.

Subscription and Delivery Methods Describes methods that you can use to create and manage
subscriptions and report delivery.

Linked Reports Methods Describes methods that you can use to create and manage
linked reports.
See Also
Accessing the SOAP API
Building Applications Using the Web Service and the .NET Framework
Report Server Web Service
Technical Reference (SSRS)
Authorization Methods
4/15/2020 • 2 minutes to read • Edit Online

You can use these methods to manage tasks, roles, and policies on the report server.

M ET H O D A C T IO N

CreateRole Adds a new role to the report server database. This method
=applies to native mode only.

DeleteRole Deletes a role from the report server database. This method
applies to native mode only.

GetPermissions Returns the user permissions that are associated with a


particular item in the report server database or SharePoint
library.

GetPolicies Returns the policies that are associated with a particular item
in the report server database or SharePoint library.

GetRoleProperties Returns role metadata properties and a collection of


associated tasks.

GetSystemPermissions Returns the user's system permissions. This method applies


to native mode only.

GetSystemPolicies Returns the system policies, including groups and roles with
which they are associated. This method applies to native
mode only.

InheritParentSecurity Deletes the policies that are associated with a particular item
in the report server database and sets the security policies
for the item to those of its parent.

IsSSLRequired Returns a Boolean value that indicates whether the Transport


Layer Security (TLS), previously known as Secure Sockets
Layer (SSL), protocol is required to use the
ReportService2010 end point.

ListRoles Returns the names and descriptions of roles that are


managed by the report server.

ListSecureMethods Returns a list of Simple Object Access Protocol (SOAP)


methods in the ReportExecution2005 endpoint that require
a secure connection when invoked. The
SecureConnectionLevel setting of the report server is
used to determine which methods are returned.

ListTasks Returns the tasks that are managed by the report server.

SetPolicies Sets the policies that are associated with a specified item.
M ET H O D A C T IO N

SetRoleProperties Sets role metadata properties and associates a set of tasks


with a role. This method applies to native mode only.

SetSystemPolicies Sets the system policy that defines groups and their
associated roles. This method applies to native mode only.

See Also
Building Applications Using the Web Service and the .NET Framework
Report Server Web Service
Report Server Web Service Methods
Technical Reference (SSRS)
Data Sources and Connection Methods
3/12/2020 • 2 minutes to read • Edit Online

You can use these methods to set and manage data source connections and credentials.

M ET H O D A C T IO N

CreateDataSource Creates a new data source in the report server database or


SharePoint library.

DisableDataSource Disables a data source that is enabled.

EnableDataSource Enables a data source that is disabled.

GetDataSourceContents Returns the contents of a data source.

GetItemDataSourcePrompts Gets the data source prompts for a specified item.

GetItemDataSources Returns the data sources for an item in the catalog.

ListDependentItems Returns a list of catalog items that reference a specified


catalog item.

ListSubscriptionsUsingDataSource Returns a list of subscriptions that are associated with a


given data source.

SetDataSourceContents Sets the connection properties that are associated with a


data source.

SetItemDataSources Sets the data sources for an item in a report server database
or SharePoint library.

TestConnectForDataSourceDefinition Tests the connection for a data source. This method


supports the direct testing of the data source.

TestConnectForItemDataSource Tests the connection for a data source. This method


supports the testing of published data sources that are used
by reports or models and shared data sources.

See Also
Building Applications Using the Web Service and the .NET Framework
Report Server Web Service
Report Server Web Service Methods
Technical Reference (SSRS)
Linked Reports Methods
3/12/2020 • 2 minutes to read • Edit Online

You can use these methods to create and manage linked items.

M ET H O D A C T IO N

CreateLinkedItem Adds a new linked item to the report server database.

GetItemLink Returns the name of the item whose item definition is used
for the specified linked item.

ListDependentItems Returns a list of the items that are linked to a specified item.

SetItemLink Specifies the catalog item that is used for the item definition
of an existing linked item.

See Also
Building Applications Using the Web Service and the .NET Framework
Report Server Web Service
Report Server Web Service Methods
Technical Reference (SSRS)
Model Methods - Report Server Web Service
3/12/2020 • 2 minutes to read • Edit Online

You can use these methods to manage models.

M ET H O D A C T IO N

GenerateModel Generates a default model on top of a shared data source.

GetModelItemPermissions Retrieves the user permissions that are associated with the
model item.

GetModelItemPolicies Retrieves the policies that are associated with a model item.

GetUserModel Returns the semantic piece of a model for the current user.

InheritModelItemParentSecurity Deletes the policies that are associated with a model item
and causes the model item to inherit the policies from its
parent.

ListModelDrillthroughReports Lists drillthrough reports that are associated with an entity


in a model.

ListModelItemChildren Returns an array of model item child elements.

ListModelItemTypes Returns a list of supported model item types.

ListModelPerspectives Lists models and perspectives that are available to the user.

RegenerateModel Updates an existing model based on changes to the data


source schema.

RemoveAllModelItemPolicies Deletes all policies that are associated with model items in
the specified model.

SetModelDrillthroughReports Associates a set of drillthrough reports together with a


model.

SetModelItemPolicies Sets security policies on a model item.

See Also
Building Applications Using the Web Service and the .NET Framework
Report Server Web Service
Report Server Web Service Methods
Technical Reference (SSRS)
Rendering and Execution Methods
3/18/2020 • 2 minutes to read • Edit Online

You can use these methods to manage item execution and caching, and report rendering.

M ET H O D A C T IO N

FlushCache Invalidates the cache for an item.

GetCacheOptions Returns the cache configuration for an item and the settings
that describe when the cached copy of the item expires.

GetExecutionOptions Returns the execution option and associated settings for an


individual item.

ListExecutionSettings Returns a list of supported execution settings.

Render Processes the specified report and renders it in a specified


format.

SetCacheOptions Configures an item to be cached and provides settings that


specify when the cached copy of the item expires.

SetExecutionOptions Sets execution options and associated execution properties


for a specified item.

UpdateItemExecutionSnapshot Generates an item execution snapshot for a specified item.

See Also
Building Applications Using the Web Service and the .NET Framework
Report Server Web Service
Report Server Web Service Methods
Technical Reference (SSRS)
Report History Methods
3/12/2020 • 2 minutes to read • Edit Online

You can use these methods to create and manage item history snapshots.

M ET H O D A C T IO N

CreateItemHistorySnapshot Generates an item history snapshot of a specified catalog


item.

DeleteItemHistorySnapshot Deletes an individual item history snapshot for a specified


catalog item.

GetItemHistoryLimit Returns the item history snapshot limit for a specified


catalog item.

GetItemHistoryOptions Returns the item history snapshot option setting and


properties generated for a catalog item.

ListItemHistory Returns a list of item history snapshots and their properties


for a specified catalog item.

SetItemHistoryLimit Specifies how many snapshots of an item the report server


retains.

SetItemHistoryOptions Sets item history options that specify when an item history
snapshot is created for a specified catalog item.

See Also
Building Applications Using the Web Service and the .NET Framework
Report Server Web Service
Report Server Web Service Methods
Technical Reference (SSRS)
Report Parameters Methods
3/12/2020 • 2 minutes to read • Edit Online

You can use these methods to set and retrieve parameters for reports.

M ET H O D A C T IO N

GetItemParameters Returns parameter properties for a specified item. This


method can also be used to validate parameter values
against parameters for a specified item.

ListParameterStates Returns a list of supported parameter states.

ListParameterTypes Returns a list of supported parameter types.

SetItemParameters Sets parameter properties for a specified item.

See Also
Building Applications Using the Web Service and the .NET Framework
Report Server Web Service
Report Server Web Service Methods
Technical Reference (SSRS)
Report Server Namespace Management Methods
3/18/2020 • 2 minutes to read • Edit Online

The Report Server Management Web service contains methods that you can use to manage reports, folders,
and resources in the report server database.

M ET H O D A C T IO N

CancelJob Cancels execution of a job.

CreateFolder Adds a folder to the report server database or SharePoint


library.

CreateCatalogItem Adds a new item to a report server database or SharePoint


library. This method applies to the Repor t , Model,
Dataset , Component , Resource , and DataSource item
types.

M:ReportService2010.ReportingService2010.CreateReportEdi Creates a new report edit session.


tSession(System.String,
System.String,System.Byte[],ReportService2010.Warning[]@)

DeleteItem Removes an item from the report server database or


SharePoint library.

FindItems Returns the items in the report server database or


SharePoint library that match the specified search criteria.

FireEvent Triggers an event based on the supplied parameters.

GetExtensionSettings Returns a list of settings for a given extension.

GetItemType Retrieves the type of an item in the report server database


or SharePoint library, if the item exists.

GetProperties Returns the values of one or more properties on an item in


the report server database or SharePoint library.

GetItemDefinition Retrieves the definition or content for an item. This method


applies to the Repor t , Model, Dataset , Component ,
Resource , and DataSource item types.

GetItemReferences Returns a list of catalog item references associated with an


item.

GetReportServerConfigInfo Returns information on the connected report server instance


or all the report server instances in a scale-out deployment.

GetSystemProperties Returns one or more system properties.

ListChildren Gets a list of children of a specified folder.


M ET H O D A C T IO N

ListDatabaseCredentialRetrievalOptions Returns a list of supported credential retrieval options.

ListEvents Returns a list of event extensions as they appear in the


report server configuration file.

ListJobs Returns a list of jobs running on the report server.

ListExtensions Returns a list of extensions that are configured for a given


extension type.

ListExtensionTypes Returns a list of supported extension types.

ListItemTypes Returns a list of supported catalog item types.

ListJobActions Returns a list of supported job actions.

ListJobStates Returns a list of supported job states.

ListJobTypes Returns a list of supported job types.

ListParents Retrieves parent items for the given item.

ListSecurityScopes Returns a list of supported security scopes.

Logoff Logs out the current user making Web service requests. This
method only applies to native mode.

LogonUser Logs on a user and authenticates a user request to the


Report Server Web service. This method only applies to
native mode.

SetItemReferences Sets the catalog items associated with an item.

MoveItem Moves and/or renames an item.

SetProperties Sets one or more properties of an item.

SetItemDefinition Sets the definition or content for a specified item. This


method applies to the Repor t , Model, Dataset ,
Component , Resource , and DataSource item types.

SetSystemProperties Sets one or more system properties in the report server or


SharePoint farm.

ValidateExtensionSettings Validates Reporting Services extension settings.

See Also
Building Applications Using the Web Service and the .NET Framework
Report Server Web Service
Report Server Web Service Methods
Technical Reference (SSRS)
Report Server Web Service Endpoints
3/18/2020 • 2 minutes to read • Edit Online

The Report Server Web service provides several endpoints for managing a report server as well as executing
and navigating reports.

The Management Endpoints


There are three endpoints available for managing objects on a report server, ReportService2005,
ReportService2006, and ReportService2010. The ReportService2005 endpoint is used for managing objects on
a report server that is configured for native mode. The ReportService2006 endpoint is used for managing
objects on a report server that is configured for SharePoint integrated mode. The ReportService2010 endpoint
merges the functionalities of ReportService2005 and ReportService2006 and can manage objects on a report
server that are configured for either native or SharePoint integrated mode.

IMPORTANT
When a report server is configured for SharePoint integrated mode, the ReportService2005 APIs will return an
rsOperationNotSuppor tedSharePointMode error. If the report server is configured for native mode, the
ReportService2006 APIs will return an rsOperationNotSuppor tedNativeMode error. Similarly, when mode-specific
APIs in ReportService2010 are used on unintended modes, the APIs will return the respective errors.

NOTE
The ReportService2005 and ReportService2006 endpoints are deprecated in SQL Server 2008 R2. The ReportService2010
endpoint includes the functionalities of both endpoints and contains additional management features.

If the report server is configured for native mode or SharePoint integrate mode, the WSDL for the management
endpoint can be accessed using one of the following URL:

https://<Server Name>/ReportServer/ReportService2010.asmx?wsdl

For more information, see Accessing the SOAP API.

The Execution Endpoint


The ReportExecution2005 endpoint makes it easy for developers to customize report processing and rendering
from a report server in both native and SharePoint integrated modes. The endpoint includes classes and
methods that existed in earlier versions of the Report Server Web service. In addition, many new classes and
methods have been added to the Report Server Web service that are exposed through the execution endpoint.
The WSDL for the management endpoint can be accessed using the following URL:

https://<Server Name>/ReportServer/ReportExecution2005.asmx?wsdl

If the report server is configured for SharePoint integrate mode, the WSDL can be accessed using the following
URL:
https://<Server Name>/<Site Name>/_vti_bin/ReportServer/ReportExecution2005.asmx?wsdl

For more information, please see Accessing the SOAP API.

SharePoint Proxy Endpoints


When a report server is configured for SharePoint integrated mode and the Reporting Services Add-in has been
installed, a set of proxy endpoints are installed on the SharePoint server. The proxy endpoints are the primary
API for developing report solutions when a report server is configured for SharePoint integrated mode. When
developing against the proxy endpoints, the Reporting Services Add-in manages the exchange of credentials
between the SharePoint server and the report server in Trusted account authentication mode. When developing
against the report server endpoints, the calling application will have to manage the credential exchange in
Trusted account authentication mode. The following table lists the endpoints that are installed with the
Reporting Services Add-in.

P RO XY EN DP O IN T DESC RIP T IO N

ReportService2006 Provides the APIs for managing a report server that is


configured for SharePoint integrate mode.

Note: This endpoint is deprecated in SQL Server 2008 R2.

ReportService2010 Provides the APIs for managing a report server that is


configured for either native or SharePoint integrated mode.

ReportExecution2005 Provides the APIs for running and navigating reports.

ReportServiceAuthentication Provides the APIs for authenticating users against a report


server when the SharePoint Web application is configured
for Forms Authentication.

The following are example URLs for referencing the proxy endpoints on a SharePoint site.

https://<Server Name>/<Site Name>/_vti_bin/ReportServer/ReportService2010.asmx

https://<Server Name>/<Site Name>/_vti_bin/ReportServer/ReportExecution2005.asmx

https://<Server Name>/<Site Name>/_vti_bin/ReportServer/ReportServiceAuthentication.asmx

See Also
Building Applications Using the Web Service and the .NET Framework
Scheduling Methods
3/12/2020 • 2 minutes to read • Edit Online

You can use these methods to create and manage shared schedules for report execution and delivery, and to
cache refresh plans utilized by the report server.

M ET H O D A C T IO N

CreateCacheRefreshPlan Creates a cache refresh plan for an item.

CreateSchedule Creates a new shared schedule.

DeleteCacheRefreshPlan Deletes a cache refresh plan.

DeleteSchedule Deletes a shared schedule based on a specific schedule ID.

GetCacheRefreshPlanProperties Returns the properties of the specified cache refresh plan.

GetScheduleProperties Returns the values of properties of a shared schedule.

ListCacheRefreshPlans Returns a list of the cache refresh plans associated with a


catalog item.

ListScheduledItems Returns a list of items that are associated with a shared


schedule.

ListSchedules Returns a list of all shared schedules at the report server or


the SharePoint site.

ListScheduleStates Returns a list of supported schedule states.

PauseSchedule Pauses the execution of a given schedule.

ResumeSchedule Resumes a shared schedule that has been paused.

SetCacheRefreshPlanProperties Sets the properties of a cache refresh plan.

SetScheduleProperties Sets the value of properties of a shared schedule.

See Also
Building Applications Using the Web Service and the .NET Framework
Report Server Web Service
Report Server Web Service Methods
Technical Reference (SSRS)
Subscription and Delivery Methods
3/18/2020 • 2 minutes to read • Edit Online

You can use these methods to create and manage subscriptions and delivery of catalog items.

M ET H O D A C T IO N

CreateDataDrivenSubscription Creates a data-driven subscription for a specified item.

GetDataDrivenSubscriptionProperties Returns the properties for a data-driven subscription.

CreateSubscription Creates a subscription for the specified item in the report


server database or SharePoint library.

DeleteSubscription Deletes a subscription from the report server database.

GetSubscriptionProperties Returns the properties of a subscription.

ListMySubscriptions Retrieves a list of subscriptions that have been created by


the current user of the report server or SharePoint site for
the given catalog item.

ListSubscriptions Retrieves a list of subscriptions that have been created for a


given item.

PrepareQuery Returns a data set containing the fields retrieved by the


delivery query for a data-driven subscription.

SetDataDrivenSubscriptionProperties Sets the values of properties of a data-driven subscription.

SetSubscriptionProperties Sets the values of properties of a subscription.

See Also
Building Applications Using the Web Service and the .NET Framework
Report Server Web Service
Report Server Web Service Methods
Technical Reference (SSRS)
Building Applications Using the Web Service and
the .NET Framework
3/18/2020 • 2 minutes to read • Edit Online

With the Microsoft .NET Framework, you can use familiar programming constructs, such as methods, primitive
types, and user-defined complex types to work with Web services. The .NET Framework contains an
infrastructure and tools you can use to create Web service clients that can call any World Wide Web Consortium
(W3C) standards-compliant Web service.
A Report Server Web service client is any component or application that communicates with a report server
using Simple Object Access Protocol (SOAP) messages.
To create a Repor t Ser ver Web ser vice client using the .NET Framework , follow these basic steps:
1. Create a proxy class for the Web service.
To do this, add a proxy class or Web reference to your development project, reference the proxy class in
your client code, and create an instance of that proxy. For more information, see Creating the Web
Service Proxy.
2. Authenticate the Web service client with the report server.
To do this, set the service object's Credentials property equal to the credentials of an authenticated user
on the report server. For more information, see Web Service Authentication.
3. Call the method of the proxy class corresponding to the Web service operation that you want to invoke.
To do this, call a Web service method and supply the necessary arguments. For more information about
the Web service methods, see Report Server Web Service Methods. For more information about calling,
see Calling Web Service Methods.

In This Section
TO P IC DESC RIP T IO N

Creating the Web Service Proxy Describes the ways to add a proxy class to your project
using Microsoft .NET Framework.

Web Service Authentication Describes how calls to the Report Server Web service are
authenticated.

Calling Web Service Methods Describes how to use the SOAP API to call Web service
methods in Microsoft Visual Studio.

Setting the Url Property of the Web Service Explains how to programmatically direct your Web service
proxy to a new server URL after you have created your Web
reference.

Supplying Web Service Method Arguments Describes how to invoke a Web service method and supply
method arguments.
TO P IC DESC RIP T IO N

Omitting Values for Optional Web Service Objects Describes how to omit values for optional Web service
objects.

Using Secure Web Service Methods Describes the SecureConnectionLevel setting and the
way in which it affects the use of the Reporting Services
SOAP API.

Passing Device Information Settings to Rendering Extensions Describes the device information settings that are used to
render reports to different formats.

Reporting Services Delivery Extension Settings Describes the settings that are used to deliver reports using
report server e-mail.

Using Reporting Services SOAP Headers Explains the use of SOAP headers in Reporting Services.

Introducing Exception Handling in Reporting Services Provides information about the way in which Reporting
Services handles errors.

See Also
Report Server Web Service
Technical Reference (SSRS)
Introducing Exception Handling in Reporting
Services
3/19/2020 • 2 minutes to read • Edit Online

If your Reporting Services application sends a request to the Report Server Web service that the service is
unable to process, the service returns a SOAP exception to the client. Handling exceptions thrown by the Report
Server Web service is an important part of the applications that you develop because you can return useful
information to users when errors occur.
This section contains specific information about handling exceptions, preventing user input that is not valid, and
returning meaningful error information to users. For general information about exception handling, see
"Handling and Throwing Exceptions" in the Microsoft .NET Framework SDK documentation.

In This Section
TO P IC DESC RIP T IO N

Handling Exceptions in Reporting Services Provides an overview of exceptions in Reporting Services


and the role of SOAP in returning errors from a Web service.

Best Practices for Reporting Services Exception Handling Provides recommendations on how to handle exceptions in
Reporting Services.

Reporting Services SoapException Class Describes the SoapException class in Reporting Services.

See Also
Building Applications Using the Web Service and the .NET Framework
Handling Exceptions in Reporting Services
3/19/2020 • 2 minutes to read • Edit Online

When a Reporting Services SOAP API client request cannot be completed, the report server returns an error
rather than the expected results of the call. When a call cannot complete, an error for the Report Server Web
service is returned as a SOAP Fault XML element. The key descriptive element of the fault is the detail element,
which includes all of the error information provided by the report server as well as any additional Web service
error information. The key information in the detail element is the report server error code. Based on the
message and error code, you can determine the next appropriate action to take in your applications. For more
information about SOAP faults, see the World Wide Web Consortium (W3C) Web site at
http://www.w3.org/TR/SOAP.

SOAP Faults and the .NET Framework


In the Microsoft .NET Framework, if an error occurs in a client request to the Web service, the report server
communicates the error to the client code that calls the Web service by throwing a SoapException object. The
SoapException wraps the information contained in a SOAP fault. The Detail property of the SoapException
maps to the detail element in the SOAP fault. Applications should catch the SoapException object with a
try/catch block and use the Detail property of the SoapException to take appropriate action. For more
information about the SoapException class and the Detail property in Reporting Services, see Reporting
Services SoapException Class. For more information about the SoapException class, see the Microsoft .NET
Framework SDK documentation.

See Also
Detail Property
Introducing Exception Handling in Reporting Services
Reporting Services SoapException Class
Best Practices for Reporting Services Exception
Handling
3/19/2020 • 2 minutes to read • Edit Online

When developing Reporting Services applications, there are several methodologies you can use to eliminate or
reduce the occurrence of exceptions. When exceptions do occur, provide clear and concise error messages to the
user, and add adequate exception handling to prevent your applications from ending unexpectedly.
An application that sends requests to the Report Server Web service should do the following:
Avoid causing exceptions by preventing as many invalid requests as possible.
Catch exceptions and provide specific error-handling code whenever possible.
Deal with error cases that do not throw exceptions.

In This Section
TO P IC DESC RIP T IO N

Preventing Invalid Requests Describes techniques for preventing requests that are not
valid from being sent to the report server.

Using Try and Catch Blocks Describes how to further enhance the reliability of your
application with try/catch blocks.

Handling Warnings and Cases That Do Not Cause Exceptions Explains how to handle errors that do not result in an
exception being thrown by Reporting Services.

Using the Detail Property to Handle Specific Errors Explains how to programmatically handle specific errors by
using the Detail property of the SoapException object.

See Also
Detail Property
Introducing Exception Handling in Reporting Services
Reporting Services SoapException Class
Handling Warnings and Cases That Do Not Cause
Exceptions
3/19/2020 • 2 minutes to read • Edit Online

Reporting Services does not throw exceptions for warnings and certain errors. For example, when you use the
CreateCatalogItem method to publish a new report to a report server, any warnings that occur are returned as
an array of Warning objects. These warnings should be handled and displayed so that appropriate action can be
taken.

Try
rs.CreateCatalogItem(name, parentFolder, False, definition, Nothing, warnings)

If Not (warnings.Length = 0) Then


Dim warning As Warning
For Each warning In warnings
Console.WriteLine(warning.Message)
Next warning
Else
Console.WriteLine("Report {0} created successfully with no warnings", name)
End If

Catch ex As SoapException
Console.WriteLine(ex.Detail("Message").InnerXml)
End Try

try
{
rs.CreateCatalogItem("Report", name, parentFolder, false, definition, null, out warnings);

if (warnings.Length != 0)
{
foreach (Warning warning in warnings)
{
Console.WriteLine(warning.Message);
}
}
else
Console.WriteLine("Report {0} created successfully with no warnings", name);
}

catch (SoapException ex)


{
Console.WriteLine(ex.Detail["Message"].InnerXml);
}

Another way to handle errors is to evaluate the return values of certain methods. For example, the FindItems
method can be used to search for specific items in the report server database. If no items are found that match
the search criteria, a null array of CatalogItem objects is returned. You should evaluate the array, check for null ,
and let the user know if no items were found.

See Also
CatalogItem
Introducing Exception Handling in Reporting Services
Reporting Services SoapException Class
Preventing Invalid Requests
3/19/2020 • 2 minutes to read • Edit Online

You can prevent some types of exceptions from being thrown by analyzing your application flow and ensuring
that the requests being sent to the report server are valid. For example, in applications that enable users to add
or update the name of a report, data source, or other report server item, you should validate the text that a user
might enter. You should always check for reserved characters before sending the request to a report server. Use
conditional if statements or other logical constructs in your code to alert the user that they have not met the
conditions necessary to send requests to the report server.
In the following, simplified C# example, users are presented with a friendly error message when they attempt to
create a report with a name that contains a forward slash (/) character.

// C#
private void PublishReport()
{
int index;
string reservedChar;
string message;

// Check the text value of the name text box for "/",
// a reserved character
index = nameTextBox.Text.IndexOf(@"/");

if ( index != -1) // The text contains the character


{
reservedChar = nameTextBox.Text.Substring(index, 1);
// Build a user-friendly error message
message = "The name of the report cannot contain the reserved character " +
"\"" + reservedChar + "\". " +
"Please enter a valid name for the report. " +
"For more information about reserved characters, " +
"see the help documentation";

MessageBox.Show(message, "Invalid Input Error");


}
else // Publish the report
{
Byte[] definition = null;
Warning[] warnings = {};
string name = nameTextBox.Text;

FileStream stream = File.OpenRead("MyReport.rdl");


definition = new Byte[stream.Length];
stream.Read(definition, 0, (int) stream.Length);
stream.Close();
// Create report with user-defined name
rs.CreateCatalogItem("Report", name, "/Samples", false, definition, null, out warnings);
MessageBox.Show("Report: {0} created successfully", name);
}
}

For more information about the types of errors that can be prevented before requests are sent to the report
server, see SoapException Errors Table. For more information about further enhancing the previous example
using try/catch blocks, see Using Try and Catch Blocks.

See Also
Introducing Exception Handling in Reporting Services
Reporting Services SoapException Class
Using the Detail Property to Handle Specific Errors
3/19/2020 • 2 minutes to read • Edit Online

To further classify exceptions, Reporting Services returns additional error information in the InnerText property
of the child elements in the SOAP exception's Detail property. Because the Detail property is an XmlNode
object, you can access the inner text of the Message child element using the following code.
For a list of all of the available child elements contained in the Detail property, see Detail Property. For more
information, see "Detail Property" in the Microsoft .NET Framework SDK documentation.

Try
' Code for accessing the report server
Catch ex As SoapException
' The exception is a SOAP exception, so use
' the Detail property's Message element.
Console.WriteLine(ex.Detail("Message").InnerXml)
End Try

try
{
// Code for accessing the report server
}
catch (SoapException ex)
{
// The exception is a SOAP exception, so use
// the Detail property's Message element.
Console.WriteLine(ex.Detail["Message"].InnerXml);
}

Try
' Code for accessing the report server
Catch ex As SoapException
If ex.Detail("ErrorCode").InnerXml = "rsInvalidItemName" Then
End If ' Perform an action based on the specific error code
End Try

try
{
// Code for accessing the report server
}
catch (SoapException ex)
{
if (ex.Detail["ErrorCode"].InnerXml == "rsInvalidItemName")
{
// Perform an action based on the specific error code
}
}

The following line of code writes the specific error code being returned in the SOAP Exception to the console.
You could also evaluate the error code and perform specific actions.

Console.WriteLine(ex.Detail("ErrorCode").InnerXml)
Console.WriteLine(ex.Detail["ErrorCode"].InnerXml);

See Also
Introducing Exception Handling in Reporting Services
Reporting Services SoapException Class
SoapException Errors Table
Using Try and Catch Blocks
3/19/2020 • 2 minutes to read • Edit Online

After you limit invalid requests to the report server by adding conditional statements to your code, you should
supply adequate exception handling through the use of try/catch blocks. This technique provides another layer
of protection against requests that are not valid. If a request to the report server is encased in a try block and
that request causes the report server to throw an exception, the exception is caught in the catch block, thus
preventing your application from ending unexpectedly. Once the exception is caught, you can use the exception
to either instruct the user to do something differently, or just let the user know, in a friendly way, that an error
has occurred. You can then use a finally block to clean up any resources. Ideally, you should generate a general
exception-handling plan to avoid unnecessary duplication of try/catch blocks.
The following example uses try/catch blocks to enhance the reliability of the exception handling code.
// C#
private void PublishReport()
{
int index;
string reservedChar;
string message;

// Check the text value of the name text box for "/",
// a reserved character
index = nameTextBox.Text.IndexOf(@"/");

if ( index != -1) // The text contains the character


{
reservedChar = nameTextBox.Text.Substring(index, 1);
// Build a user-friendly error message
message = "The name of the report cannot contain the reserved character " +
"\"" + reservedChar + "\". " +
"Please enter a valid name for the report. " +
"For more information about reserved characters, " +
"consult the online documentation";

MessageBox.Show(message, "Invalid Input Error");


}
else // Publish the report
{
Byte[] definition = null;
Warning[] warnings = {};
string name = nameTextBox.Text;

try
{
FileStream stream = File.OpenRead("MyReport.rdl");
definition = new Byte[stream.Length];
stream.Read(definition, 0, (int) stream.Length);
stream.Close();
// Create report with user-defined name
rs.CreateCatalogItem("Report", name, "/Samples", false, definition, null, out warnings);
MessageBox.Show("Report: {0} created successfully", name);
}

// Catch expected exceptions beginning with the most specific,


// moving to the least specific
catch(IOException ex)
{
MessageBox.Show(ex.Message, "File IO Exception");
}

catch (SoapException ex)


{
// The exception is a SOAP exception, so use
// the Detail property's Message element.
MessageBox.Show(ex.Detail["Message"].InnerXml, "SOAP Exception");
}

catch (Exception ex)


{
MessageBox.Show(ex.Message, "General Exception");
}
}
}

See Also
Introducing Exception Handling in Reporting Services
Reporting Services SoapException Class
Reporting Services SoapException Class
3/19/2020 • 2 minutes to read • Edit Online

You should address specific Reporting Services errors that you know might happen. For example, in an
application where you ask the user to create a folder, it might be possible for the user to try to create a folder
that already exists. As the developer, you do not have control over what the user enters in the folder name and
path fields of your application, but you do have control over what the user experience is when someone
incidentally tries to create an item that already exists.
To make it easier for you to catch specific error conditions, Reporting Services classifies an error code for the
exception and returns the classification of the error using properties from the SoapException class. For more
information, see "SoapException Class" in the Microsoft .NET Framework SDK documentation.
The following table lists the public properties of the SoapException class.

P UB L IC P RO P ERT Y DESC RIP T IO N

Actor The code that caused the exception. The value is the URL to
the Web service method.

Detail Application-specific error information. The value is set by the


report server and is in XML format. For more information,
see Detail Property and Using the Detail Property to Handle
Specific Errors.

HelpLink A URL or URN to a Help file associated with the error. The
value is usually set by the Web service and it sets a URL to
Microsoft Help and Support. Because Reporting Services
supports multiple help links for errors that occur, the report
server sets help link information as part of the Detail
property. For more information, see HelpLink Element.

Message A descriptive, localized message that describes the error. This


text might appear in the application UI.

See Also
Introducing Exception Handling in Reporting Services
SoapException Errors Table
Detail Property
3/19/2020 • 2 minutes to read • Edit Online

The Detail property of the Reporting Services SoapException class has the following XML structure:

Elements
Detail
The top-level element that contains all other error detail elements.
ErrorCode
The Reporting Services-specific error code.
HttpStatus
The HTTP status code.
Message
The error message and the error code assigned by the report server.
HelpLink
The Help link URL to a Web site at which further information about the error can be found. For more
information, see HelpLink Element.
LinkID
The ID assigned to the link.
ProductName
The name of the product. The default value is Microsoft SQL Ser ver Repor ting Ser vices .
ProductVersion
The version of Reporting Services. The maximum length is 15 characters. The format of the version number
should be as follows: 8.00.0xxx.00.
ProductLocaleId
The locale ID or language ID of the application's INTL DLL (for example, 0x41A).
OperatingSystem
The operating system Reporting Services is installed on. Valid values include 0 for operating system
independent, 1 for Windows 2000, and 16 for Windows XP.
Countr yLocaleId
The locale ID or language ID of the operating system. For example, the value for the French version of Windows
is 0x040c.
MoreInformation
An XML string that contains nested exceptions that occurred while the method ran.
Source
A child element of MoreInformation . The source of the error.
Message
A child element of MoreInformation . The error message of a nested exception. This element includes XML
attributes for ErrorCode and HelpLink .
Warnings
An XML string that contains the warnings returned from report processing.

See Also
Introducing Exception Handling in Reporting Services
Reporting Services SoapException Class
Using the Detail Property to Handle Specific Errors
HelpLink Element
3/19/2020 • 2 minutes to read • Edit Online

The HelpLink element of the Detail property is a URL string that is generated by the report server. The URL
targets a Web page managed by Microsoft Help and Support and provides additional help and knowledge base
articles about specific errors that occur in Reporting Services. The URL has the following syntax:
https:// www.microsoft.com / products / ee / transform.aspx ?
EvtSrc =v_alue_&EvtID =value&ProdName =value&ProdVer =value
The following table lists the arguments of the HelpLink URL.

A RGUM EN T VA L UE

EvtSrc "Microsoft.ReportingServices.Diagnostics.ErrorStrings.resourc
es.Strings"

EvtID The report server error code, for example, rsReservedItem.

ProdName "Microsoft SQL%20Server%20Reporting%20Services". The


value of the product name is URL encoded.

ProdVer The version number of Reporting Services. A value of "8.00"


indicates SQL Server 2000 (8.x) Reporting Services.

The following example illustrates the HelpLink URL that is returned for error code rsReser vedItem . This error
occurs when a user attempts to modify or delete a reserved item in Reporting Services:

https://www.microsoft.com/products/ee/transform.aspx?
EvtSrc=Microsoft.ReportingServices.Diagnostics.ErrorStrings.resources.Strings
&EvtID=rsReservedItem&ProdName=Microsoft%20SQL%20Server%20Reporting%20Services&ProdVer=8.00

You can access the HelpLink element in your code using the SoapException class.

Try
rs.DeleteItem("/Report1")

Catch e As SoapException
Console.WriteLine(e.Detail("HelpLink").InnerXml)
End Try

try
{
rs.DeleteItem("/Report1");
}

catch (SoapException e)
{
Console.WriteLine(e.Detail["HelpLink"].InnerXml);
}
See Also
Introducing Exception Handling in Reporting Services
Reporting Services SoapException Class
Using the Detail Property to Handle Specific Errors
SoapException Errors Table
3/19/2020 • 3 minutes to read • Edit Online

The report server generates errors and error messages in the SOAP exception based on errors that occur in
Reporting Services. The following table shows the errors that are accessible from methods through a
SoapException in the Report Server Web service. It is organized by the method or methods that throw the
exception.

M ET H O D( S) ERRO R C O DE

ALL rsEvaluationCopyExpired

ALL rsFailedToDecr yptConfigInformation

ALL rsInvalidRSEditionConfiguration

ALL rsRepor tSer verNotActivated

ALL rsSer verBusy

ALL rsRepor tSer verSer viceUnavailable

ALL rsRepor tSer verDisabled

ALL except GetPermissions , GetRenderResource , rsAccessDenied


GetSystemPermissions , ListEvents , and
ListSecureMethods

ALL except CreateBatch , ExecuteBatch , rsMissingParameter


GetSystemPolicies , GetSystemPermissions ,
GetSystemProper ties , ListEvents , ListJobs , ListRoles ,
ListSchedules , ListSecureMethods , ListSubscriptions ,
ListSystemRoles , ListSystemTasks , ListTasks
M ET H O D( S) ERRO R C O DE

CreateDataDrivenSubscription , CreateDataSource , rsItemNotFound


CreateFolder , CreateLinkedRepor t , CreateRepor t ,
CreateRepor tHistor ySnapshot , CreateResource ,
CreateSubscription , DeleteItem ,
DeleteRepor tHistor ySnapshot , DisableDataSource ,
EnableDataSource , FindItems , FlushCache ,
GetCacheOptions , GetDataSourceContents ,
GetExecutionOptions , GetPermissions , GetPolicies ,
GetProper ties , GetRepor tDataSourcePrompts ,
GetRepor tDataSources , GetRepor tDefinition ,
GetRepor tHistor yLimit , GetRepor tHistor yOptions ,
GetRepor tLink , GetRepor tParameters ,
GetResourceContents , GetRoleProper ties ,
GetSer verDateTime , IheritParentSecurity ,
ListChildren , ListLinkedRepor ts , ListRepor tHistor y ,
ListRepor tsUsingDataSource , ListSchedules ,
ListSubscriptions , ListSubscriptionsUsingDataSource ,
MoveItem , Render , RenderStream , SetCacheOptions ,
SetDataSourceContents , SetExecutionOptions ,
SetPolicies , SetProper ties , SetRepor tDataSources ,
SetRepor tDefinition , SetRepor tHistor yLimit ,
SetRepor tHistor yOptions , SetRepor tLink ,
SetRepor tParameters , SetResourceContents ,
UpdateRepor tExecutionSnapshot ,
ValidateExtensionSettings

CancelBatch , CreateDataDrivenSubscription , rsBatchNotFound


CreateDataSource , CreateFolder , CreateLinkedRepor t ,
CreateRepor t , CreateRepor tHistor ySnapshot ,
CreateResource , CreateRole , CreateSchedule ,
CreateSubscription , DeleteItem ,
DeleteRepor tHistor ySnapshot , DeleteRole ,
DeleteSchedule , DeleteSubscription ,
DisableDataSource , EnableDataSource , ExecuteBatch ,
FindItems , FlushCache , GetResourceContents ,
GetSer verDateTime , MoveItem , PauseSchedule ,
ResumeSchedule , SetCacheOptions ,
SetDataDrivenSubscriptionProper ties ,
SetDataSourceContents , SetExecutionOptions ,
SetPolicies , SetProper ties , SetRepor tDataSources ,
SetRepor tDefinition , SetRepor tHistor yLimit ,
SetRepor tHistor yOptions , SetRepor tLink ,
SetRepor tParameters , SetResourceContents ,
SetRoleProper ties , SetScheduleProper ties ,
SetSubscriptionProper ties , SetSystemPolicies ,
SetSystemProper ties ,
UpdateRepor tExecutionSnapshot ,
ValidateExtensionSettings
M ET H O D( S) ERRO R C O DE

CreateDataDrivenSubscription , CreateDataSource , rsInvalidItemPath


CreateFolder , CreateLinkedRepor t , CreateRepor t ,
CreateRepor tHistor ySnapshot , CreateResource ,
CreateSubscription , DeleteItem ,
DeleteRepor tHistor ySnapshot , DisableDataSource ,
EnableDataSource , FindItems , FlushCache ,
GetCacheOptions , GetDataSourceContents ,
GetExecutionOptions , GetItemType , GetPermissions ,
GetPolicies , GetProper ties ,
GetRepor tDataSourcePrompts ,
GetRepor tDataSources , GetRepor tDefinition ,
GetRepor tHistor yLimit , GetRepor tHistor yOptions ,
GetRepor tLink , GetResourceContents ,
GetSer verDateTime , IheritParentSecurity ,
ListChildren , ListLinkedRepor ts , ListRepor tHistor y ,
ListSchedules , ListSubscriptionsUsingDataSource ,
MoveItem , Render , RenderStream , SetCacheOptions ,
SetDataSourceContents , SetExecutionOptions ,
SetPolicies , SetProper ties , SetRepor tDataSources ,
SetRepor tDefinition , SetRepor tHistor yLimit ,
SetRepor tHistor yOptions , SetRepor tLink ,
SetRepor tParameters , SetResourceContents ,
SetSubscriptionProper ties ,
UpdateRepor tExecutionSnapshot ,
ValidateExtensionSettings

CreateDataDrivenSubscription , CreateDataSource , rsWrongItemType


CreateFolder , CreateLinkedRepor t , CreateRepor t ,
CreateRepor tHistor ySnapshot , CreateResource ,
CreateSubscription , DeleteRepor tHistor ySnapshot ,
DisableDataSource , EnableDataSource , FindItems ,
FlushCache , GetCacheOptions ,
GetDataSourceContents , GetExecutionOptions ,
GetRepor tDataSourcePrompts ,
GetRepor tDataSources , GetRepor tDefinition ,
GetRepor tHistor yLimit , GetRepor tHistor yOptions ,
GetRepor tLink , GetRepor tParameters ,
GetResourceContents , GetSer verDateTime ,
GetSystemProper ties , ListChildren ,
ListLinkedRepor ts , ListRepor tHistor y ,
ListRepor tsUsingDataSource , ListSchedules ,
ListSubscriptions , ListSubscriptionsUsingDataSource ,
MoveItem , Render , RenderStream , SetCacheOptions ,
SetDataSourceContents , SetExecutionOptions ,
SetRepor tDataSources , SetRepor tDefinition ,
SetRepor tHistor yLimit , SetRepor tHistor yOptions ,
SetRepor tLink , SetRepor tParameters ,
SetResourceContents ,
UpdateRepor tExecutionSnapshot ,
ValidateExtensionSettings
M ET H O D( S) ERRO R C O DE

CreateRepor t , CreateResource , rsParameterTypeMismatch


DeleteRepor tHistor ySnapshot , DeleteSchedule ,
DeleteSubscription ,
GetDataDrivenSubscriptionProper ties ,
GetSubscriptionProper ties , ListChildren ,
ListScheduledRepor ts , PauseSchedule , Render ,
RenderStream , ResumeSchedule , SetCacheOptions ,
SetDataDrivenSubscriptionProper ties ,
SetRepor tHistor yLimit , SetRepor tHistor yOptions ,
SetScheduleProper ties , SetSubscriptionProper ties

CreateDataDrivenSubscription , CreateDataSource , rsMissingElement


CreateSchedule , CreateSubscription , FindItems ,
GetRepor tParameters , PrepareQuer y , Render ,
SetCacheOptions ,
SetDataDrivenSubscriptionProper ties ,
SetDataSourceContents , SetPolicies ,
SetRepor tDataSources , SetRepor tParameters ,
SetScheduleProper ties , SetSubscriptionProper ties ,
SetSystemPolicies

CreateDataDrivenSubscription , CreateDataSource , rsInvalidElement


CreateSchedule , CreateSubscription , PrepareQuer y ,
Render , SetCacheOptions ,
SetDataDrivenSubscriptionProper ties ,
SetDataSourceContents , SetProper ties ,
SetRepor tDataSources , SetRepor tParameters ,
SetScheduleProper ties , SetSubscriptionProper ties ,
SetSystemProper ties

CreateDataDrivenSubscription , CreateSchedule , rsElementTypeMismatch


CreateSubscription , FindItems , GetRenderResource ,
PrepareQuer y , Render , RenderStream ,
SetCacheOptions ,
SetDataDrivenSubscriptionProper ties ,
SetExecutionOptions , SetProper ties ,
SetRepor tHistor yOptions , SetRepor tParameters ,
SetScheduleProper ties , SetSubscriptionProper ties ,
SetSystemProper ties

CreateDataSource , CreateRole , rsInvalidParameter


GetDataDrivenSubscriptionProper ties ,
GetRenderResource , ListExtensions , Render ,
SetDataDrivenSubscriptionProper ties ,
SetDataSourceContents , SetExecutionOptions ,
SetRepor tHistor yLimit , SetRepor tHistor yOptions ,
SetScheduleProper ties

CreateDataDrivenSubscription , rsInvalidDataSourceCredentialSetting
CreateRepor tHistor ySnapshot , CreateSubscription ,
PrepareQuer y , SetDataDrivenSubscriptionProper ties ,
SetExecutionOptions , SetRepor tHistor yOptions ,
SetSubscriptionProper ties
M ET H O D( S) ERRO R C O DE

CreateDataDrivenSubscriptionProper ties , rsRepor tParameterValueNotSet


CreateRepor tHistor ySnapshot , CreateSchedule ,
CreateSubscription ,
SetDataDrivenSubscriptionProper ties ,
SetSubscriptionProper ties ,
UpdateRepor tExecutionSnapshot

CreateDataDrivenSubscription , CreateSubscription , rsMultipleExtensionsFoundInAssembly


GetExtensionSettings , GetRenderResource , Render ,
RenderStream , SetDataDrivenSubscriptionProper ties ,
SetSubscriptionProper ties

CreateDataDrivenSubscriptionProper ties , rsRepor tParameterTypeMismatch


CreateSubscription , Render , SetCacheOptions ,
SetExecutionOptions , SetRepor tParameters ,
SetDataDrivenSubscriptionProper ties ,
SetSubscriptionProper ties

CreateSchedule , CreateSubscription , DeleteSchedule , rsSchedulerNotResponding


PauseSchedule , ResumeSchedule , SetCacheOptions ,
SetExecutionOptions , SetScheduleProper ties ,
SetSubscriptionProper ties

DeleteSchedule , GetScheduleProper ties , rsScheduleNotFound


ListScheduledRepor ts , PauseSchedule ,
ResumeSchedule , SetCacheOptions ,
SetExecutionOptions , SetScheduleProper ties

CreateDataDrivenSubscriptionProper ties , rsReadOnlyRepor tParameter


CreateSubscription , Render , SetRepor tParameters ,
SetDataDrivenSubscriptionProper ties ,
SetSubscriptionProper ties

CreateDataDrivenSubscriptionProper ties , rsUnknownRepor tParameter


CreateSubscription , GetRepor tParameters , Render ,
SetRepor tParameters ,
SetDataDrivenSubscriptionProper ties ,
SetSubscriptionProper ties

DeleteSubscription , rsSubscriptionNotFound
GetDataDrivenSubscriptionProper ties ,
GetSubscriptionProper ties ,
SetDataDrivenSubscriptionProper ties ,
SetExecutionOptions , SetSubscriptionProper ties

CreateDataDrivenSubscription , CreateSubscription , rsDeliver yExtensionNotFound


GetExtensionSettings ,
SetDataDrivenSubscriptionProper ties ,
SetSubscriptionProper ties

CreateDataDrivenSubscription , CreateSubscription , rsDeliver yError


GetExtensionSettings ,
SetDataDrivenSubscriptionProper ties ,
SetSubscriptionProper ties
M ET H O D( S) ERRO R C O DE

CreateDataDrivenSubscription , rsSecureConnectionRequired
GetDataDrivenSubscriptionProper ties , PrepareQuer y ,
SetDataDrivenSubscriptionProper ties

CreateDataDrivenSubscription , CreateSubscription , rsCannotSubscribeToEvent


SetDataDrivenSubscriptionProper ties ,
SetSubscriptionProper ties

CreateDataDrivenSubscription , CreateSubscription , rsUnknownEventType


FireEvent , SetDataDrivenSubscriptionProper ties ,
SetSubscriptionProper ties

CreateDataSource , CreateFolder , CreateLinkedRepor t , rsItemPathLengthExceeded


CreateRepor t , CreateResource , MoveItem

CopyItem , CreateFolder , CreateRepor t , rsReser vedItem


CreateResource , DeleteItem

CreateDataSource , SetDataSourceContents , rsInvalidElementCombination


SetRepor tDataSources

SetCacheOptions , SetExecutionOptions , rsInvalidParameterCombination


SetRepor tHistor yOptions

CreateDataSource , CreateFolder , CreateLinkedRepor t , rsInvalidItemName


CreateRepor t , CreateResource , MoveItem

CreateDataSource , CreateFolder , CreateLinkedRepor t , rsItemAlreadyExists


CreateRepor t , CreateResource , MoveItem

CreateFolder , CreateLinkedRepor t , CreateRepor t , rsReadOnlyProper ty


CreateResource , SetProper ties

GetPolicies , GetSystemPolicies , SetPolicies , rsInvalidPolicyDefinition


SetSystemPolicies

SetCacheOptions , SetDataSourceContents , rsOperationPreventsUnattendedExecution


SetRepor tDataSources , SetRepor tParameters

CreateRepor tHistor ySnapshot , Render , rsInvalidDataSourceReference


PrepareQuer y , UpdateRepor tExecutionSnapshot

CreateRepor tHistor ySnapshot , PrepareQuer y , rsDataSourceDisabled


Render , UpdateRepor tExecutionSnapshot

CreateRepor t , PrepareQuer y , SetRepor tDefinition rsProcessingError

GetRenderResource , Render , RenderStream rsInvalidRepor tLink

DeleteRepor tHistor ySnapshot , Render , RenderStream rsRepor tHistor yNotFound

SetCacheOptions , SetExecutionOptions , rsRepor tMayNotBeScheduled


SetRepor tHistor yOptions
M ET H O D( S) ERRO R C O DE

CreateDataDrivenSubscription , rsOperationNotSuppor ted


GetDataDrivenSubscriptionProper ties ,
SetDataDrivenSubscriptionProper ties

CreateDataSource , SetDataSourceContents , rsDataExtensionNotFound


SetRepor tDataSources

DeleteRole , SetPolicies , SetRoleProper ties rsRoleNotFound

DeleteRepor tHistor ySnapshot , Render , RenderStream rsParametersNotSpecified

GetRepor tParameters , SetRepor tParameters rsNotSuppor ted

SetRepor tParameters , rsRepor tSnapshotNotEnabled


UpdateRepor tExecutionSnapshot

CreateSchedule , SetScheduleProper ties rsScheduleAlreadyExists

CreateRole , SetRoleProper ties rsTaskNotFound

CreateRole , SetRoleProper ties rsMixedTasks

ListSubscriptions , SetPolicies rsUnknownUserName

MoveItem rsInvalidMove

RenderStream rsStreamNotFound

RenderStream rsMissingSessionId

Render rsRepor tNotReady

Render rsAssemblyNotPermissioned

SetExecutionOptions rsRepor tSnapshotEnabled

FindItems rsInvalidSearchOperator

SetRepor tDataSources rsDataSourceNotFound

PrepareQuer y , Render rsDataSourceNoPrompt

PrepareQuer y rsCannotPrepareQuer y

DeleteRole rsReser vedRole

CreateRole rsEmptyRole

InheritParentSecurity rsInheritedPolicy

CreateRole rsRoleAlreadyExists
M ET H O D( S) ERRO R C O DE

InheritParentSecurity rsCannotDeleteRootPolicy

CancelJob rsJobWasCanceled

ListSecureMethods rsSer verConfigurationError

See Also
Introducing Exception Handling in Reporting Services
Errors and Events Reference (Reporting Services)
Reporting Services SoapException Class
Using the Detail Property to Handle Specific Errors
Using Reporting Services SOAP Headers
3/19/2020 • 2 minutes to read • Edit Online

Communication with a Web service method using SOAP follows a standard format. Part of this format is the
data that is encoded in an XML document. The XML document consists of a root Envelope element, which in
turn consists of a required Body element and an optional Header element. The Body element contains the data
specific to the message. The optional Header element can contain additional information not directly related to
the particular message. Each child element of the Header element is called a SOAP header.
Although the SOAP headers can contain data related to the message, they typically contain information
processed by the Web server infrastructure.
The Report Server Web services define several classes for use in the SOAP header: BatchHeader,
ItemNamespaceHeader, ServerInfoHeader, TrustedUserHeader, and ExecutionHeader.

In This Section
TO P IC DESC RIP T IO N

Batching Methods Describes how to batch multiple operations into a single


transaction using BatchHeader.

Identifying Execution State Describes how to manage session state in Reporting Services
using SessionHeader .

Setting the Item Namespace for the GetProperties Method Describes how to retrieve properties based on either the
path or the ID of an item by using the GetProperties
method and the ItemNamespaceHeader SOAP header.

See Also
Building Applications Using the Web Service and the .NET Framework
Technical Reference (SSRS)
Batching Methods
3/19/2020 • 2 minutes to read • Edit Online

The use of SOAP headers in Reporting Services enables you to include multiple Web service methods in a single
operation. Methods run within the scope of a single database transaction, in the order in which they are called.
Rollback is one advantage of using multiple-method batch operations. If an error occurs on any of the method
calls while a batch is running, the report server stops running the batch and rolls back any previous operations.
This is useful when a method call depends on the successful completion of other method calls in that batch.
The Web service does not provide locking semantics for multiple-method batch operations. Rows in the report
server database are not locked for updating until the message is sent to the server and the Execute command is
called.
There are also no concurrency controls to guarantee that the database has not changed since the data was last
read. If two clients modify the same item, the last update succeeds if the parameters are still valid (for example,
the item has not been renamed).
The following example calls the CreateFolder method three times and runs these calls as a single batch. If any of
the calls to CreateFolder fail, the entire batch is canceled.

Imports System
Imports System.Web.Services.Protocols
Imports myNamespace.MyReferenceName

Class Sample
Sub Main(args() As String)
Dim rs As New ReportingService2005()
rs.Credentials = System.Net.CredentialCache.DefaultCredentials
' Set the base Web service URL of the source server
rs.Url = "https://<Server Name>/reportserver/ReportService2005.asmx"

Dim bh As New BatchHeader()

bh.BatchId = service.CreateBatch()
rs.BatchHeaderValue = bh
rs.CreateFolder("New Folder1", "/", Nothing)
rs.CreateFolder("New Folder2", "/", Nothing)
rs.CreateFolder("New Folder3", "/", Nothing)

Console.WriteLine("Creating folders...")
rs.BatchHeaderValue = bh
rs.ExecuteBatch()
Console.WriteLine("Folders created successfully.")

rs.BatchHeaderValue = Nothing
End Sub
End Class
using System;
using System.Web.Services.Protocols;
using myNamespace.MyReferenceName;

class Sample
{
static void Main(string[] args)
{
ReportingService2005 rs = new ReportingService2005();
rs.Credentials = System.Net.CredentialCache.DefaultCredentials;
// Set the base Web service URL of the source server
rs.Url = "https://<Server Name>/reportserver/ReportService2005.asmx"

BatchHeader bh = new BatchHeader();

bh1.BatchID = service.CreateBatch();
rs.BatchHeaderValue = bh;
rs.CreateFolder("New Folder1", "/", null);
rs.CreateFolder("New Folder2", "/", null);
rs.CreateFolder("New Folder3", "/", null);

Console.WriteLine("Creating folders...");
rs.BatchHeaderValue = bh1;
rs.ExecuteBatch();
Console.WriteLine("Folders created successfully.");

rs.BatchHeaderValue = null;
}
}

See Also
CancelBatch
CreateBatch
Technical Reference (SSRS)
Using Reporting Services SOAP Headers
Identifying Execution State
3/19/2020 • 2 minutes to read • Edit Online

Hypertext Transfer Protocol (HTTP) is a connectionless and stateless protocol, which means that it does not
automatically indicate whether different requests come from the same client or even whether a single browser
instance is still actively viewing a page or site. Sessions create a logical connection to maintain state between
server and client over HTTP. The user-specific information relevant to a particular session is known as the
session state.
Session management involves correlating an HTTP request with other previous requests generated from the
same session. Without session management, these requests appear unrelated to the Report Server Web service
because of the connectionless and stateless nature of the HTTP protocol.
Reporting Services does not expose a holistic concept of session state such as that exposed by ASP.NET.
However, when executing reports, the report server maintains state between method calls in the form of an
execution . An execution allows the user to interact with the report in several ways - including loading the
report from the report server, setting credentials and parameters for the report, and rendering the report.
While they are communicating to a report server, clients use the execution to manage report viewing and user
navigation to other pages in a report, and to show or hide sections of a report. A unique execution exists for
each report the client application is running.
In general, the lifetime of an execution starts when a user navigates to a browser or client application and selects
a report to view. The execution is discarded after a short time out period after the last request to the execution
has been received (the default time out is 20 minutes).
From a Web service perspective, the lifetime starts when the Report Server Web service LoadReport,
LoadReportDefinition, or Render methods are called. The application can use other methods to manipulate the
active execution (for example, setting parameters and setting data sources). The execution is discarded after a
short time out period after the last request to the execution has been received (the default time out is 20
minutes).
An application keep track of multiple active executions between calls to the Web service Render and
RenderStream methods by saving the ExecutionID, which is returned in the SOAP header from the LoadReport
and LoadReportDefinition methods.
The following diagram shows the processing and rendering path for reports.
To support the functions described above, the current SOAP Render method has been split into multiple
methods encompassing execution initialization, processing, and rendering phases.
To programmatically render a report, you must:
Load the report or the report definition using LoadReport or LoadReportDefinition.
Check to see if the report needs credentials or parameters by checking the values of the
CredentialsRequired and ParametersRequired properties of the ExecutionInfo object returned by
LoadReport or LoadReportDefinition
If necessary, set the credentials and/or parameters using the SetExecutionCredentials and
SetExecutionParameters methods.
Call the Render method to render the report.
While a report is in session, the underlying report stored in the report server database can change. For example,
the report definition can change, the report can be deleted or moved, and user permissions can change. If the
report is in an active session, it is not affected by changes made to the underlying report (that is, the report
stored in the report server database).
You can also manage a report session using URL access commands.

See Also
Render
Technical Reference (SSRS)
Using Reporting Services SOAP Headers
Setting the Item Namespace for the GetProperties
Method
11/2/2020 • 2 minutes to read • Edit Online

You can use the ItemNamespaceHeader SOAP header in Reporting Services to retrieve item properties based on
two different item identifiers: the full path of the item or the ID of the item.
When you make a call to the GetProperties method, you normally pass as an argument the full path of the item
for which you want to retrieve properties. By using ItemNamespaceHeader, you can set the SOAP header for
your method call to enable you to use GetProperties by passing the ID of the item as an identifier.
The following code sample retrieves the values for item properties based on the ID of the item.

NOTE
By default, you do not need to set a value for the ItemNamespaceHeader if you pass to the GetProperties method the full
path name as the item identifier.

Imports System
Imports System.Collections

Class Sample
Sub Main()
Dim rs As New ReportingService2010()
rs.Credentials = System.Net.CredentialCache.DefaultCredentials
rs.Url = "https://<Server Name>/reportserver/ReportService2010.asmx"

Dim items() As CatalogItem

Try
' Need the ID property of items. Normally, you would already have
' this stored somewhere.
items = rs.ListChildren("/AdventureWorks Sample Reports", False)

' Set the item namespace header to be GUID-based


rs.ItemNamespaceHeaderValue = New ItemNamespaceHeader()
rs.ItemNamespaceHeaderValue.ItemNamespace = ItemNamespaceEnum.GUIDBased

' Call GetProperties with item ID.


If Not (items Is Nothing) Then
Dim item As CatalogItem
For Each item In items
Dim properties As [Property]() = rs.GetProperties(item.ID, Nothing)
Dim property As [Property]
For Each property In properties
Console.WriteLine(([property].Name + ": " + [property].Value))
Next property
Console.WriteLine()
Next item
End If

Catch e As Exception
Console.WriteLine((e.Message + ": " + e.StackTrace))
End Try
End Sub 'Main
End Class 'Sample
using System;
using System.Collections;

class Sample
{
static void Main()
{
ReportingService2010 rs = new ReportingService2010();
rs.Credentials = System.Net.CredentialCache.DefaultCredentials;
rs.Url = "https://<Server Name>/reportserver/ReportService2010.asmx";

CatalogItem[] items;

try
{
// Need the ID property of items. Normally, you would already have
// this stored somewhere.
items = rs.ListChildren("/AdventureWorks Sample Reports", false);

// Set the item namespace header to be GUID-based


rs.ItemNamespaceHeaderValue = new ItemNamespaceHeader();
rs.ItemNamespaceHeaderValue.ItemNamespace = ItemNamespaceEnum.GUIDBased;

// Call GetProperties with item ID.


if (items != null)
{
foreach( CatalogItem item in items)
{
Property[] properties = rs.GetProperties(item.ID, null);
foreach (Property property in properties)
{
Console.WriteLine(property.Name + ": " + property.Value);
}
Console.WriteLine();
}
}
}

catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}

See Also
Technical Reference (SSRS)
Using Reporting Services SOAP Headers
Calling Web Service Methods
3/12/2020 • 2 minutes to read • Edit Online

When you use a Microsoft .NET Framework proxy class to call Web service operations, you do so by using the
methods of that class. These methods respond like any other method of a class in the .NET Framework class
library. All Web service methods have public access and require you to supply the appropriate number of
arguments and argument types. After you have created an instance of the proxy class in your project, you can
call the methods to perform reporting operations via the report server. The following C# code illustrates the use
of the ListChildren method of the ReportingService2010 proxy class. The code is used to make a recursive call to
the Web service that returns an array of CatalogItem objects that contains a list of all items in the report server
database:

Dim rs As New ReportingService2010()


rs.Credentials = System.Net.CredentialCache.DefaultCredentials
Dim items As CatalogItem() = rs.ListChildren("/", True)

ReportingService2010 rs = new ReportingService2010();


rs.Credentials = System.Net.CredentialCache.DefaultCredentials;
CatalogItem[] items = rs.ListChildren("/", true);

See Also
Building Applications Using the Web Service and the .NET Framework
Report Server Web Service
Technical Reference (SSRS)
Creating the Web Service Proxy
3/12/2020 • 4 minutes to read • Edit Online

A client and a Web service can communicate using SOAP messages, which encapsulate the input and output
parameters as XML. A proxy class maps parameters to XML elements and then sends the SOAP messages over a
network. In this way, the proxy class frees you from having to communicate with the Web service at the SOAP
level and allows you to invoke Web service methods in any development environment that supports SOAP and
Web service proxies.
There are two ways to add a proxy class to your development project using the Microsoft .NET Framework: with
the WSDL tool in the .NET Framework, and by adding a Web reference in Microsoft Visual Studio. The following
sections discuss this subject in further detail.

Adding the Proxy Using the WSDL Tool


The .NET Framework SDK includes the Web Services Description Language tool (Wsdl.exe), which enables you to
generate a Web service proxy for use in the .NET Framework development environment. The most common way
to create a client proxy in languages that support Web services (currently C# and Microsoft Visual Basic) is to
use the WSDL tool.
To add a proxy class to your project using Wsdl.exe
1. From a command prompt, use Wsdl.exe to create a proxy class, specifying (at a minimum) the URL to the
Report Server Web service.
For example, the following command prompt statement specifies a URL for the management endpoint of
the Report Server Web service:

wsdl /language:CS /n:"Microsoft.SqlServer.ReportingServices2010" https://<Server


Name>/reportserver/reportservice2010.asmx?wsdl

The WSDL tool accepts a number of command-prompt arguments for generating a proxy. The preceding
example specifies the language C#, a suggested namespace to use in the proxy (to prevent name collision
if using more than one Web service endpoint), and generates a C# file called ReportingService2010.cs. If
the example had specified Visual Basic, the example would have generated a proxy file with the name
ReportingService2010.vb. This file is created in the directory from which you run the command.
2. Compile the proxy class into an assembly file (with the extension .dll) and reference it in your project, or
add the class as a project item.

NOTE
When you add a proxy class to your project manually, you need to add a reference to System.Web.Services.dll. If
you add the proxy using a Web reference in Visual Studio .NET, the reference is automatically created for you. For
more information, see "Adding the Proxy Using a Web Reference in Visual Studio" later in this topic.

After you add the proxy class as an item to your project, the associated file appears in Solution Explorer.
3. To call the service programmatically, create an instance of the proxy class.
The following code example shows the syntax for creating an instance of the ReportingService2010 proxy
class in a project:
Dim service As New ReportingService2010()

ReportingService2010 service = new ReportingService2010();

For more information about the Wsdl.exe tool, including its full syntax, see "Web Services Description Language
Tool" in the .NET Framework SDK documentation. For a full explanation of Web service proxies, see "Creating an
XML Web Service Proxy" in the .NET Framework SDK documentation.

Adding the Proxy Using a Web Reference in Visual Studio


A Web reference enables a project to consume one or more Web services. Visual Studio enables users to add
Web service references to projects by following a few simple steps.
To add a Web reference to a project
1. In Solution Explorer , select the project that will consume the Web service.
2. On the Project menu, click Add Web Reference .
The Add Web Reference dialog box opens.
3. In the URL field, enter the complete path to the Report Server Web service.
A simplified URL for the report execution endpoint of the Report Server Web service might look like this:

https://<Server Name>/reportserver/reportexecution2005.asmx

The URL contains the domain in which the Report Server Web service is deployed, the name of the folder
containing the service, and the name of the discovery file for the service. For a complete description of
the different URL elements, see Accessing the SOAP API.
A description of the methods and properties provided by the Web service appears in the Browser pane
on the left.

NOTE
For more information about the items associated with the Report Server Web service, see Report Server Web
Service Methods.

4. Verify that your project can use the Report Server Web service, and that you have appropriate permission
to access the report server.
5. In the Web reference name field, enter a name that you will use in your code to access the Report
Server Web service programmatically.
6. Select the Add Reference button to create a reference in your application to the Web service.
The new reference appears in Solution Explorer under the Web References node for the active project,
named as specified in the Web reference name field.
7. In Solution Explorer , expand the Web References folder to note the namespace for the Web reference
classes that are available to the items in your project.
After adding a Web reference to your project, the associated files are displayed in a folder within the Web
References folder of Solution Explorer .
After you add the Web reference, use the following syntax to create an instance of the proxy class:

Dim rs As New myNamespace.myReferenceName.ReportExecutionService()


rs.Url = "https://<Server Name>/reportserver/reportexecution2005.asmx?wsdl"
rs.Credentials = System.Net.CredentialCache.DefaultCredentials

myNamespace.myReferenceName.ReportExecutionService rs = new
myNamespace.myReferenceName.ReportExecutionService();
rs.Url = "https://<Server Name>/reportserver/reportexecution2005.asmx?wsdl";
rs.Credentials = System.Net.CredentialCache.DefaultCredentials;

You can also add a using (Impor t in Visual Basic) directive to the Report Server Web service reference. If you
use this directive, you do not need to fully qualify the types in the namespace. To do this, add the following code
to your file:

Import myNamespace.myReferenceName

using myNamespace.myReferenceName;

See Also
Report Server Web Service
Building Applications Using the Web Service and the .NET Framework
Technical Reference (SSRS)
Omitting Values for Optional Web Service Objects
3/18/2020 • 2 minutes to read • Edit Online

Properties of several of the Report Server Web service complex types have an accompanying property known
as the Specified property. The name of the property consists of the original property name with the word
"Specified" appended to it. The presence of this property indicates that a value for the original property may
sometimes be omitted. This is a direct result of the translation from the Web Service Description Language
(WSDL) to a .NET Framework proxy class. For example, the Web service property Enabled of the complex type
DataSourceDefinition has an accompanying property named EnabledSpecified. If you are building an application
and do not want to set a value for the Enabled property, you do not have to supply a value for Enabled; the
default value of true is used. However, you still need to set EnabledSpecified to false . If you supply a value for
the Enabled property, you need to set EnabledSpecified equal to true . This is the case for writable properties.
For read-only properties, you do not need to take any action.

IMPORTANT
Failure to specify a property using the above-mentioned technique can result in unpredictable Web service behavior.

The data types that usually require you to handle the additional Specified property are Boolean , DateTime , and
Enumeration .
For an example, see CreateDataSource method.

See Also
Building Applications Using the Web Service and the .NET Framework
Technical Reference (SSRS)
Passing Device Information Settings to Rendering
Extensions
3/18/2020 • 2 minutes to read • Edit Online

In Reporting Services, device information settings are used to pass rendering parameters to a rendering
extension. Settings in the Report Server Web service are passed as a DeviceInfo XML element and processed
by the report server. Because device information settings have default values, they are considered optional
arguments in the rendering process. However, you can use device information settings to customize rendering
and to override the default values that are supplied by the server.
You can specify device information settings in a variety of ways. Programmatically, you can use the Render
method. If you are accessing a report through its URL, you can specify device information as URL parameters.
You can also edit the device information settings in the Reporting Services configuration files to specify
rendering parameters globally. For more information about specifying rendering parameters globally, see
Customize Rendering Extension Parameters in RSReportServer.Config.

Passing Device Information Using the Render Method


To pass device information settings to a rendering extension, use the
M:Microsoft.WSSUX.Repor tingSer vicesWebSer vice.RSExecutionSer vice2005.Repor tExecutionSer vic
e.Render(System.String,System.String,System.String@,System.String@,System.String@,Microsoft.
WSSUX.Repor tingSer vicesWebSer vice.RSExecutionSer vice2005.Warning[]@,System.String[]@)
method. For example, the following XML string can be passed to the Render method to create an HTML
fragment when rendering to HTML.

<DeviceInfo>
<HTMLFragment>True</HTMLFragment>
</DeviceInfo>

When a report is rendered as an HTML fragment, the content of the report is contained within a TABLE element
without the use of an HTML or BODY element. You can use the HTML fragment to incorporate the report into an
existing HTML document. For more information about device information settings for HTML output, see HTML
Device Information Settings.

Passing Device Information Using URL Access


You can also pass device information settings through URL access. Device information settings are passed as
URL parameters. The following URL access string can be passed to the report server to generate a rendered
report without the HTML viewer toolbar.

https://<Server Name>/reportserver?/SampleReports/Sales Order


Detail&rs:Command=Render&rs:Format=HTML4.0&rc:Toolbar=False

For more information, see Specify Device Information Settings in a URL.

See Also
Device Information Settings for Rendering Extensions (Reporting Services)
Customize Rendering Extension Parameters in RSReportServer.Config
Building Applications Using the Web Service and the .NET Framework
Reporting Services Delivery Extension Settings
3/12/2020 • 2 minutes to read • Edit Online

Reporting Services includes an e-mail delivery extension and a file share delivery extension. E-mail delivery
provides a way to send a report to individual users or groups through e-mail. File share delivery enables you to
automatically send rendered reports to a share on your network. You can use either one of the supported
delivery extensions with standard subscriptions or data-driven subscriptions. You pass delivery settings that are
specific to the type of delivery extension whenever you call the
CreateSubscription,CreateDataDrivenSubscription,SetSubscriptionProperties, and
SetDataDrivenSubscriptionProperties methods. To retrieve a list of delivery settings programmatically, use the
GetExtensionSettings method.

NOTE
Delivery extension settings are case-sensitive.

E-Mail Delivery Settings


The following table lists the e-mail delivery settings for subscriptions that use report server e-mail.

SET T IN G VA L UE

TO The e-mail address that appears on the To line of the e-mail


message. Multiple e-mail addresses are separated by
semicolons. Required.

CC The e-mail address that appears on the Cc line of the e-mail


message. Multiple e-mail addresses are separated by
semicolons. Optional.

BCC The e-mail address that appears on the Bcc line of the e-
mail message. Multiple e-mail addresses are separated by
semicolons. Optional.

ReplyTo The e-mail address that appears in the Reply-To header of


the e-mail message. The value must be a single e-mail
address. Optional.

IncludeRepor t A value that indicates whether to include the report in the e-


mail delivery. A value of true indicates that the report is
delivered in the body of the e-mail message.

RenderFormat The name of the rendering extension to use to generate the


rendered report. The name must correspond to one of the
visible rendering extensions installed on the report server.
This value is required if the IncludeRepor t setting is set to
a value of true .

Priority The priority with which the e-mail message is sent. Valid
values are LOW , NORMAL , and HIGH . The default value is
NORMAL .
SET T IN G VA L UE

Subject The text in the subject line of the e-mail message.

Comment The text included in the body of the e-mail message.

IncludeLink A value that indicates whether to include a link to the report


in the body of the e-mail.

File Share Delivery Settings


The following table lists the file share delivery settings for subscriptions.

SET T IN G VA L UE

FILENAME The name of the file that is saved to disk.

FILEEXTN Indicates whether to include a file extension for the rendered


report. The value is either true or false .

PATH The folder path or UNC file share path to which to save the
report.

RENDER_FORMAT The format of the report that is saved to disk.

USERNAME The username required to access the network resource or


disk.

PASSWORD The password required to access the network resource or


disk.

WRITEMODE The write mode to use when accessing the disk. Valid values
are None , Over write , and AutoIncrement .

See Also
Technical Reference (SSRS)
Building Applications Using the Web Service and the .NET Framework
Reporting Services Properties - Report Server Item
Properties
11/2/2020 • 4 minutes to read • Edit Online

Item properties are properties that are specific to items in the report server database. Such items include
reports, linked reports, folders, resources, models, and data sources.
The following item property names are reserved. You cannot create user-defined properties of the same name.
You can read or modify many of these properties using the Report Server Web service methods.

Item Properties
The following properties apply to all items in the report server database.

P RO P ERT Y DESC RIP T IO N

CreatedBy The name of the user who originally added the item to the
report server database.

CreationDate The date and time the item was added to the report server
database.

Description The description of the item.

Hidden A value that indicates whether the item is visible and


available to users.

ID The ID of an item in the report server database.

ModifiedBy The name of the user who last modified the item in the
report server database.

ModifiedDate The date and time the user last modified the item.

Name The name of an item in the report server database.

Path The full path name of the item. The path of any item in the
report server database has a maximum character length of
260.

Size The size, in bytes, of an item in the report server database.

Type The type of an item in the report server database.

Vir tualPath The virtual path to an item in the report server database.
The value of the VirtualPath property is the path under
which a user expects to see the item. For example, a report
called report1, which is located in the user's personal My
Reports folder, has a virtual path of /My Reports. The actual
path of the item is /Users/username/My Reports.
Folder Properties
In addition to the item properties listed previously, the following property applies to folders in the report server
database.

P RO P ERT Y DESC RIP T IO N

Reser ved A value returned by the GetProperties method for folders


that are reserved by the report server. Reserved folders
include Users, My Reports, and /. Reserved folders cannot be
modified or removed.

Report Properties
In addition to the item properties listed previously, the following properties apply to reports in the report server
database.

P RO P ERT Y DESC RIP T IO N

Language The language used in a report. The value is a language code


defined in the Internet Engineering Task Force (IETF)
RFC1766 specification. The first part is a two-character
designation of the basic language. The second part is
separated by a hyphen and designates the variation or
dialect of the language. If a value is not specified in the Style
element associated with the Body element in the report
definition, the default value is the language of the report
server.

Repor tProcessingTimeout The time-out, in seconds, for an individual report. If this


value is set, the report server attempts to stop the
processing of a report when the specified time has elapsed.
Valid values are -1 through 2 ,147 ,483 ,647 . If the value is -
1 , the report does not time out during processing. If the
value is null, the value of the system property
Repor tProcessingTimeout is used for the report
processing time-out. The default value is null. For more
information, see Report Server System Properties.

ExecutionDate The date and time at which a report snapshot was last
created for a report.

CanRunUnattended A value that indicates whether a report can be run


unattended on a schedule. If this property is set to true ,
default values for report parameters are defined and data
source credentials are stored with the report, or credential
retrieval option is set to None . If this property is set to
false , the prerequisites for running a report unattended are
not met. Please see Configure the Unattended Execution
Account (Report Server Configuration Manager) for more
information.

HasParameterDefaultValues A value that indicates whether the report has valid default
values set for all report parameters. The value is also true if
a report does not have report parameters. If this property
set to false , one or more report parameters do not have a
valid default value.
P RO P ERT Y DESC RIP T IO N

HasDataSourceCredentials A value that indicates that the credential retrieval option set
for all data sources associated with the report is either None
or Store . If this property is set to false , a credential retrieval
option set for one of the data sources associated with the
report is either Integrated or Prompt .

IsSnapshotExecution A value that indicates whether the report is a snapshot.

HasScheduleReadyDataSources A value that indicates whether the data sources of a report


are configured to support scheduled execution. If this
property is set to false , users cannot subscribe to the
report.

Resource Properties
In addition to the item properties listed previously, the following property applies to resources in the report
server database.

P RO P ERT Y DESC RIP T IO N

MimeType The MIME type of a resource in the report server database.

See Also
Building Applications Using the Web Service and the .NET Framework
Report Server Web Service
Technical Reference (SSRS)
Reporting Services Properties - Report Server
System Properties
3/18/2020 • 2 minutes to read • Edit Online

The following system property names are reserved. You cannot create user-defined properties of the same
name. You can read or modify many of these properties using the Web service methods.

Properties
P RO P ERT Y DESC RIP T IO N

SiteName The name of the report server site displayed on the user
interface. The default value is Microsoft Repor t Ser ver .
This property can be an empty string. The maximum length
is 8,000 characters.

SystemSnapshotLimit The maximum number of snapshots that are stored for a


report. Valid values are -1 through 2 ,147 ,483 ,647 . If the
value is -1 , there is no snapshot limit.

SystemReportTimeout The default report processing timeout value, in seconds, for


all reports managed in the report server namespace. This
value can be overridden at the report level. If this property is
set, the report server attempts to stop the processing of a
report when the specified time has expired. Valid values are -
1 through 2 ,147 ,483 ,647 . If the value is -1 , reports in the
namespace do not time out during processing. The default
value is 1800 .

UseSessionCookies Indicates whether the report server should use session


cookies when communicating with client browsers. The
default value is true .

SessionTimeout The length of time, in seconds, that a session remains active.


The default value is 600 .

EnableMyReports Indicates whether the My Reports feature is enabled. A value


of true indicates that the feature is enabled.

MyReportsRole The name of the role used when creating security policies on
user's My Reports folders. The default value is My Repor ts
Role .

EnableExecutionLogging Indicates whether report execution logging is enabled. The


default value is true .

ExecutionLogDaysKept The number of days to keep report execution information in


the execution log. Valid values for this property include 0
through 2 ,147 ,483 ,647 . If the value is 0 entries are not
deleted from the Execution Log table. The default value is
60 .
P RO P ERT Y DESC RIP T IO N

SnapshotCompression Defines how snapshots are compressed. The default value is


SQL . The valid values are as follows:

SQL = Snapshots are compressed when stored in the report


server database. This is the current behavior.

None = Snapshots are not compressed.

All = Snapshots are compressed for all storage options,


which include the report server database or the file system.

EnableClientPrinting Determines whether the RSClientPrint ActiveX control is


available for download from the report server. The valid
values are true and false . The default value is true . For
more information about additional settings that are required
for this control, see Enable and Disable Client-Side Printing
for Reporting Services.

EnableIntegratedSecurity Determines whether integrated security is supported for


report data source connections. The default is True . The
valid values are as follows:

True = Integrated security is enabled.

False = Integrated security is not enabled. Report data


sources that are configured to use integrated security will
not run.

EnableRemoteErrors Includes external error information (for example, error


information about report data sources) with the error
messages that are returned for users who request reports
from remote computers. Valid values are true and false . The
default value is false . For more information, see Enable
Remote Errors (Reporting Services).

See Also
GetSystemProperties
SetSystemProperties
Building Applications Using the Web Service and the .NET Framework
Report Server Web Service
Technical Reference (SSRS)
Reporting Services Properties
3/18/2020 • 2 minutes to read • Edit Online

The report server defines a set of system properties that are global to the report server and a set of item
properties that are associated with an individual item stored in the report server database. Properties defined
by the report server cannot be deleted, and in some cases they are read-only. An application can extend system
properties and item properties by adding additional user-defined properties to the system and item properties.
The following Web service methods retrieve and set SQL Server Reporting Services properties.

M ET H O D A C T IO N

GetProperties Returns the values of one or more properties on an item in


the report server database.

GetSystemProperties Returns one or more system properties.

SetProperties Sets one or more properties of an item in the report server


database.

SetSystemProperties Sets one or more system properties.

In This Section
TO P IC DESC RIP T IO N

Report Server Item Properties Describes the item-specific properties in Reporting Services.

Report Server System Properties Describes the system-specific properties in Reporting


Services.

See Also
Building Applications Using the Web Service and the .NET Framework
Report Server Web Service
Technical Reference (SSRS)
Setting the Url Property of the Web Service
3/12/2020 • 2 minutes to read • Edit Online

At any time in your Microsoft .NET Framework applications, you can modify the base URL of the Report Server
Web service to which your application is currently directed. To do this, simply set the Url property of the service
object. For example:

Dim rs As New ReportingService2010()


rs.Credentials = System.Net.CredentialCache.DefaultCredentials
rs.Url = "https://<Server Name>/reportserver/ReportService2010.asmx"

ReportingService2010 service = new ReportingService2010();


rs.Credentials = System.Net.CredentialCache.DefaultCredentials;
rs.Url = "https://<Server Name>/reportserver/ReportService2010.asmx";

The following example retrieves a report definition from one report server and uses that definition to create an
identical report on a different report server:

Imports System
Imports System.Web.Services.Protocols

Class Sample
Public Shared Sub Main()
Dim rs As New ReportingService2010()
rs.Credentials = System.Net.CredentialCache.DefaultCredentials
' Set the base Web service URL of the source server
rs.Url = "https://<Server Name>/reportserver/ReportService2010.asmx"

Dim reportName As String = "/SampleReports/Company Sales"


Dim reportDefinition As Byte() = Nothing

Try
' Get the report definition of a report on a source server
reportDefinition = rs.GetItemDefinition(reportName)
' Set the base Web service URL of the destination server
rs.Url = "https://<Server Name>/reportserver/ReportService2010.asmx"
' Create a copy of the report on the destination server
Dim warnings As Warning() = {}
rs.CreateCatalogItem("Report", "Company Sales Copy", "/", False, reportDefinition, Nothing,
warnings)
Catch e As SoapException
Console.WriteLine(e.Detail.InnerXml.ToString())
End Try
End Sub 'Main
End Class 'Sample
using System;
using System.Web.Services.Protocols;

class Sample
{
public static void Main()
{
ReportingService2010 rs = new ReportingService2010();
rs.Credentials = System.Net.CredentialCache.DefaultCredentials;
// Set the base Web service URL of the source server
rs.Url = "https://<Server Name>/reportserver/reportservice2010.asmx";

string reportName = "/SampleReports/Company Sales";


byte[] reportDefinition = null;

try
{
reportDefinition = rs.GetItemDefinition(reportName);
// Set the base Web service URL of the destination server
rs.Url = "https://<Server Name>/reportserver/ReportService2010.asmx";
// Create a copy of the report on the destination server
Warning[] warnings = {};
rs.CreateCatalogItem("Report", "Company Sales Copy", "/", false, reportDefinition, null, out
warnings);
}

catch (SoapException e)
{
Console.WriteLine(e.Detail.InnerXml.ToString());
}
}
}

For more information about creating the initial Web service proxy, see Creating the Web Service Proxy.

See Also
CreateCatalogItem
GetItemDefinition
Building Applications Using the Web Service and the .NET Framework
Report Server Web Service
Supplying Web Service Method Arguments
3/12/2020 • 2 minutes to read • Edit Online

A Report Server Web service method sends a request to the service at a given URL using SOAP over HTTP. The
service receives the request, processes it, and then returns a response. These requests and responses are in the
form of XML documents.

Optional Parameters
In some cases, a Web service method can have optional input parameters. Even if an input parameter for a Web
service method is optional, you must still include it and set the parameter value to null (Nothing in Visual
Basic). Setting a parameter value to null sets the element value for that parameter in the SOAP request to null .
The following example uses the CreateFolder method to create a new folder named Product Sales in the Sales
folder. By supplying a null value for the folder properties, no user-specific properties are supplied for the folder:

// C#
rs.CreateFolder("Product Sales", "/Sales", null);

Complex Data Types


The core class of the Report Server Web service is ReportingService2010, which you use to invoke the SOAP
operations or Web methods of the proxy class. To support this class and its methods, Reporting Services
includes user-defined, complex data types that are specific to the input and output parameters of the Web
service methods. These complex data types are part of the generated proxy class, which you can use when
developing in the Microsoft .NET Framework environment.
When you generate a proxy class, the complex data types that are defined in the WSDL file are represented by
the classes of the proxy, which include properties that correspond to the various SOAP elements of the complex
data types. Sequences of these data types become arrays of objects that you can enumerate through in your
code. This eliminates the need to work directly with the XML structures sent in SOAP messages. The .NET
Framework handles that translation for you.

See Also
Building Applications Using the Web Service and the .NET Framework
Report Server Web Service
Technical Reference (SSRS)
Using Secure Web Service Methods
4/15/2020 • 2 minutes to read • Edit Online

Certain Report Server Web service methods may require a secure connection when you invoke them. The
methods that require a secure connection are determined by the SecureConnectionLevel setting in the
RSReportServer.config file. The value of the setting is an integer value with a valid range of 0 and higher. The
following table describes these values.

L EVEL DESC RIP T IO N

0 Not secure. Calls made to the Reporting Services SOAP API


do not require a secure connection.

Greater than 0 Secure. All calls made to the Reporting Services SOAP API
require a secure connection.

You can use the ListSecureMethods method of the Web service to return a list of Web service methods that
require a secure connection according to the current configuration of the report server. In a TLS scenario, you
should evaluate the list of methods that are returned by ListSecureMethods and change the scheme name of the
Web service URI to "https" or "http" depending on the method being called.

See Also
Building Applications Using the Web Service and the .NET Framework
Report Server Web Service
Using the RSClientPrint Control in Custom
Applications
3/12/2020 • 7 minutes to read • Edit Online

The Microsoft ActiveX control, RSPrintClient , provides client-side printing for reports viewed in HTML Viewer. It
provides a Print dialog box so that a user can initiate a print job, preview a report, specify pages to print, and
change the margins. During a client-side print operation, the report server renders the report in the Image
(EMF) rendering extension and uses the print capabilities of the operating system to create the print job and
send it to a printer.
Client-side printing provides a way to control and improve the quality of a printout for an HTML report by side-
stepping browser print settings on the user's computer, and instead using the page dimensions, margins, header,
and footer text of the report to create the print output. The print control reads property values of the report to
set page size and margins.
Developers who want to enable the client-side printing feature in third-party toolbars or viewers can access the
ActiveX control through the RSClientPrint COM object. The control can be distributed freely. The following list
provides recommendations for using the control:
Use the control to improve printing for Web-based reports. You can specify the object in any of the
Microsoft .NET Framework-compatible programming languages or in script. The control is not intended
for Microsoft Windows Forms applications.
Copy the .cab file from the Reporting Services program files and add it to your custom application code
base.
Use an <OBJECT> tag to specify the control.
Specify a relative or fully qualified URL to the .cab file in the OBJECT CODEBASE attribute.
Specify your own application version information for the .cab file to track which version is used in your
application.

RSPrintClient Overview
The control displays a custom print dialog box that supports features common to other print dialog boxes,
including print preview, page selections for specifying specific pages and ranges, page margins, and orientation.
The control is packaged as a CAB file. The text in the Print dialog box is localized into all of the languages
supported in SQL Server. RSPrintClient ActiveX control uses the Image rendering extension (EMF) to print the
report. The following EMF device information is used: StartPage, EndPage, MarginBottom, MarginLeft,
MarginTop, MarginRight, PageHeight, and PageWidth. Other device information settings for image rendering are
not supported.
Language Support
The print control provides user interface text in different languages, and accepts input values calibrated to
different measurement systems. The language and measurement system used are determined by the Culture
and UICulture properties. Both properties accept LCID values. If you specify an LCID for a language that is a
variation on a supported language, you will get the language that provides the closest match. If you specify an
LCID that is not supported and for which no other LCID is a close match, you will get English (United States).

Using RSClientPrint in Code


The RSClientPrint object is used to gain access programmatically to the ActiveX control and its methods and
properties. The control provides a modal dialog for print preview.
Specifying Default Values
You can initialize the Print dialog box with margin and page values of the report. By default, the Print dialog
box is initialized with values from the report definition. You can use the defaults, or specify different values by
setting properties on the object.
All dimensions are set in millimeters. Measurement conversion occurs at run time if the Culture and UICulture
are set to locales that do not use metric measurements.
To understand which values are used for page dimensions and margins, you can use the GetProper ties
method to retrieve the default values:
PageHeight and PageWidth specify the default page height and width. When the print control is
launched, these property values are used to select the closest paper size available for the currently
selected printer. If PageWidth is great than PageHeight , the orientation is set to Landscape. Otherwise,
it is set to Portrait.
LeftMargin , RightMargin , TopMargin , and BottomMargin are all set to 12.2 millimeters by default.
These properties are stored in the Item properties collection on the report server. The values are overwritten
each time a report definition is updated.
RSClientPrint Properties
P RO P ERT Y TYPE RW DEFA ULT DESC RIP T IO N

MarginLeft Double RW report setting Gets or sets the left


margin. The default
value if not set by
the developer or
specified in the
report is 12.2
millimeters.

MarginRight Double RW report setting Gets or sets the right


margin. The default
value if not set by
the developer or
specified in the
report is 12.2
millimeters.

MarginTop Double RW report setting Gets or sets the top


margin. The default
value if not set by
the developer or
specified in the
report is 12.2
millimeters.

MarginBottom Double RW report setting Gets or sets the


bottom margin. The
default value if not
set by the developer
or specified in the
report is 12.2
millimeters.
P RO P ERT Y TYPE RW DEFA ULT DESC RIP T IO N

PageWidth Double RW report setting Gets or sets the page


width. The default
value if not set by
the developer or the
report definition is
215.9 millimeters.

PageHeight Double RW report setting Gets or sets the page


height. The default
value if not set by
the developer or the
report definition is
279.4 millimeters.

Culture Int32 RW Browser locale Specifies the locale


identifier (LCID). This
value determines the
unit of measurement
for user input. For
example, if a user
types 3 , the value will
be measured in
millimeters if the
language is French or
inches if the
language is English
(United States). Valid
values include: 1028,
1031, 1033, 1036,
1040, 1041, 1042,
2052, 3082.

UICulture String RW Client culture Specifies string


localization of the
dialog box. Text in the
Print dialog is
localized into these
languages: Chinese-
Simplified, Chinese
Traditional, English,
French, German,
Italian, Japanese,
Korean, and Spanish.
Valid values include:
1028, 1031, 1033,
1036, 1040, 1041,
1042, 2052, 3082.

Authenticate Boolean RW False Specifies whether the


control issues a GET
command against
the report server to
initiate a connection
for out-of-session
printing.

When to Set the Authenticate Property


When you print from within a browser session, you do not need to set the Authenticate property. Within the
context of an active session, all requests from the print control to the report server are handled through the
browser. The browser sets the session variables necessary for communication to the report server.
If you print out-of-session (for example, sending a report directly to a printer without first opening it), the print
control must issue an HTTP GET request to set up the session with the report server. To issue the GET request,
you set Authenticate to True .
You only need to issue the GET request if you are using Windows integrated security or Basic authentication. If
you are using forms authentication, the Authenticate property is ignored. Your application code must set the
session and authenticate the user using the custom security extension that you provide. If you are using forms
authentication, be sure to set the expiration value on the authentication cookie to a value that preserves sessions
for a reasonable interval. If the value is too low, users will be prompted to provide logon credentials each time
the cookie expires.
CLSIDs
When you are running the report on-premises, you use the following CLSID values.
41861299-EAB2-4DCC-986C-802AE12AC499
5554DCB0-700B-498D-9B58-4E40E5814405
60677965-AB8B-464f-9B04-4BA871A2F17F
When you are running the report in Azure SQL Reporting, you use the following CLSID values.
3DD32426-554D-48C0-A200-65D3BF880E38
05662494-ACF9-446A-BE4C-7D3F7EA7F62F
RSPrintClient Support for the Print Method
The RSClientPrint object supports the Print method used to launch the Print dialog box. The Print method
has the following arguments.

A RGUM EN T I/ O TYPE DESC RIP T IO N

ServerPath In String Specifies the report server


virtual directory (for
example,
https://adventure-
works/reportserver
).

ReportPathParameters In String Specifies the full name to


the report in the report
server folder namespace,
including parameters.
Reports are retrieved
through URL access. For
example: "/AdventureWorks
Sample Reports/Employee
Sales
Summary&EmpID=1234"

ReportName In String The short name of the


report (in the example
above, the short name is
Employee Sales Summary).
It appears in the Print
dialog box and in the print
queue.
Example
The following HTML example shows how to specify the .cab file, Print method, and properties in JavaScript:
<BODY onload="Print()">

<OBJECT ID="RSClientPrint" CLASSID="CLSID: 5554DCB0-700B-498D-9B58-4E40E5814405D3" CODEBASE="<URL to the .CAB


file>#Version=<your application version information>" VIEWASTEXT></OBJECT>

<script language="javascript">

function Print()

RSClientPrint.MarginLeft = 12.7;

RSClientPrint.MarginTop = 12.7;

RSClientPrint.MarginRight = 12.7;

RSClientPrint.MarginBottom = 12.7;

RSClientPrint.Culture = 1033;

RSClientPrint.UICulture = 9;

RSClientPrint.Print('https://localhost/rtm',
'%2fEmployee_Sales_Summary&ReportMonth=6&ReportYear=2004&EmpID=20', 'Employee_Sales_Summary')

</script>

</BODY>

See Also
Print Reports from a Browser with the Print Control (Report Builder and SSRS)
Print Reports (Report Builder and SSRS)
Image Device Information Settings
Web Service Authentication
3/12/2020 • 2 minutes to read • Edit Online

You can use either Windows Authentication or Basic authentication to authenticate the calls made to the Report
Server Web service. Any client that makes SOAP requests to the report server must implement the client
portion of one of the supported authentication protocols. If you are using the Microsoft .NET Framework, you
can use the managed code HTTP classes to implement authentication. Using these APIs makes it easy to send
authentication information along with the SOAP requests.
If you do not have appropriate credentials before you make a call to the Report Server Web service, the call fails.
At run time, you can pass credentials to the Web service by setting the Credentials property of the client-side
object that represents the Web service before you call its methods.
The following sections contain example code that sends credentials using the .NET Framework.

Windows Authentication
The following code passes Windows credentials to the Web service.

Dim rs As New ReportingService()


rs.Credentials = System.Net.CredentialCache.DefaultCredentials

ReportingService rs = new ReportingService();


rs.Credentials = System.Net.CredentialCache.DefaultCredentials;

Basic Authentication
The following code passes Basic credentials to the Web service.

Dim rs As New ReportingService()


rs.Credentials = New System.Net.NetworkCredential("username", "password", "domain")

ReportingService service = new ReportingService();


service.Credentials = new System.Net.NetworkCredential("username", "password", "domain");

The credentials must be set before you call any of the methods of the Report Server Web service. If you do not
set the credentials, you receive the error code an HTTP 401 Error: Access Denied. You must authenticate the
service before you use it, but after you have set the credentials, you do not need to set them again as long as
you continue to use the same service variable (such as rs).

Custom Authentication
Reporting Services includes a programming API that provides developers with the opportunity to design and
develop custom authentication extensions, known as security extensions. For more information, see
Implementing a Security Extension.

See Also
Building Applications Using the Web Service and the .NET Framework
Report Server Web Service
Reporting Services Extension Library
11/2/2020 • 2 minutes to read • Edit Online

The Reporting Services Extension Library is a set of classes, interfaces, and value types that are included in
Reporting Services. This library provides access to system functionality and is designed to be the foundation on
which Microsoft .NET Framework applications can be used to extend Reporting Services components.

Namespaces
The Reporting Services extension library provides the following namespaces.
Microsoft.ReportingServices.DataProcessing
Contains classes and interfaces that enable you to build components that extend the data processing capability
of Reporting Services.
Microsoft.ReportingServices.Interfaces
Contains classes and interfaces that enable you to construct and send custom notifications to users through
your own delivery extensions, and to build custom security extensions for Reporting Services.
Microsoft.Repor tingSer vices.Repor tRendering
Contains classes and interfaces that enable you to extending the rendering capabilities of Reporting Services.
Using the members of this namespace along with members of the Microsoft.ReportingServices.Interfaces
namespace, you can build your own, custom rendering extensions for Reporting Services.

See Also
Reporting Services Extensions
Creating a Data Processing Extension Library
11/2/2020 • 2 minutes to read • Edit Online

Each Reporting Services data processing extension you create should be assigned to a unique namespace and
built into a library or assembly file. The exact name of the namespace is not important, but it must be unique
and not shared with any other extension. Microsoft uses the namespace
Microsoft.ReportingServices.DataProcessing for the data processing extensions that ship with Reporting
Services. You should create your own unique namespaces for your company's data processing extensions.
The following example shows the code to begin a Reporting Services data processing extension, which uses the
namespaces that contain the data processing interfaces and any utility classes.

Imports System
Imports Microsoft.ReportingServices.DataProcessing
Imports Microsoft.ReportingServices.Interfaces

Namespace CompanyName.ExtensionName
...

using System;
using Microsoft.ReportingServices.DataProcessing;
using Microsoft.ReportingServices.Interfaces;

namespace CompanyName.ExtensionName
{
...

When compiling a Reporting Services data processing extension, you must supply to the compiler a reference to
Microsoft.ReportingServices.Interfaces.dll, because the data processing extension interfaces are contained there.
The Microsoft.ReportingServices.DataProcessing namespace is needed to implement the data processing
extension interfaces, and the Microsoft.ReportingServices.Interfaces namespace is needed to implement the
IExtension interface. For example, if all the files containing the code to implement a Reporting Services data
processing extension written in C# were in a single directory with the extension .cs, the following command
would be issued from that directory to compile the files stored in CompanyName.ExtensionName.dll.

csc /t:library /out:CompanyName.ExtensionName.dll *.cs /r:System.dll


/r:Microsoft.ReportingServices.Interfaces.dll

The following code example shows the command that would be used for Microsoft Visual Basic files with the
extension .vb.

vbc /t:library /out:CompanyName.ExtensionName.dll *.vb /r:System.dll


/r:Microsoft.ReportingServices.Interfaces.dll

NOTE
You can also design, develop, and build your data processing extension using Visual Studio. For more information about
developing assemblies in Visual Studio, see your Visual Studio documentation.
See Also
Reporting Services Extensions
Implementing a Data Processing Extension
Reporting Services Extension Library
Data Processing Extensions Overview
11/2/2020 • 3 minutes to read • Edit Online

Data processing extensions in Reporting Services enable you to connect to a data source and retrieve data. They
also serve as a bridge between a data source and a dataset. Reporting Services data processing extensions are
modeled after a subset of the Microsoft .NET Framework data provider interfaces.
The following table lists the data processing extensions included with Reporting Services.

DATA P RO C ESSIN G EXT EN SIO N DESC RIP T IO N

Data processing extension for SQL Server Uses the .NET Framework Data Provider for SQL Server to
connect to and retrieve data from the SQL Server Database
Engine.

Data processing extension for OLE DB Uses the .NET Framework Data Provider for OLE DB. With
this extension, the report server can query any data source
that has an OLE DB provider.

Data processing extension for Oracle Uses the .NET Framework Data Provider for Oracle. With this
extension, the report server can access Oracle data sources
through Oracle client connectivity software.

Data processing extension for ODBC Uses the .NET Framework Data Provider for ODBC. With this
extension, the report server can access data in any database
for which there is an ODBC driver.

You can use the SSRS data processing API to add custom data processing to your report server.

NOTE
Reporting Services has built-in support for data providers in the .NET Framework. If you have already implemented a full
data provider, you do not need to implement a Reporting Services data processing extension. However, you should
consider extending your data provider to include functionality specific to Reporting Services 2005, which includes secure
connection credentials and server-side aggregates.

Each of the data processing extensions included with Reporting Services uses a common set of interfaces. This
ensures that each extension implements comparable functionality.
You can develop data processing extensions for your own data sources, or you can use the interfaces to add an
additional layer of data processing to common database infrastructures. You can deploy your custom data
processing extensions to enable seamless integration of data into the existing report servers in your
organization. You can also use them as part of a custom reporting suite that you provide to your consumers.
Reporting Services data processing extension architecture
The advantages to implementing a custom Reporting Services data processing extension include:
A simplified data access architecture, often with better maintainability and improved performance.
The ability to directly expose extension-specific functionality to consumers.
A specific interface for your consumers to access your data source within Reporting Services.

Data Extension Process Flow


Before developing your custom data extension, you should understand how the report server uses data
extensions to process data. You should also understand the constructors and methods that are called by the
report server.

The step-by-step process flow of a data extension that is called by the report server
The illustration shows the following sequence of events:
1. The report server creates a connection object and passes in the connection string and credentials
associated with the report.
2. The command text of the report is used to create a command object. In the process, the data processing
extension may include code that parses the command text and creates any parameters for the command.
3. Once the command object and any parameters are processed, a data reader is generated that returns a
result set and enables the report server to associate the report data with the report layout.

Developer Requirements
Developing a Reporting Services data processing extension requires you to have:
A deployment computer with Report Designer or a report server installed.
A development computer with Microsoft Visual Studio 2005 or above, or the Microsoft .NET Framework
Software Development Kit (SDK) installed.
An in-depth understanding of Reporting Services features and capabilities.
An in-depth understanding of Microsoft ADO.NET architecture, .NET Framework data providers, ADO.NET
DataSet objects, and the common ADO.NET interfaces.
Development experience in a .NET Framework language such as Microsoft Visual C# or Microsoft Visual
Basic .NET.

See Also
Reporting Services Extensions
Reporting Services Extension Library
Debugging Data Processing Extension Code
11/2/2020 • 2 minutes to read • Edit Online

The Microsoft .NET Framework provides several debugging tools that can help you analyze your data processing
extension code and locate errors in it. The tool that works best will depend on what you are trying to
accomplish. This example uses Visual Studio 2008.
To debug your data processing extension code
1. Launch Visual Studio 2008, and open your data processing extension project.
2. Build the project, and deploy your data processing extension assembly and the accompanying .pdb file to
the Report Designer. For more information about deployment, see How to: Deploy a Data Processing
Extension to Report Designer.
3. Open a new Report Project in Visual Studio while leaving your data processing extension code open in a
separate window of Visual Studio.
4. Navigate to the window of Visual Studio that contains your data processing extension project and set
some break points in your code.
5. With the data processing extension project window still active, click Attach to Process on the Debug
menu.
The Attach to Process dialog opens.
6. From the list of processes, select the devenv.exe process that corresponds to your Report Project and click
Attach .
7. Define your report data source using the Repor t Data tab of the Report Project. You will most likely use
the generic Query Designer to execute a query against your custom data source. This should invoke the
debugger and execute code corresponding to your break points.
8. Step through your code using the F11 key. For more information about using Visual Studio for
debugging, see your Visual Studio documentation.

See Also
Deploying a Data Processing Extension
Reporting Services Extensions
Implementing a Data Processing Extension
Reporting Services Extension Library
Deploying a Data Processing Extension to a Report
Server
11/2/2020 • 2 minutes to read • Edit Online

Report servers use data processing extensions for retrieving and processing data in rendered reports. You
should deploy your data processing extension assembly to a report server as a private assembly. You also need
to make an entry in the report server configuration file, RSReportServer.config.

Procedures
To deploy a data processing extension assembly
1. Copy your assembly from your staging location to the bin directory of the report server on which you
want to use the data processing extension. The default location of the report server bin directory is
%ProgramFiles%\Microsoft SQL Server\MSRS10_50.<Instance Name>\Reporting
Services\ReportServer\bin.

NOTE
This step will prevent an upgrade to a newer instance of SQL Server. For more information, see Upgrade and
Migrate Reporting Services.

2. After the assembly file is copied, open the RSReportServer.config file. The RSReportServer.config file is
located in the ReportServer directory. You need to make an entry in the configuration file for your data
processing extension assembly file. You can open the configuration file with Visual Studio or a simple text
editor, such as Notepad.
3. Locate the Data element in the RSReportServer.config file. An entry for your newly created data
processing extension should be made in the following location:

<Extensions>
<Data>
<Your extension configuration information goes here>
</Data>
</Extensions>

4. Add an entry for your data processing extension. Your entry should include an Extension element with
values for Name and Type and might look like the following:

<Extension Name="ExtensionName" Type="CompanyName.ExtensionName.MyConnectionClass,


MyExtensionAssembly" />

The value for Name is the unique name of the data processing extension. The value for Type is a
comma-separated list that includes an entry for the fully qualified namespace of your class that
implements the IExtension and IDbConnection interfaces, followed by the name of your assembly (not
including the .dll file extension). By default, data processing extensions are visible. To hide an extension
from user interfaces, such as Report Manager, add a Visible attribute to the Extension element, and set
it to false .
5. Add a code group for your custom assembly that grants FullTrust permission for your extension. You do
this by adding the code group to the rssrvpolicy.config file located by default in
%ProgramFiles%\Microsoft SQL Server\<MSRS10_50.<Instance Name>\Reporting
Services\ReportServer. Your code group might look like the following:

<CodeGroup class="UnionCodeGroup"
version="1"
PermissionSetName="FullTrust"
Name="MyExtensionCodeGroup"
Description="Code group for my data processing extension">
<IMembershipCondition class="UrlMembershipCondition"
version="1"
Url="C:\Program Files\Microsoft SQL Server\MSRS10_50.<Instance Name>\Reporting
Services\ReportServer\bin\MyExtensionAssembly.dll"
/>
</CodeGroup>

URL membership is only one of many membership conditions you might choose for your data processing
extension. For more information about code access security in Microsoft SQL Ser ver Reporting Services, see
Secure Development (Reporting Services).

Verifying the Deployment


You can verify whether your data processing extension was deployed successfully to the report server by using
the Web service ListExtensions method. You can also open Report Manager and verify that your extension is
included in the list of available data sources. For more information about Report Manager and data sources, see
Create, Modify, and Delete Shared Data Sources (SSRS).

See Also
Deploying a Data Processing Extension
Reporting Services Extensions
Implementing a Data Processing Extension
Reporting Services Extension Library
Deploying a Data Processing Extension to Report
Designer
11/2/2020 • 2 minutes to read • Edit Online

Report Designer uses data processing extensions for retrieving and processing data while you are designing
reports. You should deploy your data processing extension assembly to Report Designer as a private assembly.
You also need to make an entry in the Report Designer configuration file, RSReportDesigner.config.
To deploy a data processing extension assembly
1. Copy your assembly from your staging location to the Report Designer directory. The default location of
the Report Designer directory is C:\Program Files\Microsoft Visual Studio
9.0\Common7\IDE\PrivateAssemblies.
2. After the assembly file is copied, open the RSReportDesigner.config file. The RSReportDesigner.config file
is also located in the Report Designer directory. You need to make an entry in the configuration file for
your data processing extension assembly file. You can open the configuration file with Microsoft Visual
Studio or with a simple text editor, such as Notepad.
3. Locate the Data element in the RSReportDesigner.config file. An entry for your newly created data
processing extension should be made in the following location:

<Extensions>
<Data>
<Your extension configuration information goes here>
</Data>
</Extensions>

4. Add an entry for your data processing extension which includes an Extension element with values for
the Name , Type , and Visible attributes. Your entry might look like the following:

<Extension Name="ExtensionName" Type="CompanyName.ExtensionName.MyConnectionClass, AssemblyName" />

The value for Name is the unique name of the data processing extension. The value for Type is a
comma-separated list that includes an entry for the fully qualified namespace of your class that
implements the IExtension and IDbConnection interfaces, followed by the name of your assembly (not
including the .dll file extension). By default, data processing extensions are visible. To hide an extension
from user interfaces, such as Report Designer, add a Visible attribute to the Extension element, and set
it to false .
5. Finally, add a code group for your custom assembly that grants FullTrust permission for your extension.
You do this by adding the code group to the rspreviewpolicy.config file located by default in C:\Program
Files\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies. Your code group might look like the
following:
<CodeGroup class="UnionCodeGroup"
version="1"
PermissionSetName="FullTrust"
Name="MyExtensionCodeGroup"
Description="Code group for my data processing extension">
<IMembershipCondition class="UrlMembershipCondition"
version="1"
Url="C:\Program Files\Microsoft Visual Studio
9.0\Common7\IDE\PrivateAssemblies\MyExtensionAssembly.dll"
/>
</CodeGroup>

URL membership is only one of many membership conditions you might choose for your data processing
extension. For more information about code access security in SQL Server 2005 Reporting Services (SSRS), see
Secure Development (Reporting Services)

Generic Query Designer


Report Designer provides a generic query designer that you can use with custom data processing extensions.
This designer consists of two panes: a query pane and a results pane. You can use the generic designer to write
queries that are not supported by the graphical interface. Unlike the graphical query designer, the generic query
designer does not check query syntax or restructure the query.
To enable the generic query designer for a custom extension
Add the following entry to the RSReportDesigner.config file under the Designer element, replacing the
Name attribute with the name that you provided in previous entries.

<Extension Name="ExtensionName"
Type="Microsoft.ReportingServices.QueryDesigners.GenericQueryDesigner,Microsoft.ReportingServices.Que
ryDesigners"/>

Verifying the Deployment


Before you can verify deployment, you must close all instances of Visual Studio on your local computer. After
you have ended all current sessions, you can verify whether your data processing extension was deployed
successfully to Report Designer by creating a new report project in Visual Studio. Your extension should be
included in the list of available data source types when you create a new data set for your report.

See Also
Deploying a Data Processing Extension
Reporting Services Extensions
Implementing a Data Processing Extension
Reporting Services Extension Library
Deploying a Data Processing Extension
11/2/2020 • 2 minutes to read • Edit Online

Once you have written and compiled your Reporting Services data processing extension into a Microsoft .NET
Framework library, you need to make it discoverable by the report server and by Report Designer. This is as
easy as copying the extension to the appropriate directories and adding entries to the appropriate Reporting
Services configuration files.

Configuration-File Extension Element


Data processing extensions that you deploy to the report server or Report Designer need to be entered as
Extension elements in the configuration files. These files are RSReportServer.config for the report server and
RSReportDesigner.config for Report Designer.
The following table describes the attributes for the Extension element for data processing extensions.

AT T RIB UT E DESC RIP T IO N

Name A unique name for the extension, for example, "SQL" for the
SQL Server data processing extension or "OLEDB" for the
OLE DB data processing extension. The maximum length for
the Name attribute is 255 characters. The name must be
unique among all entries within the Extension element of a
configuration file.

Type A comma-separated list that includes the fully qualified


namespace along with the name of the assembly.

Visible A value of false indicates that the data processing extension


should not be visible in user interfaces. If the attribute is not
included, the default value is true .

For more information about the RSReportServer.config or RSReportDesigner.config files, see Reporting Services
Configuration Files.

In This Section
TO P IC DESC RIP T IO N

How to: Deploy a Data Processing Extension to a Report Describes how to deploy your data processing extension to a
Server report server.

How to: Deploy a Data Processing Extension to Report Describes how to deploy your data processing extension to
Designer Report Designer.

See Also
Reporting Services Extensions
Implementing a Data Processing Extension
Reporting Services Extension Library
Implementing a Command Class for a Data
Processing Extension
11/2/2020 • 2 minutes to read • Edit Online

The Command object formulates a request and passes it on to the data source. The command text can take
many different syntactical forms, including text and XML. If results are returned, the Command object returns
results as a DataReader object.
To create a Command class, implement IDbCommand. Implement the ExecuteReader method to return a result
set as a DataReader object. The ExecuteReader method of your Command class should include an
implementation that takes a CommandBehavior enumeration as an argument. If you deploy your data
processing extension to Report Designer, provide an implementation that handles a SchemaOnly case in the
ExecuteReader method. A schema-only implementation is used to supply Report Designer with a fields list. The
DataReader object returned by the ExecuteReader method needs to contain type and name information for the
fields, or columns, in your result set.
Optionally, your Command class can implement IDbCommandAnalysis. This interface enables an implementing
class to analyze a query and return a list of parameters in the query. The functionality of the
IDbCommandAnalysis interface is only used in Report Designer. When you implement IDbCommandAnalysis,
you enable users of Report Designer to be prompted for parameters whenever a report is run in preview mode.
In addition, you can view the parameters in the Parameters tab of the Data Set dialog.

NOTE
You should not implement IDbCommandAnalysis if your custom data processing extension does not support parameters.

For a sample Command class implementation, see SQL Server Reporting Services Product Samples.

See Also
Reporting Services Extensions
Implementing a Data Processing Extension
Reporting Services Extension Library
Implementing a Connection Class for a Data
Processing Extension
11/2/2020 • 2 minutes to read • Edit Online

The Connection object represents a database connection or similar resource and is the starting point for users
of a SQL Server Reporting Services data processing extension. It represents connections to database servers,
though any entity with similar behavior can be exposed as a Connection .
To implement a Connection object, create a class that implements IDbConnection and optionally implements
IDbConnectionExtension.
In your implementation, you must ensure that a connection is created and opened before commands can be
executed. Ensure that your implementation requires clients to open and close connections explicitly, rather than
having your implementation open and close connections implicitly for the client. Perform your security checks
when the connection is obtained. Requiring an existing connection for the other classes in your SSRS data
processing extension will then ensure that security checks are always performed when working with your data
source.
The properties of the desired connection are represented as a connection string. It is strongly recommended
that SSRS data processing extensions support the ConnectionString property using the familiar name/value pair
system defined by OLE DB.

NOTE
Connection objects are often resource-intensive to obtain, so you may want to consider pooling connections or other
techniques to mitigate this.

IDbConnection inherits from IExtension. You must implement the IExtension interface as part of your connection
class implementation. The IExtension interface enables a class to implement a localized extension name and to
process extension-specific configuration information stored in the Reporting Services configuration file.
Your Connection object contains the LocalizedName property through its implementation of IExtension. It is
strongly recommended that Reporting Services data processing extensions support the LocalizedName
property, so that users encounter a familiar, localized name for the extension in a user interface, such as Report
Manager.
IExtension also enables your Connection object to retrieve and process custom configuration data stored in the
RSReportServer.config file. For more information about processing custom configuration data, see the
SetConfiguration method.
The class that implements IExtension is not unloaded from memory when the rest of your data processing
extension classes are unloaded. Because of this, you can use your Extension class to store cross-connection
state information or to store data that can be cached in memory. Your Extension class remains in memory as
long as the report server is running.
You can extend your Connection class to include support for credentials in Reporting Services by
implementing IDbConnectionExtension. When you implement the IntegratedSecurity, UserName, and Password
properties of the IDbConnectionExtension interface, you enable the Integrated Security check box and
Username and Password text boxes of the Data Source dialog in Report Designer. This enables Report
Designer to store and retrieve credentials for data sources that support authentication. The credentials are
stored securely and used when rendering reports in preview mode.
NOTE
Implementing IDbConnectionExtension implicitly requires you to implement the members of the IDbConnection and
IExtension interfaces.
For a sample Connection class implementation, see SQL Server Reporting Services Product Samples.

See Also
Reporting Services Extensions
Implementing a Data Processing Extension
Reporting Services Extension Library
Implementing a Data Processing Extension
11/2/2020 • 2 minutes to read • Edit Online

Data processing extensions in Reporting Services enable you to connect to a data source and retrieve data. They
also serve as a bridge between a data source and a dataset. Reporting Services data processing extensions are
modeled after a subset of the Microsoft .NET Framework data provider interfaces.

In This Section
Data Processing Extensions Overview
Introduces how to write a custom data processing extension for Reporting Services.
Preparing to Implement a Data Processing Extension
Describes the interfaces available when implementing an Reporting Services data processing extension, as well
as when you are required to implement a particular interface.
Creating a Data Processing Extension Library
Describes assigning a namespace for your Reporting Services data processing extension and compiling your
data processing extension into a library DLL.
Implementing a Connection Class for a Data Processing Extension
Describes the attributes of a connection and how to implement your own Connection class for your data
processing extension.
Implementing a Command Class for a Data Processing Extension
Describes the attributes of a command, and how to implement your own Command class for your data
processing extension.
Implementing a DataReader Class for a Data Processing Extension
Describes the attributes of a data reader and how to implement your own DataReader class for your data
processing extension.
Using an External Dataset with Reporting Services
Describes how to expose your custom DataSet objects to the report server for consumption.
Deploying a Data Processing Extension
Describes how to deploy your data processing extension.
Debugging Data Processing Extension Code
Describes how to debug code in your data processing extensions.
For a sample of a fully implemented data processing extension, see SQL Server Reporting Services Product
Samples.

See Also
Reporting Services Extensions
Reporting Services Extension Library
Implementing a DataReader Class for a Data
Processing Extension
11/2/2020 • 2 minutes to read • Edit Online

The DataReader object enables a client to retrieve a read-only, forward-only stream of data from a data source.
Results are returned as the query executes and are stored in the network buffer on the client until you request
them using the Read method of the DataReader class. To create a DataReader class, implement IDataReader
and optionally implement IDataReaderExtension. Using a DataReader object increases application performance
both by retrieving data as soon as it is available, rather than waiting for the entire results of the query to be
returned, and (by default) storing only one row at a time in memory, reducing system overhead.
After creating an instance of your Command class, you create a DataReader object by calling
Command.ExecuteReader to retrieve rows from the data source. The DataReader implementation must
provide two basic capabilities: forward-only access over the result sets obtained by executing a command and
access to the column types, names, and values within each row. Clients use the Read method of the
DataReader object to obtain a row from the results of the query.
In Report Designer, your DataReader object is used to retrieve a list of fields as well as schema information
about the result set. This is accomplished by implementing the GetName , GetValue , GetFieldType, and
GetOrdinal methods of the IDataReader interface.
The IDataReaderExtension interface allows you to supply specific aggregation information about your result set.
For a sample DataReader class implementation, see SQL Server Reporting Services Product Samples.

See Also
Reporting Services Extensions
Implementing a Data Processing Extension
Reporting Services Extension Library
Preparing to Implement a Data Processing
Extension
11/2/2020 • 3 minutes to read • Edit Online

Before you implement your SQL Server Reporting Services data processing extension, you should define the
interfaces to implement. You may want to provide extension-specific implementations of the entire set of
interfaces, or you may simply want to focus your implementation on a subset, such as the IDataReader and
IDbCommand interfaces in which clients would interact primarily with a result set as a DataReader object and
would use your SSRS data processing extension as a bridge between the result set and your data source.
You can implement data processing extensions in one of two ways:
Your data processing extension classes can implement the Microsoft .NET Framework data provider
interfaces and optionally the extended data processing extension interfaces provided by Reporting
Services.
Your data processing extension classes can implement the data processing extension interfaces provided
by Reporting Services and optionally the extended data processing extension interfaces.
If your Reporting Services data processing extension will not support a particular property or method,
implement the property or method as no-operation. If a client expects a particular behavior, throw a
NotSuppor tedException exception.

NOTE
A no-operation implementation of a property or method only applies to the properties and methods of those interfaces
that you choose to implement. Optional interfaces that you choose not to implement should be left out of your data
processing extension assembly. For more information about whether an interface is required or optional, see the table
later in this section.

Required Extension Functionality


Each Reporting Services data processing extension must provide the following functionality:
Open a connection to a data source.
Analyze a query and return a list of field names for the result set.
Execute a query against the data source and return a row set.
Pass single-valued parameters to the query.
Iterate through rows in the row set and retrieve data.
Each data processing extension can be extended to include the following functionality:
Analyze a query and return a list of parameter names used in the query.
Analyze a query and return the list of fields by which the query is grouped.
Analyze a query and return the list of fields by which the query is sorted.
Provide a user name and password to connect to the data source that is independent of the connection
string.
Iterate through rows in the row set and retrieve auxiliary metadata about the data values.
Aggregate data at the server.

Available Extension Interfaces


The following table describes the available interfaces and whether implementation is required or optional.

IN T ERFA C E DESC RIP T IO N IM P L EM EN TAT IO N

IDbConnection Represents a unique session with a Required


data source. In the case of a
client/server database system, the
session may be equivalent to a
network connection to the server.

IDbConnectionExtension Represents additional connection Optional


properties that can be implemented by
SSRS data processing extensions
regarding security and authentication.

IDbTransaction Represents a local transaction. Required

IDbTransactionExtension Represents additional transaction Optional


properties that can be implemented by
SSRS data processing extensions.

IDbCommand Represents a query or command that Required


is used when connected to a data
source.

IDbCommandAnalysis Represents additional command Optional


information for analyzing a query and
returning a list of parameter names
used in the query.

IDataParameter Represents a parameter or name/value Required


pair that is passed to a command or
query.

IDataParameterCollection Represents a collection of all Required


parameters relevant to a command or
query.

IDataReader Provides a method of reading a Required


forward-only, read-only stream of data
from your data source.

IDataReaderExtension Provides a method of reading one or Optional


more forward-only streams of result
sets, obtained by executing a
command at a data source. This
interface provides additional support
for field aggregates.
IN T ERFA C E DESC RIP T IO N IM P L EM EN TAT IO N

IExtension Provides the base class for a Reporting Required


Services data processing extension.
Also enables an implementer to
include a localized name for the
extension and to pass configuration
settings from the configuration file to
the extension.

The data processing extension interfaces are identical to a subset of the .NET Framework data provider
interfaces, methods, and properties whenever possible. For more information about implementing a full .NET
Framework data provider, see "Implementing a .NET Framework Data Provider" in your .NET Framework
Software Development Kit (SDK) documentation.

See Also
Reporting Services Extensions
Implementing a Data Processing Extension
Reporting Services Extension Library
Using an External Dataset with Reporting Services
11/2/2020 • 3 minutes to read • Edit Online

The DataSet object is central to supporting disconnected, distributed data scenarios with ADO.NET. The
DataSet object is a memory-resident representation of data that provides a consistent relational programming
model regardless of the data source. It can be used with multiple different data sources, with XML data, or to
manage data local to the application. The DataSet object represents a complete set of data, including related
tables, constraints, and relationships among the tables. Because of the DataSet object's versatility in storing and
exposing data, your data may often be processed and transformed into a DataSet object before any reporting
on that data occurs.
With Reporting Services data processing extensions, you can integrate any custom DataSet objects that are
created by external applications. To accomplish this, you create a custom data processing extension in Reporting
Services that acts like a bridge between your DataSet object and the report server. Most of the code for
processing this DataSet object is contained in the DataReader class that you create.
The first step in exposing your DataSet object to the report server is to implement a provider specific method
in your DataReader class that can populate a DataSet object. The following example shows how to load static
data into a DataSet object by using a provider-specific method in your DataReader class.
'Private members of the DataReader class
Private m_dataSet As System.Data.DataSet
Private m_currentRow As Integer

'Method to create a dataset


Friend Sub CreateDataSet()
' Create a dataset.
Dim ds As New System.Data.DataSet("myDataSet")
' Create a data table.
Dim dt As New System.Data.DataTable("myTable")
' Create a data column and set various properties.
Dim dc As New System.Data.DataColumn()
dc.DataType = System.Type.GetType("System.Decimal")
dc.AllowDBNull = False
dc.Caption = "Number"
dc.ColumnName = "Number"
dc.DefaultValue = 25
' Add the column to the table.
dt.Columns.Add(dc)
' Add 10 rows and set values.
Dim dr As System.Data.DataRow
Dim i As Integer
For i = 0 To 9
dr = dt.NewRow()
dr("Number") = i + 1
' Be sure to add the new row to the DataRowCollection.
dt.Rows.Add(dr)
Next i

' Fill the dataset.


ds.Tables.Add(dt)

' Use a private variable to store the dataset in your


' DataReader.
m_dataSet = ds

' Set the current row to -1.


m_currentRow = - 1
End Sub 'CreateDataSet
// Private members of the DataReader class
private System.Data.DataSet m_dataSet;
private int m_currentRow;

// Method to create a dataset


internal void CreateDataSet()
{
// Create a dataset.
System.Data.DataSet ds = new System.Data.DataSet("myDataSet");
// Create a data table.
System.Data.DataTable dt = new System.Data.DataTable("myTable");
// Create a data column and set various properties.
System.Data.DataColumn dc = new System.Data.DataColumn();
dc.DataType = System.Type.GetType("System.Decimal");
dc.AllowDBNull = false;
dc.Caption = "Number";
dc.ColumnName = "Number";
dc.DefaultValue = 25;
// Add the column to the table.
dt.Columns.Add(dc);
// Add 10 rows and set values.
System.Data.DataRow dr;
for(int i = 0; i < 10; i++)
{
dr = dt.NewRow();
dr["Number"] = i + 1;
// Be sure to add the new row to the DataRowCollection.
dt.Rows.Add(dr);
}

// Fill the dataset.


ds.Tables.Add(dt);

// Use a private variable to store the dataset in your


// DataReader.
m_dataSet = ds;

// Set the current row to -1.


m_currentRow = -1;
}
public bool Read()
{
m_currentRow++;
if (m_currentRow >= m_dataSet.Tables[0].Rows.Count)
{
return (false);
}
else
{
return (true);
}
}

public int FieldCount


{
// Return the count of the number of columns, which in
// this case is the size of the column metadata
// array.
get { return m_dataSet.Tables[0].Columns.Count; }
}

public string GetName(int i)


{
return m_dataSet.Tables[0].Columns[i].ColumnName;
}

public Type GetFieldType(int i)


{
// Return the actual Type class for the data type.
return m_dataSet.Tables[0].Columns[i].DataType;
}

public Object GetValue(int i)


{
return m_dataSet.Tables[0].Rows[m_currentRow][i];
}

public int GetOrdinal(string name)


{
// Look for the ordinal of the column with the same name and return it.
// Returns -1 if not found.
return m_dataSet.Tables[0].Columns[name].Ordinal;
}

Once you create or retrieve your dataset, you can use the DataSet object in your implementations of the Read ,
GetValue , GetName , GetOrdinal , GetFieldType , and FieldCount members of the DataReader class.

See Also
Reporting Services Extensions
Implementing a Data Processing Extension
Reporting Services Extension Library
Creating a Delivery Extension Library
11/2/2020 • 2 minutes to read • Edit Online

Each Reporting Services delivery extension you create should be assigned to a unique namespace and built into
a library or assembly file. The exact name of the namespace is not important, but it must be unique and not
shared with any other extension. You should create your own unique namespaces for your company's delivery
extensions.
The following example shows the code to begin a Reporting Services delivery extension, which uses the
namespaces that contain the delivery interfaces and any utility classes.

Imports System
Imports Microsoft.ReportingServices.Interfaces

Namespace CompanyName.ExtensionName
...

using System;
using Microsoft.ReportingServices.Interfaces;

namespace CompanyName.ExtensionName
{
...

When compiling a Reporting Services delivery extension, you must supply to the compiler a reference to
Microsoft.ReportingServices.Interfaces.dll, because the delivery extension interfaces and classes are contained
there. The Microsoft.ReportingServices.Interfaces namespace is needed to implement the IExtension interface,
the IDeliveryExtension interface, and more. For example, if all the files containing the code to implement a
Reporting Services delivery extension written in C# were in a single directory with the extension .cs, the
following command would be issued from that directory to compile the files stored in
CompanyName.ExtensionName.dll.

csc /t:library /out:CompanyName.ExtensionName.dll *.cs /r:System.dll


/r:Microsoft.ReportingServices.Interfaces.dll

The following code example shows the command that would be used for Microsoft Visual Basic files with the
extension .vb.

vbc /t:library /out:CompanyName.ExtensionName.dll *.vb /r:System.dll


/r:Microsoft.ReportingServices.Interfaces.dll

NOTE
You can also design, develop, and build your delivery extension using Visual Studio. For more information about
developing assemblies in Visual Studio, see your Visual Studio documentation.

See Also
Reporting Services Extensions
Implementing a Delivery Extension
Reporting Services Extension Library
Debugging Delivery Extension Code
11/2/2020 • 2 minutes to read • Edit Online

The Microsoft .NET Framework provides several debugging tools that can help you analyze your delivery
extension code and locate errors in it. The tool that works best will depend on what you are trying to
accomplish. This example uses Visual Studio 2008.
To debug your delivery extension code
1. Launch Visual Studio 2008 and open your delivery extension project.
2. Build the project and deploy your delivery extension assembly and the accompanying .pdb file to the
report server and Report Manager. For more information about deployment, see Deploying a Delivery
Extension.
3. If you have written a subscription user interface to extend Report Manager, open Internet Explorer and
navigate to Report Manager while leaving your delivery extension code open in Visual Studio. If you do
not have a subscription user interface deployed for Report Manager, simply open the client application
from which you call your delivery extension using the SOAP API.
4. Navigate to Visual Studio and your delivery extension project, and set some break points in your code.
5. With the delivery extension project still the active window, click Attach to Process on the Debug menu.
The Attach to Process dialog opens.
6. From the list of processes, select the aspnet_wp.exe process (or w3wp.exe if your application is deployed
on IIS 6.0), and click Attach .
7. Define a new subscription using your delivery extension. You will most likely use Report Manager or the
SOAP API. This should invoke the debugger and execute code corresponding to your break points.
8. Step through your code using the F11 key. For more information about using Visual Studio for
debugging, see your Visual Studio documentation.

See Also
Implementing a Delivery Extension
Reporting Services Extension Library
Delivery Extensions Overview
11/2/2020 • 2 minutes to read • Edit Online

SQL Server Reporting Services enables users to create and publish reports that, once created and published, can
be delivered to various locations. In addition, Reporting Services includes several delivery extensions and a
delivery API that enable developers to create additional delivery extensions to further extend the functionality of
delivery in Reporting Services.
The following table lists the delivery extensions included with Reporting Services.

DEL IVERY EXT EN SIO N DESC RIP T IO N

Report Server E-Mail Uses an SMTP server to e-mail reports to individual users or
groups.

Report Server File Share Used to distribute reports within your organization to
network file shares. Provides the ability to automatically copy
a report to a file share on a designated schedule.

Reporting Services delivery extension architecture


Delivery extensions are paired with subscriptions. When creating a subscription, a user can choose one of the
available delivery extensions to determine how the report is delivered. In Reporting Services, subscriptions are
located in the report server database. When an event occurs, Reporting Services matches the event against
subscriptions contained in the report server database. For each subscription tied to the event, the report server
creates a notification. For data-driven subscriptions, a notification is created for each recipient. Once a
notification is created, the report server invokes a particular delivery extension and passes in values for the
extensions settings specified in the notification. The delivery extension sends the notification to the user as
specified by the selected delivery extension.
Delivery extensions implement the Reporting Services delivery extension API. By supporting the Reporting
Services delivery extension API, delivery extensions are able to receive notifications from the report server and
provide status of the notification.
The report server does not manage delivery destinations for notifications and reports. Gathering destination
information is accomplished through the code you write in your delivery extension.

Subscriptions and Delivery Extensions


Client applications create subscriptions that use delivery extensions using two methods of the Report Server
Web service: CreateSubscription and CreateDataDrivenSubscription. For modifying subscriptions that already
exist, the SetSubscriptionProperties and SetDataDrivenSubscriptionProperties methods are used. When creating
a subscription, the user also selects a delivery extension for the subscription and enters values for the required
extension settings. When a user saves a subscription, it is stored in the report server database. Subscriptions
create notifications based on a schedule or an event. When a delivery begins, the selected delivery extension
first loads any configuration data from the configuration file. Next, the extension settings for the subscription are
retrieved, and values are set. Finally, the Deliver method is called, and the notification is sent.

Developer Requirements
Developing a Reporting Services delivery extension requires you to have:
A deployment computer with a report server installed.
A development computer with Visual Studio 2008 or the Microsoft .NET Framework Software
Development Kit (SDK) installed.
An in-depth understanding of Reporting Services features and capabilities, specifically subscription and
delivery.
An in-depth understanding of ASP.NET and Web controls if you are planning to implement your own
subscription user interface for Report Manager.
Development experience in a .NET Framework language such as Microsoft Visual C# or Microsoft Visual
Basic .NET.

See Also
Implementing a Delivery Extension
Reporting Services Extension Library
Deploying a Delivery Extension
11/2/2020 • 3 minutes to read • Edit Online

Delivery extensions supply their configuration information in the form of an XML configuration file. The XML file
conforms to the XML schema defined for delivery extensions. Delivery extensions provide infrastructure for
setting and modifying the configuration file.
If a delivery extension is replaced or upgraded, all subscriptions that reference the delivery extension remain
valid.
After you have written and compiled your Reporting Services delivery extension into a Microsoft .NET
Framework library, you must copy the extension to the appropriate directory and add an entry to the
appropriate Reporting Services configuration file so the report server can locate it.

Configuration-File Extension Element


Delivery extensions that you deploy to the report server need to be entered as Extension elements in the
configuration file. The configuration file for the report server is RSReportServer.config.
The following table describes the attributes for the Extension element for delivery extensions.

AT T RIB UT E DESC RIP T IO N

Name A unique name for the extension (for example, "Report


Server E-Mail" for the e-mail delivery extension or "Report
Server FileShare" for the file share delivery extension). The
maximum length for the Name attribute is 255 characters.
The name must be unique among all entries within the
Extension element of a configuration file. If a duplicate
name is present, the report server returns an error.

Type A comma-separated list that includes the fully qualified


namespace along with the name of the assembly.

Visible A value of false indicates that the delivery extension should


not be visible in user interfaces. If the attribute is not
included, the default value is true .

For more information about the RSReportServer.config file, see Reporting Services Configuration Files.

Deploying the Extension to the Report Server


The report server uses delivery extensions for processing and delivering notifications or reports. You should
deploy your delivery extension assembly to the report server as a private assembly. You also need to make an
entry in the report server configuration file, RSReportServer.config.
To deploy a deliver extension assembly to a report server
1. Copy your assembly from your staging location to the bin directory of the report server on which you
want to use the delivery extension. The default location of the report server bin directory is
%ProgramFiles%\Microsoft SQL Server\MSRS13.<InstanceName>\Reporting
Services\ReportServer\bin.
IMPORTANT
If you are attempting to overwrite an existing delivery extension assembly, you must first stop the Report Server
service before copying the updated assembly. Restart your service after the assembly is through copying.

2. After the assembly file is copied, open the RSReportServer.config file. The RSReportServer.config file is
located in the %ProgramFiles%\Microsoft SQL Server\MSRS13.<InstanceName>\Reporting
Services\ReportServer directory. You need to make an entry in the configuration file for your delivery
extension assembly file. You can open the configuration file with Microsoft Visual Studio or a simple text
editor, such as Notepad.
3. Locate the Deliver y element in the RSReportServer.config file. An entry for your newly created delivery
extension should be made in the following location:

<Extensions>
<Delivery>
<Your extension configuration information goes here>
</Delivery>
</Extensions>

4. Add an entry for your delivery extension. Your entry should include an Extension element with values
for Name and Type , and might look like the following:

<Extension Name="My Delivery Extension Name"


Type="CompanyName.ExtensionName.MyDeliveryExtensionClass, AssemblyName" />

The value for Name is the unique name of the delivery extension. The value for Type is a comma-
separated list that includes an entry for the fully qualified namespace of your class that implements the
IDeliveryExtension interface, followed by the name of your assembly (not including the .dll file extension).
By default, delivery extensions are visible. To hide an extension from user interfaces, such as the web
portal, add a Visible attribute to the Extension element, and set it to false .
5. Finally, add a code group for your custom assembly that grants FullTrust permission for your delivery
extension. You do this by adding the code group to the rssrvpolicy.config file located by default in
%ProgramFiles%\Microsoft SQL Server\MSRS13.<InstanceName>\Reporting Services\ReportServer.
Your code group might look like the following:

<CodeGroup class="UnionCodeGroup"
version="1"
PermissionSetName="FullTrust"
Name="MyExtensionCodeGroup"
Description="Code group for my delivery extension">
<IMembershipCondition class="UrlMembershipCondition"
version="1"
Url="C:\Program Files\Microsoft SQL Server\MSRS13.<InstanceName>\Reporting
Services\ReportServer\bin\MyExtensionAssembly.dll"
/>
</CodeGroup>

URL membership is only one of many membership conditions you might choose for your delivery
extension. For more information about code access security in SSRS, see.Secure Development (Reporting
Services)

Verifying the Deployment


You can verify whether your delivery extension was deployed successfully to the report server by using the Web
service ListExtensions method. You can also open the web portal and verify that your extension is included in the
list of available delivery extensions for a subscription. For more information about the web portal and
subscriptions, see Subscriptions and Delivery (Reporting Services).

See Also
Implementing a Delivery Extension
Reporting Services Extension Library
Implementing a Delivery Extension
11/2/2020 • 2 minutes to read • Edit Online

SQL Server Reporting Services enables users to create and publish reports that, once created and published, can
be delivered to various locations. In addition, Reporting Services includes several delivery extensions and a
delivery API that enable developers to create additional delivery extensions to further extend the functionality of
delivery in Reporting Services.
For a sample implementation of a delivery extension, see SQL Server Reporting Services Product Samples.

In This Section
Delivery Extensions Overview
Introduces how to write a custom delivery extension for Reporting Services.
Preparing to Implement a Delivery Extension
Describes the interfaces and classes available when implementing an Reporting Services delivery extension, as
well as issues to consider before implementation.
Creating a Delivery Extension Library
Describes assigning a namespace for your Reporting Services delivery extension and compiling your delivery
extension into a library DLL.
Implementing the IDeliveryExtension Interface for a Delivery Extension
Describes the attributes of a delivery extension, and how to implement your own delivery extension class.
Using a Notification Class for a Delivery Extension
Describes the attributes of a Notification class and how to use it in your delivery extension implementation.
Using the Setting Class for a Delivery Extension
Describes the attributes of a Setting class and how to use it in your delivery extension implementation.
Using the Report Class for a Delivery Extension
Describes the attributes of a Repor t class and how to use it in your delivery extension implementation.
Using the RenderedOutputFile Class for a Delivery Extension
Describes the attributes of a RenderedOutputFile class and how to use it in your delivery extension
implementation.
Deploying a Delivery Extension
Describes how to deploy your delivery extension.
Debugging Delivery Extension Code
Describes how to debug code in your delivery extension.
Removing a Delivery Extension
Describes how to remove a delivery extension from a report server.

See Also
Reporting Services Extensions
Reporting Services Extension Library
Implementing the IDeliveryExtension Interface for a
Delivery Extension
11/2/2020 • 2 minutes to read • Edit Online

Your delivery extension class is used to deliver report notifications to users based on the contents of the
notifications. The delivery extension class also provides infrastructure for validating user settings that are passed
to the delivery extension. In addition, your delivery extension class should contain specific properties that clients
can use to gain information about the name of the extension, the settings that the extension supports, and the
rendering formats that are available to the delivery extension.

The IDeliveryExtension interface allows validation of user data as well as for clients to learn about the required
delivery settings
To create a delivery extension class, implement IDeliveryExtension and IExtension. The IDeliver yExtension
interface enables your delivery extension to deliver report notifications using the Deliver method and to validate
incoming extension settings using the ValidateUserData method. The IExtension interface enables your delivery
extension to implement a localized extension name and to process extension-specific configuration information
stored in the SQL Server configuration file. By implementing IExtension , your delivery extension contains the
LocalizedName property. It is strongly recommended that SSRS delivery extensions support the
LocalizedName property, so that users encounter a familiar name for the extension in a user interface, such as
Report Manager.
Your delivery extension must also implement the ExtensionSettings property of the IDeliver yExtension
interface. The report server uses the value returned by the ExtensionSettings property to evaluate the settings
that a delivery extension requires. Clients that interact with delivery extensions use the GetExtensionSettings
method of the Report Server Web service to return a list of settings for the delivery extension.
You can also use your delivery extension class to retrieve and process custom configuration data stored in the
RSReportServer.config file. For more information about processing custom configuration data, see the
SetConfiguration method.
For a sample IDeliver yExtension class implementation, see SQL Server Reporting Services Product Samples.

See Also
Implementing a Delivery Extension
Reporting Services Extension Library
Preparing to Implement a Delivery Extension
11/2/2020 • 2 minutes to read • Edit Online

Before you implement your Reporting Services delivery extension, you should define the interfaces to
implement. You first need to decide how your delivery extension will be used, what settings your delivery
extension will require, and the specific functionality you will need to implement in order to deliver report
notifications.
Each Reporting Services delivery extension must provide the following functionality:
An IExtension interface implementation that represents the extension and a localized extension name.
An IDeliveryExtension implementation that creates a delivery extension that can be used to deliver report
notifications to end users.
The ability to process specific user data for a subscription.
Each delivery extension can be enhanced to include the following functionality:
An ASP.NET user control implementation that enables end users to use Report Manager to create report
subscriptions that use the delivery extension.
The following table describes the available interfaces and classes for delivery extensions.

IN T ERFA C E O R C L A SS DESC RIP T IO N

IExtension Interface Represents an extension in Reporting Services.

IDeliveryExtension Interface Represents a delivery extension in Reporting Services.

IDeliveryReportServerInformation Interface Contains information about the report server that is


required by delivery extensions (for example, a list of the
available rendering extensions).

Setting Class Represents a setting for an extension.

Notification Class Contains subscription information that delivery extensions


use to deliver reports.

Report Class Represents report-specific information and methods that


enable delivery extensions to deliver reports to users.

RenderedOutputFile Class Represents the output from a rendering extension. A


RenderedOutputFile object contains the associated file name
and type information that is required by the delivery
extension in order to process the stream returned by the
rendering extension.

ISubscriptionBaseUIUserControl Interface A user control that represents the means to retrieve delivery
extension-specific subscription information from the user in
Report Manager (for example, an e-mail address or the path
to a file share).
See Also
Reporting Services Extensions
Implementing a Delivery Extension
Reporting Services Extension Library
Removing a Delivery Extension
11/2/2020 • 2 minutes to read • Edit Online

To remove a Reporting Services delivery extension, simply remove the Extension element for your delivery
extension from the configuration file. After the configuration information is removed, the delivery extension is
no longer available to the report server.
Once a delivery extension's corresponding Extension element is removed from the configuration file, it is no
longer registered with the report server. The report server removes the entry from the list of delivery extensions
and deactivates any subscriptions which use that delivery extension. When a delivery extension is removed,
users are no longer able to select it as a method of notification.

See Also
Implementing a Delivery Extension
Reporting Services Extension Library
Using a Notification Class for a Delivery Extension
11/2/2020 • 2 minutes to read • Edit Online

The Notification class is located in the Microsoft.ReportingServices.Interfaces namespace and represents


subscription information that delivery extensions use for delivering reports. The Notification class provides a
number of properties that can be used to render the reports for delivery, determine the status of the
notification, and set user data.

The notification is the central object of any delivery


When an event fires that is associated with a subscription that uses your custom delivery extension, a
notification is created that contains a Report object. The Report object encapsulates the functionality needed to
render a given report to a supported rendering format and contains report-specific properties, such as the URL
to the report on the server and the name of the report. For more information about the Report class, see Using
the Report Class for a Delivery Extension.
You pass the Notification object to the Deliver method of your delivery extension. Your Deliver method should
contain specific code to process the notification and to deliver the report.
For an example of how to use the Notification class, see SQL Server Reporting Services Product Samples.

Retry Functionality
Reporting Services allows you to create a retry queue for notifications that cannot immediately be delivered.
After the report server invokes the Deliver method of a delivery extension, the delivery extension can request
that the report server retry the delivery at a later point in time. If this occurs, the report server places the
notification in an internal queue and retries the delivery after a specific period of time has elapsed.
Administrators can configure the maximum number of retry attempts that the report server performs and the
period between retries in the delivery extension section of the RSReportServer.config file using the
MaxNumberOfRetries XML element and the PeriodBetweenRetries XML element. Notifications are
removed from the retry queue if delivery later succeeds or if the maximum number of retry attempts is reached.
If delivery fails after the maximum number of retries, the notification is discarded.

See Also
Implementing a Delivery Extension
Reporting Services Extension Library
Using the RenderedOutputFile Class for a Delivery
Extension
11/2/2020 • 2 minutes to read • Edit Online

The RenderedOutputFile class represents a data stream and information about the data stream's associated
properties. The Data property of the RenderedOutputFile class is used to represent a rendered report or report
resource as a Stream object.
The Render method of the Repor t object returns an array of one or more RenderedOutputFile objects that
together constitute a single rendered report. The first RenderedOutputFile object is the rendered report. Any
other RenderedOutputFile objects are resources that must be delivered along with the report data (for example,
an HTML file and associated images). Rendering extensions that are single-stream rendering extensions (IMAGE,
PDF, MHTML, and EXCEL) return only one RenderedOutputFile object in the array.
For an example of how to use the RenderedOutputFile class, see SQL Server Reporting Services Product
Samples.

See Also
Implementing a Delivery Extension
Reporting Services Extension Library
Using the Report Class for a Delivery Extension
11/2/2020 • 2 minutes to read • Edit Online

The Report class represents a report in the report server database. Any subscription is associated with a specific
report. The report is contained in the notification. Your delivery extension can use the Report object that is part
of the notification to render the report. The Report object also contains report-specific properties, such as the
URL to the report on the report server and the name of the report. These properties can all be used as part of
your delivery provider.
The Render method of the Report class can be used to render a report. The Render method returns an array of
one or more RenderedOutputFile objects that together comprise a single rendered report. The first
RenderedOutputFile object is the rendered report. Any other RenderedOutputFile objects are resources that
must be delivered along with the report data (for example, an HTML file and associated images). Rendering
extensions that are single-stream rendering extensions (IMAGE, PDF, MHTML, and Excel) return only one
RenderedOutputFile object in the array.
The RenderedOutputFile object, which contains the report stream, can be included as part of a delivery.
For an example of how to use the Report class, see SQL Server Reporting Services Product Samples

See Also
Implementing a Delivery Extension
Reporting Services Extension Library
Using the RenderedOutputFile Class for a Delivery Extension
Using the Setting Class for a Delivery Extension
11/2/2020 • 2 minutes to read • Edit Online

The Setting class is located in the Microsoft.ReportingServices.Interfaces namespace and represents information
about extension settings for a delivery extension. The Setting class provides infrastructure for storing
information about the settings that are required in order for a delivery extension to function properly. For
example, in Report Server E-Mail delivery, a user is required to supply settings specific to e-mail delivery, such
as the recipient's address, the sender's address, the subject line of the e-mail, and more. Undoubtedly, your
custom delivery providers will require the user to supply specific settings in order for the delivery extension to
deliver notifications and reports.
The Setting class is used when implementing the ExtensionSettings property of the IDeliveryExtension interface.
The Setting class is also used for processing the extension setting data that is supplied by a user when a
subscription or notification is created.
For an example of how to use the Setting class, see SQL Server Reporting Services Product Samples.

See Also
Implementing a Delivery Extension
Reporting Services Extension Library
Deploying a Rendering Extension
11/2/2020 • 3 minutes to read • Edit Online

After you have written and compiled your Reporting Services report rendering extension into a .NET Framework
library, you need to make it discoverable by the report server and by Report Designer. To do so, copy the
extension to the appropriate directory and add entries to the appropriate Reporting Services configuration files.

Configuration File Rendering Extension Element


Once a rendering extension has been compiled into a .DLL, you add an entry into the rsreportserver.config file.
By default, the location is %ProgramFiles%\Microsoft SQL Server\MSRS10_50.<InstanceName>\Reporting
Services\ReportServer. The parent element is <Render>. Under the Render element is an Extension element for
each rendering extension. The Extension element contains two attributes, Name and Type.
The following table describes the attributes for the Extension element for rendering extensions:

AT T RIB UT E DESC RIP T IO N

Name A unique name for the extension. The maximum length for
the Name attribute is 255 characters. The name must be
unique among all entries within the Extensions element of
a configuration file. If a duplicate name is present, the report
server returns an error.

Type A comma-separated list that includes the fully qualified


namespace along with the name of the assembly.

Visible A value of false indicates that the rendering extension


should not be visible in user interfaces. If the attribute is not
included, the default value is true .

LogAllExecutionRequests A value of false indicates that an entry is logged for only


the first report execution in a session. If the attribute is not
included, the default value is true .

For example, this setting determines whether to log an entry


for only the first page rendered in a report (when false ) or
an entry for each page rendered in the report (when true ).

For more information, see RsReportServer.config Configuration File.

Deploying the Extension to the Report Server


The report server uses rendering extensions to export reports to other formats. You should deploy your
rendering extension assembly to the report server as a private assembly. You also need to make an entry in the
report server configuration file, rsreportserver.config.
To deploy the assembly
1. Copy your assembly from your staging location to the bin directory of the report server on which you
want to use the rendering extension. The default location of the report server Bin directory is
%ProgramFiles%\Microsoft SQL Server\MSRS10_50.<InstanceName>\Reporting
Services\ReportServer\Bin.
2. After the assembly file is copied, open the rsreportserver.config file. The rsreportserver.config file is also
located in the report server bin directory. You need to make an entry in the configuration file for your
extension assembly file. You can open the file with Visual Studio or a simple text editor.
For more information, see RsReportServer.config Configuration File.
3. Locate the Render element in the Rsreportserver.config file. An entry for your newly created extension
should be made in the following location:

<Extensions>
<Render>
<extension configuration>
</Render>
</Extensions>

4. Add an entry for your rendering extension. Your entry should include an element that has values for
Name and Type , and might look like the following:

<Extension Name="My Rendering Extension Name" Type="CompanyName.ExtensionName.MyRenderingProvider,


AssemblyName" />

The value for Name is the unique name of the rendering extension. The value for Type is a comma-
separated list that includes an entry for the fully qualified namespace of your IRenderingExtension
implementation, followed by the name of your assembly (not including the .dll file extension). By default,
rendering extensions are visible. To hide an extension from user interfaces, such as Report Manager, add a
Visible attribute to the Extension element, and set it to false .

Verifying the deployment


You can also open Report Manager and verify that your extension is included in the list of available export types
for a report.

See Also
Implementing a Rendering Extension
Rendering Extensions Overview
Implementing the IRenderingExtension Interface
Security Considerations for Extensions
Implementing a Rendering Extension
11/2/2020 • 2 minutes to read • Edit Online

A rendering extension is a component or module of a report server that transforms report data and layout
information into a device-specific format. SQL Server Reporting Services includes six rendering extensions:
HTML, Excel, Word, CSV or Text, XML, Image, and PDF. You can create additional rendering extensions to generate
reports in other formats.

NOTE
To determine which rendering extensions are available, you can view the list of installed extensions in the
RSReportServer.config file.

In This Section
Rendering Extensions Overview
Introduces how to write a custom rendering extension for Reporting Services.
Implementing the IRenderingExtension Interface
Describes the attributes of a rendering extension.
Deploying a Rendering Extension
Describes how to deploy a rendering extension on a report server.
Removing a Rendering Extension
Describes how to remove a rendering extension from a report server.

See Also
Reporting Services Extensions
Reporting Services Extension Library
Implementing the IRenderingExtension Interface
11/2/2020 • 2 minutes to read • Edit Online

The rendering extension takes the results from a report definition that is combined with the actual data and
renders the resulting data to a format that is useable. The transformation of the combined data and formatting
is done by using a common language runtime (CLR) class that implements IRenderingExtension. This transforms
the object model into an output format that is consumable by a viewer, printer, or other output target.
The IRenderingExtension has three methods that must be coded:
Render - renders the report.
RenderStream - renders a specific stream from the report.
GetRenderingResource - gets additional information, such as icons, that are required for the report.
The following sections discuss these methods in more detail.

Render Method
The Render method contains arguments that represent the following objects:
The report that you want to render. This object contains properties, data, and layout information for the
report. The report is the root of the report object model tree.
The ServerParameters that contain the string dictionary object, with the parameters for the report server,
if any.
The deviceInfo parameter that contain the device settings. For more information, see Passing Device
Information Settings to Rendering Extensions.
The clientCapabilities parameter that contains a NameValueCollection dictionary object that has
information about the client to which you are rendering.
The RenderProperties that contains information about the rendering result.
The createAndRegisterStream is a delegate function to be called to get a stream to render into.
deviceInfo Parameter
The deviceInfo parameter contains rendering parameters, not report parameters. These rendering parameters
are passed to the rendering extension. The deviceInfo values are converted into a NameValueCollection object
by the report server. Items in the deviceInfo parameter are treated as case-insensitive values. If the render
request came as a result of URL access, the URL parameters in the form rc:key=value are converted to
key/value pairs in the deviceInfo dictionary object. The browser detection code also provides the following items
in the clientCapabilities dictionary: EcmaScriptVersion, JavaScript, MajorVersion, MinorVersion, Win32, Type, and
AcceptLanguage. Any name/value pair in the deviceInfo parameter that is not understood by the rendering
extension is ignored. The following code sample shows a sample GetRenderingResource method that retrieves
icons:
public void GetRenderingResource (CreateStream createStreamCallback, NameValueCollection deviceInfo)
{
string[] iconTagValues = deviceInfo.GetValues("Icon");
if ((iconTagValues != null) && (iconTagValues.Length > 0) )
{
// Create a stream to output to.
Stream outputStream = createStreamCallback(m_iconResourceName, "gif", null, "image/gif", false);
// Get the GIF image for one of the buttons on the toolbar
Image requiredImage = (Image) m_resourcemanager.GetObject(m_iconResourceName
// Write the image to the output stream
requiredImage.Save(outputStream, requiredImage.RawFormat);
}
return;
}

RenderStream Method
The RenderStream method renders a particular stream from the report. All streams are created during the initial
Render call, but the streams are not returned to the client initially. This method is used for secondary streams,
such as images in HTML rendering, or additional pages of a multi-page rendering extension, such as Image/EMF.

GetRenderingResource Method
The GetRenderingResource method retrieves the information without executing an entire rendering of the
report. There are times when the report requires information that does not require the report itself to be
rendered. For example, if you need the icon associated with the rendering extension, use the deviceInfo
parameter containing the single tag <Icon> . In these cases, you can use the GetRenderingResource method.

See Also
Implementing a Rendering Extension
Rendering Extensions Overview
Removing a Rendering Extension
11/2/2020 • 2 minutes to read • Edit Online

To remove a Reporting Services rendering extension, simply remove the Extension element for your rendering
extension from the rsreportserver.config file, located in %ProgramFiles%\Microsoft SQL
Ser ver\MSRS10_50.<Instance Name>\Repor ting Ser vices\Repor tSer ver folder. If you made entries for
a Report Designer as well as a report server, remove the Extension element from the RSReportDesigner
Configuration File as well. After the configuration information is removed, the rendering extension is no longer
available to the component.

See Also
Reporting Services Configuration Files
Implementing a Rendering Extension
Rendering Extensions Overview
Implementing the IRenderingExtension Interface
Security Considerations for Extensions
Deploying a Rendering Extension
Rendering Extensions Overview
3/5/2021 • 3 minutes to read • Edit Online

A rendering extension is a component or module of a report server that transforms report data and layout
information into a device-specific format. SQL Server Reporting Services includes seven rendering extensions:
HTML, Excel, Word, CSV or Text, XML, Image, and PDF. You can create additional rendering extensions to generate
reports in other formats.

NOTE
To determine which rendering extensions are available, you can view the list of installed extensions in the
RSReportServer.config file.

The following table describes the rendering extensions that are included with Reporting Services.

EXT EN SIO N N A M E DESC RIP T IO N

XML Renders a report in XML. The report opens in a browser.


Additional transformations applied to this XML output may
be a cost effective way of avoiding developing your own
rendering extension.

CSV Renders a report in comma-delimited format. The report


opens in a viewing tool associated with CSV file formats.

IMAGE Renders a report in a page-oriented format. The format is


shown as TIFF in the Export drop-down of the report
toolbar.

PDF Renders a report in the Adobe Acrobat Reader. The format is


shown as Acrobat (PDF) File in the Export drop-down of
the report toolbar.

EXCEL Renders a report in Microsoft Excel.

WORD Render a report in Microsoft Word.

HTML 4.0 (part of the HTML rendering extension) HTML is the format used to initially render the report. If
your browser support HTML 4.0, that is the format that is
used. Otherwise, HTML 3.2 is used.

MHTML (part of the HTML rendering extension) Renders a report in MHTML. The report opens in Internet
Explorer. The format is shown as Web Archive in the Export
drop-down of the report toolbar.

NULL Does not render a report to a specific format. This rendering


extension is useful for placing reports in cache. Null
rendering should be used in conjunction with a scheduled
execution or delivery.

For more information on the recommended formats and their uses, see Export Reports (Report Builder and
SSRS).
Each of the rendering extensions implemented by Microsoft and shipped with Reporting Services uses a
common set of interfaces. This ensures that each extension implements comparable functionality and reduces
the complexity of the rendering code in the core of the report server.

Rendering Object Model


When a report is processed, the result is a publicly exposed object model known as the Rendering Object Model
(ROM). The Rendering Object Model is a collection of classes that define the contents, layout, and data of a
report that has been processed. The ROM is available to developers who wish to design, develop, and deploy
custom rendering extensions for Reporting Services. ROM is produced when the report server processes a
report's XML definition along with the user-defined report data. When processing is complete, the public object
model is used by a rendering extension to define the output of the report. The ROM's available public classes are
defined in the Microsoft.Repor tingSer vices.OnDemandRepor tRendering namespace.

Writing Custom Rendering Extensions


Before you decide to create a custom rendering extension, you should evaluate simpler alternatives. You can:
Customize rendered output by specifying device information settings for existing extensions.
Add custom formatting and presentation features by combining XSL Transformations (XSLT) with the
output of the XML rendering format.
Writing a custom rendering extension is difficult. A rendering extension must typically support all possible
combinations of report elements and requires that you implement hundreds of classes, interfaces, methods, and
properties. If you must render a report in a format that is not included with Reporting Services and decide to
write your own managed code implementation of a rendering extension, the rendering extension code must
implement the Microsoft.Repor tingSer vices.OnDemandRepor tRendering.IRenderingExtension
interface, which is required by the report server.

See Also
Implementing a Rendering Extension
Reporting Services Extension Library
Authentication in Reporting Services
11/2/2020 • 6 minutes to read • Edit Online

Authentication is the process of establishing a user's right to an identity. There are many techniques that you can
use to authenticate a user. The most common way is to use passwords. When you implement Forms
Authentication, for example, you want an implementation that queries users for credentials (usually by some
interface that requests a login name and password) and then validates users against a data store, such as a
database table or configuration file. If the credentials can't be validated, the authentication process fails and the
user will assume an anonymous identity.

Custom Authentication in Reporting Services


In Reporting Services, the Windows operating system handles the authentication of users either through
integrated security or through the explicit reception and validation of user credentials. Custom authentication
can be developed in Reporting Services to support additional authentication schemes. This is made possible
through the security extension interface IAuthenticationExtension2. All extensions inherit from the IExtension
base interface for any extension deployed and used by the report server. IExtension, as well as
IAuthenticationExtension2, are members of the Microsoft.ReportingServices.Interfaces namespace.
The primary way to authenticate against a report server in Reporting Services is the LogonUser method. This
member of the Reporting Services Web service can be used to pass user credentials to a report server for
validation. Your underlying security extension implements IAuthenticationExtension2.LogonUser which
contains your custom authentication code. In the Forms Authentication sample, LogonUser , which performs an
authentication check against the supplied credentials and a custom user store in a database. An example of an
implementation of LogonUser looks like this:

public bool LogonUser(string userName, string password, string authority)


{
return AuthenticationUtilities.VerifyPassword(userName, password);
}

The following sample function is used to verify the supplied credentials:


internal static bool VerifyPassword(string suppliedUserName,
string suppliedPassword)
{
bool passwordMatch = false;
// Get the salt and pwd from the database based on the user name.
// See "How To: Use DPAPI (Machine Store) from ASP.NET," "How To:
// Use DPAPI (User Store) from Enterprise Services," and "How To:
// Create a DPAPI Library" for more information about how to use
// DPAPI to securely store connection strings.
SqlConnection conn = new SqlConnection(
"Server=localhost;" +
"Integrated Security=SSPI;" +
"database=UserAccounts");
SqlCommand cmd = new SqlCommand("LookupUser", conn);
cmd.CommandType = CommandType.StoredProcedure;

SqlParameter sqlParam = cmd.Parameters.Add("@userName",


SqlDbType.VarChar,
255);
sqlParam.Value = suppliedUserName;
try
{
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
reader.Read(); // Advance to the one and only row
// Return output parameters from returned data stream
string dbPasswordHash = reader.GetString(0);
string salt = reader.GetString(1);
reader.Close();
// Now take the salt and the password entered by the user
// and concatenate them together.
string passwordAndSalt = String.Concat(suppliedPassword, salt);
// Now hash them
string hashedPasswordAndSalt =
FormsAuthentication.HashPasswordForStoringInConfigFile(
passwordAndSalt,
"SHA1");
// Now verify them. Returns true if they are equal.
passwordMatch = hashedPasswordAndSalt.Equals(dbPasswordHash);
}
catch (Exception ex)
{
throw new Exception("Exception verifying password. " +
ex.Message);
}
finally
{
conn.Close();
}
return passwordMatch;
}

Authentication Flow
The Reporting Services Web service provides custom authentication extensions to enable Forms Authentication
by the web portal and the report server.
The LogonUser method of the Reporting Services Web service is used to submit credentials to the report server
for authentication. The Web service uses HTTP headers to pass an authentication ticket (known as a "cookie")
from the server to the client for validated logon requests.
The following illustration depicts the method of authenticating users to the Web service when your application
is deployed with a report server configured to use a custom authentication extension.
As shown in Figure 2, the authentication process is as follows:
1. A client application calls the Web service LogonUser method to authenticate a user.
2. The Web service makes a call to the LogonUser method of your security extension, specifically, the class
that implements IAuthenticationExtension2 .
3. Your implementation of LogonUser validates the user name and password in the user store or security
authority.
4. Upon successful authentication, the Web service creates a cookie and manages it for the session.
5. The Web service returns the authentication ticket to the calling application on the HTTP header.
When the Web service successfully authenticates a user through the security extension, it generates a cookie
that is used for subsequent requests. The cookie may not persist within the custom security authority because
the report server does not own the security authority. The cookie is returned from the LogonUser Web service
method and is used in subsequent Web service method calls and in URL access.

NOTE
In order to avoid compromising the cookie during transmission, authentication cookies returned from LogonUser should
be transmitted securely using Transport Layer Security (TLS), previously known as Secure Sockets Layer (SSL), encryption.

If you access the report server through URL access when a custom security extension is installed, Internet
Information Services (IIS) and ASP.NET automatically manage the transmission of the authentication ticket. If you
are accessing the report server through the SOAP API, your implementation of the proxy class must include
additional support for managing the authentication ticket. For more information about using the SOAP API and
managing the authentication ticket, see "Using the Web Service with Custom Security."

Forms Authentication
Forms Authentication is a type of ASP.NET authentication in which an unauthenticated user is directed to an
HTML form. Once the user provides credentials, the system issues a cookie containing an authentication ticket.
On later requests, the system first checks the cookie to see if the user was already authenticated by the report
server.
Reporting Services can be extended to support Forms Authentication using the security extensibility interfaces
available through the Reporting Services API. If you extend Reporting Services to use Forms Authentication, use
Transport Layer Security (TLS), previously known as Secure Sockets Layer (SSL), for all communications with the
report server to prevent malicious users from gaining access to another user's cookie. TLS enables clients and a
report server to authenticate each other and to ensure that no other computers can read the contents of
communications between the two computers. All data sent from a client through a TLS connection is encrypted
so that malicious users cannot intercept passwords or data sent to a report server.
Forms Authentication is generally implemented to support accounts and authentication for platforms other than
Windows. A graphical interface is presented to a user who requests access to a report server, and the supplied
credentials are submitted to a security authority for authentication.
Forms Authentication requires that a person is present to enter credentials. For unattended applications that
communicate directly with the Reporting Services Web service, Forms Authentication must be combined with a
custom authentication scheme.
Forms Authentication is appropriate for Reporting Services when:
You need to store and authenticate users that do not have Microsoft Windows accounts, and
You need to provide your own user interface form as a logon page between different pages on a Web
site.
Consider the following when writing a custom security extension that supports Forms Authentication:
If you use Forms Authentication, anonymous access must be enabled on the report server virtual
directory in Internet Information Services (IIS).
ASP.NET authentication must be set to Forms. You configure ASP.NET authentication in the Web.config file
for the report server.
Reporting Services can authenticate and authorize users with either Windows Authentication or custom
authentication, but not both. Reporting Services does not support simultaneous use of multiple security
extensions.

See Also
Implementing a Security Extension
Authorization in Reporting Services
11/2/2020 • 3 minutes to read • Edit Online

Authorization is the process of determining whether an identity should be granted the requested type of access
to a given resource in the report server database. Reporting Services uses a role-based authorization
architecture that grants a user access to a given resource based on the user's role assignment for the
application. Security extensions for Reporting Services contain an implementation of an authorization
component that is used to grant access to users once they are authenticated on the report server. Authorization
is invoked when a user attempts to perform an operation on the system or a report server item through the
SOAP API and via URL access. This is made possible through the security extension interface
IAuthorizationExtension2 . As stated previously, all extensions inherit from IExtension the base interface for
any extension that you deploy. IExtension and IAuthorizationExtension2 are members of the
Microsoft.Repor tingSer vices.Interfaces namespace.

Checking Access
In authorization, the key to any custom security implementation is the access check, which is implemented in the
CheckAccess method. CheckAccess is called each time a user attempts an operation on the report server. The
CheckAccess method is overloaded for each operation type. For folder operations, an example of an access
check might look like the following:

// Overload for Folder operations


public bool CheckAccess(
string userName,
IntPtr userToken,
byte[] secDesc,
FolderOperation requiredOperation)
{
// If the user is the administrator, allow unrestricted access.
if (userName == m_adminUserName)
return true;

AceCollection acl = DeserializeAcl(secDesc);


foreach(AceStruct ace in acl)
{
if (userName == ace.PrincipalName)
{
foreach(FolderOperation aclOperation in
ace.FolderOperations)
{
if (aclOperation == requiredOperation)
return true;
}
}
}
return false;
}

The report server calls the CheckAccess method by passing in the name of the logged-on user, a user token, the
security descriptor for the item, and the requested operation. Here you would check the security descriptor for
the user name and the appropriate permission to complete the request, then return true to signify that access is
granted or false to signify access is denied.

Security Descriptors
When setting authorization policies on items in the report server database, a client application (such as Report
Manager) submits the user information to the security extension along with a security policy for the item. This
security policy and user information are known collectively as a security descriptor. A security descriptor
contains the following information for an item in the report server database:
The group or user that has some type of permission to perform operations on the item.
The item's type.
A discretionary access control list controlling access to the item.
Security descriptors are created using the Web service SetPolicies and SetSystemPolicies methods.
Authorization Flow
Reporting Services authorization is controlled by the security extension currently configured to run on the
server. Authorization is role-based and limited to the permissions and operations supplied by the Reporting
Services security architecture. The following diagram depicts the process of authorizing users to operate on
items in the report server database:

As shown in this diagram, authorization follows this sequence:


1. Once authenticated, client applications make requests to the report server through the Reporting
Services Web service methods. An authentication ticket is passed to the report server in the form of a
cookie in the HTTP header of each Web request.
2. The cookie is validated prior to any access check.
3. Once the cookie is validated, the report server calls GetUserInfo and the user is given an identity.
4. The user attempts an operation through the Reporting Services Web service.
5. The report server calls the CheckAccess method.
6. The security descriptor is retrieved and passed to a custom security extension implementation of
CheckAccess. At this point, the user, group, or computer is compared to the security descriptor of the item
being accessed and is authorized to perform the requested operation.
7. If the user is authorized, the Web service performs the operation and returns a response to the calling
application.
How to install custom security extensions
11/2/2020 • 3 minutes to read • Edit Online

APPLIES TO: ✔
️ SQL Server 2016 Reporting Services and later ✔
️ Power BI Report Server
Reporting Services 2016 introduced a new web portal in order to host new Odata APIs and also host new report
workloads such as mobile reports and KPIS. This new portal relies on newer technologies and is isolated from
the familiar ReportingServicesService by running in a separate process. This process is not an ASP.NET hosted
application and as such breaks assumptions from existing custom security extensions. Moreover, the current
interfaces for custom security extensions don't allow for any external context to be passed-in, leaving
implementers with the only choice to inspect well-known global ASP.NET Objects, this required some changes to
the interface.

What Changed?
A new interface was introduced that can be implemented which provides an IRSRequestContext providing the
more common properties used by extensions to make decisions related to authentication.
In previous versions, Report Manager was the front-end and could be configured with its own custom login
page. In Reporting Services 2016, only one page hosted by reportserver is supported and should authenticate
to both applications.

Implementation
In previous versions, extensions could rely on a common assumption that ASP.NET objects would be readily
available. Since the new portal does not run in ASP.NET, the extension might hit issues with objects being NULL.
The most generic example is accessing HttpContext.Current to read request information such as headers and
cookies. In order to allow extensions to make the same decisions we introduced a new method in the extension
that provides request information and is called when authenticating from the portal.
Extensions have to implement the IAuthenticationExtension2 interface in order to leverage this. The extensions
will need to implement both versions of GetUserInfo method, as is called by the reportserver context and other
used in webhost process. The sample below shows one of the simple implementations for the portal where the
identity resolved by the reportserver is the one used.

public void GetUserInfo(IRSRequestContext requestContext, out IIdentity userIdentity, out IntPtr userId)
{
userIdentity = null;
if (requestContext.User != null)
{
userIdentity = requestContext.User;
}

// initialize a pointer to the current user id to zero


userId = IntPtr.Zero;
}

Deployment and Configuration


The basic configurations needed for custom security extension are the same as previous releases. Changes are
needed for web.config and rsreportserver.config: For more information, see Configure Custom or Forms
Authentication on the Report Server.
There is no longer a separate web.config for the Report Manager, the portal will inherit the same settings as the
reportserver endpoint.

Machine Keys
For the case of Forms authentication which requires the decryption of the Authentication cookie, both processes
need to be configured with the same machine key and decryption algorithm. This was a step familiar to those
who had previously setup Reporting Services to work on scale-out environments, but now is a requirement
even for deployments on a single machine.
You should use a validation key specific for you deployment, there are several tools to generate the keys like
Internet Information Services Manager (IIS). Other tools can be found on the internet.
SQL Server Reporting Services 2017 and later
\Repor tSer ver\rsRepor tSer ver.config
Add under <configuration> .

<machineKey validationKey="[YOUR KEY]" decryptionKey=="[YOUR KEY]" validation="AES" decryption="AES" />

SQL Server Reporting Services 2016


\Repor tSer ver\web.config
Add under <system.web> .

<machineKey validationKey="[YOUR KEY]" decryptionKey=="[YOUR KEY]" validation="AES" decryption="AES" />

\RSWebApp\Microsoft.Repor tingSer vices.Por tal.WebHost.exe.config


Add under <configuration> .

<system.web>
<machineKey validationKey=="[YOUR KEY]" decryptionKey=="[YOUR KEY]" validation="AES" decryption="AES"
/>
</system.web>

Power BI Report Server


This is available as of the June 2017 (Build 14.0.600.301) release.
\Repor tSer ver\rsRepor tSer ver.config
Add under <configuration> .

<machineKey validationKey="[YOUR KEY]" decryptionKey=="[YOUR KEY]" validation="AES" decryption="AES" />

Configure Passthrough cookies


The new portal and the reportserver communicate using internal soap APIs for some of its operations (similar
to the previous version of the Report Manager). When additional cookies are required to be passed from the
portal to the server the PassThroughCookies properties is still available. For more information, see Configure
the Web Portal to Pass Custom Authentication Cookies.
<UI>
<CustomAuthenticationUI>
<PassThroughCookies>
<PassThroughCookie>sqlAuthCookie</PassThroughCookie>
</PassThroughCookies>
</CustomAuthenticationUI>
</UI>

Next steps
Configure Custom or Forms Authentication on the Report Server
Configure Report Manager to Pass Custom Authentication Cookies
More questions? Try asking the Reporting Services forum
Implementing a Security Extension
11/2/2020 • 2 minutes to read • Edit Online

Microsoft Windows Authentication is the primary system for securing reports in SQL Server Reporting Services.
In certain cases, however, you may need to extend the Reporting Services security system to accommodate
custom security in your enterprise. You can do this using the development platform provided by the Reporting
Services API. This section will present an overview of security extensions in Reporting Services.
For complete details about implementing, deploying, and removing a Reporting Services security extension,
please see SQL Server Reporting Services Product Samples.

In This Section
Security Extensions Overview
Provides an overview of Reporting Services Security Extensions.
Authentication in Reporting Services
Discusses authentication in Reporting Services.
Authorization in Reporting Services
Covers authorization in Reporting Services.

See Also
Microsoft.ReportingServices.Interfaces
Reporting Services Extensions
Reporting Services Extension Library
Security Extensions Overview - Reporting Services
(SSRS)
11/2/2020 • 2 minutes to read • Edit Online

A Reporting Services security extension enables the authentication and authorization of users or groups; that is,
it enables different users to log on to a report server and, based on their identities, perform different tasks or
operations. By default, Reporting Services uses a Windows-based authentication extension, which uses
Windows account protocols to verify the identities of users who claim to have accounts on the system.
Reporting Services uses a role-based security system to authorize users. The Reporting Services role-based
security model is similar to the role-based security models of other technologies.
Because security extensions are based on an open and extensible API, you can create new authentication and
authorization extensions in Reporting Services. The following is an example of a typical security extension
implementation that uses Forms-based authentication and authorization:

As shown in the illustration, authentication and authorization occur as follows:


1. A user tries to access the web portal by using a URL and is redirected to a form that collects user
credentials for the client application.
2. The user submits credentials to the form.
3. The user credentials are submitted to the Reporting Services Web service through the LogonUser
method.
4. The Web service calls the customer-supplied security extension and verifies that the user name and
password exist in the custom security authority.
5. After authentication, the Web service creates an authentication ticket (known as a "cookie"), manages the
ticket, and verifies the user's role for the Home page of the web portal.
6. The Web service returns the cookie to the browser and displays the appropriate user interface in the web
portal.
7. After the user is authenticated, the browser makes requests to the web portal while transmitting the
cookie in the HTTP header. These requests are in response to user actions within the web portal.
8. The cookie is transmitted in the HTTP header to the Web service along with the requested user operation.
9. The cookie is validated, and if it is valid, the report server returns the security descriptor and other
information relating to the requested operation from the report server database.
10. If the cookie is valid, the report server makes a call to the security extension to check if the user is
authorized to perform the specific operation.
11. If the user is authorized, the report server performs the requested operation and returns control to the
caller.
12. After the user is authenticated, URL access to the report server uses the same cookie. The cookie is
transmitted in the HTTP header.
13. The user continues to request operations on the report server until the session has ended.

When to Implement a Security Extension


We recommend that you use Windows Authentication if at all possible. However, custom authentication and
authorization for Reporting Services may be appropriate in the following two cases:
You have an Internet or extranet application that cannot use Windows accounts.
You have custom-defined users and roles and need to provide a matching authorization scheme in
Reporting Services.

See Also
Implementing a Security Extension
Code Access Security in Reporting Services
11/2/2020 • 4 minutes to read • Edit Online

Code access security centers on these core concepts: evidence, code groups, and named permission sets. In
Reporting Services, the Report Manager, Report Designer, and Report Server components each have a policy file
that configures code access security for custom assemblies as well as data, delivery, rendering, and security
extensions. The following sections provide an overview of code access security. For more detailed information
about the topics covered in this section, see "Security Policy Model" in the Microsoft .NET Framework SDK
documentation.
Reporting Services uses code access security because, although the report server is built on ASP.NET technology,
there is a substantial difference between a typical ASP.NET application and the report server. A typical ASP.NET
application does not execute user code. In contrast, Reporting Services uses an open and extensible architecture
that allows users to program against the report definition files using the Code element of the Report Definition
Language and to develop specialized functionality into a custom assembly for use in reports. Furthermore,
developers can design and deploy powerful extensions that enhance the capabilities of the report server. With
this power and flexibility comes the need to provide as much protection and security as possible.
Reporting Services developers can use any .NET Framework assembly in their reports and natively call upon all
of the functionality of assemblies deployed to the global assembly cache. The only thing that the report server
can control is what permissions are given for report expressions and loaded custom assemblies. In Reporting
Services, custom assemblies receive Execute -only permissions by default.

Evidence
Evidence is the information that the common language runtime (CLR) uses to determine a security policy for
code assemblies. Evidence indicates to the runtime that code has a particular characteristic. Common forms of
evidence include digital signatures and the location of an assembly. Evidence can also be custom designed to
represent other information that is meaningful to the application.
Both assemblies and application domains receive permissions based on evidence. For example, the location of
an assembly that Reporting Services is attempting to access is one common form of evidence for weak-named
assemblies. This is known as URL evidence. URL evidence for a custom data processing extension deployed to a
report server might be "C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting
Services\ReportServer\bin\Microsoft.Samples.ReportingServices.FsiDataExtension.dll". The strong name or
digital signature of an assembly is another common form of evidence. In this case, the evidence is the public key
information for an assembly.

Code Groups
A code group is a logical grouping of code that has a specified condition for membership. Any code that meets
the membership condition is included in the group. Administrators configure a security policy by managing
code groups and their associated permission sets.
A membership condition for a code group is based on evidence. For example, a URL membership for a code
group is based on URL evidence. The common language runtime (CLR) uses identifying characteristics such as
URL evidence to describe the code and to determine whether a group's membership condition has been met.
For example, if the membership condition of a code group is "code in the assembly C:\Program Files\Microsoft
SQL Server\MSRS10_50.MSSQLSERVER\Reporting
Services\ReportServer\bin\Microsoft.Samples.ReportingServices.FsiDataExtension.dll", the runtime examines
the evidence to determine whether the code originates from that location. An example of a configuration entry
for this type of code group might look like the following:

<CodeGroup class="UnionCodeGroup"
version="1"
PermissionSetName="FullTrust"
Name="MyCodeGroup"
Description="Code group for my data processing extension">
<IMembershipCondition class="UrlMembershipCondition"
version="1"
Url="C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting
Services\ReportServer\bin\Microsoft.Samples.ReportingServices.FsiDataExtension.dll"
/>
</CodeGroup>

You should work with your system administrator or application deployment expert to determine the type of
code access security and code groups that your custom assemblies or Reporting Services extensions require.

Named Permission Sets


A named permission set is a set of permissions that administrators can associate with a code group. Most
named permission sets consist of at least one permission, a name, and description for the permission set.
Administrators can use named permission sets to establish or modify the security policy for code groups. More
than one code group can be associated with the same named permission set. The CLR provides built-in named
permission sets; among these are Nothing , Execution , Internet , LocalIntranet , Ever ything , and FullTrust .

NOTE
Custom data, delivery, rendering, and security extensions in Reporting Services must run under the FullTrust permission
set. Work with your system administrator to add the appropriate code group and membership conditions for your
Reporting Services extensions.

You can associate your own custom levels of permissions for custom assemblies that you use with reports. For
example, if you want to allow an assembly to access a specific file, you can create a new named permission set
with specific file I/O access and then assign the permission set to your code group. The following permission set
grants read-only access to the file MyFile.xml:

<PermissionSet class="NamedPermissionSet"
version="1"
Name="MyNewFilePermissionSet"
Description="A special permission set that grants read access to my file.">
<IPermission class="FileIOPermission"
version="1"
Read="C:\MyFile.xml"/>
<IPermission class="SecurityPermission"
version="1"
Flags="Assertion, Execution"/>
</PermissionSet>

A code group that you grant this permission set might look like the following:
<CodeGroup class="UnionCodeGroup"
version="1"
PermissionSetName="MyNewFilePermissionSet"
Name="MyNewCodeGroup"
Description="A special code group for my custom assembly.">
<IMembershipCondition class="UrlMembershipCondition"
version="1"
Url="C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting
Services\ReportServer\bin\MyCustomAssembly.dll"/>
</CodeGroup>

See Also
Secure Development (Reporting Services)
Secure Development (Reporting Services)
11/2/2020 • 2 minutes to read • Edit Online

The Microsoft .NET Framework provides a robust security system that can run code in tightly constrained,
administrator-defined security contexts. Reporting Services uses the .NET Framework security system, known as
code access security (or evidence-based security). Under code access security, a user may be trusted to access a
resource, but if the code the user executes is not trusted, access to the resource will be denied.
Security based on code, as opposed to specific users, permits security to be expressed for custom assemblies or
data, delivery, rendering, and security extensions that you develop for Reporting Services. Your extension code
may be executed by any number of Reporting Services users, all of whom are unknown at development time.
The custom assemblies or extensions that you develop require specific security policies in Reporting Services.
These security policies are represented as types in the .NET Framework. For a more information about code
access security, see "Code Access Security" in the .NET Framework documentation.

In This Section
Code Access Security in Reporting Services
Introduces code access security and policy configuration for custom assemblies and extensions in Reporting
Services.
Understanding Security Policies
Describes the various assembly types in Reporting Services and how code access security affects code
permissions.
Using Reporting Services Security Policy Files
Describes the different Reporting Services components and the corresponding policy configuration files.
Understanding Security Policies
11/2/2020 • 4 minutes to read • Edit Online

Any code that is executed by a report server must be part of a specific code access security policy. These security
policies consist of code groups that map evidence to a set of named permission sets. Often, code groups are
associated with a named permission set that specifies the allowable permissions for code in that group. The
runtime uses evidence provided by a trusted host or by the loader to determine which code groups the code
belongs to and, therefore, which permissions to grant the code. Reporting Services adheres to this security
policy architecture as defined by the Microsoft .NET Framework common language runtime (CLR). The following
sections describe the various types of code in Reporting Services and the policy rules associated with them.

Report Server Assemblies


Report server assemblies are those that contain code that is part of the Reporting Services product. Reporting
Services is written using managed code assemblies; all of these assemblies are strong-named (that is, digitally
signed). The code groups for these assemblies are defined using the StrongNameMembershipCondition ,
which provides evidence based on public key information for the assembly's strong name. The code group is
granted the FullTrust permission set.

Report Server Extensions (Rendering, Data, Delivery, and Security)


Report server extensions are custom data, delivery, rendering, and security extensions that you or other third-
parties create in order to extend the functionality of Reporting Services. You must grant FullTrust to these
extensions or assembly code in the policy configuration files associated with the Reporting Services component
you are extending. Extensions shipped as a part of Reporting Services are signed with the report server public
key and receive the FullTrust permission set.

IMPORTANT
You must modify the Reporting Services policy configuration files to allow FullTrust for any third-party extensions. If you
do not add a code group with FullTrust for your custom extensions, they cannot be used by the report server.

For more information about the policy configuration files in Reporting Services, see Using Reporting Services
Security Policy Files.

Expressions Used in Reports


Report expressions are inline code expressions or user-defined methods contained within the Code element of
a report definition language file. There is a code group that is already configured in the policy files that grants
these expressions the Execution permission set by default. The code group looks like the following:
<CodeGroup
class="UnionCodeGroup"
version="1"
PermissionSetName="Execution"
Name="Report_Expressions_Default_Permissions"
Description="This code group grants default permissions for code in report expressions and Code element.
">
<IMembershipCondition
class="StrongNameMembershipCondition"
version="1"
PublicKeyBlob="002400..."
/>
</CodeGroup>

Execution permission allows code to run (execute), but not to use protected resources. All expressions found
within a report are compiled into an assembly (called an "expression host" assembly) that is stored as a part of
the compiled report. When the report is executed, the report server loads the expression host assembly and
makes calls into that assembly to execute expressions. Expression host assemblies are signed with a specific key
that is used to define the code group for all expression hosts.
Report expressions reference report object model collections (fields, parameters, etc.) and perform simple tasks
like arithmetic and string operations. Code that performs these simple operations only requires Execution
permission. By default, user-defined methods in the Code element and any custom assemblies are granted
Execution permission in Reporting Services. Thus, for most expressions, the current configuration does not
require that you modify any security policy files. To grant additional permissions to expression host assemblies,
an administrator needs to modify the policy configuration files of the report server and Report Designer, and
change the report expressions code group. Because it is a global setting, changing default permissions for the
expression hosts affects all reports. For this reason, it is highly recommended that you place all code that
requires additional security into a custom assembly. Only this assembly will be granted the permissions you
need.

IMPORTANT
Code that calls external assemblies or protected resources should be incorporated into a custom assembly for use in
reports. Doing so gives you more control over the permissions requested and asserted by your code. You should not
make calls to secure methods within the Code element. Doing so requires you to grant FullTrust to the report
expression host and grants all custom code full access to the CLR.

Cau t i on

Do not grant FullTrust to the code group for a report expression host. If you do, you enable all report
expressions to make protected system calls.

Custom Assemblies Referenced in Reports


Some report expressions can call third-party code assemblies, also known in Reporting Services as custom
assemblies. The report server expects these assemblies to have at least Execution permission in the policy
configuration files. By default, policy files that ship with Reporting Services grant Execution permission to all
assemblies starting from the 'My Computer' zone. You can grant additional permissions to custom assemblies
as needed.
In some cases, you may need to perform an operation that requires specific code permissions in a report
expression. Typically, this means that a report expression needs to make a call to a secured CLR library method
(such as one that accesses files or the system registry). The .NET Framework documentation describes the code
permissions that are required to make this secure call; to execute the call, the calling code must be granted these
specific, secure permissions. If you make the call from a report expression or the Code element, the expression
host assembly must be granted the appropriate permissions. However, once you grant the expression host the
permissions, all code that runs in any expression in any report is now granted that specific permission. It is
much more secure to make the call from a custom assembly and grant that custom assembly the specific
permissions.

See Also
Code Access Security in Reporting Services
Secure Development (Reporting Services)
Using Reporting Services Security Policy Files
11/2/2020 • 3 minutes to read • Edit Online

Reporting Services stores component security policy information in three configuration files that are copied to
the file system during setup. These configuration files can contain a combination of internal-use and user-
defined security policies for code assemblies in Reporting Services. The three configuration files correspond to
three securable components in Reporting Services: The report server and Windows service, the Report Manager
Web application, and the Report Designer preview window.

NOTE
There are two preview modes for Report Designer: the preview tab and the pop-up preview window that is launched
when your Report Project is started in DebugLocal mode. The Preview tab is not a securable component and does not
apply security policy settings. The preview window is meant to simulate the report server functionality and therefore has a
policy configuration file that you or an administrator must modify to use custom assemblies and custom extensions in
Report Designer.

The security policy configuration files contain security class information, some default named permission sets,
and the code groups for assemblies in Reporting Services. The policy configuration files of Reporting Services
are similar to the Security.config file that determines the code group hierarchy and permission sets associated
with machine and enterprise level policies in the .NET Framework. The location of this file is
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\security.config.

Policy Files in Reporting Services


The following table lists the policy configuration files in Reporting Services, their locations (assuming a default
installation), and their respective functions.

F IL E N A M E LO C AT IO N ( DEFA ULT IN STA L L AT IO N ) DESC RIP T IO N

rssrvpolicy.config C:\Program Files\Microsoft SQL The report server policy configuration


Server\MSRS10_50.MSSQLSERVER\Rep file. These security policies primarily
orting Services\ReportServer affect report expressions and custom
assemblies once a report is deployed
to a report server. This policy file also
affects custom data, delivery, rendering
and security extensions deployed to
the report server.

rsmgrpolicy.config C:\Program Files\Microsoft SQL Report Manager policy configuration


Server\MSRS10_50.MSSQLSERVER\Rep file. These security policies affect all
orting Services\ReportManager assemblies that extend Report
Manager; for example, subscription
user interface extensions for custom
delivery.
F IL E N A M E LO C AT IO N ( DEFA ULT IN STA L L AT IO N ) DESC RIP T IO N

rspreviewpolicy.config C:\Program Files\Microsoft Visual The Report Designer stand-alone


Studio preview policy configuration file. These
9.0\Common7\IDE\PrivateAssemblies security policies affect custom
assemblies and report expressions that
are used in reports during preview and
development. These policies also affect
custom extensions, such as data
processing extensions, that are
deployed to Report Designer.

Modifying Configuration Files


Configuration settings are specified as either XML elements or attributes. If you understand XML and
configuration files, you can use a text or code editor to modify user-definable settings. Security configuration
files contain information about the code group hierarchy and permission sets associated with a policy level in
Reporting Services. It is recommended that you use the .NET Framework Configuration Utility (Mscorcfg.msc) or
Code Access Security Policy Utility (Caspol.exe) to modify security policies in the Security.config file first, so that
policy changes correspond to valid XML configuration elements for policy files. Once you have done that, you
can cut and paste the new code groups and permission sets from Security.config to the policy file for the
component to which you are adding code permissions.

IMPORTANT
You should backup your policy configuration files prior to making any changes.

Using this approach accomplishes two things. First, it enables you to use a visual tool to build your code groups
and permission sets for Reporting Services. This is much easier than writing XML configuration elements from
scratch. Secondly, it ensures that you do not corrupt the security policy configuration files with malformed XML
elements and attributes. For more information about the Code Access Security Policy Utility, see Using Reporting
Services Security Policy Files on MSDN.
Before modifying policy configuration files, you should read all the information available in this section and
related topics. Modifying the policy configuration of Reporting Services can have a significant security impact on
how Reporting Services components execute external code modules.

Placement of CodeGroup Elements for Extensions


The placement of CodeGroup elements in a security policy file is important. For extensions and custom
assemblies that you develop, it is recommended that you place your custom code groups directly below the
existing entry for the URL membership "$CodeGen$/*", as indicated by the following:
<CodeGroup
class="UnionCodeGroup"
version="1"
PermissionSetName="FullTrust">
<IMembershipCondition
class="UrlMembershipCondition"
version="1"
Url="$CodeGen$/*"
/>
</CodeGroup>
<CodeGroup
class="UnionCodeGroup"
version="1"
PermissionSetName="FullTrust"
Name="MyCustomCodeGroup"
Description="Code group for my custom extension">
<IMembershipCondition class="UrlMembershipCondition"
version="1"
Url="C:\Program Files\Microsoft SQL Server\MSSQL\Reporting Services\ReportServer\bin\MyAssembly.dll"
/>
</CodeGroup>

Additional code groups can be added one after another.

See Also
Understanding Security Policies
Reporting Services Extensions
11/2/2020 • 2 minutes to read • Edit Online

The modular architecture of Reporting Services is designed for extensibility. A managed code API is available so
that you can easily develop, install, and manage extensions consumed by many Reporting Services components.
You can create private or shared assemblies using the Microsoft .NET Framework and add new Reporting
Services functionality to meet your evolving business needs.
The unique extensibility architecture of Reporting Services enables developers to extend specific features of the
product and its components. Currently, broad support exists for extending the data processing capabilities of
Reporting Services. The data processing API includes familiar, .NET Framework data provider constructs and
conventions that enable developers to build additional data processing into Reporting Services. These data
processing extensions add functionality to both the Report Server and Report Designer, enabling seamless
integration of custom data into reports.
Another supported extension is the delivery extension. The delivery API is fully integrated with the .NET
Framework architecture, enabling a wide variety of delivery mechanisms to be used when sending report
notifications to users. You can extend the Report Server to provide custom delivery to users and you can extend
the subscription management pages of Report Manager to enable subscriptions that use custom delivery
extensions.
Another report server extension, Report Definition Customization Extension (RDCE), can dynamically customize
a report definition before it is passed to the processing engine. You might customize reports based on factors
such as users or languages. For example, you might want to implement different views for various users such as
managers or members of a department, or you might want to customize a report to have a different layout
when it is rendered in French or Arabic.

In This Section
Security Considerations for Extensions
Describes security issues related to developing and deploying Reporting Services extensions.
Implementing a Data Processing Extension
Describes the requirements and steps for implementing a data processing extension for Reporting Services.
Implementing a Delivery Extension
Describes the requirements and steps for implementing a delivery extension for Reporting Services.
Implementing a Rendering Extension
Contains an introduction to developing rendering extensions.
Implementing a Security Extension
Describes the requirements and steps for implementing a Reporting Services security extension.
Reporting Services Extension Library
Contains the programming reference for the extension API library for the Reporting Services extensibility
features.
Security Considerations for Extensions
11/2/2020 • 2 minutes to read • Edit Online

Every application that targets the common language runtime (CLR) must interact with the CLR security system.
When such an application runs, it is automatically evaluated and given a set of permissions by the CLR.
Depending on the permissions that the application receives, it either continues running or generates a security
exception. The local security settings and policies in the security policy configuration files for a particular report
server define the code permissions that an assembly receives.
Before requesting permissions, you need to be aware of the resources and protected operations your extension
code is planning to use, and you also need to know which permissions protect those resources and operations.
In addition, you need to keep track of any resources accessed by any class library methods that are called by the
extension components. For more information, see "Requesting Permissions" in the .NET Framework Developer's
Guide.
Extensions deployed to a report server must run as fully trusted, meaning that your extension needs to be part
of a code group that is granted the FullTrust permission set. This also means that your extension may have
access to certain server resources and operations available through the CLR depending on the user that is being
authenticated for a particular report. For more information about code groups and extensions, see Code Access
Security in Reporting Services.

IMPORTANT
Reporting Services enforces .NET Framework security for all of its extensions.

The following conditions apply to the deployment of data processing, delivery, rendering, and security
extensions in Reporting Services:
Only the local administrator has permission to deploy an extension.
Only users with the appropriate read/write permissions can change the configuration files for the
Reporting Services component that is being extended.
Only privileged users have permission to edit the security policy files and enable code access security for
an extension.
For more information about code access security in Reporting Services, see Secure Development (Reporting
Services).
For more information about .NET Framework security, see ".NET Framework Security" in your .NET Framework
Developer's Guide.

Initialization of Extension Assemblies


When extensions are first loaded into memory by the report server, they use the service account credentials,
because some extension assemblies require specific permissions to access system resources, to read
configuration files, and to load other, dependent assemblies. After an assembly has been loaded and initialized,
however, all subsequent calls to extension assemblies use the credentials of the user account that is currently
logged on.

See Also
Reporting Services Extensions
Reporting Services Extension Library
Creating a Custom Report Item Design-Time
Component
3/5/2021 • 5 minutes to read • Edit Online

A custom report item design-time component is a control that can be used in the Visual Studio Report Designer
environment. The custom report item design-time component provides an activated design surface that can
accept drag-and-drop operations, integration with the Visual Studio property browser, and the ability to provide
custom property editors.
With a custom report item design-time component, the user can position a custom report item on a report in
the design environment, set custom data properties on the custom report item, and then save the custom report
item as part of the report project.
The properties that are set using the design-time component in the development environment are serialized
and deserialized by the host design environment and then stored as elements in the Report Definition Language
(RDL) file. When the report is executed by the report processor, the properties that are set using the design-time
component are passed by the report processor to a custom report item run-time component, which renders the
custom report item and passes it back to the report processor.

NOTE
The custom report item design-time component is implemented as a Microsoft.NET Framework component. This
document will describe implementation details specific to the custom report item design-time component. For more
information about developing components using the .NET Framework, see Components in Visual Studio in the MSDN
library.

For a sample of a fully implemented custom report item, see SQL Server Reporting Services Product Samples.

Implementing a Design-Time Component


The main class of a custom report item design-time component is inherited from the
Microsoft.Repor tDesigner.CustomRepor tItemDesigner class. In addition to the standard attributes used
for a .NET Framework control, your component class should define a CustomRepor tItem attribute. This
attribute must correspond to the name of the custom report item as it is defined in the reportserver.config file.
For a list of .NET Framework attributes, see Attributes in the .NET Framework SDK documentation.
The following code example shows attributes being applied to a custom report item design-time control:

namespace PolygonsCRI
{
[LocalizedName("Polygons")]
[Editor(typeof(CustomEditor), typeof(ComponentEditor))]
[ToolboxBitmap(typeof(PolygonsDesigner),"Polygons.ico")]
[CustomReportItem("Polygons")]

public class PolygonsDesigner : CustomReportItemDesigner


{
...

Initializing the Component


You pass user-specified properties for a custom report item using a CustomData class. Your implementation of
the CustomRepor tItemDesigner class should override the InitializeNewComponent method to create a
new instance of your component's CustomData class and set it to default values.
The following code example shows an example of a custom report item design-time component class overriding
the CustomRepor tItemDesigner.InitializeNewComponent method to initialize the component's
CustomData class:

public override void InitializeNewComponent()


{
CustomData = new CustomData();
CustomData.DataRowHierarchy = new DataHierarchy();

// Shape grouping
CustomData.DataRowHierarchy.DataMembers.Add(new DataMember());
CustomData.DataRowHierarchy.DataMembers[0].Group = new Group();
CustomData.DataRowHierarchy.DataMembers[0].Group.Name = Name + "_Shape";
CustomData.DataRowHierarchy.DataMembers[0].Group.GroupExpressions.Add(new ReportExpression());

// Point grouping
CustomData.DataRowHierarchy.DataMembers[0].DataMembers.Add(new DataMember());
CustomData.DataRowHierarchy.DataMembers[0].DataMembers[0].Group = new Group();
CustomData.DataRowHierarchy.DataMembers[0].DataMembers[0].Group.Name = Name + "_Point";
CustomData.DataRowHierarchy.DataMembers[0].DataMembers[0].Group.GroupExpressions.Add(new
ReportExpression());

// Static column
CustomData.DataColumnHierarchy = new DataHierarchy();
CustomData.DataColumnHierarchy.DataMembers.Add(new DataMember());

// Points
IList<IList<DataValue>> dataValues = new List<IList<DataValue>>();
CustomData.DataRows.Add(dataValues);
CustomData.DataRows[0].Add(new List<DataValue>());
CustomData.DataRows[0][0].Add(NewDataValue("X", ""));
CustomData.DataRows[0][0].Add(NewDataValue("Y", ""));
}

Modifying Component Properties


You can modify CustomData properties in the design environment in several ways. You can modify any
properties that are exposed by the design-time component that are marked with the BrowsableAttribute
attribute by using the Visual Studio property browser. In addition, you can modify properties by dragging items
onto the custom report item's design surface, or by right-clicking the control in the design environment and
selecting Proper ties on the shortcut menu to display a custom properties window.
The following code example shows a
Microsoft.Repor tDesigner.CustomRepor tItemDesigner.CustomData property that has the
BrowsableAttribute attribute applied:

[Browsable(true), Category("Data")]
public string DataSetName
{
get
{
return CustomData.DataSetName;
}
set
{
CustomData.DataSetName = value;
}
}
You can provide your design-time component with a custom properties editor dialog box. The custom property
editor implementation should inherit from the ComponentEditor class, and it should create an instance of a
dialog box that can be used for property editing.
The following example shows an implementation of a class that inherits from ComponentEditor and displays a
custom property editor dialog box:

internal sealed class CustomEditor : ComponentEditor


{
public override bool EditComponent(
ITypeDescriptorContext context, object component)
{
PolygonsDesigner designer = (PolygonsDesigner)component;
PolygonProperties dialog = new PolygonProperties();
dialog.m_designerComponent = designer;
DialogResult result = dialog.ShowDialog();
if (result == DialogResult.OK)
{
designer.Invalidate();
designer.ChangeService().OnComponentChanged(designer, null, null, null);
return true;
}
else
return false;
}
}

Your custom property editor dialog box can invoke the Report Designer Expression Editor. In the following
example, the Expression Editor is invoked when the user selects the first element in the combo box:

private void EditableCombo_SelectedIndexChanged(object sender,


EventArgs e)
{
ComboBox combo = (ComboBox)sender;
if (combo.SelectedIndex == 0 && m_launchEditor)
{
m_launchEditor = false;
ExpressionEditor editor = new ExpressionEditor();
string newValue;
newValue = (string)editor.EditValue(null, m_designerComponent.Site, m_oldComboValue);
combo.Items[0] = newValue;
}
}

Using Designer Verbs


A designer verb is a menu command linked to an event handler. You can add designer verbs that will appear in a
component's shortcut menu when your custom report item run-time control is being used in the design
environment. You can return the list of available designer verbs from your run-time component by using the
Verbs property.
The following code example shows a designer verb and an event handler being added to the
DesignerVerbCollection, as well as the event handler code:
public override DesignerVerbCollection Verbs
{
get
{
if (m_verbs == null)
{
m_verbs = new DesignerVerbCollection();
m_verbs.Add(new DesignerVerb("Proportional Scaling", new EventHandler(OnProportionalScaling)));
m_verbs[0].Checked = (GetCustomProperty("poly:Proportional") == bool.TrueString);
}

return m_verbs;
}
}

private void OnProportionalScaling(object sender, EventArgs e)


{
bool proportional = !
(GetCustomProperty("poly:Proportional") == bool.TrueString);
m_verbs[0].Checked = proportional;
SetCustomProperty("poly:Proportional", proportional.ToString());
ChangeService().OnComponentChanged(this, null, null, null);
Invalidate();
}

Using Adornments
Custom report item classes can also implement a Microsoft.Repor tDesigner.Design.Adornment class. An
adornment allows the custom report item control to provide areas outside the main rectangle of the design
surface. These areas can handle user interface events, such as mouse clicks and drag-and-drop operations. The
Adornment class that is defined in the Reporting Services Microsoft.Repor tDesigner namespace is a pass-
through implementation of the Adorner class found in Windows Forms. For complete documentation on the
Adorner class, see Behavior Service Overview in the MSDN library. For sample code that implements a
Microsoft.Repor tDesigner.Design.Adornment class, see SQL Server Reporting Services Product Samples.
For more information about programming and using Windows Forms in Visual Studio, see these topics in the
MSDN Library:
Design-Time Attributes for Components
Components in Visual Studio
Walkthrough: Creating a Windows Forms Control that Takes Advantage of Visual Studio Design-Time
Features

See Also
Custom Report Item Architecture
Creating a Custom Report Item Run-Time Component
Custom Report Item Class Libraries
How to: Deploy a Custom Report Item
Creating a Custom Report Item Run-Time
Component
3/19/2020 • 3 minutes to read • Edit Online

The custom report item run-time component is implemented as a Microsoft .NET Framework component using
any CLS-compliant language, and is called by the report processor at run time. You define the properties for the
run-time component in the design environment by modifying the custom report item's corresponding design-
time component.
For a sample of a fully implemented custom report item, see SQL Server Reporting Services Product Samples.

Definition and Instance Objects


Before implementing a custom report item it is important to understand the difference between definition
objects and instance objects. Definition objects provide the RDL representation of the custom report item
whereas instance objects are the evaluated versions of the definition objects. There is only one definition object
for each item on the report. When accessing properties on a definition object that contain expressions, you will
get the unevaluated expression string. Instance objects contain the evaluated versions of the definition objects
and can have a one-to-many relationship with an item's definition object. For example, if a report has a Tablix
data region that contains a CustomReportItem in a detail row, there will be only one definition object but there
will be an instance object for each row in the data region.

Implementing the ICustomReportItem Interface


To create a CustomRepor tItem run-time component you will need to implement the ICustomReportItem
interface that is defined in the Microsoft.ReportingServices.ProcessingCore.dll:

namespace Microsoft.ReportingServices.OnDemandReportRendering
{
public interface ICustomReportItem
{
void GenerateReportItemDefinition(CustomReportItem customReportItem);
void EvaluateReportItemInstance(CustomReportItem customReportItem);
}
}

After you have implemented the ICustomReportItem interface, two method stubs will be generated for you:
GenerateReportItemDefinition and EvaluateReportItemInstance. The GenerateReportItemDefinition method is
called first and is used for setting definition properties and creating the Image object that will contain both the
definition and instance properties that are used for rendering the item. The EvaluateReportItemInstance method
is called after the definition objects have been evaluated, and it provides the instance objects that will be used
for rendering the item.
The following is an example implementation of a custom report item that renders the name of the control as an
image.

namespace Microsoft.Samples.ReportingServices
{
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Drawing.Imaging;
using System.Drawing.Imaging;
using System.IO;
using System.Text;
using Microsoft.ReportingServices.OnDemandReportRendering;

public class PolygonsCustomReportItem : ICustomReportItem


{
#region ICustomReportItem Members

public void GenerateReportItemDefinition(CustomReportItem cri)


{
// Create the Image object that will be
// used to render the custom report item
cri.CreateCriImageDefinition();
Image polygonImage = (Image)cri.GeneratedReportItem;
}

public void EvaluateReportItemInstance(CustomReportItem cri)


{
// Get the Image definition
Image polygonImage = (Image)cri.GeneratedReportItem;

// Create the image for the custom report item


polygonImage.ImageInstance.ImageData = DrawImage(cri);
}

#endregion

/// <summary>
/// Creates an image of the CustomReportItem's name
/// </summary>
private byte[] DrawImage(CustomReportItem customReportItem)
{
int width = 1; // pixels
int height = 1; // pixels
int resolution = 75; // dpi

System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(width, height);


bitmap.SetResolution(resolution, resolution);

System.Drawing.Graphics graphics = System.Drawing.Graphics.FromImage(bitmap);


graphics.PageUnit = System.Drawing.GraphicsUnit.Pixel;

// Get the Font for the Text


System.Drawing.Font font = new System.Drawing.Font(System.Drawing.FontFamily.GenericMonospace,
12, System.Drawing.FontStyle.Regular);

// Get the Brush for drawing the Text


System.Drawing.Brush brush = new System.Drawing.SolidBrush(System.Drawing.Color.LightGreen);

// Get the measurements for the image


System.Drawing.SizeF maxStringSize = graphics.MeasureString(customReportItem.Name, font);
width = (int)(maxStringSize.Width + 2 * font.GetHeight(resolution));
height = (int)(maxStringSize.Height + 2 * font.GetHeight(resolution));

bitmap.Dispose();
bitmap = new System.Drawing.Bitmap(width, height);
bitmap.SetResolution(resolution, resolution);

graphics.Dispose();
graphics = System.Drawing.Graphics.FromImage(bitmap);
graphics.PageUnit = System.Drawing.GraphicsUnit.Pixel;

// Draw the text


graphics.DrawString(customReportItem.Name, font, brush, font.GetHeight(resolution),
font.GetHeight(resolution));

// Create the byte array of the image data


MemoryStream memoryStream = new MemoryStream();
bitmap.Save(memoryStream, ImageFormat.Bmp);
bitmap.Save(memoryStream, ImageFormat.Bmp);
memoryStream.Position = 0;
byte[] imageData = new byte[memoryStream.Length];
memoryStream.Read(imageData, 0, imageData.Length);

return imageData;
}
}
}

See Also
Custom Report Item Architecture
Creating a Custom Report Item Design-Time Component
Custom Report Item Class Libraries
How to: Deploy a Custom Report Item
Custom Report Item Architecture
3/19/2020 • 2 minutes to read • Edit Online

A custom report item is an extension to the Report Definition Language (RDL) that allows developers to add
functionality that's not natively supported in RDL or extend the functionality of existing controls. There are two
main components to a custom report item: the run-time component and the design-time component. These
components are implemented as .NET Framework assemblies, and can be written in any CLS-compliant
language.

The Run-Time Component


The run-time component for a custom report item is called by the report processor at run time. The run-time
component accepts data passed by the report processor at run time, processes this data, and returns an image
containing the rendered custom report item.

The Design-Time Component


The design-time component allows the custom report item to be defined and manipulated in the Report
Designer interface in Visual Studio. The design-time component consists of several sub-controls that control the
appearance and properties of the custom report item in the design environment.

See Also
Creating a Custom Report Item Run-Time Component
Creating a Custom Report Item Design-Time Component
How to: Deploy a Custom Report Item
Custom Report Item Class Libraries
3/31/2021 • 3 minutes to read • Edit Online

Custom report items use classes from the Microsoft.Repor tDesigner namespace. The classes used to
implement a custom report item can be grouped into two main categories: unique classes designed to support
custom report item infrastructure, and managed wrapper classes that encapsulate the functionality of relevant
Report Definition Language (RDL) elements. For a code sample on how to use these classes, see SQL Server
Reporting Services Product Samples.

Custom Report Item Infrastructure Classes


The following classes are used to implement a custom report item.

NOTE
The following tables are not complete listings; they include only the most commonly used properties and methods for
each class.

Microsoft.ReportDesigner.CustomReportItemDesigner
This is the main custom report item class. The main class of your custom report item implementation must
inherit from this class.
Public Properties

P RO P ERT Y DESC RIP T IO N

Name The name of the custom report item.

Type The type of the custom report item.

CustomData A CustomData object that encapsulates the custom report


item data properties specified at design time.

CustomProper ties A collection of custom properties for the custom report


item.

Height The height of the custom report item control.

Width The width of the custom report item control.

Repor t A container for the report-level properties, such as the list of


datasets in the report.

AltRepor tItem The alternate report item object, to be used where the
custom report item run-time control is not supported.

Style The style properties for the custom report item.

Adornment An adornment window used for interactive editing of the


control.
P RO P ERT Y DESC RIP T IO N

Site The ISite of the component.

DesignerVerbCollection An array of custom verbs for the control's shortcut menu.

Public Methods

M ET H O D DESC RIP T IO N

BeginEdit Activates interactive editing for the control.

DoDefaultAction Called in response to double-clicking or pressing Return on


the control.

EndEdit Deactivates interactive editing for the control.

GetSer vice Returns an object which represents a service.

InitializeNewComponent Called when a new custom report item is created.

Invalidate Repaints the entire surface of the control.

OnDragEnter Called when an object is dragged onto the control.

OnDragDrop

OnPaint Called in response to the Paint event.

Microsoft.ReportDesigner.CustomReportItemAttribute
This is the attribute used to identify the type of the custom report item. The name must match the value of the
<Name > attribute of the Repor tItem element in the Report Designer configuration file.
Public Methods

M ET H O D DESC RIP T IO N

CustomRepor tItemAttribute Constructs the CustomReportItemAttribute object.

Microsoft.ReportDesigner.LocalizedNameAttribute
This is the attribute used to specify display name to use for the custom report item designer.
Public Methods

M ET H O D DESC RIP T IO N

LocalizedNameAttribute Constructs the LocalizedNameAttribute object.

Microsoft.ReportDesigner.Adornment
The Adornment class is used by the custom report item design-time component to provide areas outside of
the main rectangle of the design surface. These areas can handle user interface events, such as mouse clicks and
drag-and-drop operations.
Public Methods
M ET H O D DESC RIP T IO N

OnShow Called when the Adornment is activated.

OnHide Called when the Adornment is deactivated.

Paint Called in response to the Paint event.

OnDragEnter Called when an object is dragged into the Adornment .

OnDragOver

OnDragLeave

OnDragDrop

Microsoft.ReportDesigner.AdornerService
This class is used to provide a collection of display services used by the custom report item to support
Adornment objects for the custom report item design-time component.
Public Properties

P RO P ERT Y DESC RIP T IO N

AdornerWindowBounds The bounds of the Adorner window.

AdornerWindowRegion The region of the Adorner window.

AdornerWindowGraphics A graphics context for the Adorner window.

Public Methods

M ET H O D DESC RIP T IO N

ComponentRectInDesignerFrame Returns the bounds of the component translated into


designer frame coordinates.

InvalidateAdorner Invalidates the Adorner window.

PointToAdorner Returns a point in screen coordinates translated to Adorner


window coordinates.

Microsoft.ReportDesigner.ExpressionEditor
This class can be used from your custom report item design-time control to invoke the Expression Editor.
Public Methods

M ET H O D DESC RIP T IO N

EditValue Invokes the Expression Editor, initialized with the given


object value.

Microsoft.ReportDesigner.IFieldsDataObject
This class is a collection of Reporting Services fields, and is used to support drag-and-drop events in the design
environment. Inherits from IRepor tItemDataObject .
Public Properties
P RO P ERT Y DESC RIP T IO N

DataSetName The name of the dataset containing the fields to be dropped.

Fields The collection of fields (Microsoft.Repor tDesigner.Field )


to be dropped.

See Also
Report Definition Language (SSRS)
Creating a Custom Report Item Run-Time Component
Creating a Custom Report Item Design-Time Component
Custom Report Item Implementation Requirements
3/19/2020 • 2 minutes to read • Edit Online

This topic will discuss the prerequisites for developing and deploying custom report items.

Development and Deployment Requirements


Developing a custom report item for Reporting Services requires the following:
Administrative access to a server running Microsoft SQL Server with Reporting Services and SQL Server
Data Tools (SSDT).
Microsoft Visual Studio 2005 or above with the Microsoft .NET Framework software development kit
(SDK) installed.
Access to the .NET Framework SDK documentation.
Familiarity with component authoring and the component model namespaces in Visual Studio.

Language and Namespace Requirements


SQL Server custom report items fully support the .NET Framework. You can develop custom report items using
your choice of .NET-compliant languages.
Visual Studio offers the developer many tools and features to simplify and accelerate the iterative cycles of
coding, debugging, and testing and to make deployment easier. The .NET Framework SDK includes Visual Basic
and C# compilers and related tools.
Custom report items use the Microsoft.Repor tDesigner and Microsoft.ReportingServices.Interfaces
namespaces. These are stored in the Microsoft.ReportingServices.Designer.DLL and
Microsoft.ReportingServices.Interfaces.DLL assemblies, which are installed as part of Reporting Services.
Custom report item design-time components need to implement interfaces from the
System.ComponentModel namespace in the .NET Framework. The System.ComponentModel is
documented in the .NET Framework SDK documentation.

See Also
Creating a Custom Report Item Run-Time Component
Creating a Custom Report Item Design-Time Component
How to: Deploy a Custom Report Item
Custom Report Item Class Libraries
Custom Report Items
3/19/2020 • 2 minutes to read • Edit Online

Reporting Services provides a rich set of tools for building and publishing enterprise reports, managing security
and subscriptions, and extending the reporting functionality through a comprehensive API. Reports are defined
using an XML-based language called Report Definition Language (RDL). RDL provides a set of instructions that
describe layout, query information, and item types for a report. It is possible to extend RDL by writing a custom
report item. The custom report item consists of a run-time component, which is called by the report processor
at run time, and a design-time component, which allows the custom report item to be available in Report
Designer.
For a sample of a fully implemented custom report item, see SQL Server Reporting Services Product Samples.

Custom Report Item Scenarios


Developers who need to integrate Reporting Services into their applications may require functionality that is not
natively supported in RDL. This may include items such as: map controls, horizontal lists, columnar lists, and
repivotable matrixes. A run-time custom report item component can be developed and distributed with an
application to fill this need.
In addition to providing functionality that isn't natively supported, some developers may want to extend existing
functionality with alternative versions of controls that are already included with Reporting Services. In this
scenario, a developer could provide three components: a run-time component, a design-time component, and a
design-time report item conversion component that converts an existing report item into a custom report item
on demand.

In This Section
Custom Report Item Architecture
Describes the components that make up a custom report item.
Custom Report Item Implementation Requirements
Describes prerequisites for creating a custom report item.
Creating a Custom Report Item Run-Time Component
Describes how to create a custom report item run-time component.
Creating a Custom Report Item Design-Time Component
Describes how to create a custom report item design-time component.
How to: Deploy a Custom Report Item
Describes how to deploy a custom report item.
Custom Report Item Class Libraries
Describes the custom report item infrastructure classes and managed wrapper classes in the
Microsoft.Repor tDesigner namespace.

See Also
Technical Reference (SSRS)
How to: Deploy a Custom Report Item
3/19/2020 • 2 minutes to read • Edit Online

To deploy a custom report item in Reporting Services, you must modify the report server configuration files and
copy the design-time and run-time component assemblies into the appropriate application folders for both
Report Designer and the report server.
To deploy a custom report item
1. Edit the Rsreportdesigner.config file to configure the custom report item run-time and design-time
components for use in the designer. Note that the Repor tItemName entry must match the
CustomRepor tItemAttribute attribute used in your CustomRepor tItemDesigner class. For example:

<ReportItems>
<ReportItem Name="Polygons" Type="PolygonsCRI.PolygonsCRI,PolygonsCRI"/>
</ReportItems>
<ReportItemDesigner>
<ReportItem Name="Polygons" Type="PolygonsCRI.PolygonsDesigner, PolygonsDesigner" />
</ReportItemDesigner>
<ReportItemConverter>
<Converter Source="Chart" Target="Polygons" Type="PolygonsCRI.PolygonsConverter, PolygonsDesigner"
/>
</ReportItemConverter>

2. Edit the Rsreportserver.config file to register the custom report item run-time component. For example:

<ReportItems>
<ReportItem Name="Polygons" Type="PolygonsCRI.PolygonsCRI,PolygonsCRI"/>
</ReportItems>

3. Edit the Rsssrvpolicy.config file to add a CodeGroup that grants the proper permissions to the custom
report item. For example:

<CodeGroup
class="UnionCodeGroup"
version="1"
PermissionSetName="FullTrust"
Description="This code group grants MyCustomReportItem.dll FullTrust permission. ">
<IMembershipCondition
class="UrlMembershipCondition"
version="1"
Url="C:\Program Files\Microsoft SQL Server\ MSRS10_50.SQLSERVER\Reporting
Services\ReportServer\bin\MyCustomReportItem.dll" />
</CodeGroup>

4. Copy the custom report item run-time component DLL to the %ProgramFiles%\Microsoft Visual Studio
9.0\Common7\IDE\PrivateAssemblies and \Program Files\Microsoft SQL
Server\MSRS10_50.SQLSERVER\Reporting Services\ReportServer\bin directories.
5. Copy the custom report item design-time component DLL to the %ProgramFiles%\Microsoft Visual
Studio 9.0\Common7\IDE\PrivateAssemblies directory.

See Also
Reporting Services Configuration Files
Custom Report Item Class Libraries
Accessing Custom Assemblies Through Expressions
3/19/2020 • 2 minutes to read • Edit Online

Once you have created a custom assembly, made it available to Report Designer or the report server, added the
appropriate security policy, and added a reference to your custom assembly in your report definition, you can
access the members of the classes in your assembly using report expressions. To refer to custom code in an
expression, you must call the member of a class within the assembly. How you do this depends on whether the
method is static or instance-based.

Calling Static Members from a Report Definition File


Static members belong to the class or type itself and not to an instantiated object. These members can be
accessed by directly calling them from the class. You should use static members to call custom functions in a
report whenever possible, because static members perform best. To call a static member, you need to reference
it as an expression that takes the form =Namespace.Class.Method.
To call static members
To call a static member, set your expression equal to the fully qualified name of the member, which
includes the namespace, class name, and member name. The following example calls the ToGBP method,
which converts the StandardCost field value from dollars to pounds sterling and displays it in a report:

=CurrencyConversion.DollarCurrencyConversion.ToGBP(Fields!StandardCost.Value)

Important Information Regarding Static Fields and Properties


Currently, all reports are executed in the same application domain. This means that reports with user-specific,
static data expose this data to other instances of the same report. This condition might make it possible for the
static data of one user to be available to all users currently running a particular report. For this reason, it is
highly recommended that you not use static fields or properties in custom assemblies or in the Code element;
instead, use instance fields or properties in your reports. Static methods can still be used, because they do not
store state or data.

Calling Instance Members from a Report Definition File


If your custom assembly contains instance members that you need to access in a report definition, you must
add an instance name for your class to the report. You can add an instance name for a class using the Code tab
of the Repor t Proper ties dialog. For more information about adding instances of classes to a report, see
Custom Code and Assembly References in Expressions in Report Designer (SSRS).
To call a static member, you need to reference it as an expression that takes the form
=Code*.InstanceName.Method*.
To call instance members
To call an instance member of a custom assembly, you must reference the Code keyword followed by the
instance name and the method. The following example calls an instance method ToEUR which converts
the StandardCost field value from dollars to euros and displays it in a report:

=Code.m_myDollarCoversion.ToEUR(Fields!StandardCost.Value)
See Also
Using Custom Assemblies with Reports
Asserting Permissions in Custom Assemblies
3/19/2020 • 2 minutes to read • Edit Online

By default, custom assembly code runs with the limited Execution permission set. In some cases, you may wish
to implement a custom assembly that makes secured calls to protected resources within your security system
(such as a file or the registry). In order to accomplish this, you must do the following:
1. Identify the exact permissions that your code needs in order to make the secured call. If this method is
part of a Microsoft .NET Framework library, this information should be included in the method
documentation.
2. Modify the report server policy configuration files in order to grant the custom assembly the required
permissions. For more information about the security policy configuration files, see Using Reporting
Services Security Policy Files.
3. Assert the required permissions as part of the method in which the secure call is made. This is required
because the custom assembly code that is called by the report server is part of the report expression host
assembly, which runs with Execution permission by default. The Execution permission set enables code
to run, but not to use protected resources.
4. Mark the custom assembly with AllowPar tiallyTrustedCallersAttribute if it is signed with a strong
name. This is required because custom assemblies are called from a report expression that is part of the
report expression host assembly, which, by default, is not granted FullTrust ; thus it is a "partially trusted"
caller. For more information, see Using Strong-Named Custom Assemblies.

Implementing a Secure Call


You can modify the policy configuration files to grant your assembly specific permissions. For example, if you
were writing a custom assembly to handle currency conversion, you might need to read the current currency
exchange rates from a file. To retrieve the rate information, you would need to add an additional security
permission, FileIOPermission , to your permission set for the assembly. You can make the following additional
entry in the policy configuration file:

<PermissionSet class="NamedPermissionSet"
version="1"
Name="CurrencyRatesFilePermissionSet"
Description="A special permission set that grants read access to my currency rates file.">
<IPermission class="FileIOPermission"
version="1"
Read="C:\CurrencyRates.xml"/>
<IPermission class="SecurityPermission"
version="1"
Flags="Execution, Assertion"/>
</PermissionSet>

You then add a code group that references that permission set:
<CodeGroup class="UnionCodeGroup"
version="1"
PermissionSetName="CurrencyRatesFilePermissionSet"
Name="MyNewCodeGroup"
Description="A special code group for my custom assembly.">
<IMembershipCondition class="UrlMembershipCondition"
version="1"
Url="C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\MSSQL\Reporting
Services\ReportServer\bin\CurrencyConversion.dll"/>
</CodeGroup>

In order for your code to acquire the appropriate permission, you must assert the permission within your
custom assembly code. For example, if you want to add read-only access to an XML file, C:\CurrencyRates.xml,
you must add the following code to your method:

// C#
FileIOPermission permission = new FileIOPermission(FileIOPermissionAccess.Read, @"C:\CurrencyRates.xml");
try
{
permission.Assert();
// Load the XML currency rates file
XmlDocument doc = new XmlDocument();
doc.Load(@"C:\CurrencyRates.xml");
...

You can also add the assertion as a method attribute:

[FileIOPermissionAttribute(SecurityAction.Assert, Read=@"C:\CurrencyRates.xml")]

For more information, see ".NET Framework Security" in the .NET Framework Developer's Guide.

See Also
Using Custom Assemblies with Reports
Deploying a Custom Assembly
3/5/2021 • 3 minutes to read • Edit Online

To deploy a custom assembly in SQL Server Reporting Services, place the assembly in the application folders of
both Report Designer and the report server. By default, custom assemblies are granted Execution permission in
Reporting Services. To grant custom assemblies privileges beyond Execute permission, you will need to edit the
rssrvpolicy.config configuration file for the report server and the rspreviewpolicy.config configuration file for the
Report Designer preview window. Alternatively, you can install your custom assembly in the global assembly
cache (GAC).

NOTE
There are two preview modes for Report Designer: the Preview tab and the pop-up preview window that is launched
when your report project is started in DebugLocal mode. The Preview tab executes all report expressions using the
FullTrust permission set and does not apply security policy settings. The pop-up preview window is meant to simulate
the report server functionality and therefore has a policy configuration file that you or an administrator must modify to
use custom assemblies in Report Designer. This pop-up preview also locks the custom assembly. Therefore, you need to
close the preview window in order to modify or update your custom assembly code.

To deploy a custom assembly in Reporting Services


1. Copy your custom assembly from your build location to the report server bin folder or the Report
Designer folder.
Placing your custom assembly in the report server bin folder enables you to publish reports that
reference your custom assembly. The default location of the bin folder for the report server is:
Reporting Services 2016

%ProgramFiles%\Microsoft SQL Server\MSRS13.MSSQLSERVER\Reporting Services\ReportServer\bin

Reporting Services 2017 and later

%ProgramFiles%\Microsoft SQL Server Reporting Services\SSRS\ReportServer\bin

Placing it in the Report Designer folder enables you to run and debug reports that reference your custom
assembly in Report Designer. The default location of the Report Designer is:
Visual Studio 2012

C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\PrivateAssemblies

Visual Studio 2013

C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\PrivateAssemblies

Visual Studio 2015


C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\PrivateAssemblies

Visual Studio 2017

C:\Program Files (x86)\Microsoft Visual


Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\SSRS

Visual Studio 2019

C:\Program Files (x86)\Microsoft Visual


Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\SSRS

2. Open the appropriate configuration file. The default location of rssrvpolicy.config for the report server is:
Reporting Services 2016

%ProgramFiles%\Microsoft SQL Server\MSRS13.MSSQLSERVER\Reporting Services\ReportServer

Reporting Services 2017 and later

%ProgramFiles%\Microsoft SQL Server Reporting Services\SSRS\ReportServer

The files to update for the Report Designer are:


Visual Studio 2012

C:\Program Files (x86)\Microsoft Visual Studio


11.0\Common7\IDE\PrivateAssemblies\PreviewProcessingService.exe.config
C:\Program Files (x86)\Microsoft Visual Studio
11.0\Common7\IDE\PrivateAssemblies\RSPreviewPolicy.config
C:\Program Files (x86)\Microsoft Visual Studio
11.0\Common7\IDE\PrivateAssemblies\RSReportDesigner.config
C:\Program Files (x86)\Microsoft Visual Studio
11.0\Common7\IDE\PrivateAssemblies\RSReportHost11.exe.config

Visual Studio 2013

C:\Program Files (x86)\Microsoft Visual Studio


12.0\Common7\IDE\PrivateAssemblies\PreviewProcessingService.exe.config
C:\Program Files (x86)\Microsoft Visual Studio
12.0\Common7\IDE\PrivateAssemblies\RSPreviewPolicy.config
C:\Program Files (x86)\Microsoft Visual Studio
12.0\Common7\IDE\PrivateAssemblies\RSReportDesigner.config
C:\Program Files (x86)\Microsoft Visual Studio
12.0\Common7\IDE\PrivateAssemblies\RSReportHost.exe.config

Visual Studio 2015


C:\Program Files (x86)\Microsoft Visual Studio
14.0\Common7\IDE\PrivateAssemblies\PreviewProcessingService.exe.config
C:\Program Files (x86)\Microsoft Visual Studio
14.0\Common7\IDE\PrivateAssemblies\RSPreviewPolicy.config
C:\Program Files (x86)\Microsoft Visual Studio
14.0\Common7\IDE\PrivateAssemblies\RSReportDesigner.config
C:\Program Files (x86)\Microsoft Visual Studio
14.0\Common7\IDE\PrivateAssemblies\RSReportHost.exe.config

Visual Studio 2017

C:\Program Files (x86)\Microsoft Visual


Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\SSRS\PreviewProcessingService.exe.confi
g
C:\Program Files (x86)\Microsoft Visual
Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\SSRS\RSPreviewPolicy.config
C:\Program Files (x86)\Microsoft Visual
Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\SSRS\RSReportDesigner.config
C:\Program Files (x86)\Microsoft Visual
Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\SSRS\RSReportHost.exe.config

Visual Studio 2019

C:\Program Files (x86)\Microsoft Visual


Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\SSRS\PreviewProcessingService.exe.confi
g
C:\Program Files (x86)\Microsoft Visual
Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\SSRS\RSPreviewPolicy.config
C:\Program Files (x86)\Microsoft Visual
Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\SSRS\RSReportDesigner.config
C:\Program Files (x86)\Microsoft Visual
Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\SSRS\RSReportHost.exe.config

3. Add a code group for your custom assembly. For more information, see Secure Development (Reporting
Services).

Updating Custom Assemblies


At some point, you may need to update a version of a custom assembly that is currently being referenced by
several published reports. If that assembly already exists in the bin directory of the report server or Report
Designer and the version number of the assembly is incremented or changed in some way, the currently
published reports will no longer work properly. You will need to update the version of the assembly that is
referenced in the CodeModules element of the report definition and republish the reports. If you know that
you will frequently update a custom assembly and your currently published reports need to reference the new
assembly, you may want to consider using the same version number across all updates of a particular assembly.
If you do not need your currently published reports to reference the new version of the assembly, you can
deploy your custom assembly to the global assembly cache. The global assembly cache can maintain multiple
versions of the same assembly, so that your current reports can reference the previous version of your assembly
and your newly published reports can reference the updated assembly. Yet another approach would be to set
the binding redirect of the report server to force a redirect of all requests for the old assembly to the new
assembly. You would need to modify the report server Web.config file and the report server
ReportingServicesService.exe.config file. The entry might look like the following:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="myAssembly"
publicKeyToken="32ab4ba45e0a69a1"
culture="neutral" />
<bindingRedirect oldVersion="1.0.0.0"
newVersion="2.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

See Also
Using Custom Assemblies with Reports
Working with Assemblies and the Global Assembly Cache
How to: Debug Custom Assemblies
3/19/2020 • 2 minutes to read • Edit Online

The Microsoft .NET Framework provides several debugging tools that can help you analyze your custom
assembly code and locate errors in it. The best tool to use will depend on what you are trying to accomplish.
This example uses Visual Studio 2008.
The recommended way to design, develop, and test custom assemblies for Reporting Services is to create a
solution that contains both your test reports and your custom assembly.
To debug assemblies using a single instance of Visual Studio
1. Create a new report project using Visual Studio.
At the time you create a report project, Visual Studio also creates a solution to contain it.
2. Add a new Class Library project to the existing solution. Make sure that the report project is set as the
startup project. For more information about how to accomplish this, see your Visual Studio
documentation.
3. In Solution Explorer, select the solution.
4. On the View menu, click Proper ty Pages .
The Solution Proper ty Pages dialog box opens.
5. In the left pane, expand Common Proper ties if necessary, and click Project Dependencies . Select the
report project from the Project drop-down list. Select your assembly project in the Depends On list.
6. Click OK to save the changes, and close the Proper ty Pages dialog.
7. In Solution Explorer, select your custom assembly project.
8. On the View menu, click Proper ty Pages .
The Project Proper ty Pages dialog box opens.
9. Click the Build tab if you're in a C# project or the Compile tab if you're in a Visual Basic project.
10. On the Build /Compile page, enter the path to the Report Designer folder. By default, this is C:\Program
Files\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE) in the Output Path text box. This
builds and deploys an updated version of your custom assembly directly to Report Designer before your
report is executed.
11. Once you have designed your report and developed your custom assembly, set breakpoints in your
custom assembly code.
12. Run the report under DebugLocal mode by pressing the F5 key. When the report executes in the pop-up
preview window, the debugger hits any breakpoints that correspond to executable code in your assembly.
Use F11 to step through your custom assembly code.
To debug assemblies using two instances of Visual Studio
1. Start Visual Studio and open your custom assembly project.
2. Build the project, and deploy your custom assembly and the accompanying .pdb file to the Report
Designer. For more information about deployment, see Deploying a Custom Assembly.
3. Open up a report project that uses your custom assembly while leaving your custom assembly code
open in a separate instance of Visual Studio.
4. Navigate to the instance of Visual Studio that contains your custom assembly project and set some break
points in your code.
5. With the custom assembly project still the active window, click Attach to Process on the Debug menu.
The Attach to Process dialog opens.
6. From the list of processes, select the devenv.exe process that corresponds to your Report Project and click
Attach .
7. Define the expressions that you will use in your report from your custom assembly and design your
report.
8. When you are finished designing your report, click the Preview tab.
The report executes, and the custom assembly code should break at your predefined break points.

NOTE
Using the Preview tab does not enforce code permissions for the assembly. For a complete test, which includes
any code access security errors, start the report project under the DebugLocal configuration setting.

9. Step through your code using the F11 key. For more information about debugging using Visual Studio,
see the Visual Studio documentation.

See Also
Using Custom Assemblies with Reports
Initializing Custom Assembly Objects
3/19/2020 • 2 minutes to read • Edit Online

In some cases, you may need to initialize property and field values in your custom assembly classes when you
instantiate them. You will most likely need to initialize your custom classes with values available to you from the
report's global object collections. You do this by overriding the OnInit method of the Code object of a report. To
access OnInit , use the Code element of the report definition. There are two techniques for initializing property
or field values of the classes in a custom assembly that you plan to use in your report: You can either declare
and create a new instance of your class using OnInit , or you can call a publicly available method using OnInit .

Global Object Collections and Initialization


Several collections are available to you for initializing your custom class variables. You can use the Globals and
User collections. The Parameters , Fields and Repor tItems collections are not available to you at the point in
the report lifecycle when the OnInit method is invoked. To use the shared collections, Globals or User , you
need to include the Repor t object reference. For example, to initialize your custom class based on the current
language of the user accessing the report, your Code element might look like the following:

<Code>
Dim m_myClass As MyClass

Protected Overrides Sub OnInit()


m_myClass = new MyClass(Report.User!Language, _
Report.Globals!ExecutionTime)
End Sub
</Code>

One way to initialize the property and field values of a class as shown previously is to declare your class and
create a new instance of it by calling an overridden constructor.
Another way to initialize the property and field values of the classes in your custom assemblies is to call a
publicly available method that you define from the OnInit method. You first need to add an instance name for
your class in the report definition file. Once you have added the appropriate assembly reference and instance
name, you can call your initialization method to initialize property and field values for your class. Your OnInit
method might look like the following:

<Code>
Protected Overrides Sub OnInit()
m_myClass.MyInitializationMethod(Report.User!Language, _
Report.Globals!ExecutionTime)
End Sub
</Code>

For more information about adding an assembly reference and instance name for your custom class, see Add an
Assembly Reference to a Report (SSRS).
For more information about the global object collections, see Built-in Collections in Expressions (Report Builder
and SSRS).

See Also
Using Custom Assemblies with Reports
Referencing Assemblies in an RDL File
3/19/2020 • 2 minutes to read • Edit Online

To support the use of custom code assemblies in report definition files, two Report Definition Language (RDL)
elements are included in the RDL specification: the CodeModules element and the Classes element.
The CodeModules element enables you to refer to managed code assemblies in report expressions.
CodeModules is a top-level element that contains the reference to the assembly that you use in your report
definition files to call specialized functions. An entry in a report definition that supports the use of a custom
assembly might look like the following:

<CodeModules>
<CodeModule>CurrencyConversion, Version=1.0.1363.31103, Culture=neutral, PublicKeyToken=null</CodeModule>
</CodeModules>

Instead of calling Load from your custom code, register your custom assemblies by either manually adding
CodeModule elements to your RDL file or by using the References tab of the Repor t Proper ties dialog. For
more information, see Custom Code and Assembly References in Expressions in Report Designer (SSRS).
The Classes element supports the use of instance members in a report definition. Classes is a top-level
element that contains a reference to the class name and an instance name. An entry in a report definition that
supports the use of instance members might look like the following:

<Classes>
<Class>
<ClassName>CurrencyConversion.DollarCurrencyConversion</ClassName>
<InstanceName>m_myDollarConversion</InstanceName>
</Class>
</Classes>

For more information, see Accessing Custom Assemblies Through Expressions.

See Also
Using Custom Assemblies with Reports
Using Custom Assemblies with Reports
3/19/2020 • 2 minutes to read • Edit Online

In Reporting Services, you can write custom code for report item values, styles, and formatting. For example,
you can use custom code to format currencies based on locale, flag certain values with special formatting, or
apply other business rules that are in practice for your company. One way to include this code in your reports is
to create a custom code assembly using the Microsoft .NET Framework that you can reference from within your
report definition files. The server calls the functions in your custom assemblies when a report is run. Custom
assemblies can be used to retrieve specialized functions that you plan to use in your reports.

In This Section
Referencing Assemblies in an RDL File
Describes how to reference your custom assemblies in a report definition language file.
Deploying a Custom Assembly
Describes how to deploy a custom assembly to Report Designer and the report server.
Using Strong-Named Custom Assemblies
Describes how to use custom assemblies with strong names.
Asserting Permissions in Custom Assemblies
Describes how to deploy custom assemblies with limited and specific permissions and how to assert those
permissions in code.
Accessing Custom Assemblies Through Expressions
Describes how to call custom assembly methods as report expressions in your report definitions.
Initializing Custom Assembly Objects
Describes how to initialize values for custom assembly objects called from a report.
How to: Debug Custom Assemblies
Describes how to debug your custom assembly code.

See Also
Report Definition Language (SSRS)
Using Strong-Named Custom Assemblies
3/19/2020 • 2 minutes to read • Edit Online

A strong name identifies an assembly and includes the assembly's text name, four-part version number, culture
information (if provided), a public key, and a digital signature stored in the assembly's manifest. A strong name
uniquely identifies an assembly to the common language runtime (CLR) and ensures binary integrity.

Using AllowPartiallyTrustedCallersAttribute
To use strong-named assemblies with reports, you must allow your strong-named assembly to be called by
partially trusted code using the assembly's AllowPar tiallyTrustedCallers attribute. You can use
AllowPar tiallyTrustedCallersAttribute to allow strong-named assemblies to be called by Report Designer or
the report server in report expressions. To allow partially trusted code to call strong-named assemblies, add the
following assembly-level attribute to your assembly attribute file.

<assembly:AllowPartiallyTrustedCallers>

[assembly:AllowPartiallyTrustedCallers]

AllowPar tiallyTrustedCallersAttribute is effective only when applied by a strong-named assembly at the


assembly level. For more information about applying attributes at the assembly level, see "Applying Attributes"
in the Microsoft .NET Framework SDK documentation.
Cau t i on

When AllowPar tiallyTrustedCallersAttribute is present, the default FullTrustLinkDemand security checks


are prevented, making the assembly callable from any other partially trusted assembly. All security checks,
including class-level or method-level declarative security attributes, must be explicitly stated.

See Also
Using Custom Assemblies with Reports
Technical Reference (SSRS)
11/2/2020 • 2 minutes to read • Edit Online

Find the tools and PowerShell reference documentation for using or administering SQL Server Reporting
Services.
Errors and Events
Cause and Resolution of Reporting Services Errors
Feature Reference
Report Designer F1 Help
Report Manager F1 Help
Report Server Configuration Manager (Native Mode)
Report Wizard Help
HTML Viewer and the Report Toolbar
Device Information Settings for Rendering Extensions (Reporting Services)
Repor t Ser ver Command Prompt Utilities
RS.exe Utility (SSRS)
rsconfig Utility (SSRS)
rskeymgmt Utility (SSRS)
Repor ting Ser vices WMI Provider Class Librar y
Reporting Services WMI Provider Library Reference (SSRS)
More questions? Try asking the Reporting Services forum
Feature Reference (Reporting Services)
3/5/2021 • 2 minutes to read • Edit Online

SQL Server Reporting Services includes several tools and applications that you can use to create, manage, and
view reports. This section provides specific topics describing the dialog boxes, Web pages, and wizards of these
tools and applications.
To access a user interface topic while the tool or application is running, press F1 or click Help while the dialog
box, Web page, or wizard is open. For more information about starting the Reporting Services tools, see Tutorial:
How to Locate and Start Reporting Services Tools (SSRS).

In This Section
Report Designer F1 Help
Provides help for Report Designer and its related dialog boxes, Report Wizard, and Image Wizard.
Report Server in Management Studio F1 Help
Provides help for dialog boxes used to manage reports and report servers in SQL Server Management Studio.
HTML Viewer and the Report Toolbar
Provides help for the HTML Viewer component used for viewing reports in a Web browser.

See Also
Reporting Services Concepts (SSRS)
Reporting Services Reports (SSRS)
Report Datasets (SSRS)
Getting Started with Report Builder
Designing and Implementing Reports Using Report Builder 1.0
Device Information Settings for Rendering
Extensions (Reporting Services)
11/2/2020 • 2 minutes to read • Edit Online

In Reporting Services, device information settings are used to pass rendering parameters to a rendering
extension. Each rendering extension accepts a specific set of settings.

In This Section
TO P IC DESC RIP T IO N

ATOM Device Information Settings Describes the device information settings that are associated
with Atom compliant rendering output.

CSV Device Information Settings Describes the device information settings that are associated
with CSV rendering output.

Excel Device Information Settings Describes the device information settings that are associated
with Excel rendering output.

Word Device Information Settings Describes the device information settings that are associated
with Word rendering output.

HTML Device Information Settings Describes the device information settings that are associated
with HTML rendering output.

Image Device Information Settings Describes the device information settings that are associated
with IMAGE rendering output.

MHTML Device Information Settings Describes the device information settings that are associated
with MHTML rendering output.

PDF Device Information Settings Describes the device information settings that are associated
with PDF rendering output.

XML Device Information Settings Describes the device information settings that are associated
with XML rendering output.

RGDI Device Information Settings Describes the device information settings that are associated
with RGDI rendering output.

PPTX Device Information Settings Describes the device information settings that are associated
with PPTX rendering output.

See Also
Customize Rendering Extension Parameters in RSReportServer.Config
ATOM Device Information Settings
11/2/2020 • 2 minutes to read • Edit Online

The device information settings for the Atom rendering extension support submittal of the name of an Atom
feed and character encoding to use.
The following table lists the device information settings for rendering to a data service document.

SET T IN G VA L UE

DataFeed If specified, renders the Atom feed corresponding to the feed


name provided in this setting. If not, renders the Atom
service document for the report. The unique auto-generated
identifier of the data feed. This value is used internally and
you should not change it.

Encoding The Internet Assigned Numbers Authority (IANA) name of a


character encoding that is supported by the .NET
Framework. The default value is UTF-8 . Examples of other
values include ASCII, UTF-7, and UTF-16.

See Also
Render
Passing Device Information Settings to Rendering Extensions
Customize Rendering Extension Parameters in RSReportServer.Config
Technical Reference (SSRS)
CSV Device Information Settings
11/2/2020 • 2 minutes to read • Edit Online

The device information settings for the CSV rendering extension allow delimiters and qualifiers to be changed
and line break handling to be specified. The extension of the file can also be submitted, as well as the encoding
and inclusion of header rows in the output. Because delimiters are likely to be special characters, you should
encode them in a CDATA section, if the settings are written as XML.
The following table lists the device information settings for rendering in Text format.

SET T IN G VA L UE

Encoding The Internet Assigned Numbers Authority (IANA) name of a


character encoding that is supported by

You might also like