Welcome to MSDN Blogs Sign in | Join | Help

SQL Server Reporting Services Team Blog

Blog from the Microsoft SQL Server product team.
Report Builder 2.0 - RC1 Release

Report Builder 2.0 RC1 is now available on Microsoft Download Center.  Use this link for download.  RC1 delivers improvements in the following areas compared to RC0:

  • Easy to use wizards for creating table, matrix and chart data regions.
  • Support for directly opening and editing reports stored on the report server.
  • Support for using server resources such as shared data sources.
  • A query designer for Microsoft SQL Server data sources.
  • Enhancements to the Report Builder 2.0 ribbon.

Please direct your feedback to the main Reporting Services MSDN forum, or to http://connect.microsoft.com/.

Thanks,
Robert

Report Builder 2.0 Release Plan Update

With SQL Server 2008 RTM announced, we wanted to give you an update on the release plans for Report Builder 2.0. 

Report Builder 2.0 will ship as part of the updated feature pack for SQL Server 2008 in fall of this year.  It will be, as it was in RC0, a web download only.  It will be available from the SQL Server feature pack download page.  At release, Report Builder will be available in 21 languages similar to the Reporting Services SharePoint Add-in.  The ClickOnce version of Report Builder 2.0 will not be supported in this timeframe and we are actively looking at releasing it as soon as possible after Report Builder 2.0 release. 

An RC1 release will be made available, tentatively at the end of August.  This build will contain all of the final features for Report Builder 2.0 and will only be in English.  We’ll post a link as soon as it is available.

As always, we look forward to your feedback on Report Builder.  Please provide feedback directly at: http://connect.microsoft.com/.  Thank you.

Report Variables and Group Variables in Reporting Services 2008

Note:  this posting provides an overview of when to consider using Report Variables and/or Group Variables for general report design patterns.  There is also a detailed blog posting that describes a particular report design pattern (custom aggregation) report authors may have been using in Reporting Services 2005, which requires group variables in Reporting Services 2008. 

On-Demand Report Processing

Reporting Services 2008 features an on-demand report processing engine.  This on-demand architecture has a number of key advantages over the processing engine design that existed in previous releases.  The most significant benefits are improvements to report engine scalability and performance (you can read a bit more about it here).  Because of this fundamental change from previous versions, there are some specific design patterns that have changed.   
 
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.  Everything else are "on-demand" evaluated expressions at the time a particular page is rendered; most notably, textbox values, and style expressions.

As a result, the internal execution order of expressions in Reporting Services 2008 might be vastly different compared to previous releases.  If your reports make custom code / custom assembly calls with side-effects relying on undocumented expression evaluation order (e.g. accumulating state via an expression in a table detail section, and relying on the state being fully populated in a "later" expression), the report may not work as before when upgrading it to Reporting Services 2008.  Report and group variables were introduced to address this scenario.

Report and Group Variables

In Reporting Services 2008, one can declare variables that are global throughout the report or local to particular group scopes and refer to them in expressions.  Report and group variables can only be set/initialized once and have a read-only semantics.

Typical use cases for variables include:

  • Caching values / expensive calculations:
    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 (to avoid re-evaluating the original expression repeatedly during on-demand report processing).
     
  • Time-dependent calculations: 
    For example, retrieve a currency conversion value and store it in a report/group variable to be applied consistently during the lifetime of the rendering session.
     
  • Specific execution-order semantics:
    Achieve particular expression execution order semantics that is independent of the rendering extension used later for generating the report output.  This use case is not as common, but also a bit more complex.  It is discussed in detail in another blog posting titled Using Group Variables In Reporting Services 2008 for Custom Aggregation. That posting also includes sample reports and step-by-step instructions.


-- Robert

Building the new builder.

As you have likely read through various avenues, including the past several CTP releases of SQL Server 2008, the SQl Server Reporting Services team has been working on the next phase of our Report Builder application.  The new end user report authoring tool for SQL Server 2008 is Report Builder 2.0 and you can download the latest version from the SQL 2008 RC0 Feature pack.

In total, there are three report authoring tools in Reporting Services for SQL Server 2008:

·         Report Designer – Our report developer-focused tool offering the full functionality of the Report Definition Language (RDL) in the Visual Studio environment.

·         Report Builder 2.0 – Our Information worker-focus report authoring environment also offering the full functionality of RDL with a Microsoft Office look and feel.

·         Report Builder 1.0 – Our ad hoc reporting tool from SQL Server 2005 with full report model support and limited RDL support.

The name for what is now Report Builder 2.0 has evolved during the full SQL Server 2008 development cycle and it has created some confusion.  It was originally called the ‘Report Designer Preview’ in several of the SQL Server 2008 CTPs.  Some of the reason(s) for the approach were to allow for iterations of development and customer feedback.  This is why the whole 'preview' name existed to begin with, to make it clear it was not a finished product, to get feedback on specific features/usability, as well as test the waters for 'fit' of the product within the user workflow.

While we moved RB2.0 forward, we were also working on the developer design experience in BIDs, migrating it to the VS 2008 infrastructure under the hoods and updating portions of the design environment so there was similarity/parity with RB2.0.  If you compare the core areas inside the two tools, you will see things are the same. For example, the grouping pane, data pane, and dialogs have the same functionality between the BIDs Report Designer and Report Builder 2.0.  This shared component approach willl allow for improved long term maintenance of the report design environments and we feel it will be more 'familiar' for users who use/move between tools.

·         RB2.0: The general release will be a separate download, like the current RC0 release noted above.

·         RB1.0: The traditional Report Builder will ship with SSRS 2008 but with the “1.0” attached to its name., and its functionality is more or less the same as what was in SSRS 2005.  This is intentional as you likely can infer from all the above notes, our efforts are going into the new RB2.0 experience but we wanted to provide the 1.0 experience to help customers transition from the 1.0 experience to the 2.0 experience.  Full support for report models will be added to Report Builder 2.0 in a future release.

 Regarding Licensing, it will be the same/similar to Report Builder 1.0 and SSRS 2005 licensing.

http://www.microsoft.com/sql/howtobuy/howtolicensers.mspx

I command thee...

A, not uncommon request from SQL Server Reporting Services customers is the ability to use command line switches wtih Business Intelligence Development Studio (BIDS) like you would with a standard\out of the box Visual Studio experience.  Well, I am happy to say, we have done some work in this area for SQL Server Reporting Services 2008, and the RC0 release due very soon.  I wanted to show a few samples so you can see whats coming and because its not a visual feature, your not likely to see it at the upcomming Tech Ed, for the many which will attend. Tech Ed North America 2008.  Surprisingly, command line output does not draw the same crowd as cool new data visualization or richly formatted text features.  Go figure.

As background, the samples I did here were with a fresh install of SQL Server 2008, so I had not installed Visual Studio 2008.  Also, I should note there is lots of documentation on MSDN for using the Visual Studio command line but I found some of the samples differ in syntax.  So, I based mine on what I read wih the command line help, or 'devenv /?'.  A word of wisdom, when dealing with file paths which contain spaces. The double quotes are the standard, however be aware of the character difference when you are copyin/pasting between applications. Someone, could in theory, waste a lot of time trying to get command line operations to work, and swear they had the syntax proper, but there is  difference between " and

Also, I am generally lazy so to make make things easier I added the path to the folder containing DEVENV to my OS environment path, so
C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE

Deploy: Well, the clear winner and main desire folks are after with the command line, is the ability to deploy to their servers....

devenv "C:\Documents and Settings\myuser\My Documents\Visual Studio 2008\projects\Aworks\Aworks.sln" /deploy myconfig

Which spits back the following, looking like what you see in Output window inside BIDs. Notice it includes the warning for the data source, and indeed in the Project Proeprties dialog in BIDs, I set 'OverwriteDataSources' to false.

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Microsoft (R) Visual Studio Version 9.0.30428.1.
Copyright (C) Microsoft Corp. All rights reserved.
------ Build started: Project: Aworks, Configuration: myconfig ------
Build complete -- 0 errors, 0 warnings
------ Deploy started: Project: Aworks, Configuration: myconfig ------
Deploying to http://theservername/reportserver
Deploying data source '/aworks/aworks_shared'.
Warning : Cannot deploy data source aworks_shared to the server because it already exists and OverwriteDataSources is not specified.
Deploying report '/aworks/aworks_salesorderdetail'.
Deploying report '/aworks/salesandterritory'.
Deploy complete -- 0 errors, 1 warnings
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========
========== Deploy: 1 succeeded, 0 failed, 0 skipped ==========

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

 Log the output:  Add the /Out switch and redirect to a file (cumulative).

devenv "C:\Documents and Settings\myuser\My Documents\Visual Studio 2008\projects\Aworks\Aworks.sln" /deploy myconfig /out c:\mybuildlog.txt

Build: to check for errors, but nothing is deployed.

devenv "C:\Documents and Settings\myuser\My Documents\Visual Studio 2008\projects\Aworks\Aworks.sln" /build

Wrapping up...

Well, the blog has not been that active, no doubt about it.  However the main reason is the team has been working hard on the final features that will be in SQL Server 2008.  We also were working hard to understand and act on the great feedback we recieved from the Feb 2008 CTP.  If You have not tried the Feb CTP or have not seen the many other notices about where to find it, the Feb CTP can be found here.  The SSRS team has also been growing and some folks have changed out.  You have likely ran into many of the veterans and some of the new folks at conferences and such. 

So now that we are winding down on SQL 2008 and gearing up planning for future projects, keep an eye out for much more frequent updates from this blog.  We will be focusing on this blog as a team...hence the orginal name as a 'team' blog :) 

Webcast: Rich Report Design with SQL Server 2008 Reporting Services

Just a quick note about an upcoming Webcast you may find interesting.

TechNet Webcast: Rich Report Design with SQL Server 2008 Reporting Services (Level 200)

Audience(s):  IT Professionals.  
Duration:  60 Minutes 
Thursday, November 01, 2007 1:00 PM Pacific Time

Registration and more details can be found at..

http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032354775&Culture=en-US

 Enjoy!!

Some things begin to gel with SQL 2008 RS...

I had hesitated posting anything about the July CTP (Community Technology Preview) for SQL 2008 (Katmai) as there was so much already out there.  However, looking back it seems like an injustice to the hard work of our team to not post and insure as many as possible know the RS team is hard at work and we as always would love to hear your feedback.

So with that said, if you did not already know, you can obtain the July CTP from the following location.  At the least you can take a look at the 'Whats new..' stuff.  You do need to register, and the page has a link for that as well.  As you might expect, this is a work in progress and in fact the next CTP is not too far off.  However, as I noted, we appreciate all the feedback you have time to provide and as you would imagine, the earlier the better.   https://connect.microsoft.com/SQLServer/content/content.aspx?ContentID=5395

New forum as well.  There is also a seperate MSDN forum for SQL Reporting Services 2008.  A great place to provide feedback, ask questions, or cruise and see how things are for others. http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=1624&SiteID=1

Stay tuned for more...

Please do not ask me again 'does the query include.....'

As we all know the slightest change in the query underneath a report can drastically change the report results.  The consumers of your report may be full of lots of questions..and constantly…

'Are you including sales from the previous month too?' 
'Is that only for balloon parties for kids < 8?' 
For some cases, it even relevant to ask 'Is your search of customer Last Name case sensitive?'

Well, for users not versed in query syntax you may still have to answer all the questions, publish some descriptive guide, or just buy them a cup of Joe and tell them to trust you.

However, for those not ready for the leap of faith and in a situation where the users know query syntax you can empower them to answer their own questions.  Allow them to see the syntax of your dataset on the report.  Then they know exactly what the report is based on. 

To expose a query, you can use the ‘Datasets’ global collection.  Simply create an expression that refers to the commandtext of the data set  so, I create a textbox (say textbox5) and its value is “=datasets!mydatasetname.commandtext”

Then what I like to do is hide it, as it can be very large, but have another text box (say textbox10) whose value is “View Query Text”.  I make its color a blue so its more obvious to users its some sort of action and calls to them ‘click me’.  Then  I make textbox10 the visibility toggleitem property of textbox5.  So a user clicks  “View query text” and textbox10 appears showing the query.

This is particularly handy during the first iterations of building a report and you may need to collaborate with co-workers on the exact goal/make up of the query results.   Even after your done, I leave it there and hidden in case I need it.

For more information on the Global collections, please see this SQL Server Books Online topic.” Using Global Collections in Expressions (Reporting Services)
Note  the following comment  “Not available in local preview.”

Another Sample For Conditionally Formatting text.

There are several exmaples out there showing how to conditionally format text.  Some are hard to find so I thought I would post another since I had recently created it for another reason.  By 'conditionally' I am refering to change the text color or back ground color based on some field value or comparison.

The basic (and quickest to implement) is covered in SQL Sever Books Online (BOL) at Adding Conditional Formatting.  The method covered uses the iff() function to check a condiation and then pass back an appropriate color based.  This is a great approach for simple logic.  However if your comparision logic is complex or you need multiple checks then nesting iif() statements can get complicated.

The other approach, which is the same in inconcept, is to write a bit of custom code, in VB that, lives with the report and you then call the code in an expression, passing it whats needed (e.g. field values).  A great advantage of this is that as you need to change your logic, your changing the one function, not multiple expressions in various places.

For a jump start on where to enter the code, please see this BOL topic. How to: Add Code to a Report (Report Designer) 

I use the functions below to format all the cells in a table row.  Don't forget you can select the whole row and enter an expression once and it will be applied to all of the cells in that row. As you can see there are two functions.  One for changing the text color and one the background color. 
There are various reasons (fields > 0) why I want the row red and shaded (gainsboro).  I could likely write the code logic 'tighter' since they are result in red but I keep it seperate as I do want different colors now and then.

Called from and expression in the Backgroundcolor property.
=code.DetermineBackgroundColor(Fields!pri0.Value,Fields!pri1.Value,reportitems!textbox17.value,Parameters!totalallowednumber.Value)

Called from an expression in the color property.
=code.DetermineTextColor(Fields!pri0.Value,Fields!pri1.Value,reportitems!textbox17.value,Parameters!totaljailnumber.Value)

Function DetermineTextColor(pri0 as integer,pri1 as integer, mytotal as integer,allowedtotal as integer)
 if pri0> 0
  return "RED"
 else If pri1> 0
  Return "RED"
 else if mytotal>=allowedtotal
  return "RED"
 Else
  Return "BLACK"
 End IF
End Function

Function DetermineBackgroundColor(pri0 as integer,pri1 as integer, mytotal as integer,allowedtotal as integer)
 if pri0> 0
  return "gainsboro"
 else If pri1> 0
  Return "gainsboro"
 else if mytotal>=allowedtotal
  return "gainsboro"
 End IF
End Function

For more information on calling the code from and expression, see the Books Online Topic Using Custom Code References in Expressions (Reporting Services) 

Document Maps in RS 2000 with IE7

Many of you have noticed that document maps stopped working on SQL Server 2000 Reporting Services when using Internet Explorer 7. We recently finished a patch for this issue that is available through Microsoft Customer Support. The actual KB article has not been published but if you ask for KB #935227, you can get the fix at no charge.

Orcas Beta1 is now available

Beta1 of Orcas (codename for the next release of Visual Studio) is available for download.

This beta includes some updates in the reporting features that SQL Server Reporting Services team adds to Visual Studio. These include:

  • A new Report Wizard to help users build reports easily and productively
  • New Report Project Templates for rich Windows Forms applications as well as ASP.NET Websites (for both Visual Basic and C#)
  • Printing functionality in the Web Report Viewer control
  • Updated Expression Editor user interface to show examples of expressions for selected function
  • PDFs exported from the ReportViewer controls are now compressed to reduce the size

We're looking forward to your feedback after you try these features out.

Thank you

-Shamez

SQL 2005 Sp2

Download Page: http://www.microsoft.com/downloads/details.aspx?FamilyId=d07219b2-1e23-49c8-8f0c-63fa18f26d3a&DisplayLang=en

Whats new for Reporting Services in SP2: http://download.microsoft.com/download/2/B/5/2B5E5D37-9B17-423D-BC8F-B11ECD4195B4/WhatsNewSQL2005SP2.htm#BKMK_ReportingServices

 

Welcome to the SQL Reporting Services Team Blog

While many of the SQL RS product team are already active bloggers with their own blogs, the team would like to create one more blog that the team as a whole can contribute too.  In particular, those that have some great information to share but are not inclined as much to 'feed' a full time blog.  Please be patient as we ramp this up.

Thank you
-Craig

Page view tracker