FIX: Writeback to Cell Fails If the Cube Contains a Virtual Dimension (815292)



The information in this article applies to:

  • Microsoft SQL Server 2000 Analysis Services
  • Microsoft SQL Server 2000 Analysis Services 64 bit

BUG #: 13803 (Plato7x)

SYMPTOMS

An attempt to writeback to a cell by changing the value in an ActiveX Data Objects (Multidimensional) (ADO MD) Cellset object fails, and if the cube contains one or more virtual dimensions you receive the following error:

Run-time error '-2147467259 (80004005)':
Unable to update cell because it contains a member, All Store Size in SQFT, that is not at the lowest level
The member name (All Store Size in SQFT in this example) varies, but it is the name of a member at the (All) level of a virtual dimension in the cube. The same writeback attempt is successful in Microsoft SQL Server OLAP Services 7.0 if you do not specify the virtual dimension in the original Multidimensional Expressions (MDX) query that you use to populate the cellset.

RESOLUTION

Service pack information

To resolve this problem, obtain the latest service pack for Microsoft SQL Server 2000. For additional information, click the following article number to view the article in the Microsoft Knowledge Base:

290211 How to obtain the latest SQL Server 2000 service pack

Hotfix information

SQL Server 2000 Analysis Services

The English version of this fix has the file attributes (or later) that are listed in the following table. The dates and times for these files are listed in coordinated universal time (UTC). When you view the file information, it is converted to local time. To find the difference between UTC and local time, use the Time Zone tab in the Date and Time tool in Control Panel.
   Date         Time   Version    Size             File name
   ------------------------------------------------------------
   12-Feb-2003  02:49  8.0.767.0  1,024,576 bytes  Msmdgd80.dll
   27-Jan-2003  07:47  8.0.0.761  9,638,464 bytes  Msmdsgn80.dll
   14-Feb-2003  22:32  8.0.768.0  1,827,396 bytes  Msmdsrv.exe
   12-Feb-2003  02:49  8.0.767.0  2,069,072 bytes  Msolap80.dll     
				
Note Because of file dependencies, the most recent hotfix or feature that contains these files may also contain additional files.

SQL Server 2000 Analysis Services 64-bit

For additional information about a hotfix build designed to be applied on a server that is running SQL Server 2000 Analysis Services 64-bit, or to find out if a fix is scheduled to be included in SQL Server 2000 Analysis Services 64-bit Service Pack 4, click the following article number to view the article in the Microsoft Knowledge Base:

822017 FIX: Hotfix Information for Build 8.0.810.0 of SQL Server 2000 Analysis Services 64-bit


STATUS

Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.This problem was first corrected in Microsoft SQL Server 2000 Service Pack 4.

MORE INFORMATION

You only experience this problem when you perform a writeback operation at the leaf level of all real (not virtual) dimensions by using an ADO MD Cellset object modification. There are two frequently used methods that you can use to write back to leaf-level cells:
  • Directly modify the ADO MD Cellset object value in a matching set of connection transaction methods. For example:
    Dim adoConn As New ADODB.Connection
    Dim adoCellset As New ADOMD.Cellset
    adoConn.Open "Provider=msolap.2;Initial Catalog=ModifiedFoodmart;" & _
                           "Data Source=LocalHost"
    Set adoCellset.ActiveConnection = adoConn
    StrMDX = "SELECT {[Product].[All Products].[Non-Consumable].[Periodicals].[Magazines].[Auto Magazines].[Dollar].[Dollar Monthly Auto Magazine]} " & _
                      "ON COLUMNS, " & _
                      "{[Time].[1997].[Q4].[10]} ON ROWS FROM [Sales]" & _
                      " WHERE ([Store].[All Stores].[USA].[CA].[Los Angeles].[Store 7]) "
    adoCellset.Open StrMDX
    adoConn.BeginTrans
    adoCellset(0, 0) = 10000
    adoConn.CommitTrans
    
  • Use the UPDATE CUBE statement. For example:
    UPDATE CUBE [Sales] SET ([Product].[All Products].[Non-Consumable].[Periodicals].[Magazines].[Auto Magazines].[Dollar].[Dollar Monthly Auto Magazine], 
                             [Store].[All Stores].[USA].[CA].[Los Angeles].[Store 7],
                             [Time].[1997].[Q4].[10],[Measures].[Unit Sales])=10000
Note The previous code was designed for a modified version of the Sales cube in the Foodmart 2000 database that only contains three real dimensions: Product, Store, and Time. Both examples are demonstrating writebacks at a leaf-level cell. The UPDATE CUBE statement is the only supported method you can use to perform a writeback at a non-leaf level.

If the cube contains at least one virtual dimension, the first example fails as a result of the problem described in this article. The second example (UPDATE CUBE) is not affected by the problem described in this article and you can use this as a workaround for this problem.

Modification Type:MinorLast Reviewed:9/27/2005
Keywords:kbHotfixServer kbQFE kbQFE kbfix kbBug kbQFE KB815292