Share via


資料倉儲疑難排解

更新:2007 年 11 月

本主題列出使用 Team Foundation Server 資料倉儲時可能發生的下列常見問題。

資料停止從作業存放區流入資料倉儲

報告中的資料已過舊而且似乎沒有更新

如果您在檢閱這些秘訣和個別錯誤訊息說明主題中的秘訣之後仍無法解決問題,請造訪 Microsoft 網站上的 Visual Studio Team System 論壇。這些論壇提供文章主題,供您在其中搜尋各式各樣疑難排解主題的資訊,並且派有專人監看,以便為您的問題提供快速的回應。

資料停止從作業存放區流入資料倉儲

如果您懷疑資料已停止從作業存放區流入資料倉儲,可以透過下列步驟來疑難排解此問題:

  1. 確認資料流程已確實停止。

  2. 識別失敗的配接器 (Adapter)。

下列程序將協助您解決問題。

若要確認資料是否已停止流動

  1. 進行下列其中一或多項變更:

    • 將已變更的檔案簽入原始檔控制。

    • 更新工作項目。

    • 發行測試結果。

  2. 按一下 [開始],並依序指向 [程式集] 和 [Microsoft SQL Server 2005],再按一下 [SQL Server Management Studio]。

  3. 在 [伺服器類型] 清單的 [連接至伺服器] 對話方塊中,選取 [資料庫引擎],然後按一下 [連接]。

  4. 在 [Microsoft SQL Server Management Studio] 中,按一下 [新增查詢]。

  5. 透過執行下列查詢,確認變更顯示在正確的資料表中:

    select * from [work item] where id = [select max[id] from [work item] ]
    

    如果沒有顯示變更,表示資料已停止流動。

若要識別失敗的配接器

  1. 在文字編輯器中,開啟 \Program Files\Microsoft Visual Studio 2008 Team Foundation Server\Web Services\Warehouse\Web.Config。

  2. 在程式碼行 <add name="General" value="0" /> 中,將 "0" 取代成 "3" 並儲存變更。

    這項變更會啟用偵錯訊息。

  3. 在 Team Foundation Server 的應用程式層電腦上,按一下 [開始],再按一下 [執行]。

  4. 在 [開啟] 方塊中,輸入 inetmgr。

  5. 在 [網際網路資訊服務管理員] 的左窗格中,按一下 [Team Foundation Server] 節點。

  6. 在 [動作] 功能表上,按一下 [開啟]。

  7. 透過使用接聽系統追蹤事件的程式,開始在應用程式層上追蹤。

    許多免費的程式會使用 .NET 追蹤功能來提供追蹤與偵錯功能,或者您也可以建置 (Build) 自訂應用程式來提供這項功能。如需如何使用追蹤和偵錯功能的詳細資訊,請參閱 Microsoft 網站上的<追蹤接聽項>(英文)。

  8. 在 [捕捉] 功能表上,選取所有捕捉命令。將此程式保持在開啟狀態,以便查看所有 DebugView 訊息。

  9. 在 [網際網路資訊服務管理員] 的左窗格中,展開 [倉儲] 節點,然後按一下 [v1.0] 節點。

  10. 在右窗格中,按一下 [warehousecontrolled.asmx]。

  11. 在 [動作] 功能表上,按一下 [瀏覽]。

  12. 在 [ControllerService] 中,按一下 [執行],然後按一下 [叫用]。

  13. 透過使用步驟 7 的追蹤監視應用程式,檢閱追蹤例外狀況的記錄檔,其中會指出哪個配接器沒有正確運作。

報告中的資料已過舊而且似乎沒有更新

如果您懷疑一或多份報告中的資料已過舊而且沒有更新,或者您收到下列錯誤訊息:「報表處理期間發生錯誤。(rsProcessingAborted)」,就表示資料倉儲的自動更新發生問題。

作業存放區中的資料 (工作項目追蹤、版本控制、組建 (Build) 和 Integration Services) 已提取至關聯式資料庫 (TfsWarehouse),然後按照排程提取至 OLAP Cube。這些報告會透過查詢 Cube 呈現。根據預設,名為 Visual Studio Team Foundation Server 排程器的 Windows 服務每小時都會呼叫倉儲 Web 服務,以啟始倉儲處理。當此程序繼續在背景中進行時,Cube 和報告應該要可以使用。

開始進行疑難排解之前,您應該成為應用程式層和資料層上 [Administrators] 安全性群組的成員。資料庫和 Cube 位於資料層上,而 Reporting Services 網站和報告則為於應用程式層上。

您可以透過下列步驟來疑難排解此問題:

  1. 在應用程式層上,關閉 Internet Explorer 的易懂錯誤處理功能,以便查看所有訊息。

  2. 確認名為 Visual Studio Team Foundation Server 排程器的 Windows 服務正在執行。

    Visual Studio Team Foundation Server 工作排程器服務會對倉儲 Web 服務發出信號,告知該服務彙總資料並處理 Cube。如此,資料就會從所有作業系統提取至資料庫 TfsWarehouse,然後在資料庫中處理資料,以便傳入 Cube。

  3. 確認資料提取至倉儲的處理程序。

  4. 手動處理倉儲。

  5. 瀏覽報告。

下列程序將協助您解決問題。

若要關閉 Internet Explorer 中的易懂錯誤處理功能

  1. 在應用程式層上,啟動 Internet Explorer。

  2. 在 [工具] 功能表上按一下 [網際網路選項]。

  3. 在 [網際網路選項] 對話方塊中,按一下 [進階] 索引標籤。

  4. 清除 [顯示易懂的 HTTP 錯誤訊息] 核取方塊。

確認 Visual Studio Team Foundation Server 工作排程器服務正在執行

  1. 在資料層上,按一下 [開始]、指向 [系統管理工具],然後按一下 [服務]。

  2. 在 [服務] 視窗中捲動至 [Visual Studio Team Foundation Server 排程器],然後確認 [狀態] 欄中顯示 [已啟動]。

    如果服務尚未啟動,請以滑鼠右鍵按一下 [Visual Studio Team Foundation Server 排程器],然後按一下 [啟動]。

  3. 瀏覽至 %ProgramFiles%\Microsoft Visual Studio 2008 Team Foundation Server\TfsServerScheduler,判斷最近一次排程器呼叫倉儲進行處理的時間。

    該目錄中的 XML 檔會記錄上次嘗試倉儲處理的時間。

確認資料提取至倉儲的處理程序

  1. 按一下 [開始],並依序指向 [程式集] 和 [Microsoft SQL Server 2005],再按一下 [SQL Server Management Studio]。

  2. 在 [伺服器類型] 清單的 [連接至伺服器] 對話方塊中,選取 [資料庫引擎],然後按一下 [連接]。

  3. 在 [Microsoft SQL Server Management Studio] 中,按一下 [新增查詢]。

  4. 透過執行下列查詢,判斷提取至資料 Cube 的資料量:

    use TfsWarehouse
    select Setting as [Last Cube Processing] from _WarehouseConfig where ID = 'LastProcessedTime'
    -- total revisions in the relational warehouse
    use TfsWarehouse
    select top 1 LastUpdatedTime as [LastVCWHWrite] from dbo.[Code Churn] with (nolock) order by LastUpdatedTime desc
    select top 1 LastUpdatedTime as [LastWITWHWrite] from dbo.[Work Item History] with (nolock) order by LastUpdatedTime desc
    use TfsWarehouse
    select count(*) as [WH Revisions] from [dbo].[Work Item History] with (nolock)
    where [Record Count] <> -1
    use TfsWorkitemTracking 
    select count(*) as [WIT Revisions] from [dbo].[WorkitemsLatestAndWere] with (nolock)
    use TfsWarehouse
    select max ([Changeset ID]) as [WH Changeset] from [dbo].Changeset with (nolock) 
    where DimensionMemberActive = 1
    use TfsVersionControl
    select max(ChangeSetId)  as [VC Changeset] from tbl_Changeset with (nolock)
    -- identities
    use TfsWarehouse
    select Property_Value as [Warehouse Identity Id] from _PropertyBag 
    where Property_Key = 'CSS Identity Sequence Id'
    use TfsIntegration
    select max(sequence_Id) as [Integration Identity Id] from tbl_security_identity_cache
    -- structure
    use TfsWarehouse
    select Property_Value as [Warehouse Structure Id] from _PropertyBag 
    where Property_Key = 'CSS Structure Sequence Id'
    use TfsIntegration
    select max(sequence_Id) as [Integration Structure Id] from tbl_nodes with (nolock)
    

    如果沒有任何資料存在或資料嚴重潛伏,就表示排程器並未通知處理,或者倉儲在彙總資料時發生問題。

