<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SSIS Report Generator (SSRS) Archives | ZappySys Blog</title>
	<atom:link href="https://zappysys.com/blog/category/ssis/tasks/ssis-report-generator-task-ssrs/feed/" rel="self" type="application/rss+xml" />
	<link>https://zappysys.com/blog/category/ssis/tasks/ssis-report-generator-task-ssrs/</link>
	<description>SSIS / ODBC Drivers / API Connectors for JSON, XML, Azure, Amazon AWS, Salesforce, MongoDB and more</description>
	<lastBuildDate>Wed, 03 Jun 2026 22:15:04 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.4.4</generator>

<image>
	<url>https://zappysys.com/blog/wp-content/uploads/2023/01/cropped-zappysys-symbol-large-32x32.png</url>
	<title>SSIS Report Generator (SSRS) Archives | ZappySys Blog</title>
	<link>https://zappysys.com/blog/category/ssis/tasks/ssis-report-generator-task-ssrs/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Calling SSRS Reports in SSIS (Export / Email)</title>
		<link>https://zappysys.com/blog/calling-ssrs-reports-in-ssis-export-emai/</link>
		
		<dc:creator><![CDATA[ZappySys Team]]></dc:creator>
		<pubDate>Sat, 16 Jun 2018 20:07:59 +0000</pubDate>
				<category><![CDATA[SSIS Advanced File System Task]]></category>
		<category><![CDATA[SSIS Report Generator (SSRS)]]></category>
		<category><![CDATA[export]]></category>
		<category><![CDATA[ssis]]></category>
		<category><![CDATA[ssrs]]></category>
		<guid isPermaLink="false">https://zappysys.com/blog/?p=4008</guid>

					<description><![CDATA[<p>Overview This tutorial explains how to call SSRS reports from SSIS, export them to files (PDF, Excel, Word, HTML, and more), email them as attachments or as HTML in the message body, pass dynamic parameters, and automate delivery without relying only on fixed SSRS subscriptions. You will use the ZappySys Reporting Services Task (SSRS Report [&#8230;]</p>
<p>The post <a href="https://zappysys.com/blog/calling-ssrs-reports-in-ssis-export-emai/">Calling SSRS Reports in SSIS (Export / Email)</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Overview</h2>
<p><a href="https://zappysys.com/blog/wp-content/uploads/2018/06/reporting-services-logo.png"><img decoding="async" class=" wp-image-4022 alignleft" src="https://zappysys.com/blog/wp-content/uploads/2018/06/reporting-services-logo.png" alt="SQL Server Reporting Services (SSRS) logo" width="93" height="93" srcset="https://zappysys.com/blog/wp-content/uploads/2018/06/reporting-services-logo.png 260w, https://zappysys.com/blog/wp-content/uploads/2018/06/reporting-services-logo-150x150.png 150w" sizes="(max-width: 93px) 100vw, 93px" /></a>This tutorial explains how to <strong>call SSRS reports from SSIS</strong>, export them to files (PDF, Excel, Word, HTML, and more), email them as attachments or as <strong>HTML in the message body</strong>, pass <strong>dynamic parameters</strong>, and automate delivery without relying only on fixed SSRS subscriptions. You will use the ZappySys <strong>Reporting Services Task</strong> (SSRS Report Generator) from <a href="https://zappysys.com/products/ssis-powerpack/" target="_blank" rel="noopener">SSIS PowerPack</a>.</p>
<p><strong>Two ways to run reports:</strong> connect to an <strong>SSRS report server</strong> (server mode), or point at a local <strong>.rdl / .rdlc</strong> file on disk (<strong>local mode</strong>) — no report server install required. Local mode is ideal when developers author reports in SSDT and SSIS supplies the data and delivery.</p>
<p>&nbsp;</p>
<div class="content_block" id="custom_post_widget-2523"><h2><span id="Prerequisites">Prerequisites</span></h2>
Before we perform the steps listed in this article, you will need to make sure the following prerequisites are met:
<ol style="margin-left: 1.5em;">
 	<li><abbr title="SQL Server Integration Services">SSIS</abbr> designer installed. Sometimes it is referred to as <abbr title="Business Intelligence Development Studio">BIDS</abbr> or <abbr title="SQL Server Data Tools">SSDT</abbr> (<a href="https://docs.microsoft.com/en-us/sql/ssdt/download-sql-server-data-tools-ssdt" target="_blank" rel="noopener">download it from the Microsoft site</a>).</li>
 	<li>Basic knowledge of SSIS package development using <em>Microsoft SQL Server Integration Services</em>.</li>
 	<li>Make sure <span style="text-decoration: underline;"><a href="https://zappysys.com/products/ssis-powerpack/" target="_blank" rel="noopener">ZappySys SSIS PowerPack</a></span> is installed (<a href="https://zappysys.com/products/ssis-powerpack/download/" target="_blank" rel="noopener">download it</a>, if you haven't already).</li>
 	<li>(<em>Optional step</em>)<em>.</em> <a href="https://zappysys.zendesk.com/hc/en-us/articles/360035974593" target="_blank" rel="noopener">Read this article</a>, if you are planning to deploy packages to a server and schedule their execution later.</li>
</ol></div>
<p>For <strong>server mode</strong>, make sure you have an SSRS report deployed. For <strong>local mode</strong>, you only need the report file path — deployment to a report server is optional. For more information about creating reports and deploying to a server, refer to these links:</p>
<ul>
<li><a href="https://docs.microsoft.com/en-us/sql/reporting-services/create-a-basic-table-report-ssrs-tutorial?view=sql-server-2017" target="_blank" rel="noopener">Create a Basic Table Report (SSRS Tutorial)</a></li>
<li><a href="https://docs.microsoft.com/en-us/sql/reporting-services/reports/publishing-reports-to-a-report-server?view=sql-server-2017" target="_blank" rel="noopener">Publishing Reports to a Report Server</a></li>
</ul>
<h2>Why Automate SSRS Reports from SSIS?</h2>
<p>SSRS subscriptions are useful for fixed schedules, but they can be limiting when you need event-driven report delivery. For example, you may want to send a batch of reports after an ETL load, data validation, billing process, or other workflow is finished. Standard SSRS subscriptions usually rely on hardcoded schedules and predefined parameters, so they are not always easy to invoke dynamically from a process or adjust at runtime. ZappySys SSRS Reporting Services Task helps solve this by letting SSIS control when reports run, which parameters are used, where files are saved, and how reports are emailed.</p>
<div class="su-note"  style="border-color:#e5decb;border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;"><div class="su-note-inner su-u-clearfix su-u-trim" style="background-color:#fff8e5;border-color:#ffffff;color:#333333;border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;">Use SSIS for SSRS automation when reports must run after a process finishes, when report parameters must be supplied dynamically, or when you need more control than a standard SSRS subscription provides.</div></div>
<h2>What You Will Learn</h2>
<ul>
<li>How to use all <strong>three Reporting Services Task modes</strong>: server reports, local RDL, and data-driven SQL config export.</li>
<li>How to call and export SSRS reports from an SSIS package (report server or local .rdl file).</li>
<li>How to export and email reports <strong>without an SSRS server</strong> using local RDL mode.</li>
<li>How to pass dynamic SSRS report parameters from SSIS variables.</li>
<li>How to send SSRS reports by email as attachments.</li>
<li>How to send a server SSRS report as an HTML email body (Email Settings tab checkbox or legacy two-step flow).</li>
<li>How to bind data to local RDL reports (inline SQL, Execute SQL Task Object variables, multiple datasets).</li>
<li>How to automate report file names, paths, and post-processing steps.</li>
</ul>
<h2>SSRS Subscriptions vs. SSIS Automation</h2>
<div class="su-table su-table-alternate">
<table>
<tbody>
<tr>
<th>Requirement</th>
<th>SSRS subscription</th>
<th>SSIS with ZappySys SSRS Task</th>
</tr>
<tr>
<td>Run report after ETL or another process</td>
<td>Mostly schedule based</td>
<td>Can run as part of the SSIS workflow</td>
</tr>
<tr>
<td>Use dynamic report parameters</td>
<td>Usually predefined in the subscription</td>
<td>Can map SSIS variables to SSRS parameters</td>
</tr>
<tr>
<td>Control output path and file name</td>
<td>Limited to subscription settings</td>
<td>Can use SSIS logic and placeholder functions</td>
</tr>
<tr>
<td>Email delivery</td>
<td>Good for fixed report delivery</td>
<td>Supports attachments and custom HTML email workflows</td>
</tr>
<tr>
<td>Run without SSRS report server</td>
<td>Requires deployed report on server</td>
<td><strong>Local mode</strong> — render .rdl/.rdlc from disk (PDF, Excel, Word)</td>
</tr>
</tbody>
</table>
</div>
<h2>Tasks Used in This Tutorial</h2>
<p>The examples below use these <a href="https://zappysys.com/products/ssis-powerpack/" target="_blank" rel="noopener">ZappySys SSIS PowerPack</a> components:</p>
<div class="su-table su-table-alternate">
<table width="300">
<tbody>
<tr style="line-height: 0px">
<td width="50px"><a href="https://zappysys.com/products/ssis-powerpack/ssis-report-generator-task/" target="_blank" rel="noopener"><br />
<img decoding="async" class="alignnone size-full wp-image-3074" src="https://zappysys.com/images/SSIS-PowerPack/SSIS-SSRS-Reporting-Services-Task.png" alt="SSIS Report Generator Task (Export SSRS Reports) " width="50" height="50" /></a></td>
<td style="vertical-align: middle"><a href="https://zappysys.com/products/ssis-powerpack/ssis-report-generator-task/" target="_blank" rel="noopener">SSIS Report Generator Task (Export SSRS Reports)<br />
</a></td>
</tr>
<tr style="line-height: 0px">
<td style="height: 58px" width="50px"><a href="https://zappysys.com/products/ssis-powerpack/ssis-file-system-task-advanced/" target="_blank" rel="noopener"><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-3074" src="https://zappysys.com/images/SSIS-PowerPack/ssis-file-system-task-advanced.png" alt="Advanced SSIS File System Task" width="50" height="50" /></a></td>
<td style="vertical-align: middle;height: 58px"><a href="https://zappysys.com/products/ssis-powerpack/ssis-file-system-task-advanced/" target="_blank" rel="noopener">Advanced SSIS File System Task</a></td>
</tr>
<tr style="line-height: 0px">
<td style="height: 58px" width="50px"><a href="https://zappysys.com/products/ssis-powerpack/ssis-send-html-email-task/" target="_blank" rel="noopener"><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-3074" src="https://zappysys.com/images/ssis-powerpack/ssis-send-html-email-task.png" alt="SSIS Send HTML Email Task" width="50" height="50" /></a></td>
<td style="vertical-align: middle;height: 58px"><a href="https://zappysys.com/products/ssis-powerpack/ssis-send-html-email-task/" target="_blank" rel="noopener">Send HTML Email Task</a></td>
</tr>
</tbody>
</table>
</div>
<h2>Video: Reporting Services Task in SSIS</h2>
<p>This walkthrough demonstrates the SSRS Report Generator / Reporting Services Task in SSIS:</p>
[youtube https://www.youtube.com/watch?v=ajnSgbXls7I&amp;w=560&amp;h=315]
<h2>Reporting Services Task — Three Export Modes</h2>
<p>The ZappySys <strong>Reporting Services Task</strong> is one SSIS component, but it supports <strong>three different export modes</strong>. Pick the mode on the task <strong>General</strong> tab. The sections below walk through each one.</p>
<div class="su-table su-table-alternate">
<table>
<tbody>
<tr>
<th>Mode</th>
<th>Task setting</th>
<th>Best for</th>
</tr>
<tr>
<td><strong>1. Server reports</strong></td>
<td>Export server report</td>
<td>Reports deployed to SSRS; full format list (PDF, Excel, Word, HTML, CSV, XML, TIFF); HTML email body</td>
</tr>
<tr>
<td><strong>2. Local RDL files</strong></td>
<td>Export local report</td>
<td>.rdl / .rdlc on disk; <strong>no report server</strong>; PDF, Excel, Word; SSIS supplies dataset SQL or recordset data</td>
</tr>
<tr>
<td><strong>3. Data-driven export</strong></td>
<td>Data-driven report export using config table</td>
<td>Many reports in one package run; settings in a SQL table (path, format, email, parameters); mix <code>Server</code> and <code>Local</code> rows</td>
</tr>
</tbody>
</table>
</div>
<div class="su-note"  style="border-color:#e5decb;border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;"><div class="su-note-inner su-u-clearfix su-u-trim" style="background-color:#fff8e5;border-color:#ffffff;color:#333333;border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;">Modes 1 and 2 configure a <strong>single</strong> report on the task UI. Mode 3 reads a <strong>SQL configuration table</strong> and can export dozens of reports — server-hosted or local .rdl — in one execution, each row controlling its own path, recipients, and parameters.</div></div>
<h2>Mode 1: Export Server Reports from SSIS</h2>
<p>This section covers <strong>server mode</strong>: connect to an SSRS report server URL, select a deployed report, and export or email it. The task supports Word (<code>.docx</code>, <code>.doc</code>), Excel (<code>.xlsx</code>, <code>.xls</code>), PDF, TIFF, CSV, XML, and HTML.</p>
<h3>Export SSRS Report to File (Word, Excel, PDF, CSV, HTML, XML)</h3>
<ol>
<li>First of all drag and drop the ZS Reporting Task that is included with our ZappySys SSIS PowerPack:
<div id="attachment_4025" style="width: 624px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-Reporting-Service-task.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4025" class="size-full wp-image-4025" src="https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-Reporting-Service-task.png" alt="Task to convert SSRS report into files" width="614" height="433" srcset="https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-Reporting-Service-task.png 614w, https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-Reporting-Service-task-300x212.png 300w" sizes="(max-width: 614px) 100vw, 614px" /></a><p id="caption-attachment-4025" class="wp-caption-text">SSRS task in SSIS</p></div></li>
<li>Secondly, in general tab, make sure that the Export server report is enabled.</li>
<li>Additionally, specify the report service URL. If you are not sure what your report service URL is, see Microsoft guidance for publishing reports to a report server (linked in the prerequisites section above).</li>
<li>In addition, in report path, select the report that you want to export to a file.</li>
<li>Also, check the output as a file option:
<div id="attachment_4026" style="width: 635px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/06/SSRS-export-report-to-file.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4026" class="size-full wp-image-4026" src="https://zappysys.com/blog/wp-content/uploads/2018/06/SSRS-export-report-to-file.png" alt="Configurations to export files" width="625" height="602" srcset="https://zappysys.com/blog/wp-content/uploads/2018/06/SSRS-export-report-to-file.png 625w, https://zappysys.com/blog/wp-content/uploads/2018/06/SSRS-export-report-to-file-300x289.png 300w" sizes="(max-width: 625px) 100vw, 625px" /></a><p id="caption-attachment-4026" class="wp-caption-text">Export report to file</p></div></li>
<li>Additionally, in the export settings tab, go to Save as and specify the path and extension of the file to export. You can export to Excel, Word, PDF, Tiff, CSV and XML:
<div id="attachment_4042" style="width: 636px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-export-report-server-PDF-DOCX-XLSX.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4042" class="size-full wp-image-4042" src="https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-export-report-server-PDF-DOCX-XLSX.png" alt="Reporting Services to Excel Word PDF" width="626" height="615" srcset="https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-export-report-server-PDF-DOCX-XLSX.png 626w, https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-export-report-server-PDF-DOCX-XLSX-300x295.png 300w" sizes="(max-width: 626px) 100vw, 626px" /></a><p id="caption-attachment-4042" class="wp-caption-text">Export SSRS report using SSIS to Excel, Word, PDF</p></div></li>
<li>Finally, run the package and the file will be created:
<div id="attachment_4044" style="width: 373px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-SSRS-report-in-word.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4044" class="size-full wp-image-4044" src="https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-SSRS-report-in-word.png" alt="Calling SSRS Reports in SSIS to export to MS Word " width="363" height="225" srcset="https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-SSRS-report-in-word.png 363w, https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-SSRS-report-in-word-300x186.png 300w" sizes="(max-width: 363px) 100vw, 363px" /></a><p id="caption-attachment-4044" class="wp-caption-text">SSRS report exported to docx</p></div></li>
</ol>
<h3>Date and Time in the Export File Name</h3>
<p>When you export SSRS reports from SSIS, you may want to add the current date or time to the report file name. For example, you can save the report as Filename20180323.xlsx, where 20180323 means March 23, 2018.</p>
<div class="su-note"  style="border-color:#e5decb;border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;"><div class="su-note-inner su-u-clearfix su-u-trim" style="background-color:#fff8e5;border-color:#ffffff;color:#333333;border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;">Newer versions of ZappySys SSRS Reporting Services Task support placeholder functions directly in the <strong>Save As</strong> path under the <strong>Export Settings</strong> tab when you choose <strong>Output as file</strong> on the <strong>General</strong> tab. For example, you can use a date/time placeholder in the target path and avoid a separate rename step. The steps below are still useful as a legacy two-step method when you prefer to export the file first and then rename it using ZappySys Advanced File System Task. See more examples in <a href="https://zappysys.com/onlinehelp/ssis-powerpack/scr/ssis-format-specifiers.htm" target="_blank" rel="noopener">Format Specifiers / Placeholder Functions</a>.</div></div>
<p>There are two ways to save a report file with date/time in the path:</p>
<ol>
<li><strong>New method:</strong> Use placeholder functions directly in the SSRS task <strong>Save As</strong> path under the <strong>Export Settings</strong> tab.</li>
<li><strong>Legacy method:</strong> Export the report as a file first, and then rename the file using ZappySys Advanced File System Task.</li>
</ol>
<p>The following legacy example shows how to add a date suffix after the report is exported.</p>
<ol>
<li>First of all, we will use the ZappySys Advanced File System Task:</li>
<li>Secondly, we will use the option Rename files and rename using the fun_getdate function like this:<br />
<strong><strong><strong>Filename&lt;&lt;yyyy-MM-dd,FUN_GETDATE&gt;&gt;.xlsx</strong></strong></strong></li>
<li>Also, you can watch all the available examples of functions by pressing the Expressions (x) button:
<div id="attachment_4057" style="width: 572px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-functions-for-dates.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4057" class=" wp-image-4057" src="https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-functions-for-dates.png" alt="Functions in SSIS " width="562" height="520" srcset="https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-functions-for-dates.png 680w, https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-functions-for-dates-300x278.png 300w" sizes="(max-width: 562px) 100vw, 562px" /></a><p id="caption-attachment-4057" class="wp-caption-text">Special SSIS functions</p></div></li>
<li>Finally, press insert variable and function examples and you will be able to see all the examples of special functions to simplify your life:
<div id="attachment_4058" style="width: 594px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-function-examples-for-dates.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4058" class=" wp-image-4058" src="https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-function-examples-for-dates.png" alt="Special functions" width="584" height="472" srcset="https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-function-examples-for-dates.png 906w, https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-function-examples-for-dates-300x242.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-function-examples-for-dates-768x621.png 768w" sizes="(max-width: 584px) 100vw, 584px" /></a><p id="caption-attachment-4058" class="wp-caption-text">Samples of functions</p></div></li>
</ol>
<h3>Send SSRS Report as an Email Attachment</h3>
<p>The Reporting Services Task can render the report and send it by email. You need SMTP settings (server, credentials, port). Follow these steps:</p>
<ol>
<li>First of all, in the general tab, check the email report file and uncheck the Output as file option:
<div id="attachment_4064" style="width: 637px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-email-SSRS-Reporting-Service.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4064" class="size-full wp-image-4064" src="https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-email-SSRS-Reporting-Service.png" alt="Send SSRS report as attachment in SSIS" width="627" height="616" srcset="https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-email-SSRS-Reporting-Service.png 627w, https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-email-SSRS-Reporting-Service-300x295.png 300w" sizes="(max-width: 627px) 100vw, 627px" /></a><p id="caption-attachment-4064" class="wp-caption-text">Output SSRS report in SSIS as attachment</p></div></li>
<li>Also, on the <strong>Email Settings</strong> tab, choose <strong>New</strong> under SMTP connections to create a connection. Provide the SMTP server name, credentials, and port. You can find sample SMTP hosts and ports <a href="https://www.arclab.com/en/kb/email/list-of-smtp-and-pop3-servers-mailserver-list.html" target="_blank" rel="noopener">in this third-party list</a>.</li>
<li>In addition, you have an option to specify the sender, receiver, subject, and body. It is possible to write the body in HTML format. You can also specify SSIS variables. The following HTML code shows how to write in bold,<br />
italic, with bullets and more:<br />
<pre class="crayon-plain-tag">&lt;h1&gt;This is an example using headers&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;This is an example to write using bold&lt;/strong&gt; &lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;em&gt;This is an example to write using italic &lt;br /&gt;&lt;/em&gt;
This is an example using underline&lt;br /&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;This is an example with lists&lt;/li&gt;
  &lt;li&gt;Second item in the list&lt;/li&gt;
  &lt;li&gt;Third of the list&lt;/li&gt;
&lt;/ol&gt;
&lt;ul style="list-style-type:circle"&gt;
  &lt;li&gt;This is an example with bullets&lt;/li&gt;
  &lt;li&gt;Bullet sample &lt;/li&gt;
  &lt;li&gt;Working with bullets&lt;/li&gt;
&lt;/ul&gt;</pre>
&nbsp;</p>
<div id="attachment_4075" style="width: 635px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-SSRS-send-report-as-email-attachment.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4075" class="size-full wp-image-4075" src="https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-SSRS-send-report-as-email-attachment.png" alt="SSIS HTML mail message" width="625" height="665" srcset="https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-SSRS-send-report-as-email-attachment.png 625w, https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-SSRS-send-report-as-email-attachment-282x300.png 282w" sizes="(max-width: 625px) 100vw, 625px" /></a><p id="caption-attachment-4075" class="wp-caption-text">Dynamic HTML in SSIS</p></div></li>
<li>Additionally, in Visual Studio go to the menu and SSIS, Variables and create two variables that will be used in the report named Title and ReportName of type string and specify values for them:
<div id="attachment_4066" style="width: 727px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-variables.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4066" class="size-full wp-image-4066" src="https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-variables.png" alt="SSIS dynamic emails" width="717" height="142" srcset="https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-variables.png 717w, https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-variables-300x59.png 300w" sizes="(max-width: 717px) 100vw, 717px" /></a><p id="caption-attachment-4066" class="wp-caption-text">Using SSIS variables in emails</p></div></li>
<li>Finally, execute the Package and check your email received:
<div id="attachment_4077" style="width: 610px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/06/SSRS-SSIS-email-sent.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4077" class="size-full wp-image-4077" src="https://zappysys.com/blog/wp-content/uploads/2018/06/SSRS-SSIS-email-sent.png" alt="The email with the SSRS Report" width="600" height="358" srcset="https://zappysys.com/blog/wp-content/uploads/2018/06/SSRS-SSIS-email-sent.png 600w, https://zappysys.com/blog/wp-content/uploads/2018/06/SSRS-SSIS-email-sent-300x179.png 300w" sizes="(max-width: 600px) 100vw, 600px" /></a><p id="caption-attachment-4077" class="wp-caption-text">Email received SSIS Html format</p></div></li>
</ol>
<h3>Send SSRS Report as HTML in the Email Body (Not as an Attachment)</h3>
<p>By default, <strong>Output as email</strong> usually sends the rendered report as an <strong>attachment</strong>. To put the report <strong>inside the email as HTML</strong>, use one of the methods below.</p>
<p><strong>Important:</strong> HTML export applies to <strong>server reports</strong> only. Local RDL mode does not support exporting as HTML; use a report deployed to SSRS.</p>
<h4>Method 1: Email Settings Checkbox (Recommended, Newer Builds)</h4>
<p>If your SSIS PowerPack build is from <strong>after May 6, 2026</strong>, use this single-step option.</p>
<p>In the Reporting Services Task, open the <strong>Email Settings</strong> tab and enable <strong>Use report output as Email body (*.htm / *.html export formats only)</strong>. Configure SMTP and recipients as usual, and set the export format to HTML (<code>.htm</code> or <code>.html</code>). The task embeds the rendered report HTML in the email body—no separate Send HTML Email Task is required.</p>
<div id="attachment_12106" style="width: 755px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2018/06/ssis-export-email-ssrs-report-as-html-global-setting.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-12106" class="size-full wp-image-12106" src="https://zappysys.com/blog/wp-content/uploads/2018/06/ssis-export-email-ssrs-report-as-html-global-setting.png" alt="SSIS Reporting Services Task Email Settings: Use report output as Email body for HTML" width="745" height="706" srcset="https://zappysys.com/blog/wp-content/uploads/2018/06/ssis-export-email-ssrs-report-as-html-global-setting.png 745w, https://zappysys.com/blog/wp-content/uploads/2018/06/ssis-export-email-ssrs-report-as-html-global-setting-300x284.png 300w" sizes="(max-width: 745px) 100vw, 745px" /></a><p id="caption-attachment-12106" class="wp-caption-text">Email Settings: use report output as HTML email body (single-step)</p></div>
<div class="su-note"  style="border-color:#e5decb;border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;"><div class="su-note-inner su-u-clearfix su-u-trim" style="background-color:#fff8e5;border-color:#ffffff;color:#333333;border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;">This option replaces the older two-step workflow for most users. If your build does not show this checkbox, use the legacy two-step method in the next subsection.</div></div>
<h4>Method 2: SSRS Task Plus Send HTML Email Task (Legacy)</h4>
<p>Use this on builds <strong>on or before May 6, 2026</strong>, or when you want full control over the email HTML in <a href="https://zappysys.com/products/ssis-powerpack/ssis-send-html-email-task/" target="_blank" rel="noopener">Send HTML Email Task</a>.</p>
<p><strong>Summary of the two-step flow:</strong></p>
<ol>
<li>Reporting Services Task exports a <strong>server</strong> report to an HTML file (for example <code>C:\temp\sales-order.html</code>).</li>
<li><a href="https://zappysys.com/products/ssis-powerpack/ssis-send-html-email-task/" target="_blank" rel="noopener">Send HTML Email Task</a> reads that file into the message body using <strong>FUN_FILE_READ</strong>.</li>
</ol>
<div id="attachment_12105" style="width: 1189px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2018/06/ssis-export-email-ssrs-report-as-html.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-12105" class="size-full wp-image-12105" src="https://zappysys.com/blog/wp-content/uploads/2018/06/ssis-export-email-ssrs-report-as-html.png" alt="SSIS two-step flow: export SSRS report to HTML then Send HTML Email Task with FUN_FILE_READ" width="1179" height="757" srcset="https://zappysys.com/blog/wp-content/uploads/2018/06/ssis-export-email-ssrs-report-as-html.png 1179w, https://zappysys.com/blog/wp-content/uploads/2018/06/ssis-export-email-ssrs-report-as-html-300x193.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/06/ssis-export-email-ssrs-report-as-html-1024x657.png 1024w, https://zappysys.com/blog/wp-content/uploads/2018/06/ssis-export-email-ssrs-report-as-html-768x493.png 768w" sizes="(max-width: 1179px) 100vw, 1179px" /></a><p id="caption-attachment-12105" class="wp-caption-text">Legacy two-step flow: SSRS Task plus Send HTML Email Task</p></div>
<div class="su-note"  style="border-color:#e5decb;border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;"><div class="su-note-inner su-u-clearfix su-u-trim" style="background-color:#fff8e5;border-color:#ffffff;color:#333333;border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;">Export the report from a server report to an HTML file, then use Send HTML Email Task and read that file into the email body with a placeholder function.</div></div>
<ol>
<li>In the ZappySys Reporting Services Task, use <strong>Export server report</strong>, not local report mode.</li>
<li>Choose <strong>Output as file</strong> and export the SSRS report as an HTML file to the local system, for example <strong>C:\temp\sales-order.html</strong>.</li>
<li>Add <a href="https://zappysys.com/products/ssis-powerpack/ssis-send-html-email-task/" target="_blank" rel="noopener">ZappySys Send HTML Email Task</a> in the next step of your SSIS package.</li>
<li>In the email body, use the <strong>FUN_FILE_READ</strong> placeholder function to read the HTML file exported in the previous step and paste the entire HTML content into the email body:</li>
</ol>
<pre class="crayon-plain-tag">&lt;&lt;C:\temp\sales-order.html,FUN_FILE_READ&gt;&gt;</pre>
You can learn more about <strong>FUN_FILE_READ</strong> and other placeholder functions in the <a href="https://zappysys.com/onlinehelp/ssis-powerpack/scr/ssis-format-specifiers.htm" target="_blank" rel="noopener">ZappySys Format Specifiers / Placeholder Functions</a> help page.</p>
<h3>Pass SSRS Report Parameters from SSIS</h3>
<p>Many SSRS reports define parameters (for example date range or customer ID). The Reporting Services Task can map <strong>SSIS variables</strong> to those SSRS parameters so values are chosen when the package runs. You need a report that includes at least one parameter to try this. To learn how to author parameters in SSRS, see <a href="https://docs.microsoft.com/en-us/sql/reporting-services/report-design/report-parameters-report-builder-and-report-designer?view=sql-server-2017" target="_blank" rel="noopener">Microsoft’s report parameters documentation</a>.</p>
<ol>
<li>First of all, you will need an SSRS Report with a parameter:
<div id="attachment_4081" style="width: 811px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/06/SSRS-parameter.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4081" class="size-full wp-image-4081" src="https://zappysys.com/blog/wp-content/uploads/2018/06/SSRS-parameter.png" alt="SSRS reporting with parameters" width="801" height="392" srcset="https://zappysys.com/blog/wp-content/uploads/2018/06/SSRS-parameter.png 801w, https://zappysys.com/blog/wp-content/uploads/2018/06/SSRS-parameter-300x147.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/06/SSRS-parameter-768x376.png 768w" sizes="(max-width: 801px) 100vw, 801px" /></a><p id="caption-attachment-4081" class="wp-caption-text">Reporting Service Parameter</p></div></li>
<li>Secondly, in SSDT or Visual Studio, in the menu, go to SSIS and variables. Create an SSIS variable:
<div id="attachment_4082" style="width: 605px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-parameters.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4082" class="size-full wp-image-4082" src="https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-parameters.png" alt="Creating variables in SSIS" width="595" height="109" srcset="https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-parameters.png 595w, https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-parameters-300x55.png 300w" sizes="(max-width: 595px) 100vw, 595px" /></a><p id="caption-attachment-4082" class="wp-caption-text">Variables in SSIS</p></div></li>
<li>Finally, in Reporting Services Task in Visual Studio, go to Report Parameters and map the SSRS parameter with the SSIS variable:
<div id="attachment_4083" style="width: 726px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-SSRS-map-reporting-service-parameters-with-integration-services-parameters.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4083" class="size-full wp-image-4083" src="https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-SSRS-map-reporting-service-parameters-with-integration-services-parameters.png" alt="SSIS mapping of SSRS parameters and SSIS variables" width="716" height="497" srcset="https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-SSRS-map-reporting-service-parameters-with-integration-services-parameters.png 716w, https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-SSRS-map-reporting-service-parameters-with-integration-services-parameters-300x208.png 300w" sizes="(max-width: 716px) 100vw, 716px" /></a><p id="caption-attachment-4083" class="wp-caption-text">Map SSIS variable with SSRS parameters</p></div></li>
</ol>
<h2>Mode 2: Export and Email Local RDL Files (No SSRS Server)</h2>
<p><strong>Local mode</strong> lets you render a report from a <strong>.rdl</strong> or <strong>.rdlc</strong> file on disk. You do <strong>not</strong> need SQL Server Reporting Services installed, a report server URL, or a deployed report catalog. SSIS runs the report layout locally and exports or emails the result — the same way many teams use SSDT to design reports, but with SSIS controlling <em>when</em> it runs and <em>what data</em> feeds it.</p>
<h3>When to use local mode</h3>
<p>Local mode fits developer- and DBA-driven workflows where a full SSRS farm is overkill or unavailable:</p>
<ul>
<li>You authored reports in <strong>SSDT / Visual Studio Report Designer</strong> and want SSIS to export PDF, Excel, or Word after ETL, billing, or validation jobs.</li>
<li>You need scheduled or event-driven report delivery but <strong>no report server</strong> is licensed or installed in that environment.</li>
<li>Report files live on a file share or in source control; SSIS reads the path and delivers output by email or to a folder.</li>
<li>Data should come from the SSIS package itself — for example an Execute SQL Task recordset or dynamic SQL — not from a fixed subscription on the server.</li>
<li>You want to <strong>preview</strong> the local report in the task editor before running the package (see the export steps below).</li>
</ul>
<div class="su-note"  style="border-color:#e5decb;border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;"><div class="su-note-inner su-u-clearfix su-u-trim" style="background-color:#fff8e5;border-color:#ffffff;color:#333333;border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;"><strong>Local vs server mode:</strong> Server mode connects to SSRS and supports more export formats (including HTML for email body). Local mode supports <strong>PDF, Excel (.xls), and Word (.doc)</strong> only. HTML-in-email-body is a <strong>server report</strong> feature. Use local mode for PDF, Excel, or Word attachments or file export.</div></div>
<h3>Export a local RDL to PDF, Excel, or Word</h3>
<ol>
<li>Drag the ZappySys <strong>Reporting Services Task</strong> onto the Control Flow.</li>
<li>On the <strong>General</strong> tab, select <strong>Export local report</strong> (not Export server report).</li>
<li>Set <strong>Report path</strong> to your .rdl or .rdlc file. Use <strong>Browse</strong>. The task filters to report files and auto-fills dataset names, queries, and connection strings from the file.</li>
<li>Review <strong>Dataset Name(s)</strong>, <strong>Dataset Connection String(s)</strong>, and <strong>Dataset Quer(ies)</strong>. Adjust connection strings for your environment (server name, database, auth). See <a href="#local-mode-data-binding">How local mode supplies data</a> for pipe-delimited rules and one-connection vs many-connection cases.</li>
<li>Optional: map report parameters on the <strong>Report Parameters</strong> tab (same as server mode).</li>
<li>Check <strong>Output as file</strong>. On <strong>Export Settings</strong>, choose Save As path and format: <strong>.pdf</strong>, <strong>.xls</strong>, or <strong>.doc</strong>.</li>
<li>Optional: click <strong>Preview</strong> in the task editor to render the report inside Visual Studio or SSDT before you run the package. Preview uses the same dataset binding as export (connection/query fields, or values copied from the RDL). At design time, an Object variable is usually empty, so Preview typically relies on connection and query fields unless you run with test data.</li>
<li>Run the package. The file is created without contacting any report server.</li>
</ol>
<div id="attachment_4103" style="width: 635px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-Export-local-report-query-dataset-connection-string.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4103" class="size-full wp-image-4103" src="https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-Export-local-report-query-dataset-connection-string.png" alt="SSIS local RDL export — dataset names, connection string, and queries" width="625" height="665" srcset="https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-Export-local-report-query-dataset-connection-string.png 625w, https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-Export-local-report-query-dataset-connection-string-282x300.png 282w" sizes="(max-width: 625px) 100vw, 625px" /></a><p id="caption-attachment-4103" class="wp-caption-text">Local RDL mode — report path, dataset binding, and export settings</p></div>
<h3>Email a local RDL report without a report server</h3>
<p>Local reports can be emailed as <strong>attachments</strong> the same way as server reports — still no SSRS server involved.</p>
<ol>
<li>Configure the task as above (<strong>Export local report</strong>, report path, dataset binding).</li>
<li>On the <strong>General</strong> tab, check <strong>Email report file</strong> and uncheck <strong>Output as file</strong> (or use both if you want file + email).</li>
<li>On <strong>Email Settings</strong>, configure SMTP, recipients, subject, and body. Export format should be PDF, Excel, or Word.</li>
<li>Run the package — recipients get the rendered report as an attachment.</li>
</ol>
<p>Use placeholder functions in the email subject or body for dynamic text (same as server mode). For HTML report content inside the email body, use <strong>server report</strong> mode with HTML export — local mode does not support that scenario.</p>
<h3>Bind data from an Execute SQL Task variable (multiple datasets)</h3>
<p>Use this approach when you do <strong>not</strong> want to type connection strings and queries on the Reporting Services Task. Instead, run SQL earlier in the package, store all result sets in one <strong>Object</strong> variable, and bind that variable to the local RDL.</p>
<p>An <strong>Execute SQL Task</strong> can return results from <strong>multiple SQL statements</strong> (multiple batches or multiple <code>SELECT</code> statements). SSIS stores them in one variable as a <strong>DataSet</strong> (a collection of <code>DataTable</code> objects, one table per result set). That matches an SSRS report that defines <strong>multiple datasets</strong>: each result set maps to a dataset in the RDL by <strong>ordinal position</strong> (index 0, 1, 2, and so on).</p>
<p>Supported variable contents: a single ADO.NET <code>DataTable</code>, a <code>DataSet</code> with multiple tables, or an ADODB recordset (OLE DB).</p>
<p><strong>Step 1: Create the Object variable</strong></p>
<ol>
<li>In SSIS, create a package variable (for example <code>User::MultipleDatasets</code>) with data type <strong>Object</strong>.</li>
</ol>
<p><strong>Step 2: Execute SQL Task — return multiple result sets</strong></p>
<ol>
<li>Add an <strong>Execute SQL Task</strong> before the Reporting Services Task.</li>
<li>On the <strong>General</strong> tab, set <strong>ResultSet</strong> to <strong>Full result set</strong> (required for multiple queries).</li>
<li>Enter your SQL. You can use multiple statements that each produce a result set (for example three <code>SELECT</code> queries for three report datasets).</li>
<li>Open the <strong>Result Set</strong> tab.</li>
<li>Map <strong>Result Name</strong> <code>0</code> to your Object variable (for example <code>User::MultipleDatasets</code>). Index <code>0</code> is the full multi-table payload when the task returns a DataSet with more than one table.</li>
<li>Run the Execute SQL Task once in isolation if needed to confirm the variable is populated at runtime.</li>
</ol>
<p><strong>Step 3: Reporting Services Task — bind the variable</strong></p>
<ol>
<li>On the Reporting Services Task <strong>General</strong> tab (local report), enable the binding option shown in your build (for example <strong>Bind from recordset variable</strong> / binding from a populated variable).</li>
<li>Choose the same Object variable you mapped on the Execute SQL Task <strong>Result Set</strong> tab (for example <code>User::MultipleDatasets</code>).</li>
<li>Ensure <strong>Dataset Name(s)</strong> on the task still lists every dataset name from the RDL, in the same order as the result sets returned by SQL (first name = index 0, second = index 1, and so on).</li>
<li>Export or email the report as usual. At runtime the task uses the variable instead of running the inline connection/query fields.</li>
</ol>
<div id="attachment_12191" style="width: 865px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2018/06/export-ssrs-report-in-ssis-bind-multiple-datasets.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-12191" class="size-full wp-image-12191" src="https://zappysys.com/blog/wp-content/uploads/2018/06/export-ssrs-report-in-ssis-bind-multiple-datasets.png" alt="Local RDL export in SSIS: bind Execute SQL Task Object variable to multiple SSRS datasets" width="855" height="864" srcset="https://zappysys.com/blog/wp-content/uploads/2018/06/export-ssrs-report-in-ssis-bind-multiple-datasets.png 855w, https://zappysys.com/blog/wp-content/uploads/2018/06/export-ssrs-report-in-ssis-bind-multiple-datasets-297x300.png 297w, https://zappysys.com/blog/wp-content/uploads/2018/06/export-ssrs-report-in-ssis-bind-multiple-datasets-768x776.png 768w" sizes="(max-width: 855px) 100vw, 855px" /></a><p id="caption-attachment-12191" class="wp-caption-text">Bind an Object variable from Execute SQL Task to multiple datasets on a local RDL report</p></div>
<div class="su-note"  style="border-color:#e5decb;border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;"><div class="su-note-inner su-u-clearfix su-u-trim" style="background-color:#fff8e5;border-color:#ffffff;color:#333333;border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;"><strong>Ordinal mapping:</strong> Result set index 0 fills the first dataset name you list, index 1 fills the second, and so on. Dataset names must match the RDL exactly (case-sensitive). If the report has three datasets, return three result sets in the same order as your SQL batches.</div></div>
<h3 id="local-mode-data-binding">How local mode supplies data (important)</h3>
<p>A .rdl file contains report layout plus embedded design-time queries. In local mode, SSIS does <strong>not</strong> automatically run SQL stored only inside the RDL at runtime. The Reporting Services Task needs either <strong>inline binding</strong> (names, connections, queries on the task) or a <strong>recordset variable</strong> filled earlier in the package (see the section above).</p>
<p><strong>Inline binding (connection + query fields)</strong></p>
<ul>
<li><strong>Dataset Name(s)</strong>: must match <code>&lt;DataSet Name="..."&gt;</code> in the RDL (case-sensitive).</li>
<li><strong>Dataset Quer(ies)</strong>: one query per dataset, in the <strong>same order</strong> as dataset names, pipe-separated (<code>|</code>) when there is more than one.</li>
<li><strong>Dataset Connection String(s)</strong>: connection used to execute each query. Mapping is <strong>by ordinal</strong>, same as dataset names and queries.</li>
</ul>
<p>To save typing, <strong>Browse</strong> the .rdl file in the task. Names, queries, and embedded connection strings copy into those fields. Shared <code>.rds</code> data source references are skipped; paste that connection string manually.</p>
<p><strong>Three datasets, three SQL queries, one connection string</strong></p>
<p>This is a common question when the RDL has three datasets and you supply three queries on the task.</p>
<ul>
<li><strong>Same server and database for all three queries:</strong> enter <strong>one</strong> connection string. The task reuses that connection for every dataset. You still supply <strong>three</strong> pipe-separated queries (and three pipe-separated dataset names). You do <strong>not</strong> need three identical connection strings unless you prefer to repeat them.</li>
<li><strong>Different databases or different servers per dataset:</strong> supply <strong>one connection string per dataset</strong>, pipe-separated, in the <strong>same order</strong> as dataset names and queries. Example: <code>ConnA|ConnB|ConnC</code> with <code>QueryA|QueryB|QueryC</code> and <code>dsA|dsB|dsC</code>.</li>
<li><strong>Rule of thumb:</strong> connection count follows database count, not dataset count by itself. Three datasets on one database = one connection string + three queries. Three datasets on three databases = three connection strings + three queries, all aligned by position.</li>
</ul>
<p><strong>Variable binding (Execute SQL Task)</strong></p>
<p>When you use an Object variable, connection strings on the Reporting Services Task are not used to fetch data at runtime. The Execute SQL Task (or Recordset Destination) already executed the SQL and stored tables in the variable. You still list <strong>Dataset Name(s)</strong> on the report task so each <code>DataTable</code> in the variable maps to the correct RDL dataset by index. One variable can hold all tables; you do not need one variable per dataset unless you choose that design.</p>
<p><strong>Preview vs runtime</strong></p>
<p>The <strong>Preview</strong> button in the task editor uses the same binding rules as export. At design time the Object variable is usually empty, so Preview relies on connection/query fields or values copied from the RDL. At package runtime, <strong>Bind from recordset variable</strong> (when enabled) uses the populated variable.</p>
<h3>Single-dataset example</h3>
<p>For a simple Northwind orders report with one dataset named <code>dsOrders</code>:</p><pre class="crayon-plain-tag">Report path:     C:\Reports\OrdersReport.rdl
Dataset Names:   dsOrders
Connection:      Data Source=localhost;Initial Catalog=Northwind;Integrated Security=True;
Queries:         SELECT * FROM Orders</pre><p>
Browse the RDL once and these values are copied for you. Click <strong>Preview</strong> on the task to verify layout, then run the package.</p>
<h3>Multiple datasets (inline SQL on the task)</h3>
<p>When the RDL defines more than one dataset, list names, connection strings, and queries in the <strong>same order</strong>, separated by <code>|</code>:</p><pre class="crayon-plain-tag">Dataset Names:   dsCustomers|dsOrders|dsDetails
Queries:         SELECT * FROM Customers|SELECT * FROM Orders|SELECT * FROM [Order Details]
Connections:     Data Source=MyServer;Initial Catalog=Northwind;Integrated Security=True;</pre><p>
The example above uses <strong>one</strong> connection string for <strong>three</strong> queries on the same database. If <code>dsOrders</code> lived on another server, use pipe-separated connections in the same order as names and queries:</p><pre class="crayon-plain-tag">Dataset Names:   dsCustomers|dsOrders
Connections:     Data Source=ServerA;Initial Catalog=DB1;...|Data Source=ServerB;Initial Catalog=DB2;...
Queries:         SELECT * FROM Customers|SELECT * FROM Orders</pre><p>
When SQL contains semicolons or pipes, use the XML query format documented in the task help.</p>
<p>For the same three datasets fed from SSIS instead of inline SQL, use three result sets in one Execute SQL Task, map <strong>Result Name 0</strong> to <code>User::MultipleDatasets</code>, and bind that variable on the Reporting Services Task as described earlier.</p>
<div class="su-note"  style="border-color:#d4dde5;border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;"><div class="su-note-inner su-u-clearfix su-u-trim" style="background-color:#eef7ff;border-color:#ffffff;color:#333333;border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;"><strong>Mode 2 quick reference</strong><br />
• <a href="https://zappysys.com/products/ssis-powerpack/ssis-report-generator-task/" target="_blank" rel="noopener">Reporting Services Task help</a><br />
• <a href="https://zappysys.com/link/?id=10160" target="_blank" rel="noopener">Local RDL online documentation</a><br />
• <strong>Local RDL help?</strong> on the task UI<br />
• <strong>Modern RDL (2016 schema):</strong> Reports saved from recent SSDT or Visual Studio use the SSRS 2016 report definition format. Install the <strong>latest SSIS PowerPack</strong> for local mode. It includes the <strong>ReportViewer 15.x</strong> engine for new RDL files and the legacy engine for older 2008/2010 schema reports. Older builds may fail with a namespace or ReportViewer runtime error. Upgrade PowerPack on the SSIS machine only. No SSRS server upgrade is required for local mode.</div></div>
<h2>Mode 3: Data-Driven Export (SQL Config Table)</h2>
<p><strong>Data-driven mode</strong> is the third export option. Instead of configuring one report on the task, you store export settings in a <strong>SQL Server table</strong>. Each row can define a different report, output path, email recipients, parameters, and whether that row uses a <strong>server report</strong> (<code>ReportType = 'Server'</code>) or a <strong>local .rdl</strong> (<code>ReportType = 'Local'</code>). One SSIS package run can export or email many reports — ideal for operational batches controlled by DBAs or app teams without changing the package.</p>
<h3>Data-Driven Export for Multiple SSRS Reports</h3>
<p>Follow these steps to set up data-driven export:</p>
<ol>
<li>First of all, select the data-driving report export using config table.</li>
<li>Also, you will need to specify the connection to the SQL Server<br />
database.</li>
<li>In addition, go to config table, press new to create a new table:
<div id="attachment_4099" style="width: 632px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-data-driven-SSRS-1.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4099" class="size-full wp-image-4099" src="https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-data-driven-SSRS-1.png" alt="Data-driven configuration for SSRS in SSIS" width="622" height="618" srcset="https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-data-driven-SSRS-1.png 622w, https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-data-driven-SSRS-1-150x150.png 150w, https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-data-driven-SSRS-1-300x298.png 300w" sizes="(max-width: 622px) 100vw, 622px" /></a><p id="caption-attachment-4099" class="wp-caption-text">SSRS Data-driven in SSIS</p></div></li>
<li>Additionally, ZappySys allows creating a sample table that can help you to understand how to configure local reports, Calling SSRS Reports in SSIS and save to files, specify paths, ports, email options and more:<br />
<pre class="crayon-plain-tag">CREATE TABLE [{{SchemaName}}].[{{TableName}}](
	Id int identity(1,1) NOT NULL  PRIMARY KEY, 
	GroupName varchar(100) NULL,  /* Used to filter reports */
	ReportType varchar(10) NOT NULL, /*Local or Server*/
	ReportServiceUrl  varchar(500) null, 
	ReportPath varchar(500) NOT NULL, 
	IsEnabled bit NOT NULL default(1),
	ExportAsFile bit NOT NULL default(1),
	ExportAsEmail bit NOT NULL default(0),
	Parameters varchar(max) NULL, /* ParameterName1;IsMultiValue;Value1|....ParameterNameN;IsMultiValue;ValueN */
	ExportPath varchar(500) NULL,
	AddFileSuffix bit NULL,
	ExportFileSuffix varchar(500) NULL, /* e.g. _ddMMyyyy, _ddMMyyyyhhmmss, _ddMMyyyyhhmmss.fff (see this URL http://msdn.microsoft.com/en-us/library/az4se3k1(v=vs.110).aspx) */
	Description varchar(500) NULL,
	EmailFrom varchar(255) NULL,
	EmailTo varchar(1000) NULL,
	EmailCc varchar(1000) NULL,
	EmailBcc varchar(1000) NULL,
	EmailSubject varchar(500) NULL,	
	EmailIsHtml bit NULL default(1),	
	EmailBodyText varchar(max) NULL,
	EmailAttachmentFile varchar(500) NULL, /*Unused: For future use only*/
	LastExportStartDate datetime NULL,
	LastExportEndDate datetime NULL,
	LastStatus varchar(20) NULL,
	LastMessage varchar(max) NULL,
	Datasets varchar(max) NULL, /*if ReportType=local and report file is using dataset(s) then supply data in this column (multiple values must be pipe delimited). e.g. Dataset1|Dataset2)*/
	DatasetConnectionStrings varchar(max) NULL, /*if ReportType=local and report file is using dataset(s) then supply data in this column (connection string must be same order as datasets (multiple values must be pipe delimited) enter just one connectionstring if all datasets using same connection. ConnectionString must be ADO.NET for SQLServer, ODBC or OLEDB connection string and correct driver must be installed on the system)*/
	DatasetQueries varchar(max) NULL /*if ReportType=local and report file is using dataset(s) then supply data in this column (queries must be in the same order as dataset(s) listed in Datasets column. enter multiple queries in this format &lt;xml&gt;&lt;query&gt;{query for 1st dataset}&lt;/query&gt;&lt;query&gt;{query for 2nd dataset}&lt;/query&gt;&lt;/xml&gt;)*/
);</pre>
&nbsp;</p>
<div id="attachment_4100" style="width: 499px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/06/ssis-data-driven-table-t-sql-code.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4100" class="size-full wp-image-4100" src="https://zappysys.com/blog/wp-content/uploads/2018/06/ssis-data-driven-table-t-sql-code.png" alt="Data-driven table in SSRS" width="489" height="332" srcset="https://zappysys.com/blog/wp-content/uploads/2018/06/ssis-data-driven-table-t-sql-code.png 489w, https://zappysys.com/blog/wp-content/uploads/2018/06/ssis-data-driven-table-t-sql-code-300x204.png 300w" sizes="(max-width: 489px) 100vw, 489px" /></a><p id="caption-attachment-4100" class="wp-caption-text">Sample Database in SSIS for SSRS</p></div></li>
<li>Finally, you can check the table with the configuration:
<div id="attachment_4102" style="width: 849px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/06/SSRS-data-driven-config-in-SSIS.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4102" class="size-full wp-image-4102" src="https://zappysys.com/blog/wp-content/uploads/2018/06/SSRS-data-driven-config-in-SSIS.png" alt="SSIS data-driven table in SSRS" width="839" height="137" srcset="https://zappysys.com/blog/wp-content/uploads/2018/06/SSRS-data-driven-config-in-SSIS.png 839w, https://zappysys.com/blog/wp-content/uploads/2018/06/SSRS-data-driven-config-in-SSIS-300x49.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/06/SSRS-data-driven-config-in-SSIS-768x125.png 768w" sizes="(max-width: 839px) 100vw, 839px" /></a><p id="caption-attachment-4102" class="wp-caption-text">Data-driven table created in SSIS</p></div></li>
</ol>
<p>For <strong>local RDL rows</strong>, set <code>ReportType</code> to <code>Local</code> and populate <code>Datasets</code>, <code>DatasetConnectionStrings</code>, and <code>DatasetQueries</code> using the same pipe-delimited rules as Mode 2. For <strong>server rows</strong>, set <code>ReportType</code> to <code>Server</code>, supply <code>ReportServiceUrl</code>, and use the report path on the server — same as Mode 1.</p>
<h2>Move Exported Reports to a UNC Path</h2>
<p>After export, you can copy or move files—for example to a shared folder via a UNC path—using Advanced File System Task.</p>
<ol>
<li>First of all, specify your file name to move. You can use *.xlsx for example to move all the files.</li>
<li>Secondly, specify the UNC path in destination:
<div id="attachment_4059" style="width: 693px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-move-files.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4059" class="size-full wp-image-4059" src="https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-move-files.png" alt="Move SSRS reports exported to UNC path" width="683" height="633" srcset="https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-move-files.png 683w, https://zappysys.com/blog/wp-content/uploads/2018/06/SSIS-move-files-300x278.png 300w" sizes="(max-width: 683px) 100vw, 683px" /></a><p id="caption-attachment-4059" class="wp-caption-text">SSIS move files to UNC path</p></div></li>
<li>Also, It is possible to sort files by name, size, modified date or other properties:
<div id="attachment_4061" style="width: 693px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/06/ssis-move-files-sorted-by-name-modified-date.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4061" class="size-full wp-image-4061" src="https://zappysys.com/blog/wp-content/uploads/2018/06/ssis-move-files-sorted-by-name-modified-date.png" alt="SSIS Sorting files by properties" width="683" height="633" srcset="https://zappysys.com/blog/wp-content/uploads/2018/06/ssis-move-files-sorted-by-name-modified-date.png 683w, https://zappysys.com/blog/wp-content/uploads/2018/06/ssis-move-files-sorted-by-name-modified-date-300x278.png 300w" sizes="(max-width: 683px) 100vw, 683px" /></a><p id="caption-attachment-4061" class="wp-caption-text">Sort file in SSIS by name, size, modified date</p></div></li>
<li>Finally, press the Examples link, you can see some custom queries that you can create:
<div id="attachment_4062" style="width: 572px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/06/ssis-filter-file-properties.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4062" class="size-full wp-image-4062" src="https://zappysys.com/blog/wp-content/uploads/2018/06/ssis-filter-file-properties.png" alt="SSIS queries to get file information" width="562" height="397" srcset="https://zappysys.com/blog/wp-content/uploads/2018/06/ssis-filter-file-properties.png 562w, https://zappysys.com/blog/wp-content/uploads/2018/06/ssis-filter-file-properties-300x212.png 300w" sizes="(max-width: 562px) 100vw, 562px" /></a><p id="caption-attachment-4062" class="wp-caption-text">Sample SSIS queries to files</p></div></li>
</ol>
<h2>Related SSIS and SSRS Automation Scenarios</h2>
<p>You can use this SSIS-based SSRS automation approach in many real-world workflows where a fixed SSRS subscription is not flexible enough:</p>
<ul>
<li>Send daily ETL validation reports only after the data load succeeds.</li>
<li>Generate customer-specific reports by passing customer IDs or date ranges as parameters.</li>
<li>Email invoice, billing, or sales reports after a business process is completed.</li>
<li>Export audit reports to a shared folder with date/time in the file name.</li>
<li>Run multiple SSRS reports from a configuration table and deliver each report to different recipients.</li>
<li>Render SSDT-authored .rdl files to PDF or Excel <strong>without deploying to a report server</strong> — ideal for dev/test or small teams.</li>
<li>Feed local reports from Execute SQL Task recordsets so the same package prepares data and delivers the formatted report.</li>
</ul>
<h2>FAQ: SSRS Reports from SSIS</h2>
<h3>What are the three Reporting Services Task export modes?</h3>
<ol>
<li><strong>Export server report</strong> — render a report deployed on SSRS (Mode 1).</li>
<li><strong>Export local report</strong> — render a .rdl/.rdlc file from disk without a report server (Mode 2).</li>
<li><strong>Data-driven report export using config table</strong> — read settings from a SQL table and export many server or local reports in one run (Mode 3).</li>
</ol>
<h3>Can I call an SSRS report from SSIS?</h3>
<p>Yes. You can use ZappySys SSRS Reporting Services Task inside an SSIS package to call a server SSRS report or a local RDL report and export it to formats such as PDF, Excel, Word, CSV, XML, TIFF, or HTML.</p>
<h3>Can SSIS pass parameters to an SSRS report?</h3>
<p>Yes. You can create SSIS variables and map them to SSRS report parameters in the Reporting Services Task. This is useful when report values such as customer, date range, region, or batch ID must be decided at runtime.</p>
<h3>How do I send an SSRS report by email from SSIS?</h3>
<p>You can use the Reporting Services Task to render the report and send it as an email attachment. For more advanced HTML email scenarios, export the report first and then use ZappySys Send HTML Email Task.</p>
<h3>Can I send an SSRS report as the HTML body of an email?</h3>
<p>Yes, but use <strong>server report</strong> mode. In newer builds (after May 6, 2026), open the <strong>Email Settings</strong> tab and check <strong>Use report output as Email body (*.htm / *.html export formats only)</strong>, with an HTML export. On older versions, export the report to HTML and use Send HTML Email Task with a placeholder such as <strong>&lt;&lt;C:\temp\sales-order.html,FUN_FILE_READ&gt;&gt;</strong>.</p>
<h3>Can I export SSRS reports without a report server?</h3>
<p>Yes. Use <strong>Export local report</strong> in the Reporting Services Task. Point the task at a .rdl or .rdlc file, bind dataset name(s), connection string(s), and quer(ies), or bind an Object variable from Execute SQL Task (multiple result sets in one variable). Export to PDF, Excel, or Word. Browse the RDL to auto-fill binding fields from the file. No SSRS installation or report server URL is required.</p>
<h3>Three datasets and three queries: one connection string or three?</h3>
<p>If all queries run against the <strong>same database</strong>, enter <strong>one</strong> connection string on the Reporting Services Task and three pipe-separated queries (and three dataset names). The task reuses that connection for each dataset by ordinal position. If datasets use <strong>different databases or servers</strong>, supply one pipe-separated connection string per dataset in the same order as names and queries. With variable binding, SQL runs in Execute SQL Task; list dataset names on the report task and map result set index 0 to your Object variable on the Execute SQL Task <strong>Result Set</strong> tab.</p>
<h3>What PowerPack version do I need for reports from modern SSDT?</h3>
<p>Reports saved with the <strong>SSRS 2016 RDL schema</strong> (typical for Visual Studio 2017 and later Report Designer) require the <strong>latest SSIS PowerPack</strong> with the ReportViewer 15.x local rendering engine. Older PowerPack builds support legacy 2008/2010 schema .rdl files but not the newest report format. Download the current build from the ZappySys site before testing local mode with recently authored reports.</p>
<h3>Why use SSIS instead of SSRS subscriptions?</h3>
<p>Use SSIS when the report must run after a workflow finishes, when parameters must be supplied dynamically, or when output file names, destinations, and email rules depend on package logic. SSRS subscriptions are better for simpler fixed schedules and predefined parameters.</p>
<h2>Next Steps: Download and Try SSIS PowerPack</h2>
<p>Automate SSRS from SSIS with the ZappySys Reporting Services Task—event-driven runs, dynamic parameters, flexible export paths, and richer email options than typical subscriptions alone.</p>
<ul>
<li><strong><a href="https://zappysys.com/products/ssis-powerpack/download/" target="_blank" rel="noopener">Download SSIS PowerPack</a></strong> — trial and licensed builds.</li>
<li><strong><a href="https://zappysys.com/products/ssis-powerpack/ssis-report-generator-task/" target="_blank" rel="noopener">SSRS Report Generator Task (Reporting Services Task)</a></strong> — product overview.</li>
<li><strong><a href="https://zappysys.com/products/ssis-powerpack/" target="_blank" rel="noopener">SSIS PowerPack home</a></strong> — all tasks and components.</li>
</ul>
<div class="su-note"  style="border-color:#d4dde5;border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;"><div class="su-note-inner su-u-clearfix su-u-trim" style="background-color:#eef7ff;border-color:#ffffff;color:#333333;border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;"><strong>Tip:</strong> After install, add the Reporting Services Task to your package. For server mode, point it at your report server and run a simple export to PDF or HTML. For local mode, browse an .rdl file, confirm dataset fields are filled, click Preview, then export to PDF — no report server needed.</div></div>
<h2>Conclusion</h2>
<p>In summary, <strong>calling SSRS reports from SSIS</strong> is straightforward with the ZappySys Reporting Services Task and its <strong>three export modes</strong>: server reports (Mode 1), local RDL files without a report server (Mode 2), and SQL table-driven batch export (Mode 3). It fits scenarios where SSRS subscriptions are too rigid: jobs triggered after ETL or other processes, parameters chosen at runtime, and customized file naming or delivery. This guide covered server export to file, email attachments, HTML-in-body email for server reports, date/time file names, UNC moves, parameter mapping, local RDL binding (inline SQL, one vs many connection strings, Execute SQL Task Object variables for multiple datasets), Preview in the task editor, modern 2016 RDL schema support, and data-driven configuration for mixed server/local batches.</p>
<h2>References</h2>
<p>For more reading:</p>
<ul>
<li><a href="https://docs.microsoft.com/en-us/sql/reporting-services/reporting-services-tutorials-ssrs?view=sql-server-2017" target="_blank" rel="noopener"> Reporting Services Tutorial<br />
</a></li>
<li><a href="https://zappysys.com/products/ssis-powerpack/ssis-report-generator-task/" target="_blank" rel="noopener">SSRS Report Generator Task in SSIS</a></li>
<li><a href="https://zappysys.com/products/ssis-powerpack/ssis-send-html-email-task/" target="_blank" rel="noopener">SSIS Send HTML Email Task</a></li>
<li><a href="https://zappysys.com/products/ssis-powerpack/ssis-file-system-task-advanced/" target="_blank" rel="noopener">Advanced SSIS File System Task</a></li>
<li><a href="https://zappysys.com/onlinehelp/ssis-powerpack/scr/ssis-format-specifiers.htm" target="_blank" rel="noopener">Format Specifiers / Placeholder Functions</a></li>
</ul>
<p>The post <a href="https://zappysys.com/blog/calling-ssrs-reports-in-ssis-export-emai/">Calling SSRS Reports in SSIS (Export / Email)</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
