KB2876882 - 修正:針對 TFS SSAS Cube 執行「處理」命令時,發生內部錯誤:發生意外錯誤

Applies To
SQL Server 2012 Analysis Services

此 Hotfix 也適用於 Microsoft SQL Server 2014 Analysis Services (SSAS 2014) 。

症狀

假設在 Microsoft SQL Server 2012 Analysis Services (SSAS 2012) 或 SQL Server 2014 Analysis Services (SSAS 2014 中有一些維度,其中包含 Visual Studio Team Foundation Server (TFS) 的資料) Microsoft Cube (Tfs_Analysis) 。 當您針對維度執行處理命令時,處理可能會失敗,並且收到下列錯誤訊息:

注意

內部錯誤:檔案 'pfiallocator.cpp' 第 822 行,函數 'PFMemoryHolder::RegisterMemoryHolder') (發生意外錯誤。

如果您使用 SQL 分析工具來追蹤問題,追蹤會顯示下列錯誤訊息在 vDimWorkItemTreeOverlay 維度上的 ProcessFull 命令期間發生:

注意

內部錯誤:檔案 'pfiallocator.cpp' 第 822 行,函數 'PFMemoryHolder::RegisterMemoryHolder') (發生意外錯誤。 OLAP 儲存引擎中的錯誤: 處理來自 'Tfs_Analysis' 資料庫之 'Work Item Tree' 維度的 'WorkItemTreeSK' 屬性時發生錯誤。

注意:處理失敗會影響 Analysis Services 資料庫設計,其資料來源使用託管 SQL Server 的 .NET Framework 資料提供者,也就是 System.Data.SqlClient。

原因

發生此問題是因為 Analysis Services 處理使用了資料來源中的重複維度索引鍵值。

解決方式

此問題已先在下列 SQL Server 累積更新中修正。

SQL Server 2014 累積更新 1 /zh-tw/help/2931693

SQL Server 2012 SP1 的累積更新 6 /zh-tw/help/2874879

關於 SQL Server 的累積更新

SQL Server 的每個新累積更新都包含所有 Hotfix 和先前累積更新的所有安全性修正程式。 查看 SQL Server 的最新累積更新:

      

更多資訊

套用 Hotfix 之後,處理將會根據處理錯誤組態設定執行,而不是根據內部錯誤徵兆。

您可以在處理 SSAS 維度時使用重複金鑰設定來控制行為。 或者,您可以在設計維度時設定 ErrorConfiguration 屬性的 KeyDuplicate 屬性,以控制行為,如下所示:

  • 當 KeyDuplicate 設定設定為預設設定 IgnoreError 時,當發現重複的機碼值時不會出現警告,並會繼續處理。
  • 當 KeyDuplicate 設定設為 ReportAndContinue 時,會報告錯誤或警告。 不過,處理工作會繼續進行。
  • 當 KeyDuplicate 設定設定為 ReportAndStop 時,會報告錯誤或警告,並停止處理。

      

狀態

Microsoft 已確認這是「適用對象」一節中列出的 Microsoft 產品中的問題。

因應措施

若要解決此問題,請刪除 SQL Server 資料庫引擎中資料倉儲維度資料表中無效的重複索引鍵。 您可以使用下列查詢來尋找重複的索引鍵:SELECT COUNT (WorkItemTreeSK) WorkItemTreeSKCount, WorkItemTreeSK
寄件者 [Tfs_Warehouse].dbo.vDimWOrkItemTreeOverlay
依據 WorkItemTreeSK 分組
HAVING COUNT (WorkItemTreeSK) >1

參考資料

如需有關處理選項和設定的詳細資訊,請前往下列 MSDN 網站:

處理選項和設定的相關資訊 如需有關如何手動處理倉儲或 Cube 的詳細資訊,請前往下列 MSDN 網站:

手動處理 Team Foundation Server 的資料倉儲和 Analysis Services Cube