Microsoft KB Archive/903004

= You may experience an access violation or data corruption in Analysis Services when you use DTS to merge partitions when lazy processing is occurring =

Article ID: 903004

Article Last Modified on 11/21/2006

-

APPLIES TO


 * Microsoft SQL Server 2000 Analysis Services

-



Bug#: 14502 (Plato 7x)

Bug#: 14155 (Plato 7x)

Bug#: 10995 (Plato 7x)



SYMPTOMS
In Microsoft SQL Server 2000 Analysis Services, you may experience an access violation or data corruption when you try to merge partitions when lazy processing is occurring.



CAUSE
This problem may occur when you use Data Transformation Services (DTS) to merge partitions when lazy processing is occurring.



RESOLUTION
To resolve this problem, you must use the Decision Support Objects (DSO) Process (ProcessSuspendLazyProcessing) method to suspend lazy processing while you merge partitions. When you have finished merging partitions, you must use the DSO Process (ProcessResumeLazyProcessing) method to resume lazy processing.

To suspend lazy processing by using the DSO Process (ProcessSuspendLazyProcessing) method, and to resume lazy processing by using the DSO Process (ProcessResumeLazyProcessing) method, use code that is similar to the following code. Function IncrementalPartitionProcess(dsoCube As DSO.Cube, dsoPartition As DSO.Partition) As Boolean On Error GoTo Erreur Dim bRes As Boolean Dim bSuspendedLazyProcessing As Boolean Dim dsoDatabase As DSO.Database Dim dsoPartTemp As DSO.Partition bRes = True

IncrementalPartitionProcess = bRes If m_bError Then Exit Function

Set dsoDatabase = dsoCube.Parent

'Create a temporary partition Set dsoPartTemp = dsoCube.MDStores.AddNew(&quot;~&quot; & dsoPartition.Name) dsoPartition.Clone dsoPartTemp m_oLog.AddLog LOG_LEVEL01, LOG_TYPE_INFO, &quot;IncrementalPartitionProcess&quot;, &quot;Partition[1] Temp&quot; & dsoPartTemp.Name ProcessObject m_oDsoServer.MDStores(m_sOlapDatabase), &quot;P&quot;, dsoPartTemp, Nothing, processFull m_oLog.AddLog LOG_LEVEL01, LOG_TYPE_INFO, &quot;IncrementalPartitionProcess&quot;, &quot;Partition[2] Temp&quot; & dsoPartTemp.Name

' Verify the merge results If (dsoPartTemp.State <> olapStateNeverProcessed) Then 'If (dsoPartTemp.EstimatedSize > 0) Then m_oLog.AddLog LOG_LEVEL01, LOG_TYPE_INFO, &quot;IncrementalPartitionProcess&quot;, &quot;Partition[3] Merge&quot; & dsoPartTemp.Name dsoDatabase.Process processSuspendLazyProcessing ' 106 bSuspendedLazyProcessing = true dsoPartition.Merge dsoPartTemp.Name dsoDatabase.Process processResumeLazyProcessing ' 107 bSuspendedLazyProcessing = false m_oLog.AddLog LOG_LEVEL01, LOG_TYPE_INFO, &quot;IncrementalPartitionProcess&quot;, &quot;Partition[4] Merge&quot; & dsoPartTemp.Name 'Else ' m_oLog.AddLog LOG_LEVEL01, LOG_TYPE_ERROR, &quot;IncrementalPartitionProcess&quot;, &quot;Partition &quot; & dsoPartTemp.Name & &quot; size is empty&quot; ' bRes = False 'End If Else m_oLog.AddLog LOG_LEVEL01, LOG_TYPE_ERROR, &quot;IncrementalPartitionProcess&quot;, &quot;Partition &quot; & dsoPartTemp.Name & &quot; has abnormal state. Partition must be processed.&quot; m_bError = True bRes = False End If Set dsoPartTemp = Nothing IncrementalPartitionProcess = bRes Exit Function Erreur: m_oLog.AddLog LOG_LEVEL01, LOG_TYPE_ERROR, &quot;IncrementalPartitionProcess&quot;, &quot;Error: &quot; & Err.Number & &quot;(&quot; & Err.Description & &quot;)&quot; If (bSuspendedLazyProcessing) dsoDatabase.Process processResumeLazyProcessing ' 107 End If Set dsoPartTemp = Nothing IncrementalPartitionProcess = bRes m_bError = True End Function ' IncrementalPartitionProcess



STATUS
This behavior is by design.

