FIX: In SQL Server 2005 Analysis Services, the session-scoped calculated members or the query-defined calculated members may not return the expected results (917929)



The information in this article applies to:

  • Microsoft SQL Server 2005 Analysis Services

Bug #: 450532 (SQLBUDT)
Bug #: 50000120 (SQL Hotfix)
Microsoft distributes Microsoft SQL Server 2005 fixes as one downloadable file. Because the fixes are cumulative, each new release contains all the hotfixes and all the security fixes that were included with the previous SQL Server 2005 fix release.

SUMMARY

This article describes the following about this hotfix release:
  • The issues that are fixed by the hotfix package
  • The prerequisites for installing the hotfix package
  • Whether you must restart the computer after you install the hotfix package
  • Whether you must make any registry changes
  • The files that are contained in the hotfix package

SYMPTOMS

When a cube Multidimensional Expressions (MDX) script contains calculated members in Microsoft SQL Server 2005 Analysis Services, the session-scoped calculated members or the query-defined calculated members may not return the expected results.

Note In certain scenarios, this problem may not occur when the Aggregate function or the VisualTotals function is used.

CAUSE

This problem occurs when the calculated members are resolved before any session-scoped calculations are resolved or before any query-defined calculations are resolved.

RESOLUTION

To resolve this problem, apply the cumulative hotfix package (build 2153) for SQL Server 2005 that is discussed in Microsoft Knowledge Base article 918222. For more information, click the following article number to view the article in the Microsoft Knowledge Base:

918222 Cumulative hotfix package (build 2153) for SQL Server 2005 is available

STATUS

Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.

MORE INFORMATION

This problem does not occur in SQL Server 2000 Analysis Services. In SQL Server 2000 Analysis Services, you can set the solve order for the session-scoped calculations or for the query-defined calculations because all the calculations have absolute positions. When you set the solve order, you control the order in which all the calculations are performed.

In SQL Server 2005 Analysis Services, generic client applications can work together with cubes that contain complex calculations without having to consider the specific implementation of the calculations. Generic client applications can do this because all the calculations have relative positions. The relative position in the solve order is an offset from the end of the cube script.

In certain scenarios, you may want to run the session-scoped calculated members or the query-defined calculated members before you run the cube-level calculations. If the session-scoped calculated members or the query-defined calculated members use the Aggregate function or the VisualTotals function, this problem may not occur. If the session-scoped calculated members or the query-defined calculated members do not use the Aggregate function or the VisualTotals function, this problem may occur.

This hotfix introduces a new calculation property that is named the SCOPE_ISOLATION property. After you apply this hotfix, you can control the order in which the calculations are performed when you set the solve order for the session-scoped calculations or for the query-defined calculations.

After you apply this hotfix, the syntax of the MDX query should resemble the following code example.
WITH MEMBER [Customer].[Customers].[US].USAWithoutSTATE AS '[Customer].[Customers].[Country].&[US] - [Customer].[Customers].[State Province].&[WA]', SOLVE_ORDER=5, SCOPE_ISOLATION=CUBE
SELECT {US,USWithoutSTATE} on 0 FROM Sales
WHERE ProfitRatio
In this code example, the SCOPE_ISOLATION property inserts the solve order of the calculated member into the cube's MDX script when the calculated member is evaluated.

After you apply this hotfix, the syntax of the Backus-Naur Form (BNF) should resemble the following code example.
<create-member-statement> ::= CREATE <optional-scope> <create-member-subset> [<create-member-subset>...]
<create-member-subset> ::= MEMBER <cube-name>.<fully-qualified-member-name> AS '<expression>' [,<property-definition-list>]
<cube name> ::= CURRENTCUBE | <Cube Identifier>
<property-definition-list> ::= <property-definition>  | <property-definition>, <property-definition-list>
<property-definition> ::= <property-identifier> = <property-value>
<property-identifier> ::= VISIBLE | SOLVEORDER | FORMAT_STRING| <ole db member properties>
<property-value> ::= <string> | <number>
<property-definition> ::= SCOPE_ISOLATION = CUBE
<optional-scope> ::= <empty> | SESSION

REFERENCES

For more information about how to use property expressions in packages, visit the following Microsoft Developer Network (MSDN) Web site: For more information about software update terminology, click the following article number to view the article in the Microsoft Knowledge Base:

824684 Description of the standard terminology that is used to describe Microsoft software updates


Modification Type:MinorLast Reviewed:7/26/2006
Keywords:kbBug kbfix kbtshoot kbQFE kbpubtypekc KB917929 kbAudITPRO kbAudDeveloper