若要手動處理倉儲

  1. 登入應用程式層。

  2. 開啟 https://localhost:8080/warehouse/v1.0/warehousecontroller.asmx.。

  3. 按一下 [GetWarehouseStatus],然後按一下 [叫用]。

    等候服務閒置 (Idle);它應該會傳回 ProcessingAdapters (結構描述修改)、ProcessingOlap (結構描述修改)、ProcessingAdapters (提取資料)、ProcessingOlap (處理 Cube),然後閒置。

  4. 開啟 https://localhost:8080/warehouse/v1.0/warehousecontroller.asmx.。

  5. 按一下 [執行],然後按一下 [叫用]。

    如此就會啟動倉儲的處理程序。此服務會傳回 True 或 False,表示它是否啟動處理程序 (以非同步方式)。

  6. 您可以重複步驟 3 來監視此處理程序。

  7. 若要確認,您可以重複步驟 2 來驗證移動的資料,然後如果發生問題,請參閱下一節的「若要蒐集錯誤資料」程序,以便取得處理程序的時間範圍。

若要開啟報告

  1. 在 Team 總管中,展開 [報告] 節點,然後瀏覽個別的 Team 報告。

    每份報告都具有上次處理倉儲的時間,以下列格式表示:

    報告建立日期: yyyy/mm/dd hh:mm:ss 建立者 domain\user; 上次倉儲更新日期: yyyy/mm/dd hh:mm:ss

    資料應該是最新的而且不超過一個小時。

  2. 如果資料超過一個小時,請停用報告的快取:

    1. 在 Internet Explorer 中,開啟 http://<server>/Reports/。

    2. 在 [報表管理員] 中,按一下 Team 專案名稱,然後按一下報告。

    3. 按一下 [屬性] 索引標籤,然後按一下 [執行]。

    4. 選取 [不要快取此報表的暫存副本],然後按一下 [套用]。

    5. 按一下 [檢視] 索引標籤,然後檢視報告。

若要蒐集錯誤資料

  1. 檢閱應用程式的事件記錄檔,判斷是否有來自來源「倉儲」的任何錯誤 (顯示為紅色 X)。該事件記錄檔中的錯誤和錯誤堆疊可協助您識別問題。

  2. 如果所有步驟都會導致錯誤,請蒐集追蹤,以便協助支援專家或產品小組成員診斷問題。

  3. 使用工具 (例如 DBMON) 來捕捉偵錯輸出。

  4. 在文字編輯器中,開啟 \Program Files\Microsoft Visual Studio 2008 Team Foundation Server\Web Services\Warehouse\Web.Config。

  5. 在程式碼行 <add name="General" value="0" /> 中,將 "0" 取代成 "4" 並儲存變更。

請參閱

工作

Team Foundation 報告疑難排解

其他資源

使用 Team Foundation Server 命令列工具

Team Foundation Server 資料倉儲