此修补程序也适用于 Microsoft SQL Server 2014 Analysis Services (SSAS 2014)。
症状
假设你在 Microsoft SQL Server 2012 Analysis Services (SSAS 2012)或 SQL Server 2014 Analysis Services (SSAS 2014)多维数据集(Tfs_Analysis)中有一些维度,其中包含 Microsoft Visual Studio Team Foundation Server (TFS)的数据。 当你针对维度运行 流程 命令时,处理可能会失败,并且你会收到以下错误消息:
内部错误:发生意外错误(文件 "pfiallocator"、行822、函数 "PFMemoryHolder:: RegisterMemoryHolder")。
如果使用 SQL 事件探查器跟踪问题,跟踪会显示在vDimWorkItemTreeOverlay维度上的ProcessFull命令期间出现以下错误消息:
内部错误:发生意外错误(文件 "pfiallocator"、行822、函数 "PFMemoryHolder:: RegisterMemoryHolder")。 OLAP 存储引擎中的错误:处理 "Tfs_Analysis" 数据库中的 "工作项树" 维度的 "WorkItemTreeSK" 属性时发生错误。
注意处理失败影响具有使用 SQL Server 的托管 .NET Framework 数据提供程序的数据源的 Analysis Services 数据库设计(即 SqlClient。
原因
出现此问题的原因是 Analysis Services 处理使用数据源中的重复维度密钥值。
解决方案
在 SQL Server 的以下累积更新中,此问题首先已修复。
SQL Server 2014 的累积更新1 /en-us/help/2931693
SQL Server 2012 SP1 的累积更新6 /en-us/help/2874879
SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:
更多信息
应用此修补程序后,处理过程将根据处理错误配置设置进行操作,而不是根据内部错误症状。你可以通过在处理 SSAS 维度时使用 " 重复键 " 设置来控制该行为。 或者,你可以通过配置ErrorConfiguration属性的KeyDuplicate属性来控制行为,如下所示在设计维度:
-
当 KeyDuplicate 设置设置为默认设置 IgnoreError时,遇到重复键值时不会出现任何警告,并且处理会继续。
-
当 KeyDuplicate 设置设置为 ReportAndContinue 时 , 将报告错误或警告。 但是,处理会继续。
-
当 KeyDuplicate 设置设置为 ReportAndStop时,将报告错误或警告,并且处理停止。
状态
Microsoft 已经确认这是一个列于“适用范围”部分的 Microsoft 产品问题。
解决方法
若要解决此问题,请在 SQL Server 数据库引擎的数据仓库维度表中删除无效的重复键。 可以使用以下查询查找重复键:SELECT COUNT(WorkItemTreeSK) WorkItemTreeSKCount, WorkItemTreeSKFROM [Tfs_Warehouse].dbo.vDimWOrkItemTreeOverlayGROUP BY WorkItemTreeSKHAVING COUNT(WorkItemTreeSK) >1
参考
有关处理选项和设置的详细信息,请转到以下 MSDN 网站:
有关处理选项和设置的信息有关如何手动处理仓库或多维数据集的详细信息,请转到以下 MSDN 网站: