Welcome to MSDN Blogs Sign in | Join | Help

The rumors are true. I will be leaving the Reporting Service team after 7 years and SQL Server after 10 years. Here is the message that I sent to my team:

It first dawned on me about 3 months ago that I had been in the same position for close to 10 years, nearly a quarter of my life, causing me to reflect on my career and accomplishments. When I joined the MS Repository team in 1997 (which soon became part of SQL Server), my goal was to join a product team building world-class enterprise software. And when we formed the Reporting Services team in 2000, I got a rare opportunity to build a product from scratch that would eventually have an impact millions of people's lives. It has been truly a magical ride. And while I still enjoy my job and love our product and customers, I came to the realization that I needed a change and an opportunity to grow in new directions.

I've decided to take a role as a product manager for a newly acquired hospital management application in Microsoft's Health Solutions Group. The fun part is that the product is built by a company in Bangkok, Thailand. Microsoft has a huge opportunity in the healthcare IT market, especially in developing countries. As some of you may know, this is a homecoming of sorts for me as I worked for a healthcare software company before I came to Microsoft and my first job at MS was technical evangelist for healthcare ISVs.

As with every transition, my move is also bittersweet. It has truly been an honor working with such a great group of individuals over the years and I will especially miss the Reporting Services team, which I helped grow from a small team to the group we have today. It may sound clichéd, but I truly believe that SQL Server is one the best engineering teams in the world and I am lucky to have been along for the amazing ride that we have had. I am also sad to leave before the release of SQL 2008, which is absolutely our best release yet. I'll be on the other side now as a customer so please look kindly on my feature requests.

I will leave you with a small mantra that I have gleaned over my years here: have fun and keep things in perspective. When we first built Reporting Services and started creating reports on the bug database, I knew that we were going to be successful because the product was a lot of fun to use. If you are having fun while you are building, testing, or using the product, it will come across to the customer. In the end, customers are forgiving if they know you have put your heart into it. I realize how painful it is as you march toward the end but remember, there will be another release, I promise. :)

I haven't decided what to do with the blog. I will still be following Reporting Services but I will also start to blog on HSG topics. I appreciate all of the support that you have given me over the years and hope that Reporting Services will continue to be part of your computing world.

Hopefully, you have gotten a chance to work with the latest CTP of SQL Server 2008 Reporting Services. But if you have, you may be a bit puzzled by the report design options in the CTP. Specifically:

  • Report Builder looks just like it did in SSRS 2005.
  • Report Designer is hosted in the VS 2005 shell and looks pretty much like it did in SSRS 2005 (i.e. no tablix or Dundas charts).
  • There is a new tool called "Report Designer Preview" with an Office look and feel and support for 2008 RDL. However, it is missing support for several features like shared data sources.

Here is the story behind the current CTP as well as the future roadmap.

As you may know, Report Builder was the result of an acquisition we did in 2004 of a company called ActiveViews. The key piece of technology we acquired was the ability for business users to easily build queries over relational data sources via a semantic model. The original ActiveViews product did not have a layout surface at all - the user simply set a couple of properties and the report layout was generated from a template. After acquiring the product, we decided we needed to add the ability for the user to directly modify their report layout, similar to the report designer in Visual Studio. However, the existing designer layout surface was too tied to the VS infrastructure to be used directly in Report Builder. So we built a new layout surface for RB that was easier to use but did not include support for all of RDL.

After we released SSRS 2005, we got a lot of feedback about Report Builder. The key request from customers was to be able to use the full spectrum of RDL features - including multiple data regions, expression-based styles, and support for all data sources. So, when we built the design-time layout component for the new 2008 Report Definition Language, we built it in a way that could be leveraged in both the Visual Studio environment as well as in a standalone shell. The first appearance of this new layout surface came the form of the "Report Designer Preview" in the SQL Server 2008 July and November CTPs (the main difference between the July and November CTPs is the appearance of a new Office 12 look and feel and ribbon).

Simply put, The Report Designer Preview is an early build of the next version of Report Builder. While all the features are not finished yet, it should give you a good idea about the direction of the product. The most important feature is full access to all RDL features. Unlike in the 2005 version of Report Builder, this means that you can edit any report that is built in Report Designer, including reports built directly against data sources such as SQL Server, DB2, or Oracle. Does this mean that Report Models are deprecated? Absolutely not - they are just not required now. Report Builder will continue to support report model data source to make it easier to build queries. However, for folks building reports against Analysis Services cubes, auto-generating a model is no longer required.

So now that Report Builder is covered, what happened to Report Designer / BIDS? If you are using the current CTP, you will notice that Report Designer is unchanged from RS 2005 and still hosted in the VS 2005 shell. We are in the midst of integrating the RS 2008 layout surface into the VS 2008 shell and expect this to be available in the next CTP. We waited until VS 2008 RTM so that we would have a stable build to work from. In the next CTP, when you install BIDS, you will get the SQL 2008 projects (including AS, IS, and RS) installed into the VS 2008 shell. The actual layout surface and dialogs in Report Designer will be very similar to the ones you see now in Report Designer Preview.

You might ask, once SSRS 2008 is released, will everything will be covered between the new Report Designer and new Report Builder? Unfortunately, this is not quite the case. Since the new version of RB is a complete rewrite, some of the functionality of the existing tool will not be available right away. The following diagram shows the differences between the tools:

Designer Features

Specifically, the key features that will be missing from the initial release of the new version of RB are the integrated query and layout (adding a field to the query automatically adds it to the design surface) and automatic generation of infinite click through report links (you would need to add them via the textbox action properties). To mitigate this feature gap, we will continue to ship the existing version Report Builder in SSRS 2008. This allows users to continue with the existing functionality and migrate to the new Report Builder when they are comfortable doing so. In the next release, we expect that all of the existing RB functionality will migrate into the new shell and we can stop including the 2005 version.

If you would like to see the new design tools in action, you can watch Jason's Webcast from a few weeks ago.

After many months of working on getting them posted, I'm excited to let you know that two whitepapers on the integration between SQL Server Reporting Services and SharePoint are now available.

Enjoy!

If you have gotten a chance to try an early build of SQL Server Reporting 2008 Reporting Services, you know that one of the changes in the product is the removal of the Internet Information Services (IIS) dependency. I have gotten some questions about the motivation behind this change so I thought I would give you a quick peek behind the decision.

The first reason we moved away from IIS is for better configuration. IIS was built several years ago to do lots of things, including serving up web pages from the file system, host ISAPIs, Internet printing, etc. SSRS 2005 uses very little of IIS, mainly as a port 80 listener, client authentication, and process hosting. But when you install IIS, you got a bunch of stuff that RS really doesn’t need at all. It turns out that all of the parts of IIS that we didn’t use got configured in very strange ways and made RS not work.

This is especially true in the case where there were other IIS applications on the same server as RS. Not only did other application settings conflict with RS, any application running under the same Application Pool identity is granted full access to the RS catalog. By moving out of IIS, we have actually significantly reduced the surface area that you to configure and secure.

To be fair, IIS7 (in Windows Vista and Windows Server 2007) does address many of these issues by making IIS more modular and easier to configure. However, RS needs to support previous operating systems and the fact that IIS is an independently managed, shared resource can still cause us configuration headaches.

The second reason for the change is a need for better resource management. IIS has a pretty simple model for thread, memory, and state management. This works well for most applications that are serving up static or dynamic HTML pages. However, it wasn’t really built to host an enterprise server responsible for serving up reports with gigabytes of data in multiple formats to thousands of users simultaneously. By hosting the service engine ourselves, we gain much more control over resource management. For example, RS 2008 has a new on-demand processing model to ensure that no report executions will run out of memory. It does this by paging and releasing allocated memory to the disk when it gets memory pressure notifications. This would have been very difficult to implement using the IIS hosting model.

Using this new architecture, we are also able to simplify the dual-process model of Reporting Services 2005. In addition to the IIS application pools that handle on-demand requests, RS 2005 has a windows service to handle asynchronous processing (scheduled executions or subscriptions). To minimize the encryption surface area, these two processes use LRPC to communicate key information for each request. Merging these two processes removes this communication channel and allows us to balance resources across these two domains. For example, we can cap memory for the entire report server (to play nice with other servers) or say that scheduled executions get less memory working set than on-demand report executions, or vice versa.

A final motivation for the change was to remove adoption blockers. For example, some companies have a policy of not allowing IIS on the same server as SQL Server or don't want any web servers other than Apache. Whether or not these were useful policies, they kept us out of some deployments.

What does this mean for the users and external applications? They should see no changes. Most common IIS settings are supported (IP addresses, host headers, multiple ports, SSL, Authentication modes) and the tools and APIs have been updated for the changed settings. There are a few IIS settings not supported in RS 2005 that are now not allowed, including Anonymous authentication, Digest authentication, and Client certificates. If these settings are required, they can often be handled using a proxy like ISA Server. In most cases, the new server can peacefully co-exist with IIS on the same ports on a single (on 32 bit XP, you will need to put RS and IIS on different ports).

As most of you probably know by now, Visual Studio 2008 is now available. What you might not have noticed is a new version of the ReportViewer control and local /embedded report editing experience. Included with VS 2008 are the following new features:

Design-time: 

  • New Report Projects: Two new project templates for quickly creating reporting applications. When you create a new Report Application project, you get a blank report (.rdlc) and a form with a ReportViewer control bound to the report.
  • Report Wizard: The Report wizard guides you through the steps for creating a basic report. After the wizard is finished, you can edit the report by using the Designer.
  • Expression Editor Enhancements: The expression editor now provides common sample expressions.

Run-time:

  • PDF Compression: The ReportViewer controls compress reports that are exported to the PDF format.
  • Local Print: The ASP.NET ReportViewer now includes the ability to print a report in local mode via an ActiveX control.

Documentation for the new ReportViewer is here. The new version runs SxS with the VS 2005 version. This means to use the new controls, you will need to change the references in your project to use the new ReportViewer control.  We will be writing a KB article about how to do that soon.

An important thing to understand is that the ReportViewer in VS 2008 is based on the report engine from SQL Server 2005 Reporting Services, which means it uses the 2005 RDL schema and processing engine. Since SQL Server 2008 has not shipped yet, we will not be able to release a 2008 RDL version of the ReportViewer until next year.

If you are going to ship the new ReportViewer with your application, we now have an updated version of the redistributable to the web. The download page is here. For the ClickOnce scenario, the ReportViewer.exe  FWLink is also live.

As localization is not a built-in feature for Reporting Services, people have tried a a variety of techniques for localizing reports. One technique is to use the LocID propertie to create a version of the RDL in each language. Another approach is to have a single report and create a custom assembly to load the strings for each label. Here is an relatively easy technique for providing localized reports using hidden parameters.

First, you will need to create a table to hold the translations. The following T-SQL will create the table and add a few labels for translating the Product Line Sales sample that is included with the product.

CREATE TABLE [dbo].[Translations](
  
[Label] [nvarchar](150) NOT NULL,
  
[Language] [nvarchar](10) NOT NULL,
  
[Translation] [nvarchar](150) NOT NULL
)
GO
INSERT [dbo].[Translations] 
  
VALUES ('Top Stores','fr-fr','Les meilleurs magasins')
INSERT [dbo].[Translations] 
  
VALUES ('Top Employees','fr-fr','Les meilleurs employés')
INSERT [dbo].[Translations] 
  
VALUES ('Top Stores','en-US','Top Stores')
INSERT [dbo].[Translations] 
  
VALUES ('Top Employees','en-US','Top Employees')
INSERT [dbo].[Translations] 
  
VALUES ('Top Stores','de-DE','Oberseite Speicher')
INSERT [dbo].[Translations] 
  
VALUES ('Top Employees','de-DE','Obere Angestellte')
GO

Now, create a query that will return the set of labels for a given language. Add a dataset named 'Labels' that has the following query:

SELECT        Label, Language, Translation
FROM            Translations
WHERE        (Language = @Language)

By default, a new report parameter will be created named Language. If you would like to automatically bind the translations to the user's  language, you can delete this parameter and bind it to User!Language in the dataset properties dialog. However, for testing purposes it is easier to just type it in for preview.

Next, you will need to create a hidden, multi-valued parameter called 'Labels'. Set the Available Values to the Labels dataset, the Value field to 'Labels' and the Label field to 'Translation'. Set the default values to the same dataset and the Value field to 'Labels'. This is important as you don't have access to the available values from within the report, only the actual values. When the user runs the report, the parameter value will contain all of the labels.

Now, add a function to the report (from the code tab of the Report->Report Properties menu item)

Public Function GetLabel(P as Parameter, Label as String) as String
  Dim i As Integer
  For i = 0 to Ubound(P.Value)
    If (P.Value(i) = Label) Then Return P.Label(i)
  Next i
  Return Label
End Function

This function will find the translated label within the supplied multi-valued parameter. If the label is not found, the passed in value is returned. This is important as you may have a user language for which you have not created the translations.

The only thing left is to change the static labels in your report to use this new function. For example, to translate the Top Employees label, use the function

=Code.GetLabel(Parameters!Labels,"Top Employees")

I've included a version of the Product Line Sales report that has all of this working. Enjoy!

One of the questions that I get often is about putting database fields in their SSRS report page header and/or footer.

Note that putting fields in the page header and footer is not the same as putting a data region in these sections. Because of the impact on layout (what happens when it grows?), we do not want to have growing items in these sections. Therefore, any fields in these regions will be a single textbox at an report level aggregate scope (so there is only one instance).

You might know about one workaround which is to reference a textbox in the body of the report using =ReportItems!TextboxName.Value syntax. This is very useful for useful for dictionary or address book style reports as it allows you to reference the first or last instance of a textbox in the page. The challenge with this approach is that you need to make sure that the textbox appears on every page, which can be a tough in some reports.

Another approach is to use hidden parameters. To do this, create a new data set that contains the values that you want to put in the report. In general, the query should only return a single row. After defining the data set, create a hidden parameter for each value you want to display. Set both of the available values and the default values for these parameter to the data set and field that contains the information that you want to show. Then you can simply add them to the page header or footer using the =Parameters!ParameterName.Value syntax.

I've attached a modified version of a SQL 2005 sample report that demonstrates this approach. Instead of static text for the web site URL in the page footer, it retrieves it from a query.

Next up, I'll show how you can achieve report localization through a similar technique.

Some of you may be familiar with Nigel Pendse’s OLAP Report. This year, the survey is broadening to include more BI functionality and is being renamed "The BI Survey". If you have some time, take a moment and fill out the survey. We (and the other BI vendors) take the results seriously.

Last week I attended TechEd in Orlando, Florida. Here are my thoughts on the event.

This year was TechEd's 15th anniversary. I realized on the way down that I was attending my 10th consecutive TechEd. When I started attending, TechEd was about 2,000 or so people. This year, TechEd had over 13,000 people attending 480 Breakout Sessions, 200 Chalk talks, and 190 Hands-on Labs.

In general, this TechEd was much more low key for Reporting Services than last year. I think this is because many of people decided to attend the MS BI Conference in May instead of TechEd. The second reason is that we didn’t have a new release finished like we did last year. While customers are definitely interested in SQL 2008, they are still in the midst of deploying SQL 2005.

On Monday, Bob Muglia’s keynote included the Dundas acquisition announcement and a demo that included a Dundas Map based SSRS report. You can also view Dundas' Ed Worsfold discussing the acquisition. This was followed by Dave Campbell’s Katmai overview where Jason Carlson showed some advanced charting features. Unfortunately, his demo was marred by some A/V glitches.

On Wednesday, I showed the SQL 2008 Report Designer in Bill Baker’s “Third Annual BI Power Hour” session. My demo was building a game of Mastermind using a stored procedure and a nested Tablix report. Other demos included Data Mining on Outlook calendars, a “Deal or No Deal” game show built in Performance Point, and a mobile BI from Hitachi showing results from a Muppet popularity contest.

On Wednesday, Jason did an Advanced Report authoring session that was about 50/50 Yukon and Katmai. Based on attendee feedback, I adjusted the Yukon / Katmai content to 75/25 for the repeat of the session I did on Friday. I showed a demo of report localization through hidden parameters and a few other cool parameter tricks. I got spontaneous applause during my session for the Dundas announcement. I'll post some of the sample reports over the next couple of weeks.

On Thursday, Chris Baldwin did a session on Report Authoring Futures for Information workers. His session was very well received and people are eager to get their hands on OfficeWriter functionality. Our two chalk talks (Rendering Tips and Tricks and Programmability) also went over very well.

