此 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 網站: