Feedback on Analysis Services Performance Guide

Now that I’ve read the Analysis Services Performance Guide (or shall we call it a mini-book) which I announced in my previous blog, I found it to be a great read. I’d recommend it to anyone who would like to get more insights not only about performance tuning UDM but also about the inner workings of the server.

Some caveats… The guide doesn’t answer the perennial and fundamental question about partitioning a large UDM. As I explained in my UDM Data Islands blog, Microsoft scaled down from the initial “super cube” approach and now advocates splitting a large cube into smaller subcubes (which Jamie McClellan referred to as “data islands”) for performance reasons. What I was hoping to find is some performance guidelines and metrics about at what data loads should this split occur. Since this is so important from a performance standpoint, I failed to understand also why there is no reference to linked measure groups and dimensions whatsoever.

Finally, the guide is a bit light from a capacity planning and load-balancing standpoint. Hopefully, there will soon a refresh of the “Creating Large-Scale, Highly Available OLAP Sites: A Step-by-Step Guide” whitepaper.

Analysis Services 2005 Performance Guide

The highly-anticipated Analysis Services 2005 performance whitepaper is finally here. I found a few things intresting glancing at it:



  • This is a colossal work spanning some 120 pages (no wonder it took so long [:)].

  • The guide was written by the top architects on the SSAS team.

  • It specifically references SQL Server 2005 SP2 probably because SP2 brings many performance optimizations to SSAS.

  • The guide mentions a new aggregation utility (Appendix C) which you can use to manually create aggregation designs. 

Something to sure keep me busy when the winter storm hits Atlanta tomorrow…

Dealing with UDM Configuration Settings

Sometimes, you may need to have a configuration setting that is stored outside UDM. For example, you may need to store a connection string to a database that will supply the allowed set for dynamic security. As with SSRS, you can use the msmdsrv.exe.config file for this purpose like so:

<configuration>

<startup>

<requiredRuntime
version=v2.0.50727
safemode=true />

</startup>

<runtime>

. . .

</runtime>

<appSettings>

<add
key=connectionString
value=“connection string here />

</appSettings>

</configuration>

 

This shouldn’t come to surprise since the SSAS server process hosts a .NET application domain to execute SSAS stored procedures. Once the configuration settings are defined, you can read them with a single line inside a SSAS stored procedure:

public
static
string GetConfigSetting(string settingName) {


return settingValue = ConfigurationManager.AppSettings[settingName]; // need a reference to System.Configuration

}

Kudos to Report Builder as UDM Client

Its UDM support limitations withstanding (a partial list here), the Report Builder should definitely be on your list if your requirements call for ad-hoc reporting from an SSAS 2005 cube. Here are some Report Builder features that I particularly like:



  1. Ability to pre-filter the data on the report before the report is run. In comparison, Excel takes the optimistic approach to load all dimension members before allowing you to set a filter. This can surely send Excel in a la-la land if your cube has large dimensions (hundred thousand or more).

  2. Support of calculated columns. For some obscure reasons, the Excel UI doesn’t have an UI interface for creating calculated members (you can do so programmatically however).

  3. Standard report look and feel. In comparison, Excel limits the user to the PivotTable fixed layout (assuming that the user doesn’t convert the report to formulas).

  4. My Reports which allows the business user to save her reports in her own area of the report catalog if she doesn’t have rights to write to other folders.


  5. Nice filter support. This may not be so obvious but each SSAS attribute hierarchy supports an InstanceSelection property which the Report Builder honors. For example, the attached image shows what happens if you set InstanceSelection to List or FilterList (no UI difference between the two). Another filter UI selection is dropdown.

Of course, the Report Builder-UDM integration will improve in future releases (believe me, I am banging hard on the SSRS-SSAS integration door) to make it even more compelling choice for UDM reporting.

Report Viewer Enhancements in VS.NET 2005 SP1

As you probably know by now, Microsoft has recently released Service Pack 1 of Visual Studio.NET 2005. Since the Report Viewer controls are owned by the VS.NET team, it turned out that they have been updated also. Many bug fixes have been implemented. The new features include:

Report Viewer ASP.NET Control Enhancements

  • Reset method to reset the control to its default values.

Both ASP.NET and Windows Forms versions

  • ServerReport.Cookies property to pass cookies to the server (useful if the Report Server is configured for custom security).
  • ServerReport.Headers property to pass custom HTTP headers to the server (useful if the Report Server is configured for custom security).  
  • New (currently undocumented) IReportViewerMessages2 interface for localizing additional menu strings that were not covered by the original IReportViewerMessages interface.

Strangely, VS.NET 2005 SP1 doesn't update the product documentation (perhaps, the next edition of MSDN library will) so you need to rely on the online documentation.

How can you tell if you have the SP1 version of the controls? Once you install SP1 (don't interrupt the second part!!!), open Windows Explorer and navigate to C:\Program Files\Microsoft Visual Studio 8\ReportViewer. Right-click on one of the assemblies there (e.g. Microsoft.ReportViewer.WinForms.dll), choose Properties and flip to the Version tab. The file version should be 8.0.50727.762 and it should match the GAC version of the same assembly.

CTP3 Build of SQL Server 2005 Service Pack 2 Released

In the spirit of the season, the SQL Server team give us the third (and probably last before the final release) CTP3 build (version 9.00.3033.0000) for the forthcoming SQL Server 2005 Service Pack 2.

Losing Identity

After installing CTP2 of SQL Server 2005 SP2, I started getting a rather annoying exception when attempting to launch the Report Builder.

An application for this deployment is already installed with a different application identity.

I’ve noticed that this happens when I run the Report Builder form a server that has CTP2 installed and then I run it from my local machine that doesn’t have CTP2 installed. While I wasn’t able to find what’s causing ClickOnce to lose identity, the workaround I found was to nuke the Report Builder download folders as follows:

  1. Open Windows Explorer and navigate to C:\Documents and Settings\<your user name>\Local Settings\Apps\2.0
  2. Delete all folders below the folder except the Data folder.

SSRS-SharePoint Integration in SP2 (the Good, the Bad, and the Ugly)

As noted before, a major SSRS enhancement in the SQL Server 2005 Service Pack 2 is integration with SharePoint v3.0 and Microsoft Office SharePoint Server. After the RTM release of SQL Server 2005, the SSRS team has been hard at work to implement this feature. Starting with the newly released CTP2 build of SQL Server 2005 Service Pack 2, the SharePoint integration mode is available for public review and testing.

Here are my initial high-level observations after testing the SSRS SharePoint integration in CTP2.

The Good

Integrating reports in dashboards and portals is an increasingly popular requirement. It is obvious that the major design goal that the RS team has set up from the get-go was a seamless integration between SSRS and SharePoint. Many changes were made to the SSRS architectural stack to materialize this goal. The final result speaks for itself (see attached screenshot ).

Once the Report Server is configured in a SharePoint mode, the report definitions are equal citizens to the other documents that are deployed to the SharePoint repository. You can carry all of the report management and delivery tasks right within SharePoint. For example, you can upload the report definitions, set up report security, parameters, subscriptions, and view reports. No, no web-based report authoring yet (not in this release). Instead, use the Report Designer or Report Builder to deploy reports to a SharePoint library.

The Report Server security polices get superseded with SharePoint security. In other words, in SharePoint mode, the Report Server honors the SharePoint security policies and groups, e.g. Home Owners. Behind the scenes, viewing reports is carried by a Report Viewer web part which wraps the ASP.NET ReportViewer that debuted in VS.NET 2005.

Overall, you will undoubtedly like the tight SharePoint integration especially if you have used the old SharePoint Report Explorer web part which was just a wrapper on top of the Report Manager UI. As the popular add goes on, everyone can see the difference. SSRS reports just blend in and "light up" SharePoint. Moreover, the new integration model enables new features (native to SharePoint) that the Report Server doesn't support, such as version control of report definitions and workflow support. For example, you can set up a workflow that requires a formal approval when a new report is uploaded.

The Bad

Many moving parts. New web services endpoints (2006) and security extension are installed on the Report Server to support the SharePoint integration model. A Reporting Services add-in needs to be installed on the SharePoint box so SharePoint can "talk" to the Report Server (only single-server deployment scenario is supported in CTP, the final release will support installing SharePoint and Report Server on separate machines) .

Without going into technical details, a synchronization process takes place at runtime to synch the report definitions between the SharePoint repository and the Report Server catalog. In other words, the SharePoint is the master, the Report Server is the slave. Each time you run a report, the Report Server checks if the report definition exists in its catalog and, if not, calls down to SharePoint to retrieve and upload the report definition. That's because some management tasks are carried by SharePoint (mainly storing the report definitions), while others (subscriptions, snapshot caching, rendering) are executed by the Report Server. Upgrading an existing report catalog to SharePoint is not supported. You need to create a new report catalog enabled in a SharePoint integration mode (use the RS Configuration Utility) and upload manually or programmatically the existing report definitions.

The Ugly

My biggest gripe is the lack of backward application compatibility. If you have an existing application(s) that call down to the Report Server APIs and your requirements call for surfacing your reports to SharePoint you may find that this is not that simple. Not only the web service end points have changed but also the report paths are different to reflect the fact that report definitions are now stored in SharePoint, e.g. #. Further, some features didn't make to SharePoint because they don't have equivalents, such as linked Reports and batching. These changes will necessitate either rewriting your RS code to bent to the SharePoint integration mode (assuming you want to keep everything in SharePoint) or maintaining two report catalogs (one in the "classic" RS mode and a second for SharePoint integration). Of course, the later scenario would require an additional effort to synchronize both catalogs.

Finally, despite that extensibility has been an RS hallmark since its first release, the SharePoint web parts are not extensible. For example, as with the Report Manager, developers won't be able to change the parameter prompts, e.g. to implement more advanced parameter validation or replace them with custom controls. In short, if your requirement go beyond the built-in feature set, you don't have another choice but to abandon the Microsoft SharePoint implementation altogether and do it yourself.

Since I'd prefer centralizing the report management into a single report catalog whenever possible (as opposed to having multiple catalogs for each integration scenario), I couldn't help it but wish for a "semi-tight" integration where the SharePoint web parts just act as a thin presentation layer to the Report Server similar to the Report Manager. But again, I am not an expert in SharePoint and don't know what compromises this approach would have required or how difficult it could have been to achieve the SharePoint look and feel if the report definitions are not stored in SharePoint.Not to mention that the backward compatability issue I listed above may not be a problem if your requirements call for having two separate sets of reports anyway – one for application consumption (operational reports) and second for a SharePoint dashboard (management reports). In this case, having two distinct report catalogs may be preferable.

SharePoint Services 3.0 Released

Download location: http://www.microsoft.com/technet/windowsserver/sharepoint/download.mspx

Demo: http://office.microsoft.com/en-us/sharepointtechnology/HA102055631033.aspx