Dundas Chart for OLAP Services

If you are on a lookout for a web-based smart chart that can browse SSAS 2005 cubes, don’t look further. Enter Dundas Chart for OLAP Services! Despite the name (what’s Dundas anyway?), I really fell in love with this control after playing it with its demos for a while. The chart can connect to both server and local cubes. The attached image shows the Dundas Chart connected to the Adventure Works DW cube.

The beauty of the Dundas Chart is that it’s more than a chart. It is a web-based OLAP browser. And it’s AJAX-enabled so the page doesn’t re-post as result of user actions! From an end-user perspective, authoring a chart is a matter of dragging and dropping dimensions and measures. The same experience as creating an OLAP-based pivot or chart report in Excel.

Given the void left by OWC and the lack of Microsoft OLAP browser controls, the Dundas Chart for OLAP Services is definitely something to consider when planning for multi-dimensional web reports.

Timeout Quest

I was on an interesting quest today. I had to troubleshoot why some long-running SSRS reports time out after a fixed period of time. An SSRS report can time out for at least three different reasons. First, the dataset query could have been set to time out (see DataSet Query tab). The default query timeout is 30 seconds. You can set the query timeout to 0 to prevent the query from timing out.

Second, the entire report may be set to time out . By default (see the Site Settings page in the Report Manager), all reports are set to time out after 1,800 seconds (30 minutes) but the report timeout can be overridden at the report level by using the report execution properties. When the report timeout is up, the Report Server simply terminates the report.

Finally, if your application calls down to the RS Web service to run a report (the Render API), the web service call may timeout. That’s because in .NET, the web service proxy has a Timeout property.

As usual, as one of the first step of troubleshoot an SSRS issue, I fired up the SysInternals DebugView tracer to watch the output from the Report Server. It turned out that the reports would time out after exactly three minutes. When this happened, the Report Server would gently complain that the ASP.NET thread had terminated without throwing an exception. This led me to believe that this issue was outside the Report Server. After further digging, it turned out that the proxy Timeout was set to 180 seconds. Setting it to -1 solved the problem. Keep in mind though that the IIS could also terminate a long-running report, e.g. if the IIS 6.0 application pool is set to terminate long-running threads.

Installing Reporting Services 2005 on Named Instance

Here are the steps I’ve recently followed to install successfully SRRS 2005 on a named instance.




  1. Follow the steps in the “To Install Reporting Services Side-by-Side With an Earlier Version” section in BOL.


  2. Navigate to http://localhost/reportserver/. If you get access denied error to rsreportserver.config (or another folder/fiile), add the SSRS Windows Services account (e.g. NT AUTHORITY\SYSTEM) and the Web service (ASPNET) to the SQLServer2005ReportServerUser$<machine>$<instance> and  SQLServer2005ReportingServicesWebServiceUser$<machine>$<instance> Windows groups respectively.


  3. Try to open Report Manager. If you get an error that the Report Server cannot open a connection to the database, go back to the Reporting Services Configuration tool.



  • Switch to the Database Setup tab.


  • Select the Server Name and Database Name (ReportServer) and click the Script button.


  • In the Create Scripts dialog, select the Grant Rights Script option.
    Type in the Web service account (e.g. ASPNET) in the User Name field and select the Windows User Account checkbox. Click OK to generate the script.


  • Double-click the script file to open it in the SQL Server Management Studio and execute it. This should grant the necessary permissions to the Web service to connect.

Strangely, on a Windows 2000 box, the Reporting Configuration Tool was showing the following error:


ReportServicesConfigUI.WMIProvider.WMIProviderException: An unknown error has occurred in the WMI Provider. Error Code 80070005   at ReportServicesConfigUI.WMIProvider.RSReportServerAdmin.SetWebServiceIdentity(String applicationPool)


I wasn’t able to figure out how to fix the above error message but it didn’t seem to affect the Report Server.

UDM Many-to-many Relations and "AND" queries

Recently I got an interesting question about querying UDM many-to-many relationships. For example, in my book I demonstrated how you can implement an UDM model (Bank cube) that has a many-to-many relationship between bank customers and their accounts. That’s because a customer could have more than one account and an account can belong to more than one customer (a joint account).


 


But what if you want to find only the joint accounts that are owned by any two customers?  The following query returns the accounts owned by Bob and Alice:


 


SELECT


NON EMPTY {[Measures].[Balance]} ON COLUMNS,


Intersect


   (


     Exists([Account].[Account Number].[Account Number],


[Customer].[Full Name].&[Bob], “Customer Account”),


Exists([Account].[Account Number].[Account Number], [Customer].[Full Name].&[Alice], “Customer Account”)


   )  ON ROWS


 FROM Bank


 


The trick is to evaluate the sets over the hybrid “Customer Account” measure group which is actually a dimension table but plays a role of a measure group. The Exists function returns the accounts that the given customer owns. The Intersect function returns the subset of the customer sets.

OWC to Bite the Dust

Just learned from the David Gainer’s post, that Microsoft has made a decision to retire Office Web Components (OWC) in favor of Excel Services. This is definitely sad news for me. While I agree that Excel Services could fulfill some of the integration scenarios mentioned in the comments for that post, I can think of at least two scenarios where this won’t be the case:



  1. You need a cost effective and easy way to provide OLAP features in your applications. The Office Server pricing model has not been announced yet but it could be intimidating for small companies or application vendors. Not to mention that SharePoint requires Windows Server.

  2. You need to embed an OLAP browser in your Windows Forms application. Currently, I don’t know of a way to embed an Excel spreadsheet on a Windows Form (VSTO, Excel Services, VBA, etc. don’t support this). Not to mention that if browsing cubes is the only thing you need, installing and maintaining the entire Office Server stack may be a difficult proposition.

IMO, it could have been great if the OWC were replaced with a web and Windows Forms OLAP viewers similar to the VS.NET report viewers for SSRS 2005. This would have given developers a light-weight alternative for UDM application integration. Now, we have to wait for third-party vendors to fill in the void. Sigh…

AdventureWorks DW Workspaces Templates Available for Microsoft Office Business Scorecard Manager

These samplesThese samples will get you up and running with Microsoft Office Business Scorecard Manager 2005 utilizing the sample OLAP database provided with Microsoft SQL Server and Analysis Services 2005 called AdventureWorks DW. The purpose of the AdventureWorks DW database is to provide a sample database for exploring the possibilities of OLAP. will get you up and running with Microsoft Office Business Scorecard Manager 2005 utilizing the sample OLAP database provided with Microsoft SQL Server and Analysis Services 2005 called AdventureWorks DW.

Swapping the RS Catalog

Sometimes, you may need to swap the RS catalog database. For example, you may need to clone the catalog database from a production machine to troubleshoot an issue. One way to do so is to replicate the report items (report definitions, data sources, images, etc.). Another, and perhaps faster, way is to copy the report catalog database and redirect the Report Server temporarily to the new catalog by using the handy Reporting Services Configuration Manager (new with RS 2005). The following steps worked for me to redirect my local SSRS instance (SP1+hotfix) to a different catalog (from SSRS 2005 RTM).

  1. Use the SQL Server Management Studio to create a new database, e.g. ReportServerTest.
  2. Create a new database ReportServerTestTemp to serve as the Report Server Temp database.
  3. Back up the production database you need to troubleshoot.
  4. Restore the production database to ReportServerTest. Make sure to rename the database files by flipping to the Options tab (e.g. rename the files to ReportServerTempDB.mdf and ReportServerTempDB_log.mdf)
  5. Back up the production instance of the ReportServerTemp database and restore it to ReportServerTestTemp (again rename the database files).

Note: As its name suggests, the ReportServerTemp database is just a temporary database used by the Report Server for session caching. Since you don't need its data, you can restore (copy) it from any RS temp database.

  1. Open the Reporting Services Configuration Manager (Microsoft SQL Server 2005 program group -> Configuration Tools -> Reporting Services Configuration) and switch to the Database Setup tab (see attached screenshot). 
  2. Enter the name of the new Report Server database (ReportServerTest) and hit Apply. If your SSRS instance is newer version of SSRS 2005 (e.g. SP1), you will be prompted to upgrade. If all is well and you don't see error and warning messages, the Report Server will be re-configured to use the new database. If at this point you try to connect to the Report Server (e.g. /reportserver/) you will get the rsReportServerNotActivated error. The reason for this is that the Report Server cannot decrypt the content of the new catalog with its encryption key.
  3. In the Reporting Services Configuration Manager, flip to the Initialization tab. You should have two report two rows (see attached file) in the grid corresponding to your local computer name (initialized) and the computer which hosted the report catalog you restored. Let's assume you don't have connectivity to the remote machine and you cannot connect to it.
  4. Open the command prompt and execute:

     "C:\Program Files\Microsoft SQL Server\90\Tools\Binn\RsKeyMgmt.exe" -d

This will effectively remove any encrypted content, including connection and subscription credentials.

Note: If you have a backup of the encryption keys from the source server, to prevent losing the encrypted content you can restore the encryption keys on the target server by executing the following commands in the order shown: rskeymgmt –e, rskeymgmt –r, and then rskeymgmt –a.   

  1. At this point the Report Server should be initialized. You may need to go back to the Initialization tab and click Initialize (you should have only row with your computer name).
  2. You can now open the Report Manager and change the connection strings for the data sources .
  3. Once you done testing, go back to Reporting Services Configuration Manager and flip the catalog database to the original ReportServer database.

E-mail Unleashed

Many, many apologies if you have received tons of e-mail from me (Prologika) during the weekend. The good news is that it seems like I’ve managed to find a way to send e-mail notifications from my forum. The bad news is that I didn’t notice that I had some 500 e-mails stuck in the queue which the e-mail job sent out. Oops!

UDM Data Islands

As I mentioned in my TechEd Memoirs post, Microsoft is scaling back from the “super” cube approach in favor of more granular data “islands”. Since this took me by suprise, I approached the SSAS team for clarification. Here are the answers I managed to get:


 


1. What performance benefits could be realized by splitting UDM in data islands?


At this point, we don’t have detailed performance numbers we can share. But to give an indication – a cube that had around 15 measure groups, and a very large number of attributes (over 100 cube dimensions, many with more than 100 attributes) showed a performance improvement of about 6 fold when split into separate cubes (one per measure group), for queries that only referenced a single measure group. The main benefit came from the reduced cube space – the individual cubes only needed to include dimensions related to the measure group, and therefore paid no overhead for unrelated dimensions. There was also some benefit from the MDX script being simpler for each of the individual cubes.


 


2. What guidelines should be followed when partitioning UDM?


The general principle is to have multiple cubes, maybe even one per fact table. Then have other cubes, using linked measure groups that can combine into the complete view. Use the small cubes when they meet the needs, and query the full cube when need to use measures from >1 measure group.   


 


Some general guidelines are:


– If the dimensionality of all the measure groups is (much) the same, it would limit the benefit of splitting up (though there is some benefit of the simpler MDX script per cube)


– If queries very commonly reference measures from >1 measure group, then there would be no value in splitting those measure groups into separate cubes


– The perf benefit must be balanced against the negative impact on the end user view, if frequently a question using measures from just one measure group becomes a question where a measure from another measure group is added. For the user to switch cubes in the middle would be tiresome


– A single large cube is easier to manage, as there is no need to duplicate scripts


 


For calculations that span cross measure groups e.g. where many measure groups have calculations using exchange rate, certainly would not want to use LookupCube. Could either keep all those measure groups in the same cube, or split up and again use linked measure groups to utilize exchange rates in multiple cubes


 


3. By a “data island” do you mean leveraging the linked dimensions and measure group features? If so, any known limitations and restrictions?


Yes, uses linked measure groups, as described above. The dimensions are simply shared, and need not be linked. As far as limitations, there is overhead of having to define calculations etc. on the cube that combines the smaller cubes. Also, Report Builder does not handle such databases that well, as the linked measure groups appear as separate entities in the report model (there is nothing saying the Sales in one cube is exactly the same as Sales in another)


 


4. When can we expect a UDM performance whitepaper?


One is being worked on.