Reaction to the SQL 2008 features, which I showed in my Power Hour demo and the two report authoring sessions, was very positive. People are excited about Tablix and the new designer. When I told people that we didn’t have anything new in CTP3 (which was given out at the show), they weren’t too disappointed but they are looking forward to CTP4.

Much of the time between sessions was spent fielding questions from customers and taking product suggestions in the Technical Learning Center (the booth). Our booth was located in the Business Intelligence section along with AS, IS and PerformancePoint. Again, traffic was steady over but not as heavy as in past years.

The #1 top request that I got from customers was to provide a data extension and designer for SharePoint lists. I couldn’t go more than an hour in the booth without getting this request. Other requests included:

  • Style sheets
  • RDL Object Model
  • Show the values of textboxes in the visibility toggle dropdown
  • Heterogeneous join
  • Use C# code blocks and expressions
  • Horizontal CanGrow
  • Multi-Zone support in SharePoint
  • Be able to specify filenames on export
  • Make toggles work in MHTML
  • Allow user to control the parameter dependency refresh
  • Cross dataset join
  • Fix "Select All" (make it optional)
  • Fields in page header and footer

I want to thank everyone for stopping by the booth and saying hello. It's always good to meet people in person that you have worked with over e-mail for years. 

I am very happy to announce that a fix has been released for the notorious "Visual Studio cannot shut down because a modal dialog is open" bug. I know that many of you are getting this daily when using the SQL Server 2005 Report Designer. You can read the KB article for the fix here. Currently, you will need to get the fix from Microsoft Customer Support but we are working to get this posted publicly.

I think that you might be surprised how long it takes people within Microsoft to adopt new software. While there are some software that we are "strongly encouraged" to adopt <g>, what applications we use on a day to day basis is generally up to each one of us. I'm usually so busy trying out the latest features of my own product that I don't have time to try out the other stuff that is coming out from around the company.

Take OneNote, for example. Although it has been in Office for two versions, I never gave it a try. My original reluctance was basd on the mistaken assumption that it was primarily for tablet users. After that, I just never had the bandwidth to learn how to use it. So I stuck with Outlook, Word, or Notepad for taking notes. Since Office 2007 was released, several of my team members started calling me a luddite for not giving it a try so I took the dive. And you know what? It's really cool. I'm sure I'm not using half of the features but just the ability to not worry about where to save stuff makes taking notes a lot easier.

So, I'm on my way to TechEd writing the notes for my presentations in OneNote. Even this blog entry was written in OneNote then pasted into Live Writer (which is a very nice tool in itself). Now if domestic flights only had Internet connections...

Unlike previous years, I decided not to attend the first day of TechEd. This means that I missed BobMu's keynote but you can read about the details from many of the TechEd bloggers.

If you read the press release from TechEd today, we announced the official name for the next release of SQL Server - SQL Server 2008 (so long, Katmai). You can also download the first CTP. While I would encourage you to try some of the new features in the CTP, you are going to be a little disappointed if you are looking for new Reporting Services features. We have scheduled our first set of new features for the next CTP - so stay tuned for a few more months. If you attend one of our TechEd sessions, you will get a preview of what is coming.

Our second big announcement from TechEd was that we have acquired the data visualization products of Dundas Software. Many of you have been using the enhanced chart for Reporting Services along with the gauge and map custom report items. We realized the importance of data visualization components for reporting so we purchased this codebase for inclusion in future versions of SSRS. We are working on the integration right now so I can't promise how much will make it into SQL Server 2008.

As for TechEd itself, I'm heading out tomorrow. Feel free to stop by the Business Intelligence part of the Learning Center and say hi. If you are looking for some Reporting Services related content, try these sessions:

  • BIN 305 - Applied Microsoft SQL Server 2005 Reporting Services
  • DAT 201 - The Next Release of Microsoft SQL Server: Overview
  • BIN 202 - Third Annual Business Intelligence Power Hour
  • BIN04-TLC - Reporting Services Rendering Tips and Tricks
  • BIN 306 - Microsoft SQL Server 2005 Reporting Services: Advanced Report Design
  • BIN 318 - Reporting Services Futures: Report Authoring for Information Workers
  • BIN05-TLC - Integrating Microsoft SQL Server 2005 Reporting Services and Microsoft Office SharePoint Server 2007
  • BIN15-TLC - Reporting Services Programmability
  • BIN 306R - Microsoft SQL Server 2005 Reporting Services: Advanced Report Design

I wanted to give some props to my friends at 90 Degree Software (Vancouver, Canada) on the latest release of their report authoring tool, Radius. Radius is a report design tool based on the Reporting Services Report Definition Langauge (RDL). If you are looking for something with more flexibility than Report Builder but a little friendlier than Report Designer, Radius is a good choice. With each release, they have added support for more of SSRS Report Definition Language and the ability to share pieces of RDL (queries, parameters, data regions, etc.) is really cool.

 

With the return of “Select All” in Service Pack 2, all multi-value parameters allow the user to pick all of the available values. But what if you want to remove the predicate from your WHERE clause instead of generating a long set of values in the IN predicate?

You can accomplish this is via an expression-based query and an internal parameter.

First, create a second parameter in your report. It should be have a new name, multi-valued, use the same valid values query and the default values set to the valid values query as well. In addition, mark the "internal" flag in the parameters dialog so it is not displayed to the user.

Next, change your main report query to an conditional expression that compares the number of selected values to the number of available values (which will always be selected in the new parameter). For example:

="SELECT Hour, Month, Year, Username, Sitename, Cookie FROM dbo.GlobalIISLog " & IIF(Parameters!ComputerName.Count = Parameters!AllComputerNames.Count,"", " WHERE (sComputername IN (@ComputerName))")

 I have attached a sample report that demonstrates this technique.

Wow, what a show! I spent this week recovering from the first ever Microsoft Business Intelligence Conference. Conferences in downtown Seattle are always fun because I live in Seattle and don't have to cross the bridge to get to the Microsoft campus. I'd like to thank all of the folks that came up and told me how they were using SSRS and how useful the blog was to them. Here's a quick rundown of the show highlights for me.

Tuesday

  • The opening reception has really nice food (big prawns) and lots of people that I haven't seen in years.

Wednesday

  • During the first keynote, Jeff Raikes announces our acquisition of OfficeWriter from SoftArtisans. Well, technically, he announced that we acquired the company, which is not the case. We acquired the technology for a future version of SSRS and they will continue to sell the existing product. The details are correct in the press release.
  • Jeff also announces that the next version of SQL Server, code-named "Katmai", will ship next year. Yes, that is 2008, not 2010 or 2011.
  • I do a podcast where I talk a little about the conference and Katmai and the upcoming Seahawks season. The rest of the NFC west has improved but so have we. Should be a good season.
  • My session on Integration of Office SharePoint Server and Reporting Services (white paper here) went well except for the beginning of the demo. I was trying to show how you can configure an instance of SSRS to be in SharePoint Integrated mode. Unfortunately, I have multiple instances of SSRS on the demo machine and I was configuring the wrong one. I finally figured it out but it was a little scary for a few minutes.
  • Lots and lots of questions about RS Katmai at the exhibit hall reception. I know people are excited to get their hands on it and you will be able to in a couple of months.
  • The Panorama party at the Space Needle was a blast. From the observation deck, you can just barely make out my house (actually, the cell phone tower beside my house).

Thursday

  • Ted Kummert, my VP, talks in depth about Katmai in his keynote. Our product manager Francois does a demo of OfficeWriter.
  • I reprise my "executive dashboard" demo at the BI Power Hour. In my demo, I show a CustomReportItem that I built that allows for interactive KPIs within a grid. By clicking on a cell, you can mark it as good (O) or bad (X). By the end of the demo, the crowd realizes that it is actually a tic tac toe game. I'll post the code over the next couple of weeks.
  • The PerformancePoint team does a very nice "Deal or No Deal" game show and manage to get Bill Baker to put on a blonde wig. Patrick Husting posted some nice pictures from the session.
  • Cool attendee party at the Experience Music Project (aka the Jimi Hendrix museum).

Friday

  • Steve Ballmer does a nice job (as usual) on his keynote by articulating the importance of BI and how Microsoft's commitment to this space.
More Posts Next page »
 
Page view tracker