此熱修復程式也適用于 Microsoft SQL Server 2014 Analysis Services (SSAS 2014)。
徵狀
假設您在 Microsoft SQL Server 2012 Analysis Services (SSAS 2012)或 SQL Server 2014 Analysis Services (SSA 2014) cube (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 的 managed .NET Framework 資料提供器(SqlClient)。
原因
發生這個問題是因為分析服務處理會使用資料來源中的重複維度金鑰值。
解決方案
此問題最初是在 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 網站: