This hotfix also applies to Microsoft SQL Server 2014 Analysis Services (SSAS 2014).
Assume that you have some dimensions in the Microsoft SQL Server 2012 Analysis Services (SSAS 2012) or SQL Server 2014 Analysis Services (SSAS 2014) cube (Tfs_Analysis) that contains the data for Microsoft Visual Studio Team Foundation Server (TFS). When you run a Process command against the dimensions, the processing may fail, and you receive the following error message:
Internal error: An unexpected error occurred (file 'pfiallocator.cpp', line 822, function 'PFMemoryHolder::RegisterMemoryHolder').
If you use SQL Profiler to trace the issue, the trace shows that the following error message occurs during the ProcessFull command on the vDimWorkItemTreeOverlay dimension:
Internal error: An unexpected error occurred (file 'pfiallocator.cpp', line 822, function 'PFMemoryHolder::RegisterMemoryHolder'). Errors in the OLAP storage engine: An error occurred while the 'WorkItemTreeSK' attribute of the 'Work Item Tree' dimension from the 'Tfs_Analysis' database was being processed.
Note The processing failure affects Analysis Services database designs that have data sources that used the managed .NET Framework Data Provider for SQL Server, which is System.Data.SqlClient.
The issue occurs because a duplicate dimension key value in the data source is used by the Analysis Services processing.
Each new cumulative update for SQL Server contains all the hotfixes and all the security fixes that were included with the previous cumulative update. Check out the latest cumulative updates for SQL Server:
After you apply the hotfix, the processing will behave according to the processing error configuration settings instead of according to internal error symptoms.
You can control the behavior by using the Duplicate key setting when you process the SSAS dimensions. Or, you can control the behavior by configuring the KeyDuplicate property of the ErrorConfiguration property as follows when you design the dimensions:
When the KeyDuplicate setting is set to the default setting IgnoreError, there are no warnings when a duplicate key value is encountered, and processing continues.
When the KeyDuplicate setting is set to ReportAndContinue, the errors or warnings are reported. However, the processing continues.
When the KeyDuplicate setting is set to ReportAndStop, the errors or warnings are reported, and the processing is stopped.
Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.
To work around the issue, delete the invalid duplicate key in the data warehouse dimension tables in SQL Server Database Engine. You can use the following query to find the duplicate key:SELECT COUNT(WorkItemTreeSK) WorkItemTreeSKCount, WorkItemTreeSK
GROUP BY WorkItemTreeSK
HAVING COUNT(WorkItemTreeSK) >1
For more information about processing options and settings, go to the following MSDN website:
Information about processing options and settingsFor more information about how to process the warehouse or cube manually, go to the following MSDN website: