<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Robert Bruckner's Advanced Reporting Services Blog : Upgrade</title><link>http://blogs.msdn.com/robertbruckner/archive/tags/Upgrade/default.aspx</link><description>Tags: Upgrade</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>SQL Server 2008 SP1 and Report Builder Update</title><link>http://blogs.msdn.com/robertbruckner/archive/2009/04/07/sql-server-2008-sp1-and-report-builder-update.aspx</link><pubDate>Wed, 08 Apr 2009 08:30:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9537454</guid><dc:creator>Robert M. Bruckner</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/robertbruckner/comments/9537454.aspx</comments><wfw:commentRss>http://blogs.msdn.com/robertbruckner/commentrss.aspx?PostID=9537454</wfw:commentRss><description>&lt;P&gt;&lt;STRONG&gt;&lt;A href="http://blogs.msdn.com/blogfiles/robertbruckner/WindowsLiveWriter/SQLServer2008SP1andReportBuilderUpdate_13C17/SQLServer2008_2.gif" mce_href="http://blogs.msdn.com/blogfiles/robertbruckner/WindowsLiveWriter/SQLServer2008SP1andReportBuilderUpdate_13C17/SQLServer2008_2.gif"&gt;&lt;IMG title=SQLServer2008 style="BORDER-TOP-WIDTH: 0px; DISPLAY: block; BORDER-LEFT-WIDTH: 0px; FLOAT: none; BORDER-BOTTOM-WIDTH: 0px; MARGIN-LEFT: auto; MARGIN-RIGHT: auto; BORDER-RIGHT-WIDTH: 0px" height=95 alt=SQLServer2008 src="http://blogs.msdn.com/blogfiles/robertbruckner/WindowsLiveWriter/SQLServer2008SP1andReportBuilderUpdate_13C17/SQLServer2008_thumb.gif" width=383 border=0 mce_src="http://blogs.msdn.com/blogfiles/robertbruckner/WindowsLiveWriter/SQLServer2008SP1andReportBuilderUpdate_13C17/SQLServer2008_thumb.gif"&gt;&lt;/A&gt; &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Service Pack 1&lt;/STRONG&gt; for SQL Server 2008 is now available for &lt;A href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=66ab3dbb-bf3e-4f46-9559-ccc6a4f9dc19" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=66ab3dbb-bf3e-4f46-9559-ccc6a4f9dc19"&gt;download&lt;/A&gt;.&amp;nbsp; The service pack is primarily a roll-up of &lt;A href="http://blogs.msdn.com/robertbruckner/pages/reporting-services-2008-resources.aspx" mce_href="http://blogs.msdn.com/robertbruckner/pages/reporting-services-2008-resources.aspx"&gt;Cumulative Updates 1, 2, and 3&lt;/A&gt; and minor fixes made in response to requests reported through the SQL Server community.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;While there are no new features in this service pack, a notable addition from a Reporting Services point of view is the ability to &lt;A class="" href="http://blogs.msdn.com/sqlrsteamblog/archive/2009/04/17/some-help-with-report-builder-2-0-clickonce.aspx" mce_href="http://blogs.msdn.com/sqlrsteamblog/archive/2009/04/17/some-help-with-report-builder-2-0-clickonce.aspx"&gt;configure Click Once deployment&lt;/A&gt; to either launch Report Builder 1.0 or the updated Report Builder 2.0, directly from Report Manager (native mode) or SharePoint.&amp;nbsp; If you run Reporting Services in SharePoint integrated mode, make sure to also install the &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=58edd0e4-255b-4361-bd1e-e530d5aab78f" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=58edd0e4-255b-4361-bd1e-e530d5aab78f"&gt;updated RS add-in for SharePoint&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/robertbruckner/WindowsLiveWriter/SQLServer2008SP1andReportBuilderUpdate_13C17/ReportBuilder20_2.png" mce_href="http://blogs.msdn.com/blogfiles/robertbruckner/WindowsLiveWriter/SQLServer2008SP1andReportBuilderUpdate_13C17/ReportBuilder20_2.png"&gt;&lt;IMG title=ReportBuilder20 style="BORDER-TOP-WIDTH: 0px; DISPLAY: block; BORDER-LEFT-WIDTH: 0px; FLOAT: none; BORDER-BOTTOM-WIDTH: 0px; MARGIN-LEFT: auto; MARGIN-RIGHT: auto; BORDER-RIGHT-WIDTH: 0px" height=110 alt=ReportBuilder20 src="http://blogs.msdn.com/blogfiles/robertbruckner/WindowsLiveWriter/SQLServer2008SP1andReportBuilderUpdate_13C17/ReportBuilder20_thumb.png" width=260 border=0 mce_src="http://blogs.msdn.com/blogfiles/robertbruckner/WindowsLiveWriter/SQLServer2008SP1andReportBuilderUpdate_13C17/ReportBuilder20_thumb.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Furthermore, the &lt;STRONG&gt;April 2009 Feature Pack&lt;/STRONG&gt; is now available and includes an updated version of Report Builder 2.0.&amp;nbsp; You can get it either as &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=dbddc9b6-6e19-4d4b-9309-13f62901b0d5" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=dbddc9b6-6e19-4d4b-9309-13f62901b0d5"&gt;Report Builder 2.0 stand-alone download&lt;/A&gt;, or as click once deployment from a Report Server with &lt;A href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=66ab3dbb-bf3e-4f46-9559-ccc6a4f9dc19" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=66ab3dbb-bf3e-4f46-9559-ccc6a4f9dc19"&gt;SQL Server 2008 SP1&lt;/A&gt; applied.&lt;/P&gt;
&lt;P&gt;Summary of download links:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=66ab3dbb-bf3e-4f46-9559-ccc6a4f9dc19" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=66ab3dbb-bf3e-4f46-9559-ccc6a4f9dc19"&gt;SQL Server 2008 Service Pack 1&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=58edd0e4-255b-4361-bd1e-e530d5aab78f" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=58edd0e4-255b-4361-bd1e-e530d5aab78f"&gt;Reporting Services Add-in for Microsoft SharePoint Technologies&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=dbddc9b6-6e19-4d4b-9309-13f62901b0d5" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=dbddc9b6-6e19-4d4b-9309-13f62901b0d5"&gt;Report Builder 2.0 (April 2009)&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Other download resources:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=01af61e6-2f63-4291-bcad-fd500f6027ff" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=01af61e6-2f63-4291-bcad-fd500f6027ff"&gt;SQL Server 2008 Express Edition Service Pack 1&lt;/A&gt;&amp;nbsp; &lt;/LI&gt;
&lt;LI&gt;Full &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=b33d2c78-1059-4ce2-b80d-2343c099bcb4" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=b33d2c78-1059-4ce2-b80d-2343c099bcb4"&gt;SQL Server 2008 Feature Pack (April 2009)&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=802d0632-5de7-4efd-ae43-ebe3fc078886" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=802d0632-5de7-4efd-ae43-ebe3fc078886"&gt;SQL Server 2008 Upgrade Advisor&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Enjoy!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9537454" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/robertbruckner/archive/tags/RS+2008/default.aspx">RS 2008</category><category domain="http://blogs.msdn.com/robertbruckner/archive/tags/Upgrade/default.aspx">Upgrade</category><category domain="http://blogs.msdn.com/robertbruckner/archive/tags/Report+Design/default.aspx">Report Design</category></item><item><title>Custom Report Item</title><link>http://blogs.msdn.com/robertbruckner/archive/2008/12/31/customreportitem.aspx</link><pubDate>Wed, 31 Dec 2008 21:55:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9258730</guid><dc:creator>Robert M. Bruckner</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/robertbruckner/comments/9258730.aspx</comments><wfw:commentRss>http://blogs.msdn.com/robertbruckner/commentrss.aspx?PostID=9258730</wfw:commentRss><description>&lt;P&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;FONT size=3&gt;
&lt;CENTER&gt;&lt;IMG title="Custom Report Item Runtime Control Architecture" style="WIDTH: 430px; HEIGHT: 243px" height=243 alt="Custom Report Item Runtime Control Architecture" src="http://blogs.msdn.com/photos/robertbruckner/images/9258985/original.aspx" width=430 mce_src="http://blogs.msdn.com/photos/robertbruckner/images/9258985/original.aspx"&gt;&lt;/CENTER&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;
&lt;P&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;FONT size=3&gt;Custom Report Item in Reporting Services 2005&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;This&amp;nbsp;server extensibility feature introduced in Reporting Services 2005 (RS 2005) provides the ability to develop custom report items for embedding in reports.&amp;nbsp; Examples of resources available that provide insights into how one can build custom report item solutions include: &lt;A class="" href="http://msdn.microsoft.com/en-us/library/ms345231.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/ms345231.aspx"&gt;documentation&lt;/A&gt; overview,&amp;nbsp;&lt;A href="http://www.codeplex.com/MSFTRSProdSamples/Wiki/View.aspx?title=SS2005%21Custom%20Report%20Item%20Sample&amp;amp;referringTitle=Home" target=_blank&gt;sample&lt;/A&gt;, and a great MSDN magazine &lt;A href="http://msdn.microsoft.com/en-us/magazine/cc188686.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/magazine/cc188686.aspx"&gt;article&lt;/A&gt; by Teo Lachev.&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;Over time, several independent partners utilized this extensibility mechanism and developed nice 2005-based Custom Report Item (CRI) controls, such as &lt;A href="http://www.dundas.com/Technologies/RS/index.aspx" target=_blank mce_href="http://www.dundas.com/Technologies/RS/index.aspx"&gt;Dundas Visualization Products&lt;/A&gt; for Reporting Services, various barcode controls, and even some that take RTF and draw it as image into reports.&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;FONT size=3&gt;Custom Report Item in Reporting Services 2008&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;RS 2008 introduces a new RenderingObjectModel and an &lt;A href="http://blogs.msdn.com/robertbruckner/archive/2008/08/11/on-demand-report-processing-in-rs-2008.aspx"&gt;on-demand paradigm&lt;/A&gt; for processing and rendering reports.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Consequently, also the CRI runtime control interfaces and how the control interacts with the new on-demand RenderingObjectModel have changed.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;An &lt;A href="http://www.codeplex.com/MSFTRSProdSamples/Release/ProjectReleases.aspx?ReleaseId=18649"&gt;updated CRI-Polygon sample&lt;/A&gt; is available for RS 2008.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;FONT size=3&gt;Using 2005-based Custom Report Items in Reporting Services 2008&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;I have seen two common questions regarding the support of&amp;nbsp;2005 CRIs in RS 2008:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;Q: What if you bought or developed a 2005-based CRI &lt;/SPAN&gt;&lt;/EM&gt;&lt;STRONG&gt;&lt;I&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;runtime&lt;/SPAN&gt;&lt;/I&gt;&lt;/STRONG&gt;&lt;EM&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt; control - can you run those old reports after upgrading your report server to RS 2008?&lt;BR&gt;&lt;/SPAN&gt;&lt;/EM&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&amp;nbsp;&lt;BR&gt;A: Yes, running 2005-based CRI runtime controls on a RS 2008 server is supported.&amp;nbsp; Your old 2005-based reports will run on RS 2008 without modifications - however make sure to verify that the Web.config of your 2008 report server contains an assembly binding redirect for the Microsoft.ReportingServices.Interfaces.dll as specified&amp;nbsp;in &lt;A class="" href="http://support.microsoft.com/kb/955795" target=_blank mce_href="http://support.microsoft.com/kb/955795"&gt;KB 955795&lt;/A&gt;.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;Q: What about 2005-based&amp;nbsp;CRI &lt;/SPAN&gt;&lt;/EM&gt;&lt;STRONG&gt;&lt;I&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;design&lt;/SPAN&gt;&lt;/I&gt;&lt;/STRONG&gt;&lt;EM&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt; time controls?&lt;BR&gt;&lt;/SPAN&gt;&lt;/EM&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&amp;nbsp;&lt;BR&gt;A:&amp;nbsp;2005-based CRI design time controls work with Business Intelligence Development Studio 2005 (BIDS 2005) only.&amp;nbsp; You can continue to design reports with BIDS 2005 and deploy directly to your RS 2008 server with the 2005-based CRI runtime control installed.&amp;nbsp; &lt;BR&gt;For BIDS 2008 however,&amp;nbsp;the CRI integration interfaces have changed, and you will need 2008-based CRI design controls to develop reports utilizing the full 2008 feature set (e.g. tablix) and 2008-based CRIs.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;Additional information about upgrading a report with custom report items is provided in the &lt;A class="" href="http://msdn.microsoft.com/en-us/library/ms143674.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/ms143674.aspx"&gt;documentation&lt;/A&gt;.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;FONT size=3&gt;Special Case: Deploying 2005 Reports utilizing Dundas CRI controls to a RS 2008 Server&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;In short, your existing reports will run on RS 2008 without modifications.&amp;nbsp;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;You may no longer need your 2005 CRI controls on the RS 2008 server in particular cases, as explained below.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;With the &lt;A href="http://www.microsoft.com/presspass/press/2007/jun07/06-04TechED07PR.mspx"&gt;acquisition of the data visualization products&lt;/A&gt; of Dundas Inc., reports utilizing 2005-based CRI controls from Dundas generally will be automatically upgraded on-the-fly into native 2008 charts and gauges in RS 2008.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;In that case, your old reports will run as native 2008 reports when deployed to a RS 2008 server.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;If your 2005-based reports with Dundas CRIs utilize certain features, such as annotations or custom code, the reports won't be automatically converted into native RS 2008 charts/gauges, but instead remain 2005 reports that are executed in a transparent backwards-compatibility mode&lt;SUP&gt;1&lt;/SUP&gt; of the processing engine in the RS 2008 server.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;In that case, or if you use the&amp;nbsp;Dundas Maps or Dundas Calendar products, the reports will automatically run on the RS 2008 server, but you still need your 2005-based Dundas CRI runtime controls installed on the server.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;Alternatively, Dundas is releasing several new 2008-based CRI design and runtime controls.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;You could upgrade your existing 2005 reports in BIDS (with the 2008 Dundas controls installed) to 2008 reports, utilize all the new 2008 features such as tablix, and then deploy them as 2008 RDLs to a RS 2008 server.&amp;nbsp; Please contact &lt;A class="" href="http://www.dundas.com/Products/Chart/RS/Features/NewFeatures.aspx" target=_blank mce_href="http://www.dundas.com/Products/Chart/RS/Features/NewFeatures.aspx"&gt;Dundas&lt;/A&gt; directly, if you are interested in that option.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SUP&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;1&amp;nbsp;&lt;/SPAN&gt;&lt;/SUP&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;The related posting&amp;nbsp;about the enhanced &lt;A class="" href="http://blogs.msdn.com/robertbruckner/archive/2009/01/05/executionlog2-view.aspx" mce_href="http://blogs.msdn.com/robertbruckner/archive/2009/01/05/executionlog2-view.aspx"&gt;ExecutionLog2&lt;/A&gt; in RS 2008 explains, among other topics, how an administrator can utilize the AdditionalInfo.ProcessingEngine value to&amp;nbsp;determine whether an old report automatically upgraded to 2008, or if the report contains a 2005-based CRI and therefore is running in the transparent backwards-compatibility mode of the processing engine.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;Happy New Year!&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9258730" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/robertbruckner/archive/tags/RDL/default.aspx">RDL</category><category domain="http://blogs.msdn.com/robertbruckner/archive/tags/RS+2008/default.aspx">RS 2008</category><category domain="http://blogs.msdn.com/robertbruckner/archive/tags/Data+Visualization/default.aspx">Data Visualization</category><category domain="http://blogs.msdn.com/robertbruckner/archive/tags/CustomReportItem/default.aspx">CustomReportItem</category><category domain="http://blogs.msdn.com/robertbruckner/archive/tags/Upgrade/default.aspx">Upgrade</category><category domain="http://blogs.msdn.com/robertbruckner/archive/tags/Dundas/default.aspx">Dundas</category><category domain="http://blogs.msdn.com/robertbruckner/archive/tags/Report+Design/default.aspx">Report Design</category></item><item><title>Using Group Variables in Reporting Services 2008 for Custom Aggregation</title><link>http://blogs.msdn.com/robertbruckner/archive/2008/07/20/Using-group-variables-in-reporting-services-2008-for-custom-aggregation.aspx</link><pubDate>Mon, 21 Jul 2008 07:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8759944</guid><dc:creator>Robert M. Bruckner</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/robertbruckner/comments/8759944.aspx</comments><wfw:commentRss>http://blogs.msdn.com/robertbruckner/commentrss.aspx?PostID=8759944</wfw:commentRss><description>&lt;P&gt;&lt;STRONG&gt;Introduction&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;SQL Server 2008 Reporting Services (SSRS 2008) features an &lt;A class="" href="http://blogs.msdn.com/robertbruckner/archive/2008/08/11/on-demand-report-processing-in-rs-2008.aspx" mce_href="http://blogs.msdn.com/robertbruckner/archive/2008/08/11/on-demand-report-processing-in-rs-2008.aspx"&gt;on-demand report processing engine&lt;/A&gt;.&amp;nbsp; This on-demand architecture has a number of key advantages over the processing engine design that existed in previous major releases.&amp;nbsp; The most significant benefits are vast improvements to report engine scalability and performance (you can read&amp;nbsp;a bit more&amp;nbsp;about it &lt;A class="" href="http://blogs.msdn.com/robertbruckner/archive/2008/07/20/Scale-up-improvements-in-reporting-services-2008.aspx" mce_href="http://blogs.msdn.com/robertbruckner/archive/2008/07/20/Scale-up-improvements-in-reporting-services-2008.aspx"&gt;here&lt;/A&gt;).&amp;nbsp; Because of this fundamental change from previous versions, there are some specific design patterns that have changed.&amp;nbsp; This post is a discussion of one scenario that, due to the new processing engine, requires a different design pattern in 2008 than was required in 2005 and 2000.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Special thanks to my esteemed colleagues &lt;A class="" href="http://blogs.msdn.com/chrisbal" target=_blank mce_href="http://blogs.msdn.com/chrisbal"&gt;Chris Baldwin&lt;/A&gt; and &lt;A class="" href="http://blogs.msdn.com/chrishays" target=_blank mce_href="http://blogs.msdn.com/chrishays"&gt;Chris Hays&lt;/A&gt;, who helped with the contents of this posting.&amp;nbsp; Note: screenshots and how-to steps in this post are based on the currently available SQL Server 2008 RC0 release of Report Builder 2.0.&amp;nbsp; Future releases of this product may change.&amp;nbsp;&amp;nbsp;The &lt;A class="" href="http://blogs.msdn.com/robertbruckner/attachment/8759944.ashx" target=_blank mce_href="http://blogs.msdn.com/robertbruckner/attachment/8759944.ashx"&gt;attachment&lt;/A&gt; at the bottom of this posting contains both, a 2005 version and a 2008 version of the final reports.&amp;nbsp; The reports are based on the Northwind sample database (&lt;A class="" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=06616212-0356-46A0-8DA2-EEBC53A68034" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=06616212-0356-46A0-8DA2-EEBC53A68034"&gt;download link&lt;/A&gt;).&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;BR&gt;On-Demand Report Processing&lt;BR&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;BR&gt;The new processing engine in Reporting Services 2008 still retrieves datasets upfront, but only pre-computes certain invariants, such as grouping, sorting, filter expressions, aggregates, subreport parameters and queries.&amp;nbsp; Everything else are "on-demand" evaluated expressions; most notably, textbox values, and style expressions.&lt;/P&gt;
&lt;P&gt;Furthermore, the processing engine now exposes a cursor-based report structure as so-called RenderingObjectModel.&amp;nbsp; Rendering extensions, responsible for translating the processed report to the desired output format, traverse the report using a hierarchy of RenderingObjectModel cursors.&amp;nbsp; This is in contrast to the processing engine in 2005 and 2000 in which the entire report was fully processed upfront.&amp;nbsp; A couple implications of this on-demand model are that &lt;BR&gt;a) objects are evaluated hierarchically throughout the report, &lt;BR&gt;b) hidden textboxes are not evaluated, and &lt;BR&gt;c) the concept of Report and Group Variables has been introduced&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;BR&gt;Report and Group Variables&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;In Reporting Services 2008 / RDL 2008/01 namespace, one can declare variables that are global throughout the report or local to particular group scopes and refer to them in expressions.&amp;nbsp; Report and group variables can only be set/initialized once and have a read-only semantics.&lt;/P&gt;
&lt;P&gt;Typical use cases for variables include:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Caching values: &lt;BR&gt;Report/group variables can be used to make an expensive call to an external assembly once, cache the result, and then reference the variable value from other expressions in the report.&lt;/LI&gt;
&lt;LI&gt;Time-dependent calculations:&amp;nbsp;&lt;BR&gt;For example,&amp;nbsp;retrieve a currency conversion value and store it in a report/group variable to be applied consistently during the lifetime of the rendering session.&lt;/LI&gt;
&lt;LI&gt;Specific execution-order semantics:&lt;BR&gt;Achieve particular expression execution order semantics that is independent of the rendering extension used later for generating the report output.&amp;nbsp; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;The latter use case of group variables will be discussed in more detail in the remainder of this blog posting to implement custom aggregation in a&amp;nbsp;Reporting Services&amp;nbsp;2008 report. &lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;BR&gt;Custom Aggregate Scenario&lt;BR&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;BR&gt;The scenario discussed is one where a report author implements a custom aggregate, illustrated by an implementation of a Median function. &lt;BR&gt;A common pattern for implementing a custom aggregate such as Median in Reporting Services 2005 is like this.&lt;IMG src="http://blogs.msdn.com/photos/robertbruckner/images/8760134/original.aspx" mce_src="http://blogs.msdn.com/photos/robertbruckner/images/8760134/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;With the custom code for GetMedian and AddValue as follows:&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 55.6pt; mso-outline-level: 1"&gt;&lt;SPAN style="FONT-SIZE: 11pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;Dim&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Courier New'"&gt; values &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; System.Collections.ArrayList&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 55.6pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 55.6pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;Function&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Courier New'"&gt; AddValue(&lt;SPAN style="COLOR: blue"&gt;ByVal&lt;/SPAN&gt; newValue &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; Decimal)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 55.6pt; mso-outline-level: 1"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;If&lt;/SPAN&gt; (values&lt;SPAN style="COLOR: blue"&gt; Is Nothing&lt;/SPAN&gt;) &lt;SPAN style="COLOR: blue"&gt;Then&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 55.6pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;values = &lt;SPAN style="COLOR: blue"&gt;New&lt;/SPAN&gt; System.Collections.ArrayList()&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 55.6pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;End If&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 55.6pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;values.Add(newValue)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 55.6pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;End Function&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 55.6pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 55.6pt; mso-outline-level: 1"&gt;&lt;SPAN style="FONT-SIZE: 11pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;Function&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Courier New'"&gt; GetMedian() &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; Decimal&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 55.6pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; count &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; Integer = values.Count&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 55.6pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;If&lt;/SPAN&gt; (count &amp;gt; 0) &lt;SPAN style="COLOR: blue"&gt;Then&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 55.6pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;values.Sort()&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 55.6pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;GetMedian = values(count / 2)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 55.6pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;End If&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 55.6pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;End Function&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;
&lt;P mce_keep="true"&gt;What happens here in SSRS 2005 is that for each instance of the detail row, the value gets passed to AddValue() and then added to the values ArrayList.&amp;nbsp; A textbox in the Table header, then, makes a call to GetMedian() which performs a calculation on the values in the ArrayList, and displays it.&amp;nbsp; &lt;BR&gt;&amp;nbsp;&lt;BR&gt;It's important to note that this wasn't exactly supported in SSRS 2005 and it wouldn't even work properly in most cases.&amp;nbsp; For example, if you were to add end-user sorting to the table, then the processing would go through a different code path that would evaluate the headers before the details.&amp;nbsp; This would mean that the GetMedian() function would be called before AddValue has a chance to add any values are added to the ArrayList.&amp;nbsp; It just so happens that in this particular case, when there is no end-user sort, the details are processed first.&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&lt;BR&gt;Whether or not it was officially supported, a number of people got this to work and are relying on this behavior.&amp;nbsp; In order for the same pattern to work in SSRS 2008, the report needs to be slightly redesigned.&amp;nbsp; Detailed, step-by-step, instructions are provided below.&amp;nbsp; Note that the pattern of using group variables outlined below is not limited to custom aggregation, but can be expanded into more complex solutions.&amp;nbsp; We can show you the path and the pattern, but you will have to apply it to your unique situation.&amp;nbsp; YMMV (your mileage may vary).&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;BR&gt;&lt;STRONG&gt;Implementing this in SSRS 2008: Step-by-Step&lt;BR&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;BR&gt;The report needs to be slightly revamped in 2008 in order for this to work.&amp;nbsp; The custom code itself, however, doesn't have to change at all.&amp;nbsp; This is going to be a step-by-step procedure by which you can port this pattern from your 2005 report to 2008.&amp;nbsp; Note that the attachment at the bottom of this post contains&amp;nbsp;a 2005 report and a 2008 report, both implementating this custom aggregation approach.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Open the report in Business Intelligence Development Studio (BIDS) 2008 or Report Builder 2.0.&amp;nbsp; When you open the 2005 report in a 2008-based tool, the RDL schema will be automatically upgraded to 2008.&amp;nbsp; This is what you'll see in Report Builder 2.0:&lt;IMG style="WIDTH: 760px; HEIGHT: 510px" height=510 src="http://blogs.msdn.com/photos/robertbruckner/images/8760136/original.aspx" width=760 align=left mce_src="http://blogs.msdn.com/photos/robertbruckner/images/8760136/original.aspx"&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;In on-demand processing, items are generally evaluated from the top-down.&amp;nbsp; This means that in order to add the values of your detail rows into the ArrayList from which you will calculate the Median value, you need to add a "dummy" tablix to your report with its own detail row.&amp;nbsp; This row can be hidden, as it's used solely for calculation purposes.&amp;nbsp; Specifically, its purpose is to make calls to the AddValue function to populate the ArrayList.&amp;nbsp; So that this table can "share" values with the table that will be visually presented in the report, it they both need to be part of the same table.&amp;nbsp; Add a single static row above the header row in the table.&amp;nbsp; Right-click in the blue Product Name cell, and select Insert Row &amp;gt; Above.&amp;nbsp; In the newly inserted row, merge all of the cells.&amp;nbsp; This is what you should see:&lt;BR&gt;&lt;IMG src="http://blogs.msdn.com/photos/robertbruckner/images/8760143/original.aspx" mce_src="http://blogs.msdn.com/photos/robertbruckner/images/8760143/original.aspx"&gt;&lt;BR&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Click the new cell (as shown above), and from the Insert tab on the Ribbon, select Table.&amp;nbsp; Delete the top row from the newly created table, and merge the cells together:&lt;BR&gt;&lt;IMG src="http://blogs.msdn.com/photos/robertbruckner/images/8760145/original.aspx" mce_src="http://blogs.msdn.com/photos/robertbruckner/images/8760145/original.aspx"&gt;&lt;BR&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Select the detail group for this new inner table, and set the Hidden property to True.&amp;nbsp; Since this is used only for calculations, it doesn't need to be visible in the rendered output of the report:&lt;BR&gt;&lt;IMG src="http://blogs.msdn.com/photos/robertbruckner/images/8760146/original.aspx" mce_src="http://blogs.msdn.com/photos/robertbruckner/images/8760146/original.aspx"&gt;&lt;BR&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Now, you need to add the call to the AddValues function within the context of the nested table.&amp;nbsp; As I mentioned above, a hidden textbox's value will not be evaluated due to the new on-demand processing architecture.&amp;nbsp; In order to make sure the call to AddValues is made regardless of the visibility of the group, add it as a group Variable:&lt;BR&gt;&lt;IMG src="http://blogs.msdn.com/photos/robertbruckner/images/8760147/original.aspx" mce_src="http://blogs.msdn.com/photos/robertbruckner/images/8760147/original.aspx"&gt;&lt;BR&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;The original rows of the table need to be slightly restructured so that the original row functions as a group header.&lt;BR&gt;Step 1:&amp;nbsp;Right click in the Product Name cell and select Add Group &amp;gt; Row group &amp;gt; Parent group&lt;BR&gt;Step 2:&amp;nbsp;In the Tablix group dialog: Group by: 0 (constant value);&amp;nbsp;Select Add Group header&lt;BR&gt;&lt;IMG src="http://blogs.msdn.com/photos/robertbruckner/images/8760154/original.aspx" mce_src="http://blogs.msdn.com/photos/robertbruckner/images/8760154/original.aspx"&gt;&lt;BR&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Select the newly created group header textbox (with the 0 in it), right click, and select delete column.&amp;nbsp; You should then have this:&lt;BR&gt;&lt;IMG src="http://blogs.msdn.com/photos/robertbruckner/images/8760158/original.aspx" mce_src="http://blogs.msdn.com/photos/robertbruckner/images/8760158/original.aspx"&gt;&lt;BR&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Copy the contents of the blue cells into the row below it, so that it's inside the group.&amp;nbsp; Then, delete the row from which the values were copied.&amp;nbsp; Re-add the blue background to the other row if you want.&amp;nbsp; Now you should have this:&lt;BR&gt;&lt;IMG src="http://blogs.msdn.com/photos/robertbruckner/images/8760160/original.aspx" mce_src="http://blogs.msdn.com/photos/robertbruckner/images/8760160/original.aspx"&gt;&lt;BR&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Now, in order to properly retrieve the calculated Median value, you need to add the call to GetMedian into a group Variable for the group that contains the header where you want to value to be displayed.&amp;nbsp; Select the group from the grouping pane, and add this group Variable:&lt;BR&gt;&lt;IMG src="http://blogs.msdn.com/photos/robertbruckner/images/8760168/original.aspx" mce_src="http://blogs.msdn.com/photos/robertbruckner/images/8760168/original.aspx"&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8759944" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/robertbruckner/attachment/8759944.ashx" length="4385" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/robertbruckner/archive/tags/RDL/default.aspx">RDL</category><category domain="http://blogs.msdn.com/robertbruckner/archive/tags/RS+2008/default.aspx">RS 2008</category><category domain="http://blogs.msdn.com/robertbruckner/archive/tags/RS+2005/default.aspx">RS 2005</category><category domain="http://blogs.msdn.com/robertbruckner/archive/tags/Upgrade/default.aspx">Upgrade</category><category domain="http://blogs.msdn.com/robertbruckner/archive/tags/Report+Design/default.aspx">Report Design</category></item><item><title>Scale-Up Improvements in Reporting Services 2008</title><link>http://blogs.msdn.com/robertbruckner/archive/2008/07/20/Scale-up-improvements-in-reporting-services-2008.aspx</link><pubDate>Mon, 21 Jul 2008 04:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8759880</guid><dc:creator>Robert M. Bruckner</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/robertbruckner/comments/8759880.aspx</comments><wfw:commentRss>http://blogs.msdn.com/robertbruckner/commentrss.aspx?PostID=8759880</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;A few months ago, leading up to the release of RC0 of SQL Server 2008, I was involved in working with the &lt;A class="" href="http://sqlcat.com/" target=_blank mce_href="http://sqlcat.com"&gt;SQL Server Customer Advisory Team&lt;/A&gt;.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;They were investigating and comparing the scalability of Reporting Services 2005 and Reporting Services 2008, using common customer report scenarios and workloads. &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;A more detailed whitepaper is planned for&amp;nbsp;the future, which will also provide the underlying code and test framework so that you could plug-in your own reports, define your&amp;nbsp;workload, and run these tests on your particular hardware and environment.&amp;nbsp;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;/SPAN&gt;In the meantime, if you are thinking of moving to Reporting Services 2008, I’d strongly encourage you to read the following technical note titled &lt;/FONT&gt;&lt;A class="" href="http://sqlcat.com/technicalnotes/archive/2008/07/09/scaling-up-reporting-services-2008-vs-reporting-services-2005-lessons-learned.aspx" target=_blank mce_href="http://sqlcat.com/technicalnotes/archive/2008/07/09/scaling-up-reporting-services-2008-vs-reporting-services-2005-lessons-learned.aspx"&gt;&lt;FONT face=Tahoma&gt;Scaling Up Reporting Services 2008 vs. Reporting Services 2005: Lessons Learned&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Tahoma&gt;.&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;The key take away from the Technical Note is that SQL 2008 Reporting Services can scale-up better than SQL 2005 Reporting Services.&amp;nbsp; &lt;/FONT&gt;&lt;FONT face=Tahoma&gt;Summarizing the results, quoting from the technical note:&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="mso-bidi-font-size: 10.0pt; mso-bidi-font-family: Tahoma"&gt;&lt;FONT face=Tahoma&gt;1) "&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'"&gt;Reporting Services 2008 was able &lt;STRONG&gt;to respond to 3–4 times the total number of users and their requests on the same hardware&lt;/STRONG&gt; without HTTP 503 Service Is Unavailable errors compared with Reporting Services 2005, regardless of the type of renderer."&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;EM&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; mso-bidi-font-size: 10.0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;&lt;SPAN style="mso-bidi-font-size: 10.0pt; mso-bidi-font-family: Tahoma"&gt;2) "&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'"&gt;With our test workload, &lt;STRONG&gt;Reporting Services 2008&lt;/STRONG&gt; &lt;STRONG&gt;consistently&lt;/STRONG&gt; &lt;STRONG&gt;outperformed Reporting Services 2005 with the PDF and XLS renderers&lt;/STRONG&gt; on the four-processor, quad-core hardware platform (16 cores) both in terms of response time and in terms of total throughput.&lt;/SPAN&gt;"&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;FONT face=Tahoma&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;The SQL Server Customer Advisory Team did a great job of pulling together report scenarios and workloads, testing on three different hardware platforms, testing a few configuration options, and identifying key results.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;These results validate some of the quite significant work we have been doing in Reporting Services 2008.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Furthermore, note that the scalability testing was performed with a non-optimized pre-release RC0 build of Reporting Services – an RTM deployment of Reporting Services 2008 is expected to show even slightly improved results.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;/FONT&gt;&lt;FONT face=Tahoma&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;The underlying architecture has changed considerably in Reporting Services 2008 (e.g. removing IIS dependency), and we added a number of&amp;nbsp;quite significant new capabilities in the report processing engine and rendering extensions (e.g. tablix with arbitrary grouping and flexible layout support, vastly improved scalability support).&amp;nbsp;&amp;nbsp;We have been doing ongoing and extensive performance, throughput, and scalability testing internally within the Reporting Services team – so I guess some of these great results shown in the technical note&amp;nbsp;weren’t all that surprising to members of the RS team.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;There was also anecdotal evidence and excitement by customers in blog postings and other forums, impressed with some of the improvements in Reporting Services that were visible as early as with the public SQL Server 2008 CTP release back in July 2007.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;In future postings on this blog, I plan to cover important tips and tricks related to diagnosing and improving performance of complex reports (e.g. involving custom code) in RS 2008.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This will hopefully enable you to even better take advantage of some of the underlying architecture changes in the RS 2008 report processing engine, such as dynamic on-demand processing.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8759880" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/robertbruckner/archive/tags/Scalability/default.aspx">Scalability</category><category domain="http://blogs.msdn.com/robertbruckner/archive/tags/RS+2008/default.aspx">RS 2008</category><category domain="http://blogs.msdn.com/robertbruckner/archive/tags/Upgrade/default.aspx">Upgrade</category></item></channel></rss>